首页 > 代码库 > RTX移植

RTX移植

下面以Xplain STM32(使用STM32F103ZET6 CPU)开发板为例,将RTX移植到该板上运行.为了能让刚接触这个系统的人了解整个移植过程,会重新建立一个工程,将所有的源码(包括RTX内核)添加到工程中,而不使用RTX库的形式.

1. 新建一文件夹(rtx-stm32),内容如下:

-- keil包含keil的工程文件

-- misc包含连接脚本文件

-- si是source insight工程文件

--src包含源代码:

        ---  cm3    CPU相关文件

        ---  stm32 针对stm32 CPU的文件

        ---  rtx        操作系统内核

        ---  user    应用程序

新建一个工程,将工程文件保存到keil文件夹下.

2. 给工程添加源代码

  将cmsis的两个文件core_cm3.c, core_cm3.h  copy到cm3下(可在其他工程找).

  把STM32的启动代码,库源码copy到stm32文件夹下.

  将RTX源码Keil\ARM\RL\RTX\SRC\CM   copy到rtx文件夹下,可以新建个cm文件夹,表明内核源码是针对cm3的.

  从Keil\ARM\RV31\INC, Keil\ARM\RL\RTX\Config下分别copy RTL.h,RTX_lib.c和RTX_Conf_CM.c文件到rtx文件夹下.RTL_lib.c是一操作系统底层相关文件,RTX_Conf_CM.c是操作系统配置文件.

  user下新建一个main.c文件,包含应用程序.具体内容可参考\Keil\ARM\RL\RTX\Examples文件夹下的例子.

  工程中文件夹结构和添加的文件如下:

  技术分享

  技术分享

技术分享 

    

注意不要将RTX_lib.c添加到工程中,否则编译有错,该文件被包含在其他文件中.

3. 工程属性设置

    Targe页面如下: operating system要先为None, 勾选Use MicroLib选项

    技术分享

   C/C++页面如下:

   技术分享

     定义宏USE_STDPERIPH_DRIVER=1, STM32F10X_HD=1, 这两个宏是与STM32源码相关的,表示 1. 要使用STM32提供的外设驱动, 2. CPU类型.

   要勾选上No Auto Includes, 如果不勾的话,自动将:

Keil\ARM\RV31\INC 
Keil\ARM\CMSIS\Include 
Keil\ARM\Inc\ST\STM32F10x 

添加到头文件的搜索路径中,这几个路径下包含的头文件与我们工程中的有些头文件一样,有些混乱,所以不要自动添加头文件的搜索路径,需要的时候自己添加.

Includes Paths中包含的路径有:

D:\Keil\ARM\ARMCC\include;..\src\rtx;..\src\cm3;..\src\user;..\src\cm3\stm32\Libraries\Inc;..\src\cm3\stm32\Starup

  Asm页面如下:

技术分享

     将No Auto Includes选项勾上就行了

   

  4. 将stm32f10x_it.c文件中的SVC_Handler, SysTick_Handler函数屏蔽,这两个函数在HAL_CM3.c中已定义好.

  经过这4步,rtx可以在Xplain STM32板上跑起来了.

RTX移植