Close

rf24boot: A huge update

A project log for rf24boot: The NRF24L01 bootloader

nrf24l01 over-the-air bootloader for different microcontrollers

NecromantNecromant 03/07/2015 at 16:250 Comments

There hasn't been much going with rf24boot for a while, till I was playing with esp8266 and accidentally writing frankenstein firmware for it. Despite being cool and cheap, esp8266 still consumes way more than nrf24l01, so I'm back to rf24boot. This time I've taken time to completely refactor all the linux userspace, improve and optimize dongle code, so librf24 is now actually a LibRF24PP (written in C++) and is a good deal faster and simpler.

The rf24boot itself also lost a few hundred bytes in size due to random optimizations here and there and got a little bit faster. Here's a sample log of rf24boot bootloading a board (Host pc side).

necromant @ sylwer ~/Dev/software/wisp$ rf24-boot --channel=13 --part="flash" --write --file=images/antares.bin  --run
nRF24L01 over-the-air programmer
(c) Necromant 2013-2015 <andrew@ncrmnt.org> 
This is free software licensed under the terms of GPLv2 or above
Adaptor: libusb/etheria
Local Address:  b0:0b:c0:de:ed
Remote Address: b0:0b:10:ad:ed
Waiting for target...GOTCHA!
Target:     red-wisp
Endianness: little
Partitions: 2
0.       eeprom  size     1024 iosize 16 pad 1
1.        flash  size    28672 iosize 16 pad 128
Writing partition flash: 15794/28672 bytes 
15794/15794 bytes | 3.35 s | 100.00 % done [################################################################################################################################################################################################]
Verifying partition flash against file images/antares.bin, 15794 bytes to verify
15794/15794 bytes | 2.01 s | 100.00 % done [################################################################################################################################################################################################]
Starting app in partition 1 (flash)...
All done, have a nice day!

Apart from the actual bootloader, there are a set if linux userspace utilities upcoming, so that you can send and receive packets from commandline for fun, profit and testing. The first one you've seen above actually loads code onto the microcontroller. It's already ready for everyday use and API shouldn't change any time soon.

One of the newly added utilities is called rf24-sweep. It uses your rf24 dongle and gnuplot to create you a nice chart showing what 2.4Ghz frequences are currently being used. Here's an obligatory screenshot. Upcoming are: rf24-send, rf24-listen and rf24-term (serial-like) terminal.

Discussions