Blip User Guide
This section contains the information about getting started with blip. The hardware aspects of blip are explained below in detail.
Blip can be powered in three ways:
- Either USB port - the power switch should be in REG position.
- Vext pin on header - the power switch should be in VEXT position
- Battery connector - the power switch should be in REG position
Blip can be programmed via the BMP USB port. This USB port comes up on your computer like as a composite USB device with two serial ports. The first one is the GDB server port from the Blackmagic probe debugger, and the second one is connected to the serial port on nRF52840 (the pins from nRF52840 have to be configured as serial in/out correctly in the firmware as any pin can be RX/TX on it).
The label on the board for
system power is
VDD, it can either come from
onboard voltage regulator, or from external power pin. Further details follow.
When the power switch position is REG, the system is powered at VDD=3.3V from the LDO; it's input can be either the battery connector, or either of the USB ports. A battery and USB can be connected together, and the onboard Li-ion/Lipo battery charging IC will recharge the battery (at a max current of 150mA).
When the switch position is VEXT, the nRF52840 chip is directly powered using
the VEXT pin.
VEXT pin input is 3.3V; higher voltages
may damage the SoC or the sensors.
Note: Do not flip the switch's position while it is powered, it will not function correctly otherwise, i.e., always put switch in correct position before powering it on.
Using SWD debugger for external chips
The onboard Black Magic Probe is able to program and debug Blip, as well as other supported ARM chips. The instructions remain same for both cases, except for the step where we disconnect and isolate the debugger from on-board nRF52840.
We generally test Nordic Semiconductor's NRF52 series chips with Bumpy firmware, which is running on Blip's STM32 chip.
First (while Blip is powered off), put the power switch in VEXT position. Do not
connect any input voltage to
VEXT pin, this copletely turns off and isolates
the SoC from the debugger. In this configuration, only the debugger is getting
Next, connect the pins
T_SWDCLK to the target. Also make sure there
is common ground between Blip and target. The supported target voltage is 3.3V.
Now you can run gdb and scan for devices like:
tavish@computer:~/repos/el/public/ElectronutLabs-blip (master)*$ arm-none-eabi-gdb GNU gdb (GNU Tools for Arm Embedded Processors 7-2018-q3-update) 188.8.131.5280315-git Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> (gdb) tar ext /dev/ttyACM0 Remote debugging using /dev/ttyACM0 warning: No executable has been specified and target does not support determining executable automatically. Try using the "file" command. 0x0000384c in ?? () (gdb) mon swdp_scan Target voltage: unknown Available Targets: No. Att Driver 1 Nordic nRF52 2 Nordic nRF52 Access Port (gdb) att 1 A program is being debugged already. Kill it? (y or n) y Attaching to Remote target warning: No executable has been specified and target does not support determining executable automatically. Try using the "file" command. 0x0000384c in ?? ()
Now you can erase the firmware, load a new firmware, or debug the firmware using standard GDB commands.
For example, to erase, use the command
mon erase_mass, to load a new
.elf firmware, use
To erase the UICR region (nRF52840 specific) of your Blip, you can attach to
target 2 using
attach 2 (or
att 2 in short). Then type in
To measure your firmware's current consumption, for example with Nordic
semiconductor's power profiler kit
, first put the power selection switch to
VEXT position. Now you must power
the board via only
VEXT pin on the header. In this configuration debugger is
completely isolated from the nRF52840 chip using an onboard analog switch; you
should not connect either of the USB ports also.
Refer further sections to read about programming and flashing firmware to blip.