本文为您介绍 TencentOS tiny 接入腾讯物联网开发平台相关的准备工作。
步骤1:准备目标硬件(开发板/芯片/模组)
TencentOS tiny 目前主要支持 ARM Cortex M 核芯片的移植,例如 STM32、NXP 芯片支持 Cortex M 核全系列。本教程将使用 TencentOS tiny 官方开发板 EVB_MX_Plus 演示如何移植,其他 ARM Cortex M 系列开发板和芯片移植方法类似。
调试 ARM Cortex M 核还需要仿真器, 由于 EVB_MX_Plus 开发板没有板载 ST-Link 调试器,需要连接外置的仿真器,例如 J-Link、U-Link 等,本教程中使用 ST-Link。
步骤2:准备编译器环境
TencentOS tiny 支持 Keil MDK、IAR、Gcc 三种开发环境,本文以 Keil MDK 作为开发环境。
1. 移植内核前需要先安装能编译 ARM Cortex M 核的 Keil 编译器(Keil 编译器别名也称为 MDK),可下载 最新版本5.31 进行使用。
说明:
填写注册信息即可下载,下载完成在 Windows 环境下按照提示安装即可,安装完成后需要自行购买软件 License,避免 32K Flash 下载限制。
2. 由于新版本的 MDK 编译器和芯片支持包分离,所以 MDK 安装完成后,还需要安装对应芯片的器件支持包(PACK 包)。例如本教程示例 EVB_MX_Plus 开发板的芯片是 STM32L431RCT6,则需要安装 Keil.STM32L0xx_DFP.2.0.1.pack 系列器件支持包。
说明:
您只需根据您的芯片型号,下载对应的 PACK 包即可,同时您也可以在 MDK 集成开发环境中进行在线下载安装。
步骤3:准备芯片对应的裸机工程
移植 TencentOS tiny 基础内核需要您提前准备一个芯片对应的裸机工程,裸机工程包含基本的芯片启动文件、基础配置(时钟、主频等)、以及串口和基本 GPIO 驱动,用于进行 RTOS 测试。
本教程使用 ST 官方的 STM32CubeMX 软件进行自动化生成 MDK 裸机工程,同时,安装 STM32CubeMx 需确保已安装好 JDK 环境。CubeMX 安装完成后,使用 CubeMX 在 EVB_MX_Plus 开发板上生成裸机工程。
说明:
如果您的芯片不是 STM32,而是其他厂商的 ARM Cortex M 系列,您可以根据厂商的指导准备裸机工程,但后续内核移植步骤一致。
3.1 启动 STM32CubeMX,新建工程
1. 创建新工程。
2. 打开 MCU 选择器。n![](https://qcloudimg.tencent-cloud.cn/image/document/97045dc4425ca0a9f9d1eb697a7e7329.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/97045dc4425ca0a9f9d1eb697a7e7329.png)
3.2 选择 MCU 型号
1. 在页面中输入对应 MCU 型号进行搜索筛选。
2. 选中对应型号的 MCU。n![](https://qcloudimg.tencent-cloud.cn/image/document/5d3db0a6c1290aee46ee224b8720e569.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/5d3db0a6c1290aee46ee224b8720e569.png)
如上图所示:通过 MCU 筛选来找到自己开发板对应的芯片型号,双击后弹出工程配置界面,如下所示:
Pinout&Configuration 为引脚配置选项卡。
clock Configuration 为时钟配置选项卡。
Project Manager 为工程配置选项卡。
左侧菜单为外设配置分类选择。
![](https://qcloudimg.tencent-cloud.cn/image/document/b2cc6ee3d66b81773aa87b52dcaa32e5.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b2cc6ee3d66b81773aa87b52dcaa32e5.png)
3.3 Pin 设置界面配置时钟源
1. 选择 RCC 时钟配置选项。
2. 配置高速时钟 HSE 使用外部晶振。n![](https://qcloudimg.tencent-cloud.cn/image/document/8455b87f1b80d33063be3e5880bfe1d0.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/8455b87f1b80d33063be3e5880bfe1d0.png)
3.4 Pin 设置界面配置串口
EVB_MX_Plus 开发板用于日志打印 USART2 串口,根据以下步骤配置 USART2 :
1.1 选择 USART2 串口。
1.2 设置串口工作模式为“异步模式”。
1.3 设置串口波特率为 115200 Bits/s。
1.4 选择CubeMX 软件自动配置的串口引脚。
![](https://qcloudimg.tencent-cloud.cn/image/document/9b330ac125b95496359446d9e05b0570.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/9b330ac125b95496359446d9e05b0570.png)
EVB_MX_Plus 开发板用于与通信模组通信的 LPUART1 串口,配置 LPUART1 如下图:
1.1 选择 LPUART1 串口进行配置。
1.2 设置串口工作模式为“异步模式”。
1.3 设置 LPUART1 串口基本参数。
![](https://qcloudimg.tencent-cloud.cn/image/document/d5f5a68a4edfa7fffa115b4722c95983.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d5f5a68a4edfa7fffa115b4722c95983.png)
配置使能串口中断:
1.1 使能 USART2 串口接收中断。
1.2 使能 LPUART1 串口接收中断。
![](https://qcloudimg.tencent-cloud.cn/image/document/d6ad741595d622d604364a2114b95636.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d6ad741595d622d604364a2114b95636.png)
3.5 Pin 设置界面配置 GPIO
EVB_MX_Plus 开发板板载一颗 LED,连接在 PC13 引脚,操作如下:
1.1 设置 PC13 为 GPIO Output 模式。
1.2 进入 GPIO 配置界面。
1.3 设置引脚别名为“LED”。
![](https://qcloudimg.tencent-cloud.cn/image/document/b3cc12c4c724cf563a8734eb20500a36.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b3cc12c4c724cf563a8734eb20500a36.png)
EVB_MX_Plus 开发板板载四个按键,其中 KEY1 连接在 PB12,操作如下:
1.1 设置 PB12 引脚为 GPIO Input 模式。
1.2 进入 GPIO 配置界面。
1.3 设置引脚别名为“KEY1”。
![](https://qcloudimg.tencent-cloud.cn/image/document/8880277258a3e2e884cc099173a49549.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/8880277258a3e2e884cc099173a49549.png)
3.6 配置总线时钟
1. 选择系统时钟源为外部高速时钟 HSE。
2. 设置系统主频 HCLK 为最高主频 80Mhz。n![](https://qcloudimg.tencent-cloud.cn/image/document/9b7441dfcea6ce37fd82cd9a0423801a.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/9b7441dfcea6ce37fd82cd9a0423801a.png)
3.7 工程生成参数配置
1. 进入工程配置页面。
2. 设置工程名称。
3. 选择工程存储位置。
4. 设置工程的 IDE 类型,TencentOS-tiny 支持 MDK、IAR、Gcc等,这里选择 MDK-V5。
![](https://qcloudimg.tencent-cloud.cn/image/document/e6546703d5f1bde2ba441d2a054a656c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e6546703d5f1bde2ba441d2a054a656c.png)
3.8 代码生成方式配置
1. 选择代码生成配置选项。
2. 选择拷贝所有库文件。
3. 设置配置的芯片外设生成单独的初始化文件。
![](https://qcloudimg.tencent-cloud.cn/image/document/8fe8d620934f65e8ad082b7f831183d3.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/8fe8d620934f65e8ad082b7f831183d3.png)
3.9 生成工程
1. 单击生成代码按钮生成裸机工程。
2. 生成工程后,在弹出提示框中选择直接打开工程所在目录。
![](https://qcloudimg.tencent-cloud.cn/image/document/2151e151bb918e239921f4096d3e27ea.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/2151e151bb918e239921f4096d3e27ea.png)
3.10 Keil 的裸机工程
打开生成的裸机工程效果如下:
![](https://qcloudimg.tencent-cloud.cn/image/document/e64b59180b0c160a2fe5d27d12942caa.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e64b59180b0c160a2fe5d27d12942caa.png)
编译工程下载之后,EVB_MX_Plus 开发板的裸机工程生成完成,该工程可直接编译并烧写在开发板上运行。
步骤4:准备 TencentOS tiny 的源码
说明:
由于下一步骤只介绍 TencentOS tiny 的内核移植,所以这里只需要用到 arch、board、kernel、osal 四个目录下的源码。
一级目录 | 二级目录 | 说明 |
arch | arm | TencentOS tiny 适配的 IP 核架构(含 M 核中断、调度、tick 相关代码)。 |
board | ... | 移植目标芯片的工程文件。 |
kernel | core | TencentOS tiny 内核源码。 |
| pm | TencentOS tiny 低功耗模块源码。 |
osal | cmsis_os | TencentOS tiny 提供的 cmsis os 适配。 |
net | at | AT 框架源码。 |
| sal_module_wrapper | SAL 框架源码。 |
| socket_wrapper | socket 封装封装层源码。 |
| tencent_firmware_module_wrapper | 腾讯云定制固件封装层源码。 |
| lora_module_wrapper | lora 封装层源码。 |
devices | ... | 各种通信模组的驱动适配层。 |