Project

General

Profile

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

Prerequisites

Additional Hardware

  • USB Ethernet Adapter or an unused ethernet port
  • Ethernet Cable

Boot Pin and Hardware Configuration

Boot Pin Layout
B9 B8 B7 B6 B5 B4 B3
Clkout Off (0) 0 Link Info (0) 0 1 0 0

Hardware Setup
  • Using the USB eth adapter and ethernet cable, connect the devkit ethernet port J4 to the host computer

Build Ethboot 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's 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, run dmesg 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.10.x, its recommended to update these instructions to use a different subnet (192.168.100.x) for example.
    Note: Since the ROM bootloader also identifies itself as "TI K3 Bootp Boot", regardless of the AM62 variant, we cannot create a single setup which will handle any of the variants. If you would like to support switching between AM62x/AM62a/AM62p variants, I recommend creating separate *ethboot directories and making am62_ethboot a symlink, so they can be switched between easier.
    $ sudo vim /etc/dhcp/dhcpd.conf
    subnet 192.168.10.0 netmask 255.255.254.0
    {
      # Define the range of IP addresses for dynamic-bootp clients
      range dynamic-bootp 192.168.10.2 192.168.10.50;
      # Use suffix to check the end of the strings
      # Don't looks for the MitySOM-AM62xx part so we don't need a different config for each AM62 variant
      if suffix (option vendor-class-identifier, 16) = "TI K3 Bootp Boot" 
      {
      filename "am62_ethboot/tiboot3.bin";
      } elsif suffix (option vendor-class-identifier, 13) = "U-Boot R5 SPL" 
      {
      filename "am62_ethboot/tispl.bin";
      } elsif suffix (option vendor-class-identifier, 14) = "U-Boot A53 SPL" 
      {
      filename "am62_ethboot/u-boot.img";
      }
      default-lease-time 60000;
      max-lease-time 720000;
      # Specify the TFTP server IP address from which boot files will be downloaded
      next-server 192.168.10.1;
    }
    
  • Set the ip address and netmask for the SOM's network interface.
    Note: This is temporary and won't last a reboot. To make this permanent, set the static ip address in ubuntu's settings -> network
    $ sudo ifconfig <ETH_INTERFACE> 192.168.10.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
    
  • Optional: Enable service to run on boot
    sudo systemctl enable 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
    Note: The files are different for each variant
    $ mkdir -p /srv/tfp/am62_ethboot
    $ cd build-mitysom_<am62x/p/a>_devkit/
    $ sudo cp a53/tispl.bin a53/u-boot.img r5/tiboot3.bin /srv/tftp/am62_ethboot
    

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. From u-boot you can either flash the emmc using fastboot udp or boot the kernel/dtb/filesystem over NFS.
TODO: Add NFS boot instructions

U-boot Logs...

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.10.2 192.168.10.50;
    +range dynamic-bootp 192.168.10.2 192.168.10.<num > 50>;
    

Go to top
Add picture from clipboard (Maximum size: 1 GB)