diff --git a/configs/AM62AX/AM62AX_linux_toc.txt b/configs/AM62AX/AM62AX_linux_toc.txt index 0e1e7ce19..c99c899a1 100644 --- a/configs/AM62AX/AM62AX_linux_toc.txt +++ b/configs/AM62AX/AM62AX_linux_toc.txt @@ -97,7 +97,7 @@ linux/Foundational_Components_Filesystem linux/Foundational_Components_Tools linux/Foundational_Components/Tools/Development_Tools linux/Foundational_Components/Tools/Pin_Mux_Tools -linux/Foundational_Components/Tools/Flash_via_DFU +linux/Foundational_Components/Tools/Flash_via_Fastboot linux/Foundational_Components/Tools/Flash_via_UART linux/Foundational_Components_IPC62ax linux/Foundational_Components_Edge_AI diff --git a/configs/AM62PX/AM62PX_linux_toc.txt b/configs/AM62PX/AM62PX_linux_toc.txt index 23c928621..b9a20cb67 100644 --- a/configs/AM62PX/AM62PX_linux_toc.txt +++ b/configs/AM62PX/AM62PX_linux_toc.txt @@ -100,7 +100,7 @@ linux/Foundational_Components_Filesystem linux/Foundational_Components_Tools linux/Foundational_Components/Tools/Development_Tools linux/Foundational_Components/Tools/Pin_Mux_Tools -linux/Foundational_Components/Tools/Flash_via_DFU +linux/Foundational_Components/Tools/Flash_via_Fastboot linux/Foundational_Components/Tools/Flash_via_Ethernet linux/Foundational_Components/Tools/Flash_via_UART linux/Foundational_Components/Tools/GPIO_Tools diff --git a/configs/AM62X/AM62X_linux_toc.txt b/configs/AM62X/AM62X_linux_toc.txt index 027dafb4d..3eab4fcaa 100644 --- a/configs/AM62X/AM62X_linux_toc.txt +++ b/configs/AM62X/AM62X_linux_toc.txt @@ -109,7 +109,7 @@ linux/Foundational_Components_Filesystem linux/Foundational_Components_Tools linux/Foundational_Components/Tools/Development_Tools linux/Foundational_Components/Tools/Pin_Mux_Tools -linux/Foundational_Components/Tools/Flash_via_DFU +linux/Foundational_Components/Tools/Flash_via_Fastboot linux/Foundational_Components/Tools/Flash_via_Ethernet linux/Foundational_Components/Tools/Flash_via_UART linux/Foundational_Components_IPC62x diff --git a/configs/AM64X/AM64X_linux_toc.txt b/configs/AM64X/AM64X_linux_toc.txt index e01c4f9cf..0367bbe00 100644 --- a/configs/AM64X/AM64X_linux_toc.txt +++ b/configs/AM64X/AM64X_linux_toc.txt @@ -76,7 +76,7 @@ linux/Foundational_Components_Migration_Guide linux/Foundational_Components_Secure_Boot linux/Foundational_Components_Filesystem linux/Foundational_Components_Tools -linux/Foundational_Components/Tools/Flash_via_DFU +linux/Foundational_Components/Tools/Flash_via_Fastboot linux/Foundational_Components/Tools/Flash_via_Ethernet linux/Foundational_Components/Tools/Flash_via_UART linux/Foundational_Components_IPC64x diff --git a/source/devices/AM62PX/linux/Release_Specific_Release_Notes.rst b/source/devices/AM62PX/linux/Release_Specific_Release_Notes.rst index 6e228af62..deb9c0722 100644 --- a/source/devices/AM62PX/linux/Release_Specific_Release_Notes.rst +++ b/source/devices/AM62PX/linux/Release_Specific_Release_Notes.rst @@ -51,6 +51,7 @@ What's new - RT Kernel : Real-Time Linux Interrupt Latency numbers here - :ref:`RT Interrupt Latencies ` - Power Management: DeepSleep, MCU-Only and Partial IO mode - :ref:`Power Management Overview ` - TI Apps Launcher: New Wi-Fi and Terminal Demo - :ref:`TI Apps Launcher ` + - Snagfactory Support - :ref:`Snagfactory Tool ` **Component version:** diff --git a/source/devices/AM62X/linux/Release_Specific_Release_Notes.rst b/source/devices/AM62X/linux/Release_Specific_Release_Notes.rst index 8b5fd1524..b0f98ebfd 100644 --- a/source/devices/AM62X/linux/Release_Specific_Release_Notes.rst +++ b/source/devices/AM62X/linux/Release_Specific_Release_Notes.rst @@ -50,6 +50,7 @@ What's new - RT Kernel : Real-Time Linux Interrupt Latency numbers here - :ref:`RT Interrupt Latencies ` - Power Management: DeepSleep, MCU-Only and Partial IO mode - :ref:`Power Management Overview ` - TI Apps Launcher: New Wi-Fi and Terminal Demo - :ref:`TI Apps Launcher ` + - Snagfactory Support - :ref:`Snagfactory Tool ` **Component version:** diff --git a/source/devices/AM64X/linux/Release_Specific_Release_Notes.rst b/source/devices/AM64X/linux/Release_Specific_Release_Notes.rst index cf41502a0..89566c187 100644 --- a/source/devices/AM64X/linux/Release_Specific_Release_Notes.rst +++ b/source/devices/AM64X/linux/Release_Specific_Release_Notes.rst @@ -49,6 +49,7 @@ What's new - LTS Stable Kernel update to 6.6.58 - Important Bug Fixes on top of Processor SDK 10.00.07.04 Release - RT Kernel : Real-Time Linux Interrupt Latency numbers here - :ref:`RT Interrupt Latencies ` + - Snagfactory Support - :ref:`Snagfactory Tool ` **Component version:** diff --git a/source/linux/Foundational_Components/Tools/Flash_via_DFU.rst b/source/linux/Foundational_Components/Tools/Flash_via_DFU.rst deleted file mode 100644 index bed625e9a..000000000 --- a/source/linux/Foundational_Components/Tools/Flash_via_DFU.rst +++ /dev/null @@ -1,311 +0,0 @@ -########################################### -Flash via USB Device Firmware Upgrade (DFU) -########################################### - -Flash Writer is a tool used to flash binaries to the on-board memory. This application -note provides instructions on how to use flash writer tool for flashing. Flash -writer script will use USB DFU to boot the board and then flash the binaries to on-board -memory. This tool also supports flashing multiple boards via DFU simultaneously. - -******** -Get Tool -******** - -SDK installer -============= - -Download and install Processer SDK Installer. For steps refer :ref:`download-and-install-sdk`. - -Clone repository -================ - -The sources are publicly available at `git.ti.com/uboot-flash-writer `__. - -You can clone the sources on your host by running the following commands, - -.. code-block:: console - - git clone https://git.ti.com/git/processor-sdk/uboot-flash-writer.git - git checkout master - -*************** -Important files -*************** - -* :file:`bin/` - Contains boot binaries used to boot the board via USB DFU, also config files - for GP, HS and HS-SE. -* :file:`src/` - other python modules. -* :file:`dfu_flash.py` - main python script that is to be run. -* Python script for flashing via DFU is located at :file:`/bin/DFU_flash/dfu_flash.py`. -* Config files and example dfu boot binaries are located at :file:`/bin/DFU_flash/bin//`. - -************ -Requirements -************ - -* Linux or Windows Development PC that can access serial console. -* Type C USB cable -* dfu-util program needs to installed on your host. - -For Ubuntu -========== - -.. code-block:: console - - sudo apt-get install dfu-util - -For Windows -=========== - -Download the dfu-util-0.9-win64.zip file from dfu-util site. Place executable files -in a directory ex. :file:`C:\\Program Files\\dfu-util` and then edit the environment -variables to add this path. - -Download Zadig installer from `here `__. - -Put the device in DFU mode. Then run the :file:`Zadig_.exe` file. - -Select libusbK and then click the Install Driver button. For more information -about libusbK, refer `wiki `__. - -* Python (3.10+) -* dfu-util installed on host (0.11+) -* USB hub to connect multiple boards (Optional) -* UART to read the logs from the EVM (Optional) - -**************** -Flow of flashing -**************** - -* Host PC is connected to boards via USB Type C. -* After tool is run, it will detect the boards. Script will send the bootloader - binaries ( :file:`tiboot3.bin`, :file:`tispl.bin` and :file:`u-boot.img` ) from host PC to boards and - boards will be booted. -* After the boards are booted, tool will send :file:`uEnv.txt` file from host PC to boards. -* Environment variables on boards is set using :file:`uEnv.txt` and boards are now ready - for flashing. tool can now flash files from host PC to boards. - -****************************************************** -Building bootloader binaries for flashing and DFU boot -****************************************************** - -Override the bootcmd command to receive the environment variable text file after -DFU boot and flash the binaries/images. Following change needs to be done. - -Pre-built DFU boot binaries for TI boards are already present in :file:`bin` directory. To -flash custom board(s) generate the boot binaries and place them in -:file:`/bin/DFU_flash/bin//` folder. - -Following change needs to be done in :file:`_a53_defconfig` file located at following path -inside the SDK :file:`/board-support/ti-u-boot-2024*/configs/`. - -Add or update the CONFIG_BOOTCOMMAND - -.. code-block:: text - - CONFIG_BOOTCOMMAND="setenv dfu_alt_info_flashenv uEnv.txt ram 0x82000000 0x10000000; setenv dfu_alt_info ${dfu_alt_info_flashenv}; dfu 0 ram 0; env import -t ${loadaddr} $filesize; run user_commands;" - -It will enable script to send uEnv.txt file, import the environment variables -from the uEnv.txt file and run user_commands after DFU boot. The user_commands -variable is defined in the :file:`uEnv.txt` file and the value assigned will be based on -flashing memory and binaries/images to be flashed. - -Additionallly, these changes can also be done: - -.. code-block:: text - - To make sure board does not use saved environment variables after boot. - - Add below line. - CONFIG_ENV_IS_NOWHERE=y - - Remove below line. - CONFIG_ENV_IS_IN_MMC=y - - To decrease boot delay to 0 - CONFIG_BOOTDELAY=0 - -For DFU boot, build the bootloader images using below configs file. Following -change is needed in :file:`Rules.make` file present in the top level of Linux SDK Installer. - -.. ifconfig:: CONFIG_part_variant in ('AM62X') - - .. code-block:: make - - UBOOT_MACHINE_R5=am62x_evm_r5_defconfig am62x_r5_usbdfu.config - - # For AM62X LP - - UBOOT_MACHINE_R5=am62x_lpsk_r5_defconfig am62x_r5_usbdfu.config - - # For AM62X SIP - - UBOOT_MACHINE_R5=am62xsip_evm_r5_defconfig am62x_r5_usbdfu.config - -.. ifconfig:: CONFIG_part_variant in ('AM64X') - - .. code-block:: make - - UBOOT_MACHINE_R5=am64x_evm_r5_defconfig - -.. ifconfig:: CONFIG_part_variant in ('AM62AX') - - .. code-block:: make - - UBOOT_MACHINE_R5=am62ax_evm_r5_defconfig am62x_r5_usbdfu.config - -.. ifconfig:: CONFIG_part_variant in ('AM62PX') - - .. code-block:: make - - UBOOT_MACHINE_R5=am62px_evm_r5_defconfig am62x_r5_usbdfu.config - -Generate the bootloader images for DFU boot using top-level makefile by running -following commands on the terminal from the top-level of the Linux SDK installer. - -.. code-block:: console - - $ make u-boot_clean - $ make u-boot - -Save the bootloader binaries generated in a separate directory. These bootloader -images will be used for DFU boot and to start flashing the images. The bootloader -images after make will be generated in the following path. - - -* :file:`board-support/u-boot_build/r5/tiboot3.bin` -* :file:`board-support/u-boot_build/a53/tispl.bin` -* :file:`board-support/u-boot_build/a53/u-boot.img` - -DFU boot binaries are required for flashing. These DFU binaries once booted on -the board listens for the images to be flashed over USB DFU. Go to the respective -directory :file:`bin/${device}/${type}` and copy paste the DFU boot binaries (:file:`tiboot3.bin`, :file:`tispl.bin`, :file:`u-boot.img`). - -For more details regarding USB DFU refer :ref:`usb-device-firmware-upgrade-label`. - -*********** -Connections -*********** - -Power off the EVM and set up the boot mode switches to boot from USB DFU - -.. code-block:: text - - SW2-11001100 - SW3-00000000 - -Power on the board. - -Optionally you can also connect host PC to board via UART to read the console logs. - -************************************** -Preparing the Flash Configuration file -************************************** - -* Go to the directory :file:`bin/${device}/${type}` according to the device and the type. -* Edit the configuration file :file:`flash-files.cfg` to list the commands for each of the files to be flashed. -* For each config line, prepare the following three arguments separated by space. -* Edit the path of files to be flashed using :code:`-file=${path}`. -* Edit the operation using :code:`--operation=${flash-nor|flash-emmc|flash-nand|flash-gpmc_nand}`. -* The operation flash-nor is used to flash the SPI NOR. -* The operation flash-nand is used to flash the SPI NAND. -* The operation flash-emmc is used to flash the eMMC. -* The operation flash-gpmc_nand is used to flash the GPMC NAND. -* Edit the offset using :code:`--offset=${hex_address}`. - -****************** -Flashing the files -****************** - -Change the working directory in terminal to flash writer tool directory i.e. -:file:`/bin/DFU_flash/` - -.. code-block:: console - - $ ${PYTHON} dfu_flash.py [ -d device ] [ -t type ] [ -c cfg ] [ -r reset] - - where ${PYTHON} evalutes to specific python command according to the OS. - In most cases, this should be `python` for Windows while `python3` for Linux. - - Options - - - -d | --device : Argument to identify the device (Mandatory). - - -t | --type : Argument to identify the type of the device gp,hs,hsfs (Mandatory). - - -c | --cfg : Argument to get the path of the custom configuration file. - - -r | --reset : Argument to reset the board after flashing. - -Flash to eMMC -============= - -Flashing to eMMC needs and additional attributes named :code:`--attributes` in flash -configuration file. The key :code:`--attributes` is only valid for eMMC and has the -following value: - -.. code-block:: text - - --attributes=",," - -- Use `raw` for raw flashing to any offset of any hardware partition in eMMC. If `raw` - is used, only `hwpart` is required and the third parameter `partid` should be set to `-`. -- Use `part` for raw flashing to a partition defined in GPT or DOS partition table. If `part` - is used, both `hwpart` & `partid` are required. -- It should be noted using `part` requires a partition table already in the respective - hardware partition in eMMC. For steps refer :ref:`partitioning-eMMC-from-uboot`. - -In the config file, specify operation as - -.. code-block:: text - - --operation=flash-emmc - -Run following command in Linux or Windows to start the flash tool. - -.. code-block:: console - - $ ${PYTHON} dfu_flash.py -d -t -c - - -Flash to SPI NOR -================ - -In the config file, specify operation as - -.. code-block:: text - - --operation=flash-nor - -Run following command in Linux or Windows host to start the flash tool. - -.. code-block:: console - - $ ${PYTHON} dfu_flash.py -d -t -c - -Flash to SPI NAND -================= - -In the config file, specify operation as - -.. code-block:: text - - --operation=flash-nand - -Run following command in Linux or Windows host to start the flash tool. - -.. code-block:: console - - $ ${PYTHON} dfu_flash.py -d -t -c - -Flash to GPMC NAND -================== - -In the config file, specify operation as - -.. code-block:: text - - --operation=flash-gpmc_nand - -Run following command in Linux or Windows host to start the flash tool. - -.. code-block:: console - - $ ${PYTHON} dfu_flash.py -d -t -c diff --git a/source/linux/Foundational_Components/Tools/Flash_via_Fastboot.rst b/source/linux/Foundational_Components/Tools/Flash_via_Fastboot.rst new file mode 100644 index 000000000..4958e616a --- /dev/null +++ b/source/linux/Foundational_Components/Tools/Flash_via_Fastboot.rst @@ -0,0 +1,122 @@ +.. _Flash-via-Fastboot: + +################## +Flash via Fastboot +################## + +This application note provides instructions on using Snagfactory tool for flashing. + +The Snagfactory tool has two main operations: + +* Snagrecover: Boots the board (recovery) using USB DFU. +* Snagflash: Flashes binaries to the on-board memory using the Fastboot protocol. + +This tool supports flashing multiple boards simultaneously, enhancing efficiency in producion +enviroment. + +******** +Get Tool +******** + +* Snagfactory tool is hosted here `Snagfactory `__. +* More info about installation can be found in `Snagfactory Readme `__. +* Snagfactory also is available on pip. + +.. code-block:: python + + $ python3 -m pip install --user snagboot + +***************************************** +Building bootloader binaries for Recovery +***************************************** + +For Snagrecover, bootloader images must support DFU boot and fastboot download. +In addition to USB DFU fragment config (which enables DFU boot) for the u-boot +build, an additional fragment config :file:`am6x_a53_snagfactory.config` needs to be +used, which enables fastboot support in U-Boot and other required configs for +snagfactory. + +To build bootloader images for recovery using SDK, following change is needed +in :file:`Rules.make` file present in the top level of Linux SDK Installer. + +.. ifconfig:: CONFIG_part_variant in ('AM62X') + + .. code-block:: make + + UBOOT_MACHINE_R5=am62x_evm_r5_defconfig am62x_r5_usbdfu.config + + UBOOT_MACHINE_A53=am62x_evm_r5_defconfig am62x_a53_usbdfu.config am6x_a53_snagfactory.config + + # For AM62X LP + + UBOOT_MACHINE_R5=am62x_lpsk_r5_defconfig am62x_r5_usbdfu.config + + UBOOT_MACHINE_A53=am62x_lpsk_a53_defconfig am62x_a53_usbdfu.config am6x_a53_snagfactory.config + + # For AM62X SIP + + UBOOT_MACHINE_R5=am62xsip_evm_r5_defconfig am62x_r5_usbdfu.config + + UBOOT_MACHINE_A53=am62xsip_evm_a53_defconfig am62x_a53_usbdfu.config am6x_a53_snagfactory.config + +.. ifconfig:: CONFIG_part_variant in ('AM64X') + + .. code-block:: make + + UBOOT_MACHINE_R5=am64x_evm_r5_defconfig + + UBOOT_MACHINE_A53=am64x_evm_a53_defconfig am6x_a53_snagfactory.config + +.. ifconfig:: CONFIG_part_variant in ('AM62AX') + + .. code-block:: make + + UBOOT_MACHINE_R5=am62ax_evm_r5_defconfig am62x_r5_usbdfu.config + + UBOOT_MACHINE_A53=am62ax_evm_a53_defconfig am62x_a53_usbdfu.config am6x_a53_snagfactory.config + +.. ifconfig:: CONFIG_part_variant in ('AM62PX') + + .. code-block:: make + + UBOOT_MACHINE_R5=am62px_evm_r5_defconfig am62x_r5_usbdfu.config + + BOOT_MACHINE_A53=am62px_evm_a53_defconfig am62x_a53_usbdfu.config am6x_a53_snagfactory.config + +Generate the bootloader images using top-level makefile by running following +commands on the terminal from the top-level of the Linux SDK installer. + +.. code-block:: console + + $ make u-boot_clean + $ make u-boot + $ make u-boot_stage + +Save the bootloader binaries generated in a separate directory. These bootloader +images will be used for recovery and to start flashing the images. The bootloader +images after make can be found in :file:`board-support/built-images`. + +For more details regarding USB DFU refer :ref:`usb-device-firmware-upgrade-label`. + +*********** +Connections +*********** + +Power off the EVM and set up the boot mode switches to boot from USB DFU + +.. code-block:: text + + SW2-11001100 + SW3-00000000 + +Power on the board. + +Optionally you can also connect host PC to board via UART to read the console logs. + +How to use Snagfactory +********************** + +Comprehensive instructions for using the Snagfactory tool can be found here. + +* `Snagfactory doc `__. +* `Snagfactory config doc `__. diff --git a/source/linux/Foundational_Components/Tools/Flash_via_UART.rst b/source/linux/Foundational_Components/Tools/Flash_via_UART.rst index 27ad413d3..c8c546c94 100644 --- a/source/linux/Foundational_Components/Tools/Flash_via_UART.rst +++ b/source/linux/Foundational_Components/Tools/Flash_via_UART.rst @@ -2,124 +2,20 @@ Flash via UART ############## -UART is used as the transport or interface to send the file to flash to the EVM. +This tool uses UART as the transport or interface to send the file to flash to the EVM. -*************** -Important files -*************** +The UART Flash tool is part of MCU+SDK installer and can be downloaded from |__SDK_DOWNLOAD_URL__|. -:file:`uart_uniflash.py` is located at :file:`/bin/uart_uniflash/uart_uniflash.py` - -Flashing application and example flash configuration files for GP, HS-FS and HS -are located at - -.. ifconfig:: CONFIG_part_variant in ('AM64X') - - :file:`/bin/uart_uniflash/bin/am64xx-evm/` +Detailed instructions on using the tool can be found in MCU+SDK docs. .. ifconfig:: CONFIG_part_variant in ('AM62X') - :file:`/bin/uart_uniflash/bin/am62xx-evm/`, - :file:`/bin/uart_uniflash/bin/am62xx-lp-evm/`, - :file:`/bin/uart_uniflash/bin/am62xxsip-evm/` + `MCU+SDK Flash Tools Documentation `__. -.. ifconfig:: CONFIG_part_variant in ('AM62AX') +.. ifconfig:: CONFIG_part_variant in ('AM64X') - :file:`/bin/uart_uniflash/bin/am62axx-evm/` + `MCU+SDK Flash Tools Documentation `__. .. ifconfig:: CONFIG_part_variant in ('AM62PX') - :file:`/bin/uart_uniflash/bin/am62pxx-evm/` - -*********************** -Requirements on Host PC -*********************** - -The tool is implemented using python and needs python version 3.x on Linux host. - -The tool uses additional python packages as listed below. - - * pyserial for UART access on PC - * xmodem for the file transfer protocol - * tqdm for progress bar when the tool is run - -********************** -Getting ready to flash -********************** - -Make sure the flashing application and binaries you want to flash is built for the EVM. - -Make sure you have installed python version 3.x and additional packages. - -Make sure you have identified the UART port on the EVM. - -************************ -Flash configuration file -************************ - -Create a flash configuration file, using the example flash configuration file. - -The flashing application (1 or 2 stage) needs to be flashed before flashing the -binaries. Refer the flash configuration files for number of stages needed. Also -modify the flash configuration to specify the correct path. Ex. for HS-FS - -.. code-block:: text - - --flash-writer=/sbl_uart_uniflash_stage1.release.hs_fs.tiimage - -Now edit or add path to your binaries in the flash configuration file and also the offset to be flashed at. -Example. - -.. code-block:: text - - --file=/tiboot3.bin --operation=flash --flash-offset=0x0 - -.. ifconfig:: CONFIG_part_variant in ('AM62X','AM64X','AM62PX') - - **Flash configuration file for flashing to OSPI NOR** - - Create a flash configuration file. Refer to :file:`example_sbl_ospi_linux.cfg` for GP - devices, :file:`example_sbl_ospi_linux_hs.cfg` for HS and :file:`example_sbl_ospi_linux_hs_fs.cfg` - for HS-FS. - - Specify the paths of flashing application and files to be flashed at which - offset in the flash configuration file. - -.. ifconfig:: CONFIG_part_variant in ('AM62AX') - - **Flash configuration file for flashing to OSPI NAND** - - Create a flash configuration file. Refer to :file:`example_sbl_ospi_nand_linux.cfg` - for GP devices, :file:`example_sbl_ospi_nand_linux_hs.cfg` for HS and :file:`example_sbl_ospi_nand_linux_hs_fs.cfg` - for HS-FS. - - Specify the paths of flashing application and files to be flashed at which - offset in the flash configuration file. - -****************** -Flashing the files -****************** - -Set EVM in UART BOOT MODE and power on the EVM. - -Run below python command on the Windows command prompt (cmd.exe) or Linux bash -shell to flash the files - -.. code-block:: console - - cd /bin/uart_uniflash/ - python uart_uniflash.py -p {name of your UART com port} --cfg={path to your edited config file} - -At each step in the flashing your will see success or error messages, including -progress as the file is being transferred. - -****************** -Flash tool options -****************** - -Type below to see all the possible options with the flashing tool - -.. code-block:: console - - cd /bin/uart_uniflash/ - python uart_uniflash.py --help + `MCU+SDK Flash Tools Documentation `__. diff --git a/source/linux/Foundational_Components_Tools.rst b/source/linux/Foundational_Components_Tools.rst index f73a0534a..515011328 100644 --- a/source/linux/Foundational_Components_Tools.rst +++ b/source/linux/Foundational_Components_Tools.rst @@ -17,7 +17,7 @@ find a variety of help on this page. Foundational_Components/Tools/Pin_Mux_Tools Foundational_Components/Tools/Code_Composer_Studio Foundational_Components/Tools/SysConfig_Tools - Foundational_Components/Tools/Flash_via_DFU + Foundational_Components/Tools/Flash_via_Fastboot Foundational_Components/Tools/Flash_via_Ethernet Foundational_Components/Tools/Flash_via_UART Foundational_Components/Tools/GPIO_Tools