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.
iar_segger_support_patch_imx8ulp.zip https://www.nxp.com/security/login?TARGET=https%3A%2F%2Fwww.nxp.com%2Fwebapp%2Fsecure%2Flogin.SAMLSe...
Follow the readme in download zip.
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.
You can either compile with ARMGCC or with IAR.
With ARMGCC, just use the script build_flash_debug.sh.
With IAR, something to pay attention to:
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.
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.
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 |
_flash_dualboot.bin: |
make SOC=iMX8ULP flash_dualboot |
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.
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 |
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.