README.md
1# device_board_telink
2
3## Overview
4
5The TLSR951x Series is the latest addition to Telink’s high-performance, ultra-low-power,
6cost-optimized wireless connectivity SoC family. The TLSR951x is a Bluetooth® Dual-mode IC,
7having both Bluetooth Classic and Bluetooth LE radios on a single chip. It integrates a powerful
832-bit RISC-V MCU with a variety of powerful core features and peripheral blocks to provide a
9foundation for advanced hearable and wearable devices. The TLSR951x includes multi-stage power
10management design allowing ultra-low power operation and making it the ideal candidate for
11power-sensitive applications. The TLSR951x’s superior level of integration enables customers
12to optimise total system cost.
13
14![Top](figures/tlsr9518adk80d_top_view.png)
15![Bottom](figures/tlsr9518adk80d_bottom_view.png)
16
17## Specifications
18
19| Item | Description |
20| ---------- | -------------------------------- |
21| CPU | TLSR9518A, RISC-V (Max: 96MHz) |
22| RAM | 256KB SRAM |
23| Flash | 2MB SPI Flash |
24| GPIO | 40 |
25| I2C | 1 |
26| UART | 2 |
27| SPI | Memory SPI, HSPI, PSPI |
28| USB | 1 |
29| PWM | 6 |
30| LED | 4 |
31| Debug | JTAG Swire |
32| ADC | 10-channel 14bit auxilary ADC |
33| Button | 4 |
34
35## Environment setup
36
371. Install Ubuntu dependencies:
38 ```bash
39 sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler
40 ```
412. Download and unzip toolchine: http://wiki.telink-semi.cn/tools_and_sdk/Tools/IDE/telink_riscv_linux_toolchain.zip
423. Install toolchain dependencies:
43 ```bash
44 sudo dpkg --add-architecture i386
45 sudo apt-get update
46 sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
47 ```
484. Set the environment variable TELINK_RISCV_TOOLCHAIN to the path to GCC toolchain:
49 ```bash
50 export TELINK_RISCV_TOOLCHAIN=~/progs/telink_riscv_linux_toolchain/nds32le-elf-mculib-v5f/bin
51 ```
525. Download and unzip archive: https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest
536. Copy file `gn` to any folder in PATH. For example: `sudo cp gn /usr/local/bin/`
547. Install ninja
55 ```bash
56 sudo apt-get install ninja-build
57 ```
588. Check if the package `pip` is installed
59 ```bash
60 python3 -m pip --version
61 ```
62 If not instaled:
63 ```bash
64 sudo apt-get install python3-pip
65 ```
669. Install hb:
67 ```bash
68 python3 -m pip install --user ohos-build==0.4.6
69 ```
7010. Check if soft link exists `python->python3`
71
72## Build
73
741. Run in openharmony repo root
753. Run `hb set` and then select project from table:
76
77 | Project name | Description |
78 | :--- | :--- |
79 | led_demo | simple led example for b91 devkit |
80 | ble_demo | simple ble example for b91 devkit |
81 | xts_demo | unit tests for b91 devkit |
82
83 or set project name as an argument of hb set, like: `hb set -p <project_name>`
84
854. Run `hb build`
86 You can also run with options in the table:
87
88 | Option name | Option description | Option type |
89 | :--- | :--- | :---: |
90 | disasm_unstripped_version | Use unstripped ELF file version to disassemble and symbols export | binary |
91 | telink_gpio_irq_sample_enable | Switch on GPIO IRQ sample | binary |
92
93For example: `hb build --gn-args='disasm_unstripped_version=true'`
94The compiled binary file should be `out/b91_devkit/<project_name>/bin/<project_name>.bin`
95
96## Clean
97For do full project clenup (shall be done from openharmony repo root):
98```bash
99rm -rf out ohos_config.json
100```
101
102## Change notes
103* In many gn files added include pathes: `//utils/native/lite/include` and `//utils/native/base/include`
104
README_zh.md
1# device_board_telink
2
3- [device_board_telink](#device_board_telink)
4 - [简介](#简介)
5 - [开发板规格](#开发板规格)
6 - [OpenHarmony关键特性](#openharmony关键特性)
7 - [开发板设计文档](#开发板设计文档)
8 - [环境搭建](#环境搭建)
9 - [编译调试](#编译调试)
10 - [示例代码](#示例代码)
11 - [联系](#联系)
12
13## 简介
14
15泰凌微公司的B91 Generic Starter Kit是一个可用于评估TLSR9系列芯片组的硬件平台,BLE,BLE Mesh,Zigbee 3.0, Thread和2.4GHz私有协议等多种适用于2.4GHz接口标准的应用程序都可以用它来进行开发。如果有兴趣了解更多相关信息,可以在 [B91 Generic Starter Kit Hardware Guide](http://wiki.telink-semi.cn/wiki/Hardware/B91_Generic_Starter_Kit_Hardware_Guide/) 中进行浏览。
16
17开发板正反面视图如下:
18
19![开发板正面视图](figures/tlsr9518adk80d_top_view.png)
20
21![开发板背面视图](figures/tlsr9518adk80d_bottom_view.png)
22
23## 开发板规格
24
25| 器件类别 | 开发板 |
26| ---------- | -------------------------------- |
27| CPU | TLSR9518A, RISC-V (Max: 96MHz) |
28| RAM | 256KB SRAM |
29| Flash | 2MB SPI Flash |
30| GPIO | 40 |
31| I2C | 1 |
32| UART | 2 |
33| SPI | Memory SPI, HSPI, PSPI |
34| USB | 1 |
35| PWM | 6 |
36| LED | 4 |
37| Debug | JTAG、Swire |
38| ADC | 10-channel 14bit auxilary ADC |
39| Button | 4 |
40
41## OpenHarmony关键特性
42
43| 组件名 | 能力介绍 |
44| -------------- | ------------------------------------------------------------------------------------------------ |
45| 内核 | LiteOS-M |
46| 上电启动 | 上电启动OpenHarmony |
47| BLE服务 | 提供BLE功能 |
48| 外设控制 | 提供操作外设的能力,包括:I2C、ADC、UART、SPI、GPIO、PWM、FLASH等。 |
49| 系统服务管理 | 系统服务管理基于面向服务的架构,提供了OpenHarmony统一化的系统服务开发框架。 |
50| 启动引导 | 提供系统服务的启动入口标识。在系统服务管理启动时,调用boostrap标识的入口函数,并启动系统服务。 |
51| 系统属性 | 提供获取与设置系统属性的能力。 |
52| 基础库 | 提供公共基础库能力,包括:文件操作、KV存储管理等。 |
53| DFX | 提供DFX能力,包括:流水日志等。 |
54| HDF | 提供OpenHarmony硬件配置驱动的能力。 |
55| XTS | 提供OpenHarmony生态认证测试套件的集合能力。 |
56
57## 开发板设计文档
58
59B91开发板的总体情况可以参见 [B91 Generic Starter Kit Hardware Guide](http://wiki.telink-semi.cn/wiki/Hardware/B91_Generic_Starter_Kit_Hardware_Guide/) 的Overview章节。
60
61详细的开发设计文档可以下载 [Reference Design](http://wiki.telink-semi.cn/doc/hw/B91_DevelopmentBoard_TLSR9518ADK80D.zip) 到本地后,解压后查阅。
62
63## 环境搭建
64
65推荐在Windows+Ubuntu环境下进行开发,如果对环境搭建的过程有问题,可以参见 [环境搭建步骤](https://gitee.com/openharmony/device_soc_telink/blob/master/README_zh.md#安装工具) 中开发环境、安装工具、获取源码、确认目录结构等章节。
66
67## 编译调试
68
69在完成上述环境搭建之后,可以进行编译生成B91开发板上所需的二进制固件。可以使用烧录工具将固件烧录进B91开发板。
70编译调试的详细过程可以参见 [编译调试步骤](https://gitee.com/openharmony/device_soc_telink/blob/master/README_zh.md#编译工程) 中编译工程、烧录固件等章节。
71
72## 示例代码
73
74可以将示例生成的二进制固件烧录进B91开发板,代码默认有3个示例:
75
761. [LED应用示例](https://gitee.com/openharmony/vendor_telink/tree/master/led_demo)
77
78 在B91开发板上烧录固件 `led_demo.bin` 并上电重启后,可以实现简单的点亮LED灯的功能。
79 其主要功能的任务代码如下图所示:
80
81 ![LED应用任务](figures/led_code.png)
82
83 第一个任务是使用串口模块打印出 `Hello World, time:{RUNNING_TIME_SECOND}`,另一个是使用开发板上GPIO口去操控蓝色LED灯,实现闪烁效果。
84 这里的打印间隔以及LED闪烁的间隔都由宏 `DELAY` 定义,即1000ms。
85 另外,打印出的时间戳 `{RUNNING_TIME_SECOND}` 也根据 `DELAY` 的取值而计时。
86
872. [BLE测试示例](https://gitee.com/openharmony/vendor_telink/tree/master/ble_demo)
88
89 在B91开发板上烧录 `ble_demo.bin` 并上电重启后,可以实现BLE协议栈的相关功能。
90 通过智能手机上的蓝牙连接工具,如nRF Connect,可以搜索到名为“eSample”的BLE测试示例的广播信息,如下图:
91
92 ![BLE广播信息](figures/esample.jpg)
93
94 点击“CONNECT”按钮之后,手机会和B91开发板建立起蓝牙连接,可以在下图中查看到所建立的GATT服务:
95
96 ![建立连接](figures/connected.jpg)
97
98 同时,白色的LED灯会在建立连接时进入常亮状态,提示蓝牙已连接。此时按下“DISCONNECT"按钮,蓝牙连接会断开,白灯熄灭。
99
1003. [XTS测试示例](https://gitee.com/openharmony/vendor_telink/tree/master/xts_demo)
101
102 XTS测试示例是OpenHarmony生态认证测试套件的集合的XTS子系统,在B91开发板上进行的实现。
103 本实现参考了应用兼容性测试套件中的[测试用例源码与配置文件](https://gitee.com/openharmony/xts_acts)和[测试用例开发框架](https://gitee.com/openharmony/xts_tools)。
104
105 在B91开发板上烧录 `xts_demo.bin` 并上电重启后,会运行以下XTS测试用例集合。
106
107 ```shell
108 "module_ActsKvStoreTest",
109 "module_ActsUtilsFileTest",
110 "module_ActsParameterTest",
111 "module_ActsBootstrapTest",
112 "module_ActsHieventLiteTest",
113 "module_ActsDfxFuncTest",
114 "module_ActsSamgrTest",
115 ```
116
117 也可以在 `xts_demo\BUILD.gn` 当中添加您想要的测试用例集合,测试结果会以串口打印输出。
118
119## 联系
120
121如果您在开发过程中有问题,请在仓库[issues](https://gitee.com/openharmony/device_board_telink/issues)提问。
122