从0到1教你写UCOS-III 第三部分:新建工程-软件仿真

      在开始写 RTOS 之前,我们先新建一个工程, Device 选择 Cortex-M3 内核的处理器,调试方式选择软件仿真,到最后写完整个 RTOS 之后,我们再把 RTOS 移植到野火 STM32开发板上,到了最后的移植其实已经非常简单,只需要换一下启动文件和添加 bsp 驱动就行。


3.1 新建本地工程文件夹:


      在开始新建工程之前,我们先在本地电脑端新建一个文件夹用于存放工程。 文件夹名字我们取为 Sum_RTOS,然后再在该文件夹下面新建各个文件夹和文件, 有关这些文件夹的包含关系和作用具体见表格 3-1。
      表格 3-1 工程文件夹根目录下的文件夹的作用

3.2 使用 KEIL 新建工程:


      开发环境我们使用 KEIL5,版本为 5.15,高于或者低于 5.15 都行,只要是版本 5 就行。


3.2.1 New Progect:


      首先打开 KEIL5 软件,新建一个工程, 工程文件放在目录 Project\RVMDK(uv5) 下面,名称命名为 Sum-uCOS-III, 其中 Sum是博客名前三位,当然你也可以换成其它名称,但是必须是英文,不能是中文,切记。


3.2.2 Select Device For Target:


      当命名好工程名称,点击确定之后会弹出 Select Device for Target 的选项框,让我们选择处理器,这里我们选择 ARMCM3,具体见图 3-1。

3.2.3 Manage Run-Time Environment:

  
     选择好处理器,点击 OK按钮后会弹出 Manage Run-Time Environment 选项框。这里我们在 CMSIS 栏选中 CORE和 Device 栏选中 Startup 这两个文件即可,具体见图 3-2。

     点击 OK,关闭 Manage Run-Time Environment 选项框之后,刚刚我们选择的 CORE和Startup 这两个文件就会添加到我们的工程组里面,具体见图 3-3。

      其实这两个文件刚开始都是存放在 KEIL 的安装目录下,当我们配置 Manage RunTime Environment选项框之后,软件就会把选中好的文件 KEIL的安装目录拷贝我们的工程目录Project\RTE\Device\ARMCM3 下面。 其中 startup_ARMCM3.s 是汇编编写的启动文件, system_ARMCM3.c 是 C 语言编写的跟时钟相关的文件。更加具体的可直接阅读这两个文件的源码。 只要是 Cortex-M3内核的单片机,这两个文件都适用。


3.3 在 KEIL 工程里面新建文件组:


       在工程里面添加 User uC/OS-III SourceuC/OS-III PortsuC/CPU uC/LIBDoc这几个文件组,用于管理文件, 具体见图 3-4。

     对于新手,这里有个问题就是如何添加文件组?具体的方法为鼠标右键 Target1,在弹出的选项里面选择 Add Group…即可,具体见图 3-5,需要多少个组就鼠标右击多少次Target1。

3.4 在 KEIL 工程里面添加文件:


      在工程里面添加好组之后,我们需要把本地工程里面新建好的文件添加到工程里面。具体为readme.txt 文件添加到 Doc app.c 添加到 User ,至于 OS 相关的文件我们还没有编写,那么 OS相关的组就暂时为空,具体见图 3-6。

      对于新手,这里有个问题就是如何将本地工程里面的文件添加到工程组里里面?具体的方法为鼠标左键双击相应的组,在弹出的文件选择框中找到要添加的文件,默认的文件类型是 C 文件,如果要添加的是文本或者汇编文件,那么此时将看不到,这个时候就需要把文件类型选择为 All Files,最后点击 Add按钮即可,具体见图 3-7。

3.4.1 编写 main 函数:


       一个工程如果没有 main 函数是编译不成功的,会出错。因为系统在开始执行的时候先执行启动文件里面的复位程序复位程序里面会调用 C 库函数__main__main 的作用是初始化好系统变量,如全局变量,只读的,可读可写的等等 __main 最后会调用__rtentry,再由__rtentry 调用 main 函数,从而由汇编跳入到 C 的世界,这里面的 main 函数就需要我们手动编写,如果没有编写 main 函数,就会出现 main 函数没有定义的错误,具体见图 3-8。

       main 函数我们写在 app.c 文件里面,因为是刚刚新建工程,所以 main 函数暂时为空,具体见代码清单 3-1。

3.5 调试配置:


3.5.1 设置软件仿真:


       最后,我们再配置下调试相关的配置即可。为了方便,我们全部代码都用软件仿真,即不需要开发板也不需要仿真器,只需要一个 KEIL 软件即可,有关软件仿真的配置具体见图 3-9。

3.5.2 修改时钟大小:


      在时钟相关文件 system_ARMCM3.c 的开头,有一段代码定义了系统时钟的大小为25M,具体见代码清单 3-2。在软件仿真的时候,确保时间的准确性,代码里面的系统时钟跟软件仿真的时钟必须一致,所以 Options for Target->Target 的时钟应该由默认的 12M 改成 25M,具体见图 3-10。

3.5.3 添加头文件路径:


        在 C/C++选项卡里面指定工程头文件的路径,不然编译会出错,头文件路径的具体指定方法见图 3-11。

    至此,一个完整的基于 Cortex-M内核的软件仿真的工程就建立完毕。
 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值