基于rt-thread系统的探索者开发板综合测试实验(一)

前言

本人正在学习rt-thread操作系统,rt-thread系统是一款非常优秀的国产的嵌入式实时操作系统,并且是完全开源和免费的,可以直接应用于商业产品开发。手里只有一款正点原子的STM32F4探索者开发板,所以就用这块开发板来学习了。该开发板的功能还是比较多的,其中的综合测试实验非常丰富,但是这款开发板是使用uC/OS-II操作系统来实现综合测试实验的,所以就想着用rt-thread系统来替换uC/OS-II系统来实现综合测试实验。

一、需要哪些知识?

用rt-thread系统来替换uC/OS-II系统来实现综合测试实验都需要具备哪些知识呢?至少需要以下几点:
1、移植
首先就是要把rt-thread系统移植到我们的工程里,这个很好理解,不移植咋用啊。
2、线程
所有嵌入式实时操作系统都有任务/线程的概念,在uC/OS-II系统里叫任务,在rt-thread系统里叫线程。线程就是一个小的程序单元,每个线程做一件事,互相不干扰,由系统进行调配和管理。这里我们需要掌握线程的创建、切换等知识。
3、线程间同步和通信
很多时候不仅需要线程间切换,而且还需要各个线程间的同步和通信。比如几个线程都需要操作同一个数组,或者几个线程需要使用同一个变量等等。各种嵌入式实时操作系统都有自己的线程间同步和通信的工具,比如,信号量、邮箱等等。我们需掌握这些工具的创建和使用。
掌握这3点就基本可以完成rt-thread系统对uC/OS-II系统的替换了,但是rt-thread系统可不只这些内容,它还有设备框架、文件系统等概念。后续可以用rt-thread系统的设备框架实现开发板的外设操作,还可以使用rt-thread系统的文件系统来替换综合实验里使用的FATFS文件系统等等,慢慢来,需要学习的东西还有很多。

二、移植

具体移植过程如下:
1、准备rt-thread系统源码,我用的是rt-thread-4.0.3正式发布版,发布版比较稳定,是rt-thread官网推荐的可用于正式产品中的版本。
2、准备探索者开发板里面的综合测试实验源码,我用的是寄存器版本,用库函数版本也一样,我们只针对操作系统的替换,其他具体实现的函数不做修改。
3、在综合测试实验下建立名为rtthread的文件夹,文件夹里放入如下图所示内容。
在这里插入图片描述
这些文件都是从rt-thread-4.0.3正式发布版里面复制过来的。发布版里面有很多文件,我们只选择对我们有用的,其他的文件不需要。上面图片里的include和src都是直接复制过来的;libcpu里面只复制了libcpu\arm\cortex-m4文件夹;board文件夹是复制了bsp\stm32\stm32f407-atk-explorer\board文件夹。这里我们先只使用rt-thread系统的内核文件,后续再把rt-thread系统的设备框架、文件系统等逐步加上。
4、修改工程文件。打开工程,在项目里添加两个文件夹rt-thread-Kernel和rt-thread-CORTEX-M4。rt-thread-Kernel里添加rt-thread内核源文件;rt-thread-CORTEX-M4里添加cpuport.c和context_rvds.s文件;在USER里面添加board.c文件,然后添加对应的.h文件。把uC/OS-II的文件夹移除。
5、修改board.c文件。board文件夹里面的board.c文件,需要修改一下。这里面只需要放一个rt_hw_board_init()函数即可,这个函数主要完成在进入main函数之前的一些初始化工作。函数里的具体程序如下:

void rt_hw_board_init()
{
   
#ifdef SCB_EnableICache
    /* Enable I-Cache---------------------------------------------------------*/
    SCB_EnableICache();
#endif

#ifdef SCB_EnableDCache
    /* Enable D-Cache---------------------------------------------------------*/
    SCB_EnableDCache
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值