Support for the Airfy Beacon board. More...
Support for the Airfy Beacon board.
The Airfy Beacon is utilizing a Nordics NRF51822QFAA SoC. The SoC features 16KiB of RAM, 256KiB of flash ROM and comes on top of the usual micro-controller peripherals with a 2.4GHz radio that supports both Nordics proprietary ShockBurst as well as Bluetooth Low Energy (BLE).
The board was available via Indiegogo.
MCU | NRF51822QFAA |
---|---|
Family | ARM Cortex-M0 |
Vendor | Nordic Semiconductor |
RAM | 16KiB |
Flash | 256KiB |
Frequency | 16MHz |
FPU | no |
Timers | 3 (2x 16-bit, 1x 32-bit [TIMER0]) |
ADCs | 1x 10-bit (8 channels) |
UARTs | 1 |
SPIs | 2 |
I2Cs | 2 |
Vcc | 1.8V - 3.6V |
Product Specification | Product Specification |
Reference Manual | Reference Manual |
If you're holding a new device in your hands, there is a high change that your device's flash memory is locked and RIOT's make flash
command will fail, saying something like erasing the flash was not possible.
A solution for this is to reset the chips code memory and user information registers. Just follow these steps:
openocd -f boards/airfy-beacon/dist/openocd.cfg
telnet localhost 4444
halt
to stop the devicenrf51 mass_erase
to reset the code memorymake flash
should now work as expected.The Airfy Beacon comes without any on-board programming and flashing capabilities. It supports however to be programmed using off-the-shelf programmers such as Segger's JLink or STM's STLink.
A very simple and affordable way to program and debug this module is to use the integrated ST-Link/V2 programmer of any STM32Fx-discovery board. The needed steps are described in the following sections. If you want to use a standalone ST-Link adapter, you just simply have to alter the wiring to fit for your programmer, the software part is identical.
First of all make sure the your ST-Link device is detected and can be accessed properly. In Linux you might have to adept your udev
rules accordingly:
now replug the usb cable and flash.
Have a look at the 'Setting up udev rules' section in the README file if you need help.
Second you need to enable the standalone ST-Link mode of the discovery board by removing the two CN2
jumpers, found somewhere in the upper left part of the board. This disconnects the ST-Link programmer from the micro-controller part of the port and enables direct access through the pin-header CN3
, also labeled SWD
.
This module supports the Serial Wire Debug (SWD) interface. To access the device the following four lines need to be connected with the STM32x-discovery board:
The following image shows the wiring for an SWD flasher board:
Debugging and programming this module works well with OpenOCD.
We suggest to use a fairly recent version, best use the upstream version from their git repository. Version Open On-Chip Debugger 0.9.0-dev-00184-g885f438 (2014-10-19-14:49)
is reported to work.
To program the Airfy Beacon, just go to your RIOT application and type:
and voila, the new firmware should be flashed onto your device.
As the Airfy Beacon module does not provide a reset button, RIOT includes a target to reset the board. To do that, just type
and your board will reboot.
The debugging setup comprises of two parts: a GDB server and a GDB client. To usual workflow is to start the GDB server first and then connect to it with some kind of front-end (e.g. command line, IDE, ...).
To start the GDB server, just type
This will start a local GDB server on port 3333
.
If you are fine with working with the GDB command line client, you can start debugging your device by just typing
in a second terminal window. This will automatically connect to your previously opened GDB server and will also load your corresponding .elf file.
Alternatively you can configure your IDE (e.g. eclipse or similar) to connect directly to the GDB server. See here for more information on how to configure Eclipse
For OpenOCD to work correctly, you need the following configuration file (which you can also find in RIOTDIR/boards/airfy-beacon/dist/openocd.cfg
:
You can now program your device by doing the following:
openocd -d3 -f RIOTDIR/boards/airfy- beacon/dist/openocd.cfg
telnet 127.0.0.1 4444
First you have to start OpenOCD as described in the section above.
Then enter the following in a new terminal:
The UART pins are configured in boards/airfy-beacon/include/periph_conf.h
. The default values are PIN 17 and 18.
The default Baud rate is 115 200
.
Files | |
file | board.h |
Board specific definitions for the Airfy Beacon board. | |
file | periph_conf.h |
Peripheral MCU configuration for the Airfy Beacon board. | |