This is more of a brain dump for yours truly, since as a day job, I’m dealing with OpenThread a lot, and so there’s lots of little tricks out there for building it on various platforms and configurations. The following is not so much a how-to guide, but a quick brain dump of different things I’ve learned over the past year or so of messing with OpenThread.
Verbose builds
To get a print out of every invocation of the toolchain with all flags, specify V=1
on the call to make
:
$ make -f examples/Makefile-${PLATFORM} …${ARGS}… V=1
Running one step at a time
To disable the parallel builds when debugging the build system, append BuildJobs=1
to your make
call:
$ make -f examples/Makefile-${PLATFORM} …${ARGS}… BuildJobs=1
Building a border router NCP image
General case
$ make -f examples/Makefile-${PLATFORM} …${ARGS}… BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_FORWARD=1
For TI CC2538
# Normal CC2538 (e.g. Zolertia Firefly)
$ make -f examples/Makefile-cc2538 BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_FORWARD=1
# CC2538 + CC2592
$ make -f examples/Makefile-cc2538 BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_FORWARD=1 CC2592=1
If you want to run the latter image on a WideSky Hub, you’ll need to edit examples/platform/cc2538/uart.c
and comment out line 117 before compiling as it uses a simple diode for 5V to 3.3V level shifting, and this requires the internal pull-up to be enabled:
115 // rx pin
116 HWREG(IOC_UARTRXD_UART0) = IOC_PAD_IN_SEL_PA0;
117 HWREG(IOC_PA0_OVER) = IOC_OVERRIDE_DIS; // ← comment out this to allow UART RX to work
118 HWREG(GPIO_A_BASE + GPIO_O_AFSEL) |= GPIO_PIN_0;
For Nordic nRF52840
# Nordic development board (PCA10056) via J2 (near battery)
$ make -f examples/Makefile-nrf52840 BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_FORWARD=1
# Ditto, but instead using J3 (near middle of bottom edge)
$ make -f examples/Makefile-nrf52840 BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_FORWARD=1 USB=1
# Nordic dongle (PCA10059)
$ make -f examples/Makefile-nrf52840 BORDER_AGENT=1 BORDER_ROUTER=1 COMMISSIONER=1 UDP_FORWARD=1 USB=1 BOOTLOADER=USB
I’m working on what needs to be done for the Fanstel BT840X… watch this space.
Building certification test images
For CC2538
$ make -f examples/Makefile-cc2538 BORDER_ROUTER=1 COMMISSIONER=1 DHCP6_CLIENT=1 JOINER=1