Loading...

Custom board bringup based on NXP LS1043A using SPI Flash emulator

January 2, 2022
to all articles
DAB-Embedded has developed a custom board based on the NXP LS1043A SoC. This board has 8 GB DDR4 (2 DDR4 x16-bit chips) RAM and QSPI Flash for software download. The original processor configuration is loaded from the QSPI Flash.

Real demo:
ls1043a_nxp_usb2io_m.jpg

To speed up the firmware preparation process for the NXP LS1043A SoC using LSDK 20.12 (BL1 Bootloader, Uboot, Linux), DAB-Embedded BV used its own USB2IO interface explorer product with SPI Flash emulation. This function allows you to load a binary bootloader image for LS1043A into the USB2IO emulator memory.

USB2IO_SPFE.png

When the reset is removed from the LS1043A processor, according to the bootstrap pins (which are set to boot from the SPI Flash), data reading from the SPI Flash is started, which is emulated using USB2IO. In this case the LS1043A processor is the SPI master and the USB2IO emulator is the SPI slave. Updating the data in the emulator takes a few seconds, which makes it possible to quickly make various experiments with the firmware for the LS1043A. The current example allows you to make the LS1043A firmware fast and convenient, as well as get rid of the expensive NXP TAP + CodeWarrior hardware in case of a simple SPI Flash firmware update. However, DAB-Embedded BV uses NXP TAP + CodeWarrior when calibrating and training DDR4 memory, etc.
When building LSDK 20.12, the firmware_ls1043agtwy_uboot_qspiboot.img file is generated which is suitable for emulation using USB2IO. When loading this file, BL1-> BL31-> Uboot loaders are launched in case of correct DDR4 memory settings and other parameters.

 Also, USB2IO can emulate the ChipID request (code 0x9F), what allows you to work with the SPI Flash emulator from the U-boot loader. U-boot can recognize SPI Flash correctly based on valid ChipID and after that, you can write Linux image to emulator memory. This allows you to download the Linux image and run it after.

All these actions can be automated using Python scripts or using a ready-made application. Uploading 10MB firmware to a USB2IO adapter takes a few seconds.