SMCU NFW#
The IGX Thor Developer Kits include a Safety Micro-controller (SMCU) from the Renesas Electronics. This guide provides instructions to flash the SMCU NFW firmware on the IGX Thor Developer Kit Mini (T5000).
Flashing Setup#
To update the SMCU firmware on the IGX Thor Developer Kit Mini (T5000), you will need:
A host PC (x86_64) running Ubuntu OS.
A monitor connected to the DisplayPort (3) or HDMI port (4) of the Dev Kit.
Keyboard and mouse connected to the USB ports (1) of the devkit.
The Debug USB-C port (8) of the Dev Kit connected to the host PC.
Refer to the System Overview page for more details on the HW interfaces.
Download SMCU NFW tarball#
Download the SMCU NFW tarball smcu_nfw_R38.5.0_aarch64.tbz2 from the IGX Download Center.
Flashing SMCU FW over UART from host PC#
Follow these steps to check and update the SMCU firmware:
Make sure the Debug USB-C port (8) of the Dev Kit is connected to the host.
Check the UART devices on the host using the command:
SMCU_SERIAL_DEV=$(ls /dev/serial/by-id/usb-NVIDIA_Tegra_On-Platform_Operator_*-if05) TEGEA_SERIAL_DEV=$(ls /dev/serial/by-id/usb-NVIDIA_Tegra_On-Platform_Operator_*-if01) ls -l /dev/ttyACM* ls -l $SMCU_SERIAL_DEV ls -l $TEGEA_SERIAL_DEV
Usually, the Tegra UART device is the first entry (
/dev/ttyACM0) and the SMCU UART device is the 3rd entry (/dev/ttyACM2).Connect to the SMCU console:
sudo minicom -D "$SMCU_SERIAL_DEV"
Check the SMCU FW version on the SMCU console:
nfw> nfw> version Info: Executing cmd: version, argc: 0, args: SW Version 2.00.02 rh850_nfw Command Executed
If the version matches with the current release version, then the firmware is up to date already. Otherwise, follow the next steps to update the firmware.
Unzip SMCU release tarball file:
sudo tar -xf smcu_nfw_R38.5.0_aarch64.tbz2
Close console ports for both SMCU and Tegra (if open).
Flash the SMCU firmware HEX file with script:
cd smcu/nfw/ # Update first partition. sudo python3 ./MCU_Flashing.py 921600 "$SMCU_SERIAL_DEV" "$TEGEA_SERIAL_DEV" ./P3974_rh850_IGX_nfw.hex # Run again to update the second partition. sudo python3 ./MCU_Flashing.py 921600 "$SMCU_SERIAL_DEV" "$TEGEA_SERIAL_DEV" ./P3974_rh850_IGX_nfw.hex
Check the SMCU FW version after update:
nfw> nfw> version Info: Executing cmd: version, argc: 0, args: SW Version 2.00.02 rh850_nfw Command Executed
Power cycle the Dev Kit.
Supported SMCU Commands#
The following are the supported SMCU commands:
S.NO |
Command |
Description |
Testcase |
Notes |
|---|---|---|---|---|
1 |
help |
Shows all available commands supported |
help |
N/A |
2 |
version |
Show the current flashed/running firmware version |
version |
N/A |
3 |
showport |
Show the state of port X pin y |
showport P x y |
N/A |
4 |
showallports |
Show the state of all board gpio pins |
showallports |
N/A |
5 |
setport |
Set the state of port x pin y to high/low |
setport P x y 1 |
N/A |
6 |
reset |
Reset the system |
reset/ reset force |
N/A |
7 |
poweron |
Poweron the system |
poweron |
N/A |
8 |
poweroff |
Poweroff the system |
poweroff |
N/A |
9 |
monitor_therm |
Enable/disable thermal monitoring |
monitor_therm enable |
N/A |
10 |
tegrarecovery on |
put tegra in recovery mode |
“tegrarecovery x1 on” followed by “tegrareset x1” |
N/A |
11 |
tegrarecovery off |
put tegra out of recovery |
“tegrarecovery x1 off” followed by “tegrareset x1” |
“N/A” |
12 |
tegrareset |
Resets Tegra |
tegrareset x1 |
N/A |
13 |
spiread |
Read n data using master spi module x |
spiread 0x1 0x300 0x1 |
N/A |
14 |
inforom |
Display smcu inforom contents |
inforom dump |
N/A |
15 |
vrs12 |
print VRS12 status |
vrs12 status |
N/A |
16 |
exitsc7 |
Exit SC7 sleep |
exitsc7 |
work when system is in sc7 state |