How to Enable Boot from Octal SPI Flash and SD Card
File info: application/pdf · 48 pages · 2.03MB
How to Enable Boot from Octal SPI Flash and SD Card
Octal SPI Flash, SD Card, i.MX RT1050
How to Enable Boot from Octal SPI Flash and SD Card - NXP
chapter of the IMXRT 1050 Reference Manual. For more information about MIMXRT1050 EVK boot device selection and configuration, see the main board schematic. 2.5. Boot Image There are two types of i.MX MCU bootable image…
Full PDF Document
If the inline viewer fails, it will open the original document in compatibility mode automatically. You can also open the file directly.
Extracted Text
NXP Semiconductors Application Note Document Number: AN12107 Rev. 5, 07/2019 How to Enable Boot from Octal SPI Flash and SD Card 1. Introduction Contents The i.MX RT Series is industry's first crossover processor provided by NXP. This document describes how to program a bootable image into the external storage device. The i.MX RT1050 Flashloader is an application that you load into the internal RAM of a i.MX RT1050 device. The Flashloader is designed to work as a second stage of Bootloader for i.MX RT1050 device, it detects communication traffic on one of the supported peripherals (USB-HID and UART), download a user application, and write the application to external Serial NOR or Serial NAND Flash device. The Flashloader is loaded by MfgTool at first stage and work with MfgTool to do Flash programming at second stage. The release includes the PC-hosted MfgTool application, this application is used for downloading application to Flash device in both development phase and production phase. This release also includes elftosb command-line application, it is used to generate bootable image for i.MX RT1050 ROM and generate programable image supported by Flashloader1.1. 1. Introduction ........................................................................ 1 2. i.MXRT1050 boot overview .............................................. 2 2.1. Boot feature............................................................. 2 2.2. Boot ROM overview ............................................... 3 2.3. Boot related address ................................................ 3 2.4. Boot settings............................................................ 3 2.5. Boot Image .............................................................. 5 2.6. Image generation tool.............................................. 7 3. Program tools ..................................................................... 7 3.1. DAP-Link (OpenSDA MSD drag/drop) .................. 7 3.2. MFG tool................................................................. 7 3.3. OpenSDA Drag/Drop and boot from Hyper Flash .. 9 3.4. MFG boot from Hyper Flash................................. 15 3.5. MFG boot from SD Card ...................................... 26 3.6. MFG boot from Hyper Flash with DCD for SDRAM 35 4. Octal SPI Flash support list .............................................. 46 5. Conclusion........................................................................ 46 6. Revision history................................................................ 47 For this Application Note the software used for example in this document is based on the i.MXRT1050 SDK 2.4.0. The development environment is IAR Embedded Workbench 8.22.2 The hardware development environment is IMXRT1050-EVKB. � 2019 NXP B.V. i.MXRT1050 boot overview This document describes three typical boot use cases: � SD Card - Code in ITCM - Data in DTCM � Hyper Flash - Code XIP in Hyper Flash - Data in DTCM � Hyper Flash with SDRAM enabled (with DCD) - Code XIP in Hyper Flash - Data in SDRAM 2. i.MXRT1050 boot overview 2.1. Boot feature The boot process begins at the Power-On Reset (POR) where the hardware reset logic forces the ARM core to begin the execution starting from the on-chip boot ROM. The boot ROM uses the state of the BOOT_MODE register and eFUSEs to determine the boot device. For development purposes, the eFUSEs used to determine the boot device may be overridden using the GPIO pin inputs. The boot ROM code also allows to download the programs to be run on the device. The example is a provisioning program that can make further use of the serial connection to provide a boot device with a new image. 2.1.1. Device Configuration Data (DCD) DCD feature allows the boot ROM code to obtain the SOC configuration data from an external program image residing on the boot device. As an example, the DCD can be used to program the SDRAM controller (SEMC) for optimal settings, improving the boot performance. The DCD is restricted to the memory areas and peripheral addresses that are considered essential for the boot purposes. 2.1.2. Secure boot (High-Assurance Boot) Before the HAB allows the user image to execute, the image must be signed. The signing process is done during the image build process by the private key holder and the signatures are then included as a part of the final program image. If configured to do so, the ROM verifies the signatures using the public keys included in the program image. In addition to supporting the digital signature verification to authenticate the program images, the encrypted boot is also supported. The encrypted boot can be used to prevent the cloning of the program image directly off the boot device. A secure boot with HAB can be performed on all boot devices supported on the chip in addition to the serial downloader. The HAB How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 2 NXP Semiconductors i.MXRT1050 boot overview library in the boot ROM also provides the API functions, allowing the additional boot chain components (bootloaders) to extend the secure boot chain. 2.2. Boot ROM overview The mainly features of the Boot Rom include: � Support for booting from various boot devices � Serial downloader support (USB OTG and UART) � Device Configuration Data (DCD) and plugin � Digital signature and encryption based High-Assurance Boot (HAB) � Wake-up from the low-power modes � Encrypted eXecute In Place (XIP) on Serial NOR via FlexSPI interface powered by Bus Encryption Engine (BEE) � Encrypted boot on devices except the Serial NOR by Data Co-Processor (DCP) controller The Boot Rom supports these boot devices: � Serial NOR Flash via FlexSPI � Serial NAND Flash via FlexSPI � Parallel NOR Flash via Smart External Memory Controller (SEMC) � RAWNAND Flash via SEMC � SD/MMC � SPI NOR/EEPROM 2.3. Boot related address Start Address 0x80000000 0x60000000 0x20200000 0x20000000 0x00000000 End Address 0xDFFFFFFF 0x7F7FFFFF 0x2027FFFF 0x2007FFFF 0x0007FFFF Size 1.5GB 504MB 512KB 512KB 512KB Boot related address Description SEMC external memories (SDRAM, NOR, PSRAM, NAND and 8080) shared memory space FlexSPI/FlexSPI cipherer text OCRAM DTCM ITCM 2.4. Boot settings The BOOT_MODE is initialized by sampling the BOOT_MODE0 and BOOT_MODE1 inputs on the rising edge of the POR_B and stored in the internal BOOT_MODE register (can be read from SRC_SBMR2[BMOD[1:0]]). How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 3 i.MXRT1050 boot overview Boot MODE pin settings BOOT_MODE[1:0] 00 01 10 11 Boot Type Boot From Fuses Serial Downloader (From USB or UART) Internal Boot (Continues to execute the boot code from the internal boot ROM) Reserved NOTE Boot From Fuses is like the Internal Boot mode with one difference: In this mode, the GPIO boot override pins are ignored. The boot ROM code uses the boot eFUSE settings only. For these four boot modes (one is reserved for NXP use). The boot mode is selected based on the binary value stored in the internal BOOT_MODE register. Switch (SW7-3 & SW7-4) is used to select the boot mode on the MIMXRT1050 EVK Board. Boot MODE pin settings based on MIMXRT1050-EVK BOOT_MODE[1:0] (SW7-3 SW7-4) 00 01 10 11 BOOT Type Boot From Fuses Serial Downloader Internal Boot Reserved Typically, the internal boot is selected for normal boot, which is configured by external BOOT_CFG GPIOs. The Table 4shows the typical Boot Mode and Boot Device settings. Typical Boot Mode and Boot Device settings SW7-1 OFF OFF ON SW7-2 ON OFF OFF SW7-3 ON ON ON SW7-4 OFF OFF OFF Boot Device Hyper Flash QSPI Flash SD Card How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 4 NXP Semiconductors i.MXRT1050 boot overview NOTE For more information about boot mode configuration, see the System Boot chapter of the IMXRT 1050 Reference Manual. For more information about MIMXRT1050 EVK boot device selection and configuration, see the main board schematic. 2.5. Boot Image There are two types of i.MX MCU bootable image: � Normal boot image: This type of image can boot directly by boot ROM. � Plugin boot image: This type of image can be used to load a boot image from devices that are not natively supported by boot ROM. Both types of image can be unsigned, signed, and encrypted for different production phases and different security level requirements: � Unsigned Image: The image does not contain authentication-related data and is used during development phase. � Signed Image: The image contains authentication-related data (CSF section) and is used during production phase. � Encrypted Image: The image contains encrypted application data and authentication-related data and is used during the production phase with higher security requirement. The Boot Image consists of: � Image Vector Table (IVT): A list of pointers located at a fixed address that the ROM examines to determine where the other components of the program image are located. � Boot Data: A table that indicates the program image location, program image size in bytes, and the plugin flag. � Device Configuration Data (DCD): IC configuration data (ex: SDRAM register config). � User code and data. � CSF (optional): signature block for Secure Boot, generated by CST. � KeyBlob (optional) � a data structure consists of wrapped DEK for encrypt boot. Each bootable image starts with appropriate IVT. In general, for the external memory devices that support XIP feature, the IVT offset is 0x1000 else it is 0x400. For example, for FlexSPI NOR on RT1052, the IVT must start at address 0x60001000 (start address is 0x6000_0000, IVT offset is 0x1000). How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 5 i.MXRT1050 boot overview Bootable image layout 2.5.1. IVT data structure Offset 0x00 - 0x03 Field header 0x04 - 0x07 0x08 - 0x0b 0x0c - 0x0f 0x10 - 0x13 0x14 - 0x17 0x18 - 0x1b 0x1c - 0x1f entry reserved1 dcd boot_data self csf reserved2 IVT data structure Description Byte 0 tag, fixed to 0xD1 Byte 1,2 length, bit endian format containing the overall length of the IVT in bytes, fixed to 0x00, 0x20 Byte 3: version, valid values: 0x40, 0x41, 0x42, 0x43 Absolute address of the first instruction to execute from the image, or the vector address of the image Reserved for future use, set to 0 Absolute address of the image DCD. It is optional, so this field can be set to NULL if no DCD is required. Absolute address of the boot data Absolute address of the IVT. Absolute address of the Command Sequence File (CSF) used by the HAB library Reserved, set to 0 How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 6 NXP Semiconductors 2.5.2. Boot data structure Offset 0x00-0x03 0x04-0x07 0x08-0x0b Field start length plugin Program tools Boot data Structure Description Absolute address of the bootable image Size of the bootable image Plugin flag, set to 0 if it is a normal boot image 2.6. Image generation tool The Elftosb utility is a command-line host program used to generate the i.MX bootable image for the i.MX MCU boot ROM. Elftosb tool supports SREC input program image. It also can generate wrapped binary file with command sequences and bootable image together called SB file, using corresponding options and proper command file called BD file. (MFGTool using this .sb file) More details about BD file, you can take i.MX MCU Manufacturing User's Guide (Chapter 4.1) for reference. How to generate a bootable image for a unsigned normal / signed normal / encrypted normal / plugin bootable image you can take you can take i.MX MCU Manufacturing User's Guide (Chapter 4.2) for reference. 3. Program tools 3.1. DAP-Link (OpenSDA MSD drag/drop) � Hyper Flash/QSPI Flash on EVK only � Binary file support only NOTE The default firmware of DAP-Link on EVK supports Hyper Flash only. The firmware of DAP-Link should be replaced if the QSPI flash drag/drop is used. 3.2. MFG tool The MfgTool supports I.MXRT BootROM and KBOOT based Flashloader, it can be used in factory production environment. The Mfgtool can detect the presence of BootROM devices connected to PC and invokes "blhost" to program the image on target memory devices connected to I.MX MCU device. The blhost is a command-line host program used to interface with devices running KBOOT based Bootloader, part of MfgTool release. sb file support only. For MFG: � cfg.ini Configure for which device, board and program list (in the ucl2.xml) to use How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 7 Program tools � ucl2.xml Loading flash loader Program which boot image � MfgTool.log For detail logs in case of failure � boot_image.sb Boot image put into "OS Firmware" folder MfgTool Organization 3.2.1. Macros for the boot header The Table 7 shows three macros that are added in flexspi_nor targets to support XIP: Macros for the boot header Macro Description XIP_EXTERNAL_FLASH 1: Exclude the code which will change the clock of flexspi. 0: make no changes. XIP_BOOT_HEADER_ENABLE 1: Add flexspi configuration block, image vector table, boot data and device configuration data(optional) to the image by default. 0: Add nothing to the image by default. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 8 NXP Semiconductors XIP_BOOT_HEADER_DCD_ENABLE Program tools 1: Add device configuration data to the image. 0: Do NOT add device configuration data to the image. The Table 8 shows the different effect on the built image with different combination of these macros: Different effect on the built image with difference macros XIP_BOOT_HEADER_DCD_ENA XIP_BOOT_HEADER_DCD_ENA BLE=1 BLE=0 XIP_BOOT_HEA DER_ENABLE=1 Can be programed to Hyper Flash by IDE and can run after POR reset if Hyper Flash is the boot source. SDRAM will be initialized. Can be programed to Hyper Flash by IDE and can run after POR reset if Hyper Flash is the boot source. SDRAM will NOT be initialized. XIP_EXTERNAL_FLASH=1 XIP_BOOT_HEA Can NOT run after POR reset if it is programed by IDE even if Hyper DER_ENABLE=0 Flash is the boot source. XIP_EXTERNAL_FLASH This image can NOT do XIP because when this macro is set to 1, it will =0 exclude the code which will change the clock of FlexSPI. 3.3. OpenSDA Drag/Drop and boot from Hyper Flash This chapter will show a detail steps that program an image to Hyper Flash by using OpenSDA Drag/Drop. The steps are as following: Step 1: Open the Hello world demo in the SDK and select the project configuration as flexspi_nor_debug. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 9 Program tools Select the project configuration as flexspi_nor_debug Step 2: Build the project and generate an image. You can find the hello_world.bin as in Figure 4: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 10 NXP Semiconductors Program tools hello_world.bin location Step 3: Configure the board to serial downloader mode and make sure the power supply is form the Debug USB. To achieve these, SW7-4 should pull-up others pull-down Figure 5 and the J1-5, J1-6 should be connected Figure 6. SW7-4 pull-up and others pull-down How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 11 Program tools Power supply switch Step 4: Now we can power up the board by connecting USB Debug Cable to J28 and open windows explorer and confirm that a U-Disk appears as a drive like Figure 7. RT1050-EVK appeared How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 12 NXP Semiconductors NOTE The first time you connect the MBED USB to Host Computer Windows will ask to install the MBED serial driver. Step 5: Drag/drop the hello_world.bin to RT1050-EVK. Then the RT1050-EVK disappears and appears again after few seconds. Step 6: Disconnect the USB Debug Cable and configure the board to Hyper Flash Boot Mode which means SW7-2 and SW7-3 pull-up others pull-down Figure 8. Program tools Hyper Flash Boot Mode Configuration Connect the USB Debug Cable again and configure the Terminal Window: � Baud rate: 115200 � Data bits: 8 � Stop bit: 1 � Parity: None � Flow control: None Press SW3 to reset the EVK Board and "hello world" will be printed to the terminal as in Figure 9 How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 13 Program tools Hello world output How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 14 NXP Semiconductors Program tools 3.4. MFG boot from Hyper Flash This chapter shows the steps that using MFG Tool how to program an image to Hyper Flash and Boot from the Hyper Flash. Step 1: Open the Hello world demo in the SDK and select the project configuration as flexspi_nor_debug Figure 10 and make sure the settings likes Figure 11. Select the project configuration as flexspi_nor_debug How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 15 Program tools Defined Symbols for hello_world Step 2: Change the default entry to Reset_Handler likes following Figure. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 16 NXP Semiconductors Program tools Change the default entry to Reset_Handler NOTE Step 5 can be skipped if this step is set. Step 3: Build the project and generate an image with .srec format. You can find the hello_world.srec as in Figure 13: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 17 Program tools hello_world.srec location Step 4: Copy hello_world.srec to the elftosb folder: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 18 NXP Semiconductors Program tools Copy hello_world.srec Step 5: Open the imx-flexspinor-normal-unsigned.bd under path Flashloader_i.MXRT1050_GA\Tools\bd_file\imx10xx. Open it and set the entryPointAddress to How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 19 Program tools 0x60002000 likes following Figure. Set the entryPointAddress to 0x60002000 NOTE Step 2 can be skipped if this step is set. Step 6: Now we can use command to generate the i.MX Bootable image using elftosb file. Open cmd.exe and type following command: elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned.bd -o ivt_flexspi_nor_hello_world.bin hello_world.srec How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 20 NXP Semiconductors Program tools Generate i.MX Bootable image After above command, two bootable images are generated: � ivt_flexspi_nor_hello_world.bin � ivt_flexspi_nor_hello_world_nopadding.bin ivt_flexspi_nor_hello_world.bin: The memory regions from 0 to ivt_offset are filled with padding bytes (all 0x00s). ivt_flexspi_nor_hello_world_nopadding.bin: Starts from ivtdata directly without any padding before ivt. The later one will be used to generate SB file for Hyper FLASH programming in subsequent section. Step 7: This step we will create a SB file for Hyper Flash programming. A boot_image.sb file will be generated that is for MfgTool use later. Open cmd.exe and type following command: elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_HyperFlash.bd -o boot_image.sb ivt_flexspi_nor_hello_world_nopadding.bin How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 21 Program tools Create a SB file for Hyper Flash programming After performing above command, the boot_image.sb is generated under elftosb folder. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 22 NXP Semiconductors Program tools The boot_image.sb is generated Step 8: Copy the boot_image.sb file to OS Firmware folder: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 23 Program tools Copy the boot_image.sb to OS Firmware folder Now, Make sure the "name" under "[List]" to "MXRT105x-DevBoot" in cfg.ini file under <mfgtool_root_dir> folder. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 24 NXP Semiconductors Program tools Make sure h " X 105x- " Switch the EVK-Board to Serial Downloader mode by setting SW7 to "1-OFF, 2-OFF, 3-OFF, 4-ON". Connect a UAB Cable to J9 and power on the EVK Board by inserting USB Cable to J28. Open MfgTool, it will show the detected device like Figure 21: MfgTool GUI with device connected Click Start, The Mfgtool process initiates. Once completed, MfgTool shows the success status as shown in Figure 22. Click Stop and Close the Mfgtool. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 25 Program tools MfgTool Success Status Step 9: Switch the RT1050-EVK board to Internal boot mode and select Hyper FLASH as boot device by setting SW7 to "1-OFF, 2-ON, 3-ON, 4-OFF". Connect the USB Cable to J28 and open a terminal, then reset the Board. "hello world" will be printed on the terminal. "h w " p h 3.5. MFG boot from SD Card This chapter will show the steps that using MFG tool to program an image to SD Card and Boot from the SD Card. Step 1: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 26 NXP Semiconductors Open the Hello world demo in the SDK and select the project configuration as Debug Program tools Select the project configuration as Debug Step 2: Change the default entry to Reset_Handler likes following Figure. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 27 Program tools Change the default entry to Reset_Handler NOTE Step 6 can be skipped if this step is set. Step 3: Find the linkfile MIMXRT1052xxxxx_ram.icf and change the start vector table from 0x0000A000. Change the start vector table from 0x0000A000 Step 4: 28 How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors Program tools Build the project and generate the image. You can find the hello_world.srec at following location: hello_world.srec location Step 5: Copy the hello_world.srec to the elftosb folder: Copy hello_world.srec Step 6: Open the imx-itcm-unsigned.bd under path Flashloader_i.MXRT1050_GA\Tools\bd_file\imx10xx. Open it and set the entryPointAddress to 0x0000A000 likes following figure. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 29 Program tools Set the entryPointAddress to 0x0000A000 NOTE Step 2 can be skipped if this step is set. Step 7: Now we can use command to generate the i.MX Bootable image using elftosb file. Open cmd.exe and type following command: elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-itcm-unsigned.bd -o ivt_itcm_hello_world.bin hello_world.srec How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 30 NXP Semiconductors Program tools Generate i.MX Bootable image After above command, two bootable images are generated: � ivt_itcm_hello_world.bin � ivt_itcm_hello_world_nopadding.bin ivt_flexspi_nor_hello_world.bin: The memory regions from 0 to ivt_offset are filled with padding bytes (all 0x00s). ivt_flexspi_nor_hello_world_nopadding.bin: Starts from ivtdata directly without any padding before ivt. The later one will be used to generate SB file for SD Card programming in subsequent section. Step 8: This step we will create a SB file for SD Card programming. A boot_image.sb file will be generated that is for MfgTool use later. Open cmd.exe and type following command: elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_sdcard_image.bd -o boot_image.sb ivt_itcm_hello_world_nopadding.bin How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 31 Program tools Create a SB file for SD Card programming After performing above command, the boot_image.sb is generated under elftosb folder. The boot_image.sb is generated Step 9: Copy the boot_image.sb file to OS Firmware folder: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 32 NXP Semiconductors Program tools Copy the boot_image.sb to OS Firmware folder Now, make sure the "name" under "[List]" to "MXRT105x-DevBoot" in cfg.ini file under <mfgtool_root_dir> folder. Make sure h " X 105x- " How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 33 Program tools Insert a SD Card to J20 slot and switch the EVK-Board to Serial Downloader mode by setting SW7 to "1-OFF, 2-OFF, 3-OFF, 4-ON". Connect a UAB Cable to J9 and power on the EVK Board by inserting USB Cable to J28. Open MfgTool, it will show the detected device like Figure 35: MfgTool GUI with device connected Click Start. The Mfgtool process initiates. Once completed, MfgTool shows the success status as shown in Figure 36. Click Stop and Close the Mfgtool. MfgTool Succes Status Step 10: Switch the RT1050-EVK board to Internal boot mode and select SD Card as boot device by setting SW7 to "1-ON, 2-OFF, 3-ON, 4-OFF". Connect the USB Cable to J28 and open a terminal, then reset the Board."hello world" will be printed to the terminal. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 34 NXP Semiconductors Program tools "h w " p h 3.6. MFG boot from Hyper Flash with DCD for SDRAM This chapter will show the steps that using MFG tool to program an image to Hyper Flash and Boot from the Hyper Flash. Step 1: Open the Hello world demo in the SDK and select the project configuration as flexspi_nor_debug (Figuire 38) and make sure the settings likes Figure 39. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 35 Program tools Select the project configuration as flexspi_nor_debug How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 36 NXP Semiconductors Defined Symbols for hello_world Step 2: Change the default entry to Reset_Handler likes following Figure. Program tools Change the default entry to Reset_Handler NOTE Step 7 can be skipped if this step is set. Step 3: Find the linkfile MIMXRT1052xxxxx_flexspi_nor.icf and change data region from TCM to SDRAM. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 37 Program tools Change data region from TCM to SDRAM Step 4: Build the project and generate the image. You can find the hello_world.srec at following location: hello_world.srec location How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 38 NXP Semiconductors Step 5: Copy hello_world.srec to the elftosb folder: Program tools Copy hello_world.srec Step 6: Copy imx-flexspinor-normal-unsigned.bd and rename it to imx-flexspinor-normal-unsigned-dcd.bd. Find the file copy and rename it How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 39 Program tools Open imx-flexspinor-normal-unsigned-dcd.bd and add a DCD path. Add DCD path Step 7: Open the imx-flexspinor-normal-unsigned-dcd.bd under path Flashloader_i.MXRT1050_GA\Tools\bd_file\imx10xx. Open it and set the entryPointAddress to 0x60002000 likes following figure. Set the entryPointAddress to 0x60002000 NOTE Step 2 can be skipped if this step is set. Step 8: Copy dcd.bin to the following path: How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 40 NXP Semiconductors Program tools Copy dcd.bin to the following path Step 9: Now we can use command to generate the i.MX Bootable image using elftosb file. Open cmd.exe and type following command: elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned-dcd.bd -o ivt_flexspi_nor_hello_world.bin hello_world.srec How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 41 Program tools Generate i.MX Bootable image After above command, two bootable images are generated: � ivt_flexspi_nor_hello_world.bin � ivt_flexspi_nor_hello_world_nopadding.bin ivt_flexspi_nor_hello_world.bin: The memory regions from 0 to ivt_offset are filled with padding bytes (all 0x00s). ivt_flexspi_nor_hello_world_nopadding.bin: Starts from ivtdata directly without any padding before ivt. The later one will be used to generate SB file for Hyper FLASH programming in subsequent section. Step 10: This step we will create a SB file for Hyper Flash programming. A boot_image.sb file will be generated that is for MfgTool use later. Open cmd.exe and type following command: elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_HyperFlash.bd -o boot_image.sb ivt_flexspi_nor_hello_world_nopadding.bin How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 42 NXP Semiconductors Program tools Create a SB file for Hyper Flash programming After performing above command, the boot_image.sb is generated under elftosb folder. boot_image.sb is generated How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 43 Program tools Step 11: Copy the boot_image.sb file to OS Firmware folder: Copy the boot_image.sb to OS Firmware folder Now, Make sure the "name" under "[List]" to "MXRT105x-DevBoot" in cfg.ini file under <mfgtool_root_dir> folder. Make sure h " X 105x- " How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 44 NXP Semiconductors Program tools Switch the EVK-Board to Serial Downloader mode by setting SW7 to "1-OFF, 2-OFF, 3-OFF, 4-ON". Connect a UAB Cable to J9 and power on the EVK Board by inserting USB Cable to J28. Open MfgTool, it will show the detected device like Figure 53: MfgTool GUI with device connected Click Start, Mfgtool. The Mfgtool process initiates. Once completed, MfgTool shows the success status as shown in Figure 54. Click Stop and Close the Mfgtool. MfgTool Succes Status Step 12: Switch the RT1050-EVK board to Internal boot mode and select Hyper FLASH as boot device by setting SW7 to "1-OFF, 2-ON, 3-ON, 4-OFF". Connect the USB Cable to J28 and open a terminal, then reset the Board. "hello world" will be printed to the terminal. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 45 Conclusion "h w " p h 4. Octal SPI Flash support list Besides the EVK onboard Hyper Flash, the following Flashes are also support: Octal SPI Flash supports list Vendor ISSI (Hyper Flash) SPANSION (Hyper Flash) Macronix Micron Adesto GigaDevice Flash IS26KS256 KS512SBPHI02 MX25UM513 MT35X ATXP032/ ATXP128 GD25LX256E 5. Conclusion This application note mainly describes how to use Flashloader step by step. For more information, you can take i.MX MCU Manufacturing User's Guide for reference. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 46 NXP Semiconductors 6. Revision history Revision number 0 1 2 3 4 5 Revision history Revision history Date 12/2017 06/2018 07/2018 09/2018 09/2018 07/2019 Substantive changes Initial release The name of the application note changed to: � How to Enable Boot from Octal SPI Flash and SD Card � Document updated to adapt SDK version 2.3.1 � Document updated to adapt Flashloader version 1.1 � Caption of Table 9. Hyper Flash supports list changed to Table 9. Octal SPI flash supports list � Added steps to change the entry address. � Used .srec file instead of .out file as the source file. Updated Table 9. Octal SPI Flash supports list. Updated Adesto detail in Table 9. Octal SPI Flash supports list. Updated Table 9. Octal SPI Flash supports list. How to Enable Boot from Octal SPI Flash and SD Card, Application Note, Rev. 5, 07/2019 NXP Semiconductors 47 How to Reach Us: Home Page: nxp.com Web Support: nxp.com/support Information in this document is provided solely to enable system and software implementers to use NXP products. There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits based on the information in this document. NXP reserves the right to make changes without further notice to any products herein. NXP makes no warranty, representation, or guarantee regarding the suitability of its products for any particular purpose, nor does NXP assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. "Typical" parameters that may be provided in NXP data sheets and/or specifications can and do vary in different applications, and actual performance may vary over time. All operating parameters, including "typicals," must be validated for each customer application by customer's technical experts. NXP does not convey any license under its patent rights nor the rights of others. NXP sells products pursuant to standard terms and conditions of sale, which can be found at the following address: nxp.com/SalesTermsandConditions. While NXP has implemented advanced security features, all products may be subject to unidentified vulnerabilities. Customers are responsible for the design and operation of their applications and products to reduce the effect of these vulnerabilities on customer's applications and products, and NXP accepts no liability for any vulnerability that is discovered. Customers should implement appropriate design and operating safeguards to minimize the risks associated with their applications and products. NXP, the NXP logo, NXP SECURE CONNECTIONS FOR A SMARTER WORLD, COOLFLUX, EMBRACE, GREENCHIP, HITAG, I2C BUS, ICODE, JCOP, LIFE VIBES, MIFARE, MIFARE CLASSIC, MIFARE DESFire, MIFARE PLUS, MIFARE FLEX, MANTIS, MIFARE ULTRALIGHT, MIFARE4MOBILE, MIGLO, NTAG, ROADLINK, SMARTLX, SMARTMX, STARPLUG, TOPFET, TRENCHMOS, UCODE, Freescale, the Freescale logo, AltiVec, C5, CodeTEST, CodeWarrior, ColdFire, ColdFire+, CWare, the Energy Efficient Solutions logo, Kinetis, Layerscape, MagniV, mobileGT, PEG, PowerQUICC, Processor Expert, QorIQ, QorIQ Qonverge, Ready Play, SafeAssure, the SafeAssure logo, StarCore, Symphony, VortiQa, Vybrid, Airfast, BeeKit, BeeStack, CoreNet, Flexis, MXC, Platform in a Package, QUICC Engine, SMARTMOS, Tower, TurboLink, UMEMS, EdgeScale, EdgeLock, eIQ, and Immersive3D are trademarks of NXP B.V. All other product or service names are the property of their respective owners. AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed Enabled, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, �Vision, Versatile are trademarks or registered trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere. The related technology may be protected by any or all of patents, copyrights, designs and trade secrets. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. The Power Architecture and Power.org word marks and the Power and Power.org logos and related marks are trademarks and service marks licensed by Power.org. � 2018-2019 NXP B.V. Document Number: AN12107 Rev. 5 07/2019
