• 一、移植前的准备
    • 1. 准备目标硬件(开发板/芯片/模组)
    • 2.准备编译器环境
    • 3. 准备芯片对应的裸机工程
      • 3.1 首先启动STM32CubeMX,新建工程
      • 3.2 选择MCU型号
      • 3.3 Pin设置界面配置时钟源
      • 3.4 Pin设置界面配置串口
      • 3.5 Pin设置界面配置GPIO
      • 3.6 配置总线时钟
      • 3.7 工程生成参数配置
      • 3.9 生成工程
      • 3.10 编译GCC下的裸机工程
    • 4. 准备TencentOS tiny的源码

    一、移植前的准备

    1. 准备目标硬件(开发板/芯片/模组)

    TencentOS tiny目前主要支持ARM Cortex M核芯片的移植,比如STM32 基于Cortex M核全系列、NXP 基于Cortex M核全系列等。本教程将使用STM32官方Demo开发板 NUCLEO-L073RZ进行示例移植,其他 ARM Cortex M系列开发板和芯片移植方法类似。

    调试ARM Cortex M核还需要仿真器, NUCLEO-L073RZ自带ST-Link调试器,如果您的开发板或者芯片模组没有板载仿真器,就需要连接外置的仿真器,如J-Link、U-Link之类的。

    2.准备编译器环境

    本移植指南针对的是GCC编译器,所以我们移植内核前需要先安装GCC编译器,能编译ARM Cortex M核的GCC编译器下载地址为:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

    一、移植前的准备 - 图1

    如上图所示,下载windows exe版本的gcc编译器(Linux下也可以下载linux版本的编译器),下载完成在windows环境下按照提示安装,如下图,

    一、移植前的准备 - 图2

    注意:安装完毕后需要将“Add path to environment variable”勾选上。

    由于windows环境下没有make环境,所以我们还需要安装一个make工具,Make 工具用于 build 工程, 使用 Makefile 编译工程。 版本:gnu-mcu-eclipse-build-tools-2.9-20170629-1013-win64-setup.exe

    下载地址:https://github.com/gnu-mcu-eclipse/windows-build-tools/releases/tag/v2.9-20170629-1013直接双击安装,完成后将安装后的make命令目录添加到windows的path环境变量中,默认安装目录为:C:\Program Files\GNU MCU Eclipse\Build Tools\2.9-20170629-1013\bin\bin,在环境变量中添加安装目录即可。

    3. 准备芯片对应的裸机工程

    移植TencentOS tiny基础内核需要您提前准备一个芯片对应的裸机工程,裸机工程包含基本的芯片启动文件、基础配置(时钟、主频等)、以及串口、基本GPIO驱动用于RTOS测试。

    本教程使用ST官方的STM32CubeMX软件来自动化生成GCC裸机工程,STM32CubeMX的下载地址为:

    https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

    安装STM32CubeMx还需要事先安装好JDK环境,您可以在互联网上查找如何安装和配置JDK环境,此处不再赘述。

    CubeMX安装完成后,我们就可以使用CubeMX来给NUCLEO-L037RZ开发板生成裸机工程了,如果您的芯片不是STM32,而是其他厂商的ARM Cortex M系列,您可以根据产商的指导准备裸机工程,后续的内核移植步骤是一致的。

    3.1 首先启动STM32CubeMX,新建工程

    一、移植前的准备 - 图3

    3.2 选择MCU型号

    一、移植前的准备 - 图4

    如上图所示:通过MCU筛选来找到自己开发板对应的芯片型号,双击后弹出工程配置界面,如下图:

    一、移植前的准备 - 图5

    3.3 Pin设置界面配置时钟源

    一、移植前的准备 - 图6

    3.4 Pin设置界面配置串口

    一、移植前的准备 - 图7

    3.5 Pin设置界面配置GPIO

    一、移植前的准备 - 图8

    3.6 配置总线时钟

    一、移植前的准备 - 图9

    3.7 工程生成参数配置

    一、移植前的准备 - 图10

    一、移植前的准备 - 图11

    3.9 生成工程

    一、移植前的准备 - 图12

    3.10 编译GCC下的裸机工程

    点击生成代码后,生成的裸机工程效果如下,在makefile同级目录下打开windows的cmd命令窗口(目录下按shift+鼠标右键,点击在此处打开命令窗口),输入make命令,就可以编译gcc裸机工程了,编译完成后,可以看到生成了elf和bin文件,通过工具就可以下载bin文件到开发板运行了。

    一、移植前的准备 - 图13

    4. 准备TencentOS tiny的源码

    TencentOS tiny的源码已经开源,github下载地址为:

    https://github.com/Tencent/TencentOS-tiny.git

    一级目录二级目录说明
    archarmTencentOS tiny适配的IP核架构(含M核中断、调度、tick相关代码)
    boardNUCLEO_L073RZ移植目标芯片的工程文件
    kernelcoreTencentOS tiny内核源码
    pmTencentOS tiny低功耗模块源码
    osalcmsis_osTencentOS tiny提供的cmsis os 适配

    由于本教程只介绍TencentOS tiny的内核移植,所以这里只需要用到 arch、board、kernel、osal四个目录下的源码。