Network Boot¶
Tested on Ubuntu 24.04. MitySOM-AM62x/p tested with SDK 11.00.09.04. TI has yet to officially support network booting for the AM62a platform. Network boot for the MitySOM-AM62a is still a work in progress.
References¶
- https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_00_09_04/exports/docs/linux/Foundational_Components/U-Boot/UG-Network-K3.html
- https://help.ubuntu.com/community/isc-dhcp-server\
- https://ww1.microchip.com/downloads/en/DeviceDoc/00002841B.pdf
Prerequisites¶
- Clone Critical Links u-boot-ti git repository and understand how to build u-boot. Instructions on this can be found at U-Boot_Building_for_MitySOM-AM62
Additional Hardware¶
- USB Ethernet Adapter or an unused ethernet port
- Ethernet Cable
Boot Pin and Hardware Configuration¶
Boot Pin LayoutB9 | B8 | B7 | B6 | B5 | B4 | B3 |
Clkout Off (0) | 0 | Link Info (0) | 0 | 1 | 0 | 0 |
- Using the USB eth adapter and ethernet cable, connect the devkit ethernet port J4 to the host computer
Build U-boot Binaries¶
- Make the following changes to the 62x-build.sh, 62ax-build.sh, or 62px-build.sh script depending on the MitySOM-AM62 variant
- make -j"$(nproc)" "$MV" ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- O="$R5_BUILDDIR" "${MACHINE}_r5_defconfig" + make -j"$(nproc)" "$MV" ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- O="$R5_BUILDDIR" "${MACHINE}_r5_ethboot_defconfig" - make -j"$(nproc)" "$MV" ARCH=arm CROSS_COMPILE=aarch64-none-linux-gnu- O="$A53_BUILDDIR" "${MACHINE}_a53_defconfig" + make -j"$(nproc)" "$MV" ARCH=arm CROSS_COMPILE=aarch64-none-linux-gnu- O="$A53_BUILDDIR" "${MACHINE}_a53_defconfig" "${MACHINE}_a53_ethboot.config"
Setting Up an isc-dhcp-server¶
- Install isc-dhcp-server
$ sudo apt install isc-dhcp-server
- Immediately disable the isc-dhcp-server service prior to configuration
$ sudo systemctl disable --now isc-dhcp-server.service isc-dhcp-server6.service
- Find the host network interface connected to the devkit.
WARNING: Do not use the host's main network connection, as connecting a rogue dhcp server to a company network is likely to create havoc for everyone else.
To verify the correct network interface is selected, unplug the ethernet connect from port J4, rundmesg
on the host PC and see which interface has gone down.$ sudo dmesg | tail ... [259587.393829] usb 3-1.4.3: USB disconnect, device number 22 [259587.394088] ax88179_178a 3-1.4.3:1.0 enx0050b6b50627: unregister 'ax88179_178a' usb-0000:33:00.4-1.4.3, ASIX AX88179 USB 3.0 Gigabit Ethernet
Note: enx0050b6b50627 would be the <ETH_INTERFACE> - Tell the isc-dhcp-server which interface and configuration to access
$ sudo vim /etc/default/isc-dhcp-server DHCPDv4_CONF=/etc/dhcp/dhcpd.conf INTERFACESv4="<ETH_INTERFACE>"
- Configure dhcp server subnet for the SOM
WARNING: If your local network is using 192.168.0.x, its recommended to update these instructions to use a different subnet (192.168.10.x) for example.$ sudo vim /etc/dhcp/dhcpd.conf
- MitySOM-AM62x
subnet 192.168.0.0 netmask 255.255.254.0 { range dynamic-bootp 192.168.0.2 192.168.0.50; if substring (option vendor-class-identifier, 0, 16) = "TI K3 Bootp Boot" { filename "tiboot3.bin"; } elsif substring (option vendor-class-identifier, 0, 28) = "MitySOM-AM62X U-Boot R5 SPL" { filename "tispl.bin"; } elsif substring (option vendor-class-identifier, 0, 29) = "MitySOM-AM62X U-Boot A53 SPL" { filename "u-boot.img"; } default-lease-time 60000; max-lease-time 720000; next-server 192.168.0.1; }
- MitySOM-AM62a (Work In Progress)
subnet 192.168.0.0 netmask 255.255.254.0 { range dynamic-bootp 192.168.0.2 192.168.0.50; if substring (option vendor-class-identifier, 0, 16) = "TI K3 Bootp Boot" { filename "tiboot3.bin"; } elsif substring (option vendor-class-identifier, 0, 29) = "MitySOM-AM62AX U-Boot R5 SPL" { filename "tispl.bin"; } elsif substring (option vendor-class-identifier, 0, 30) = "MitySOM-AM62AX U-Boot A53 SPL" { filename "u-boot.img"; } default-lease-time 60000; max-lease-time 720000; next-server 192.168.0.1; }
- MitySOM-AM62px
subnet 192.168.0.0 netmask 255.255.254.0 { range dynamic-bootp 192.168.0.2 192.168.0.50; if substring (option vendor-class-identifier, 0, 16) = "TI K3 Bootp Boot" { filename "tiboot3.bin"; } elsif substring (option vendor-class-identifier, 0, 29) = "MitySOM-AM62PX U-Boot R5 SPL" { filename "tispl.bin"; } elsif substring (option vendor-class-identifier, 0, 30) = "MitySOM-AM62PX U-Boot A53 SPL" { filename "u-boot.img"; } default-lease-time 60000; max-lease-time 720000; next-server 192.168.0.1; }
- MitySOM-AM62x
- Set the ip address and netmask for the SOM's network interface
$ sudo ifconfig <ETH_INTERFACE> 192.168.0.1 netmask 255.255.255.0
- Start the isc-dhcp-server
$ sudo systemctl start isc-dhcp-server
- Check for configuration errors by checking isc-dhcp-service status
$ sudo systemctl status isc-dhcp-server
Setting up a TFTP server¶
- Install tftpd-hpa
$ sudo apt install tftpd-hpa
- Check if the tftp-hpa service is running
$ sudo systemctl status tftpd-hpa
- If the tftp server configuration needs modification, the file can be located in the directory below
$ /etc/default/tftp-hpa
- Copy the binaries created in Build U-boot Binaries to the TFTP_DIRECTORY
$ cd build-mitysom_<am62x/p/a>_devkit/ $ sudo cp a53/tispl.bin a53/u-boot.img r5/tiboot3.bin /srv/tftp/
Boot to U-boot¶
Power on the devkit and the network should fetch the u-boot binaries in the following sequence.
tiboot3.bin => tispl.bin => u-boot.img
Note: These steps only boot to the u-boot prompt. They do not program a filesystem onto an mmc device. To program the eMMC see Boot_emmc or Snagboot.
Debugging¶
- To check if the board sending dhcp requests to the isc-dhcp-server run the following command
sudo tcpdump -i <ETH_INTERFACE> -v udp port 67
- To check if the board if fetching files from the tftp server run the following command
sudo tcpdump -v -i <ETH_INTERFACE> port 69
- If multiple SOM's are being booted via the network the
range dynamic-bootp
ip address range in the subnet definition may need to be increased-range dynamic-bootp 192.168.0.2 192.168.0.50; +range dynamic-bootp 192.168.0.2 192.168.0.<num > 50>;
Go to top