Building and Running the AZ-N1 RISC-V BLE BSP

This application note explains how to build the Barebone AZ-N1 BSP from the git repository and run it.

1. Setting Up Linux Host

Perform the following steps to set up Linux host and build BSP.

  1. Clone a BSP repository:

    git clone https://github.com/voxelbotics/riscv-ble-bsp.git cd riscv-ble-bsp
  2. Create a build directory and run CMake to generate Makefiles:

    mkdir build cd build cmake -DCMAKE_TOOLCHAIN_FILE="../riscv-cross-linux.cmake" -DCMAKE_BUILD_TYPE=Debug ..

1.1. Building BSP

  • To build all the projects included in the BSP, run make without specifying a target:

    make
  • To build a specific library or demo, run make specifying target name (<target_name>):

Refer to the README file for the target names of the projects.
It is recommended to build all the libraries included in the BSP to make them available for further use.

1.2. Build Artifacts

The resulting build artifacts are located in the <BSP root>/build/<project name>/CMakeProjects/<target name> directory:

where

ml_ble_platform is the <project name>;
sensor_base is the <target name>;
sensor_base_mission-evb-002.001.000.elf and sensor_base_mission-evb-002.001.000.bin are the resulting binaries;
objdump.txt, readelf.txt, and symbol.txt are the output files for objdump, readelf, and nm.

1.3. Programming the Target

  1. Connect the target board to the Telink "Burning EVK" via Swire as shown in the following picture:
    TBD
    - Connect EVK SWM pin to the target's SWS pin;
    - Connect the EVK 3V3 (5V) and GND pins to the target's 3V3 (5V) and GND pins, respectively.

  2. If the target is in the "sleep" mode, run the activate command:

    Note: The target may be completely inaccessible via Single Wire interface and will require resetting via an external source.

  3. Sync the Telink "Burning EVK" with the target:

  4. Write a required firmware to the target:

    where
    -b specifies the binary file format;
    <addr> is an offset in the SoC's internal Flash. This value is hexadecimal, but it should be used without the 0x prefix (eg 1000, ff000).

  5. Reset the target using external reset or by power cycling the target.

The BSP contains two demo types:

  • Simple single part demos (the core_drivers project) that should be written to the target with the 0 offset value;

  • BLE demos (ml_ble_platform) that consist of two parts: a "bootloader" that allows OTA firmware updates and a working firmware. The "bootloader" should be written with the 0 offset value. The default offset value for the working firmware is 1000.

1.4. Other tcdb Commands

  1. Use the rf command to read from the target memory:

    where <addr> is an internal Flash offset (refer to the wf command);
    -s is the byte count to be read from the target;
    <size> is a decimal value that specifies the k/m suffixes for kilo- and megabytes.

  2. Use the wf command to erase the target internal Flash:

where <addr> is an internal Flash block start offset (hexadecimal). The block size is 4K, so the offset should be multiply of 1000 (eg 1000, 2000, a000). -s is the required block count.
Note: tcdb can only erase one block at the time. Values other than 1 take no effect.

Refer to internal help of the tcdb tool for more commands.