step by step: load fusion fw to 8ulp flash

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

step by step: load fusion fw to 8ulp flash

NXP Employee
NXP Employee
4 0 4,226

step by step: load fusion fw to 8ulp flash

In this article, I'd like to share the steps to run fusion dsp fw in 8ulp, including all the issues I have encountered.



To follow the steps, you will need:

You'll need to register to this site.



  • GETTING STARTED GUIDE FOR I.MX 8ULP: very useful, I mainly refer to this document. I suggest to read this article throughout to get a whole picture before getting started.



  1. About the 8ULP patch for IAR

Follow the readme in download zip.

  1. About the Jlink version

The version after V7.50 will not support 8ULP.

One problem is the integrated Jlink in IAR is V7.66, so we need to downgrade it to V7.50.



In Jlink installed path, SEGGER\JLink\JLinkDLLUpdater.exe. After running the exe, Jlink in IAR will be changed to V7.50.



  1. Compile the m33 bin file.

You can either compile with ARMGCC or with IAR.

With ARMGCC, just use the script

With IAR, something to pay attention to:

  1. Select the device as NXP MIMX8UD7_M33



  1. The DSP_IMAGE_COPY_TO_RAM in Defined symbols.

If set to 1, DSP application will launch from Arm core; if set to 0, it will not launch from Arm core, and can be loaded from Xtensa Xplorer.

You can also find explanation in GETTING STARTED GUIDE FOR I.MX 8ULP.



  1. Build flash.bin

I assume you to be familiar with this step. If not, you need to read section "4.5.13 How to build imx-boot image by using imx-mkimage" in IMX_LINUX_USERS_GUIDE.

But still I'd like to take some notes here, as building 8ULP uboot has some tricks.

To build 8ULP uboot, we need extra images like mx8ulpa1-ahab-container.img and upower.bin, they can be downloaded from internally:

Also, the DSP examples only supports flash target in dual boot mode, which means we need to flash m33 into nor flash. Here are the steps to achieve this.

  1. A uuu script to flash dualboot image, can be found in

In this script, it needs three different flash.bins: _flash_singleboot_m33.bin, _flash_dualboot_m33.bin, _flash_dualboot.bin.

They need to be built with the following commands respectively:

_flash_singleboot_m33.bin :  

make SOC=iMX8ULP flash_singleboot_m33

_flash_dualboot_m33.bin :

make SOC=iMX8ULP flash_dualboot_m33_xip


make SOC=iMX8ULP flash_dualboot

  1. You will also need a _rootfs.sdcard, which corresponds to the  imx-image-multimedia-imx8ulpevk.wic image.
  2. Then you need to switch board to serial download mode, and can use the command uuu.exe to flash all image. This only needs to be done once.
  1. Load the m33 bin file to nor flash

In the above step, there is already m33 bin in nor flash. This step explains how to load m33 bin alone when you only have change in m33.

  1. Switch board to serial download mode
  2. use Jlink commander V7.50 to connect to it.
  3. Then use the command to load bin file: loadbin _flash_dualboot_m33.bin 0x4000000




  1. System bootup

Switch the 8ULP dip to 1000_0010 A35-eMMC/ M33-Nor

If you set DSP_IMAGE_COPY_TO_RAM=1 in step #1, during boot up, you will see both prints in M33 and in DSP.

Otherwise you will only see prints in M33.

Audio demo started. Initialize pins and codec on core 'Cortex-M33'

Pins and codec initialized.

DSP starts on core 'fusion_nxp02_dsp_prod'

MIC->DMA->I2S->CODEC running

  1. Debug the fusion DSP.

The steps are very detailed in "chapter 4 Run and debug DSP demo using Xplorer IDE".

One note to take here:

Windows platform, there is bug in Xtensa Xplorer license manager. You need to clear the existing license path if you want to change license. Otherwise the license may not correctly as expected.

Clean existing license by searching key `XTENSAD_LICENSE_FILE` in windows registry.

In my case, I had an 8MP license installed before, so when I try to debug the 8ULP, I keep to have the following error:



I need to clear previous license and install the one for 8ULP.