Keil 下搭建 RT-Thread 最小系统工程

    本文所使用的方法是非常传统的 ,只适用于非常简单的工程建立,用于初学者了解 RT-Thread 最小系统工程的建立,不建议在实际开发中使用该方式。

    实际开发中推荐使用 env 和 scons,这部分将不在本部分说明,建议读者在熟悉 RT-Thread 内核后再去学习 scons 使用。

    ST 的 STM32 系列芯片,官方网站上为开发者提供了非常方便的开发库。到目前为止,有标准外设库 (STD 库)、HAL 库、LL 库 三种。前两者都是常用的库,后面的 LL 库是 ST 最近才添加,随 HAL 源码包一起提供,目前支持的芯片也偏少。其中,STD 库和 HAL 库两者相互独立,互不兼容。LL 库和 HAL 库两者相互独立,只不过 LL 库更底层。而且,部分 HAL 库会调用 LL 库(例如:USB 驱动)。同样,LL 库也会调用 HAL 库 。这里,笔者将使用 STM32F1xx 系列的 HAL 固件库建立最小工程。我们从官网下载 ,这个软件包里就包含了我们需要的 HAL 库。

    下载 RT-Thread 最新版本的源码

    RT-Thread 是完全开源、开放的物联网操作系统,可以从官网下载相关的源代码和辅助开发工具。RT-Thread 项目源代码都保存在 Git 仓库中; 您可以将源文件下载为 tar.gz 文件,或者使用 Git 克隆和检出命令:

    我们先建立 4 个文件夹并命名如下,将之前下载到的固件库和 RT-Thread 源码提取部分需要的文件,拷贝并按照下面的文件夹结构重新组织文件。

    在动手之前,先对上面的文件夹结构做个简短的说明:

    具体的拷贝内容如下: - 根目录:从 RT-Thread 源码的目录里 rt-thread-3.0.3\bsp\stm32f10x-HAL\ 里复制 rtconfig.h 文件。rtconfig.h:RT-Thread 的配置文件,通过宏定义打开 / 关闭各功能组件。

    根目录

    • Libraries:把下载的固件库里的 Libraries 文件夹里的内容全部放到我们建立的 Libraries 文件夹下。

    • applications:从 rt-thread-3.0.3\bsp\stm32f10x-HAL\applications 文件中复制 main.c 文件到我们的建立的文件夹 applications 中。
      空的用户程序

    搭建最小系统工程

    MDK 中新建工程

    • 从 MDK 中新建工程项目,并选择保存在我们建立的根目录下:

    • 选择所使用的具体芯片型号后点击 “OK” 确定选择:

    选择器件型号

    • 修改工程属性,并建立分组:

    在上一小节中新建的分组里添加文件,详见下表:

    groups 需要添加的文件
    Applications 暂不添加文件。
    Drivers drivers文件夹下的board.cdrv_usart.cstm32f1xx_it.c文件。
    STM32_HAL 官方固件库下的:Libraries\STM32F1xx_HAL_Driver文件夹中除了stm32f1xx_hal_msp_template.cstm32f1xx_hal_timebase_tim_template.cstm32f1xx_hal_timebase_rtc_alarm_template.c这三个文件外的所有.c文件;Libraries\CMSIS\Device\ST\STM32F1xx\Source\Templates目录下的文件;Libraries\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm目录下的startup_stm32f103xe.s文件。
    Kernel rt-thread\src 目录下的所有.C文件
    CORTEX-M3 rt-thread\libcpu\arm 目录下common文件夹中backtrace.c,div0.cshowmem.c文件;目录cortex-m3下的context_rvds.Scpuport.c文件。
    DeviceDrivers 目录下srcserial两个文件夹中的所有.C文件
    finsh rt-thread\components\finsh目录下的所有.C文件。
    libc rt-thread\components\libc\compilers\armlibc目录下的所有.C文件。

    添加包含文件路径

    添加完文件,接下来在项目设置里的 C/C++ 页里的 Include Path 添加这些源文件包含的头文件的路径。

    Include Path

    在下图所示区域设置器件类型和制定使用 stm32 固件库:USE_HAL_DRIVER, STM32F103xE

    编译控制设置

    设置好之后编译无错误。

    如下图,选择软件仿真后点 OK 确定:

    仿真设置

    仿真运行,命令窗口有错误输出:

    这个错误是由 rtconfig.h 里设置的芯片和刚开始我们建立工程时所选器件型号不一致,导致的存储器地址访问超范围。将定义改为:

    再次编译运行无错误:

    仿真错误

    再次重申本文所使用的方法仅用于初学者了解 RT-Thread 最小系统工程的建立,不建议在实际开发中使用该方式。

    原文: