Setup your Board

Image Installation

Over the Network

Note: This procedure will remove all contents on the eMMC. Make sure to backup your data!

Setup a HTTP server

  1. Install python3

sudo apt install python3
  1. Set your ip to (If you use a network-manager set your static ip there! This command will not work in this case.)

sudo ifconfig <Your ethernet device e.g. eth0>
  1. Make a new folder and enter it

sudo mkdir /srv/http
cd /srv/http
  1. Start the http-server

sudo python3 -m http.server --bind 80

Setup a TFTP server

  1. Install the following packages

sudo apt-get install xinetd tftpd tftp
  1. Edit or make a file in: /etc/xinetd.d/tftp with the following content:

service tftp
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = -s /srv/tftp
disable         = no
  1. Create a tftp folder

mkdir -p /srv/tftp
  1. Restart the xinetd service

sudo service xinetd restart

Instructions to flash a device from scratch

  1. Put the WIC file (e.g. image-am335x-nmhw21.wic) file on the http-server (/srv/http).

  2. Put the Minimal Linux fitImage (e.g. fitImage-am335x-nmhw21.bin) on the tftp-server (/srv/tftp).

  3. Verify the /srv folder:

|-- http
|   |-- image-am335x-nmhw21.wic
|-- tftp
.   |-- fitImage-netmodule-linux-image-minimal-am335x-nmhw21
  1. Power up the board and press ‘s’ on the serial terminal to stop in u-boot.

  2. Validate that you are in u-boot console by typing

# env print serverip
  1. Load kernel binary into ram

# tftp $ramdisk_addr_r fitImage-netmodule-linux-image-minimal-am335x-nmhw21
  1. restrict positioning of initrd ramdisk image

# setenv initrd_high 0x84000000
  1. Set boot args

# setenv bootargs root=/dev/ram0 console=ttyS2,115200 ti_cpsw.rx_packet_max=1526
  1. Boot from ramdisk. Linux will boot to login prompt within < 30s

# bootm $ramdisk_addr_r
  1. Login as root (empty password).

  2. Disable kernel messages in Linux system

echo 1 >  /proc/sys/kernel/printk
  1. Burn the .wic file to the eMMC: (this takes about 5 min)

curl -f | dd of=/dev/mmcblk1 bs=10M && sync
  1. Reboot your system.


From USB Stick

Prepare USB Stick

Format a USB-pendrive to have a with fat with a maximum partition size of 4.0GB for the first partition.

Use gnome-disks or gparted` for this.

The output of parted -l should look like this:

Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sdb: ...GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End       Size     Type     File system  Flags
1       1049kB  4001MB    4000MB   primary  fat32        lba
  1. Put the image-am335x-nmhw21.wic file on a USB-pendrive.

  2. Put the files image-minimal-am335x-nmhw21.cpio.gz.u-boot, fitImage-am335x-nmhw21.bin on the USB-pendrive.

  3. Your USB-pendrive should no look like this:

|-- image-am335x-nmhw21.wic
|-- image-minimal-am335x-nmhw21.cpio.gz.u-boot
|-- fitImage-am335x-nmhw21.bin

Flash from USB Stick

  1. Plug the USB-pendrive into the nmhw21.

  2. Power up the board and press ‘s’ on the serial terminal to stop in u-boot.

  3. Boot the ramdisk (copy-paste into u-boot terminal):

usb reset; fatload usb 0:1 $kernel_addr_r fitImage-am335x-nmhw21.bin; fatload usb 0:1 $ramdisk_addr_r image-minimal-am335x-nmhw21.cpio.gz.u-boot; setenv bootargs root=/dev/ram0 console=ttyS2,115200 ti_cpsw.rx_packet_max=1526; bootm $kernel_addr_r $ramdisk_addr_r
  1. When the the system has booted, log in with user root.

  2. Mount the USB-pendrive

mount /dev/sda1 /mnt
  1. Burn the .wic file to the eMMC: (this takes about 5 min)

dd if=/mnt/image-am335x-nmhw21.wic of=/dev/mmcblk1 bs=10M && sync
  1. Reboot your system


From SD Card