Changes between Initial Version and Version 1 of catalina/SDP


Ignore:
Timestamp:
11/04/2026 10:17:37 PM (4 hours ago)
Author:
Tim Harvey
Comment:

initial page

Legend:

Unmodified
Added
Removed
Modified
  • catalina/SDP

    v1 v1  
     1[[Outline]]
     2
     3= IMX Serial Download Protocol (SDP)
     4The i.MX95 processor's internal BOOT ROM handles the first boot stage in order to be able to boot from a variety of devices (eMMC, SD / uSDHC, FlexSPI NOR, USB). One of the boot devices, referred to as the 'Serial Downloader Protocol' (SDP) provides an API over USB.
     5
     6== Catalina SDP hardware support
     7NXP's i.MX95 BOOT ROM only supports SDP on one of the two USB interfaces which is specified by a part ordering option. The GW920x and GW940x boards routes the USB1 interface which supports USB3.0 to the onboard USB 3.0 HUB to support USB 3.0 to the FSA modules and routes the USB2 interface which supports USB2.0 to the front panel Type-C connector.
     8
     9However, due to part availability from NXP the currently produced GW900x SOM's used for the GW920x boards use the i.MX95 variant supports SDP on the the USB1 (USB3.0) interface. Therefore if you need to use SDP on the current Catalina boards you need to have a specially modified board from Gateworks (contact support@gateworks.com)
     10
     11Additionally the Gateworks Catalina boards are configured by default via resistor strapping to boot from eMMC. If the eMMC has a valid software image on it the BOOT ROM will boot that. To boot from SDP you must either erase the eMMC or disable it.
     12
     13To erase boot firmware on eMMC (requires a booting board):
     14 - via uboot when using emmc boot0 for boot firmware (most common)
     15{{{#!bash
     16u-boot=> mmc dev 0 1 && mmc erase 0 2000 # erase 4MB of boot0
     17switch to partitions #1, OK
     18mmc0(part 1) is current device
     19MMC erase: dev # 0, block # 0, count 8192 ... 8192 blocks erased: OK
     20}}}
     21 - via uboot when using emmc boot1 for boot firmware:
     22{{{#!bash
     23u-boot=> mmc dev 0 2 && mmc erase 0 2000 # erase 4MB of boot1
     24switch to partitions #2, OK
     25mmc0(part 2) is current device
     26MMC erase: dev # 0, block # 0, count 8192 ... 8192 blocks erased: OK
     27}}}
     28 - via uboot when using emmc user for boot firmware:
     29{{{#!bash
     30mmc dev 0 0 && mmc erase 40 2000 # erase 4MB at 32KB of user
     31switch to partitions #0, OK
     32mmc0(part 0) is current device
     33MMC erase: dev # 0, block # 64, count 8192 ... 8192 blocks erased: OK
     34}}}
     35 - via linux when using emmc boot0 for boot firmware (most common):
     36{{{#!bash
     37# echo 0 > /sys/block/mmcblk0boot0/force_ro
     38# dd if=/dev/zero of=/dev/mmcblk0boot0 bs=8192 count=1
     391+0 records in
     401+0 records out
     41}}}
     42 - via linux when using emmc boot1 for boot firmware:
     43{{{#!bash
     44# echo 0 > /sys/block/mmcblk0boot1/force_ro
     45# dd if=/dev/zero of=/dev/mmcblk0boot1 bs=8192 count=1
     461+0 records in
     471+0 records out
     48}}}
     49 - via linux when using emmc user for boot firmware:
     50{{{#!bash
     51# dd if=/dev/zero of=/dev/mmcblk0 bs=1024 seek=32 count=4064 # erase 4MB at 32KB
     521+0 records in
     531+0 records out
     54}}}
     55
     56Alternatively if the firmware on your board is not booting to U-Boot or Linux and thus keeping the BOOT ROM from enumerating SDP on the USB bus you can use metal tweezers to short the unloaded R58 pads on the GW900x SOM at power-on to effectively disable the eMMC by grounding the CMD signal (remove the short as soon as you see the board boot in order to be able to access the eMMC).
     57
     58== Catalina SDP software support
     59Assuming you have the proper hardware support (see above) the latest Catalina boot firmware supports booting over SDP.
     60
     61== Booting Catalina U-Boot over SDP with uuu
     62NXP provides 'uuu' (Universal Update Utility) which is an evolution of the old Freescale MFGtools. This tool is supported on both Linux and Windows hosts.
     63
     64NXP recommends using UUU version 1.5.243 or higher for the i.MX95.
     65
     66Linux Install:
     67{{{#!bash
     68wget https://github.com/NXPmicro/mfgtools/releases/download/uuu_1.5.243/uuu
     69chmod +x uuu
     70sudo mv uuu /usr/local/bin
     71}}}
     72
     73Once a Catalina board with proper hardware support (see above) has its USB SDP interface connected to a host PC and has a blank/disabled eMMC or is otherwise configured for SDP boot you will see it on the list of supported SDP devices when powered on:
     74{{{#!bash
     75$ uuu -lsusb # list compatible devices on the USB bus in SDP mode
     76uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.243-0-g230f1b1
     77
     78Connected Known USB Devices
     79        Path     Chip    Pro     Vid     Pid     BcdVersion      Serial_no
     80        ====================================================================
     81        1:1372   MX95    SDPS:   0x1FC9 0x015D   0x0002 
     82}}}
     83
     84Once you have verified the device is attempting to boot via SDP you can boot it over SDP using the correct flash.bin for your board's DRAM configuration (from https://dev.gateworks.com/catalina/boot_firmware/). Note that this takes two invocations of uuu:
     85 * Phase 1. Sending the flash.bin to the BOOT ROM
     86 * Phase 2. Sending the flash.bin to U-Boot SPL to load U-Boot proper (after U-Boot SPL hits 'SDP: handle requests...'
     87
     88Example:
     89 - Linux host:
     90{{{#!bash
     91$ sudo uuu flash-4GB_1Gbx16_1R.bin # 4GB DRAM
     92[sudo] password for tharvey:
     93uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.243-0-g230f1b1
     94
     95Success 1    Failure 0             
     96                                   
     97                                   
     981:1372-6A56B 2/ 2 [Done                                  ] SDPS: done     
     99}}}
     100  - Note you can put this in a while loop to handle both phases and/or multiple boots 'while [ 1 ]; do sudo uuu flash-4GB_1Gbx16_1R.bin; done'
     101 * Catalina serial console:
     102  - Phase 1:
     103{{{#!bash
     104imx-oei lf-6.18.2-1.0.0-10-g01fe2ff9 mx95catalina (Oct 15 2026 00:56:06)
     105imx-oei: LPDDR5 4GB MT62F1G32D2DS-023
     106DDR OEI: IMEM + DMEM load in 3317 us
     107DDR OEI: TRAINING complete in 2551823 us
     108DDR OEI: done, err = 0
     109imx-sm automotive-16.0.0_1.3.0-5-g7da12332 (Oct 15 2026 00:56:08)
     110
     111U-Boot SPL 2026.04-00024-g572caacf6eae (Nov 04 2026 - 18:36:18 +0000)
     112GSCv3   : v67 0xf07b RST:VIN Thermal protection:disabled
     113RTC     : 1970-01-01  20:25:11 UTC
     114DRAM    : LPDDR5 4GiB
     115Trying to boot from USB SDP
     116SDP: initialize...
     117SDP: handle requests...
     118}}}
     119  - Phase 2: (invoke the uuu command again with the same flash.bin)
     120{{{#!bash
     121Downloading file of size 1376256 to 0x90400000... done
     122Jumping to header at 0x90400000
     123Header Tag is not an IMX image
     124Found header at 0x90400000
     125NOTICE:  BL31: v2.12.0(release):lf-6.18.2-1.0.0
     126NOTICE:  BL31: Built : 00:56:09, Oct 15 2026
     127
     128
     129U-Boot 2026.04-00024-g572caacf6eae (Nov 04 2026 - 18:36:18 +0000)
     130
     131CPU:   NXP i.MX95 Rev2.0 A55 at 1800 MHz
     132DTB     : imx95-catalina-gw92xx-0x
     133Model: Gateworks Catalina GW92xx-0x i.MX95 Development Kit
     134DRAM:  3.8 GiB
     135Model   : GW9201B-S02C
     136Serial  : 577802
     137MFGDate : 10-08-2026
     138Core:  307 devices, 32 uclasses, devicetree: fit
     139MMC:   FSL_SDHC: 0, FSL_SDHC: 1
     140Loading Environment from MMC... *** Warning - bad CRC, using default environment
     141
     142Reading from MMC(0)... In:    serial@44380000
     143Out:   serial@44380000
     144Err:   serial@44380000
     145
     146BuildInfo:
     147  - ELE firmware version 2.0.6-9a9290a
     148
     149booting from SDP; setting mmcroot to emmc
     150switch to partitions #0, OK
     151mmc0(part 0) is current device
     152MMC Device 2 not found
     153Net:   eth0: enetc-0 [PRIME], eth1: enetc-1, eth2: enetc-2
     154GSC     : boot watchdog disabled
     155Thermal protection:disabled
     156Hit any key to stop autoboot: 0
     157u-boot=>
     158}}}
     159
     160At this point you can continue using U-Boot. If you wish to flash the firmware to the emmc at this point be sure to specify the emmc device and set the MMC boot partition if needed. For example for eMMC boot0:
     161{{{#!bash
     162setenv dev 0
     163setenv bootpart 1
     164run update_firmware && mmc partconf $dev 0 $bootpart 0
     165}}}