This board file is for imix version 2.
This table shows the mappings between resources available in userspace and the physical elements on the imix board.
| Software Resource | Physical Element |
|---|---|
| GPIO[0] | Pin D2 |
| GPIO[1] | Pin D3 |
| GPIO[2] | Pin D4 |
| GPIO[3] | Pin D5 |
| GPIO[4] | Pin D6 |
| GPIO[5] | Pin D7 |
| GPIO[6] | Pin D8 |
| ADC[0] | Pin A1 |
| ADC[1] | Pin A2 |
| ADC[2] | Pin A3 |
| ADC[3] | Pin A4 |
| ADC[4] | Pin A5 |
| ADC[5] | ? |
| Button[0] | “USER” button |
| LED[0] | “USER” LED |
To program the Tock kernel onto the imix, cd into the boards/imix directory and run:
$ make program
This will build boards/imix/target/thumbv7em-none-eabi/release/imix/imix and use tockloader to flash it to the board.
If you have connected to the board over a JTAG interface, you should instead flash the kernel with:
$ make flash
To compile an app, cd to the desired app and make. For example:
$ git clone https://github.com/tock/libtock-c.git $ cd libtock-c/examples/blink/ $ make TOCK_BOARD=imix
This will build the app and generate a binary in Tock Binary Format and create a TAB (Tock Application Bundle) using the elf2tab utility: blink/build/blink.tab.
Apps can be uploaded with make program (to use the serial bootloader), but the tock board being programmed must be specified:
$ cd examples/blink/ $ make TOCK_BOARD=imix program
This builds and loads only a single app. Tock is capable of running multiple apps concurrently:
Use tockloader install -a 0x40000 to add additional apps, and tockloader list -a 0x40000 to see the list of installed applications. The -a flag specifies the address of the application space, which is different between boards.
Please note that forgetting to specify TOCK_BOARD=imix when using make program or forgetting to specify -a 0x40000 when using tockloader install can result in overwriting a portion of the kernel, which should be fixed by flashing the kernel again.
To debug a loaded kernel with openocd:
$ cd boards/imix/ $ openocd -f connect.cfg
Then, in another terminal (assuming you have loaded a kernel image built using the release profile), from Tock's top-level directory:
$ arm-none-eabi-gdb target/thumbv7em-none-eabi/release/imix (gdb) target remote localhost:3333 (gdb) monitor reset halt (gdb) break <?> # try tab-completion to find useful name-mangled breakpoints (gdb) continue
You may issue other commands to openocd by prefixing them with monitor, as above. The manual for that utility is likely available on your system via info openocd; an HTML version should be available on the website. You may also issue commands directly to a running instance of openocd via telnet:
telnet localhost 4444
Connect to the FTDI chip by plugging a USB cable into the DBG_USB port (the one closer to the middle), and then use miniterm.py to open that serial port:
$ miniterm.py --dtr 0 --rts 1 /dev/ttyUSB0 115200
or
tockloader listen
(Note that you may need to configure your system to allow user access to the USB serial port device.)
Miniterm is a terminal emulator that allows control over the DTR and RTS lines, which the imix board re-purposes to control the SAM4L's reset line. You may type CTRL-T, CTRL-D to toggle DTR and thus reset the chip; doing this a second time will then restart it.
You can install the miniterm script from the pySerial pip package:
$ pip install pyserial --user