Novena/Power Management Board

The Novena Power Management Board (PMB) contains an STM32 ARM processor (STM32F101x8) with 64 KiB of flash and 10 KiB of RAM.

Hardware components

 * STM32 ARM Cortex M3 processor (STM32F101x8) with 64 KiB of FLASH and 10 KiB of RAM
 * TI BQ20Z95 SBS-complient fuel gauge on I2C address 0xb
 * TI BQ24765 SBS-complient battery charger on I2C address 0x9
 * TI DAC081C081 voltage monitor on I2C address 0xd
 * Molex connector for battery input
 * Molex connector for battery cell balancing
 * 20-pin JTAG connector
 * Serial lines, connected to mainboard's UART4 (seen as /dev/ttymxc3)
 * Battery-backed or supercap-backed storage

Software Development
Since Novena tends to have a compiler, and both Novena and the PMB use ARM CPUs, we simply use the native Novena compiler to build the image for the PMB.

The operating system of choice is ChibiOS/RT. It is small, multi-threaded, and has peripheral support for many features of the chosen STM32.

To prepare your system for building, install the following packages:

sudo apt-get install openocd screen build-essential git

Then, check out the source code:

git clone https://github.com/xobs/novena-pmb-chibios.git

The actual PMB source project is located in projects/novena-pmb:

cd novena-pmb-chibios/projects/novena-pmb

Build everything (using all four cores):

make -j4

Connect your JTAG box. Set the environment variable JTAG to match your JTAG box. If using a J-Link box, set it to "jlink". For RLink, set it to "rlink". Then, reprogram the PMB:

./reprogram.sh

After reprogramming, the script will reset the PMB and halt. You can then interact with the running processor, or connect to the debugger over the network. GDB is running on port 3333, and an interactive debugger shell is running on port 4444.

Interaction
The board runs off serial port ttymxc3. To communicate with the board, run:

sudo screen /dev/ttymxc3 115200