This application note explains how to build the Barebone AZ-N1 BSP from the git repository and run it.
Setting Up Linux Host and Building BSP
Perform the following steps to set up Linux host and build BSP.
Clone a BSP repository:
git clone https://github.com/voxelbotics/riscv-ble-bsp.git cd riscv-ble-bsp
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 ..
Run
make
to build BSP:
make
Building Specific Libraries and Demos
To build all the projects included in the BSP, run
make
without specifying a target.To build a specific library or demo, run
make
with a specified target name (<target_name>
):make <target_name>
Refer to the README file for the target names of the projects.
It is recommended to build all of the libraries included in the BSP to make them available for further use.
Building Artifacts
The resulting build artifacts are located in the <BSP root>/build/<project name>/CMakeProjects/<target name>
directory:
$ ls -l build/ml_ble_platform/CMakeProjects/sensor_base ... -rw-rw-r-- 1 user user 1884649 Jan 4 00:28 objdump.txt -rw-rw-r-- 1 user user 76851 Jan 4 00:28 readelf.txt -rwxrwxr-x 1 user user 156860 Jan 4 00:28 sensor_base_mission-evb-002.001.000.bin -rwxrwxr-x 1 user user 774792 Jan 4 00:28 sensor_base_mission-evb-002.001.000.elf -rw-rw-r-- 1 user user 102772 Jan 4 00:28 symbol.txt
where
ml_ble_platform
is the<project name>
;sensor_base
is the<target name>
;sensor_base_mission-evb-002.001.000.elf
andsensor_base_mission-evb-002.001.000.bin
are the resulting binaries;objdump.txt
,readelf.txt
, andsymbol.txt
are the output files forobjdump
,readelf
, andnm
.
Programming the Target
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.Sync the Telink "Burning EVK" with the target:
sudo tcdb 9518 sws
If the target is in the "sleep" mode, run the
activate
command first:tcdb 9518 activate
Note that the target may also be completely inaccessible via Single Wire interface and will require resetting via the external source.
Write required firmware to the target:
sudo tcdb 9518 wf <addr> -i <firmware file name> -b
where
-b
specifies the binary file format;<addr>
specifies an offset in the SoC's internal Flash. This value is hexadecimal, but it should be used without the "0x" prefix (eg 1000, ff000).
The BSP contains two demo types:
Simple single part demos (thecore_drivers
project) that should be written to the target with 0 offset value;
BLE demos (ml_ble_platform
) that consist of two parts: a "bootloader" that allows OTA firmware updates and the working firmware. The "bootloader" should be written with the 0 offset value. The default offset value for the working firmware is1000
.Reset the target using external reset or by power cycling the target.
Other tcdb Commands
Use the
rf
command to read from the target’s memory:tcdb 9518 rf <addr> -s <size> -o <output file>
where
<addr>
is an internal Flash offset (refer to thewf
command);-s
specifies the byte count to be read from the target.<size>
is decimal, it can contain the k/m suffixes for kilo- and megabytes.Use the
wf
command to erase a target internal Flash:tcdb 9518 wf <addr> -s 1 -e
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). The -s
option specifies 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.