iMX93 - how to boot both A55 and M33 from SD card

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX93 - how to boot both A55 and M33 from SD card

2,970 Views
KHL
Contributor I

Hi,

I had prepare a SD card that can boot the A55 using the source from Yocto project.

I had also compile a M33 demo project from the SDK that confirmed can run on M33 using jtag/gdb.

I wish to boot both A55 and M33 from POR through SD card, how do achieve it ?

What I did was

1) copy the m33 demo bin file to imx-mkimage/iMX9 folder and rename it to m33_image.bin

2)then generate flash.bin using SOC=iMX93 flash_singleboot_m33

3) write the flash.bin using sudo dd if=flash.bin of=/dev/mmcblk0 bs=1k seek=32 conv=fsync

4) copy the m33_image.bin into the boot partition of SD.

Result : A55 can boot up but not M33 core.

 

Thanks.

0 Kudos
Reply
8 Replies

2,933 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Are you using the demo images or the images you build yourself?

0 Kudos
Reply

2,911 Views
KHL
Contributor I

Hi,

All images used are from NXP linux BSP except the M33 firmware is re-compile from source, it is a slightly modified from freertos_hello demo project provided by SDK.

What I did is just to add some simple codes to continuously stream some debug logs to console.

KHL_0-1688343652935.png

If the iMX93evk is boot to M33 only, the PRINTF is working continuously

if the evk is boot to A55 and M33, the M33 PRINTF is called around 4 cycles only, then the output stop, A55 is working fine in this scenario.

0 Kudos
Reply

2,899 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Could you share the details steps in your side, then I can try in my side to reproduce it?

0 Kudos
Reply

2,883 Views
KHL
Contributor I

Hi 

What I did in general.

1) Get the source from Yocto Project,

repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-langdale -m imx-6.1.1-1.0.0.xml

Create the distro of DISTRO-fsl-imx-fb MACHINE=imx93evk

bitbake core-image-base

2) Download LF_v6.1.1_1.0.0 default imx93 images, then uuu -b emmc_all imx-image-full-imx93evk.wic

3) Generate the iMX93 M33 SDK from https://mcuxpresso.nxp.com/en/welcome

4) Downloaded ARM gnu toolchain version 12.2 for M33

5) Compile the freertos_hello demo project from the SDK, connect to gdb confirmed it can run

6) Modified the freertos_hello demo to continuously stream debug logs to console for sign of life, confirmed the change using gdb.

7) Get the necessary files to generate the flash.bin from the baked yocto project in ~/tmp/deploy/images/imx93evk/imx-boot-tools/

Refer to document Getting Started with MCUXpresso SDK for MCIMX93-EVK section 7.3 Run  an example application. Follow the steps to generate and flash the flash,bin using uuu for boot from emmc

Thanks.

 

0 Kudos
Reply

2,524 Views
gongyaxuan
Contributor I

Hello, where can I find the document Getting Started with MCUXpresso SDK for MCIMX93-EVK

0 Kudos
Reply

2,955 Views
KHL
Contributor I

I tried again to boot both A55 and M33 from eMMC.

What I did

1) use uuu to flash the default full image from LF_v6.1.1_1.0.0 release

2) compile the M33 freertos_helloworld project, added in a printf at 3s interval to output some logs.

3) compile and use imx-mkimage to generate flash.bin for single_boot_m33 and lpboot

4) use uuu tool to write those flash.bin to emmc

Results

- for the case of lpboot, M33 is running fine, the logs are streaming out to the console continuously

- for the case of single_boot_m33, A55 can power up to kernel space, however on M33, the logs stop after ~5 to 6s from POR, when the log stalled, A55 is still alive. Tried M33 debug and release build, same results.

What went wrong ?

All images are from the linux bsp release and MCUExpresso SDK.

Thanks.

0 Kudos
Reply

1,211 Views
usharip
Contributor I

Hi @KHL ,

 

I just started to bring up an iMX93 board and facing the same issue with M33 stopping once kernel on A55 starts.

 

Did you figure this out?

0 Kudos
Reply

1,196 Views
KHL
Contributor I

I add the clk_ignore_unused param to the uboot mmcargs

setenv mmcargs 'setenv bootargs ${jh_clk} console=${console} root=${mmcroot} clk_ignore_unused'

 

0 Kudos
Reply