前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >走进uCOS III操作系统

走进uCOS III操作系统

作者头像
飞哥
发布2020-07-10 10:23:04
3.2K0
发布2020-07-10 10:23:04
举报

写在前面 最近的更新频率有些慢,因为有许多东西在网上是有大量资料的,所以我想尽量多写一点带有思考性的,或者是遇到的一些问题,少写一些同质化的东西。另外,我也尽量多写一些项目实战相关的东西,争取每个礼拜至少一次更新。

从今天开始将会走进uC/OS-III操作系统的世界。

uC/OS-III是一种嵌入式实时操作系统,即RTOS(Real Time Operation System 实时操作系统)的一种,目前暂未开源,可以免费试用45天。当然,对于学习者来说,是不需要考虑这个问题的。那么为什么要引入uC/OS-III操作系统呢,因为随着实现的功能越来越多,裸机的实时性已经得不到保障,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得更加复杂,如果想降低编程的难度,我们可以考虑引入 RTOS 实现多任务管理,这是使用RTOS 的最大优势。

通常在裸机编程当中,我们使用一个while(1)大循环来执行我们的任务,如果我们的程序不多,这样当然没有问题,但是如果我们的代码量非常多,有很多个任务需要执行,并且他们的优先级并不是有序的这样排下去,那么,这将会很麻烦,因为程序是按顺序执行的,除非是有中断,要不然后面的任务必须在前面的任务执行完才能得到执行,如果前面的任务还有很多延时,这样更是会白白消耗CPU。

前面我们学过按键的扫描检测,就是利用while(1)循环不断去扫描按键是否按下,返回相应的值。但这仅限于循环里面没有太多内容,最好只有按键检测,这样实时性才有保证。我们可以想象一下,如果这个循环体里程序特别多,那么当你按下按键的时候,它可能在执行别的语句,就会导致按下没有反应,这肯定是不行的,但是如果只有单纯的一个按键检测,虽然检测及时,但是CPU不做别的事情也没有意义。因此,可以说引入RTOS操作系统是非常有必要的。

那么,应该如何学习RTOS呢?

对于初学者来说,并不建议直接看源码。市面上虽然有一些讲解相关 RTOS 源码的书,如果你基础不够,且先前没有使用过该款 RTOS,那么源码看起来还是会非常枯燥,且并不能从全局掌握整个 RTOS 的构成和实现。所以最好是先学会如何调用他的API函数来实现自己的功能,当自己能够比较熟练的使用这些API函数的时候,再深入去研究它底层是如何实现的,光会调用API函数也是不行的,因为这会影响编程的细节,如果我们对底层一无所知,当功能实现不了的时候,调试起来将会非常困难。

接下来,说一下如何移植uC/OS-III操作系统到我们的stm32开发板中。

在移植之前,我们首先要获取到 uCOS III 的官方的源码包,首先,打开 Micrium 公司官方网站( http://micrium.com/),打开网站链接之后,我们点击“ Downloads”选项卡进入下载页面。

下载好了源码之后,我们选择裸机的一个工程模板,在里面建一个UCOSIII文件夹用来存放源码,为方便管理在 UCOSIII 文件夹内新建 5 个文件夹,如图所示:

然后添加相应的文件到工程里面,具体添加哪些文件可以参考网上教程。

在工程上添加了相应文件之后,我们要对文件进行一定的修改。

首先是启动文件,有两处要改,首先修改工程的启动文件“startup_stm32f10x_hd.s”。其中将PendSV_Handler 和 SysTick_Handler 分 别 改 为 OS_CPU_PendSVHandlerOS_CPU_SysTickHandler,共两处。(要特别注意下划线,否则编译没问题,但是会移植失败)

然后是修改源码中的 bsp.c 与 bsp.h 文件。我们知道 bsp 就是板级相关的文件,也就是对应开发板的文件,而 uCOS III 源码的bsp 肯定是与我们的板子不一样,所以就需要进行修改。主要是删除原来板子上的驱动程序,保留一些初始化的东西。再把原来裸机工程里面 app.c 的文件内容全部删除,写一个空的main函数。

这些是必要的,其他的一些细节这里不多说。

总结:这里开一个头,后面再分块介绍uC/OS-III操作系统的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子技术研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档