完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
uC/OS-III 学习笔记(一)
uC/OS-III移植 前言 最近毕设要做一个嵌入式设备,需要用到操作系统。本人只会制板和写ARM裸机程序,OS方面是一个小白,只对uC/OS和Linux两种系统略有了解。鉴于嵌入式Linux学习周期较长,有可能在毕设结束之前都不能学到能够开发项目的地步。故选择uC/OS作为设备的操作系统。 之所以选择uC/OS-III,是本着“要学就学最新”的想法来的。uC/OS-III相比II,加入了时间片轮转功能,能够允许定义相同优先级的任务。其好处balabalabala…好吧,我没仔细学过II,说不出来。估计以后就可以填这个大坑了。 至于FreeRTOS等操作系统的比较——算了吧,我一个OS都不会用,没什么可比性,写出来也没人信。 废话到此为止,下面开始正文 uC/OS-III 的移植 首先讲讲我的开发环境:STM32F103RET6 + KEIL5 + ST 3.5.0 库 STM32F103RET6:是Cortex-M3内核的芯片,有PendSV和Systick中断供操作系统使用。 Keil5:用来管理工程,当然也可以用IAR,个人感觉Keil5漂亮一点。 ST 3.5.0 库:之所以使用ST 3.5.0 的库,而不是现在流行的HAL库,主要原因是目前国内的比较完善的教程主要是针对ST 3.5.0库来写的,一点有个什么bug还可以有个参考。不过之后当我对uC有了较深入的认识后,肯定会想办法移植到HAL库上。 移植比较简单,具体步骤如下: 1#下载源码 上Micrium官网下载源码https://www.micrium.com/(未墙,慢的可以上4G) 用F107的做F103的移植没毛病。F103的只有uC/OS-II的工程。 下载源码需要注册,然而Micrium的官网经常出问题。如果无法注册也没有关系,可以从这里下载(度盘)。 2#找一个好的教程 网上随便搜搜都能找到如何移植的。这里我参考的是野火团队的《uCOS-III 应用开发指南——基于 STM32F103系列》,该书及配套文档在STM32&STM8社区技术论坛上就有这里。注册个账号即可下载。(什么?你懒得注册?那么这里好了) 该书讲解的比较全面,不仅讲解了如何移植,还通过阅读源码的方式,讲解了uC/OS-III的各个机制,且每一部分都有相应的例程帮助读者巩固理解。但不是很通俗易懂,且关于Cortex-M3的一些内核机制,包括PendSV、Systick、双堆栈等没有进行说明,也没有对操作系统做一个入门级的解说。这对于从来没有接触过OS的小伙伴可能有点困难。 这里建议初学者先仔细看一下这两篇文档:《初探uCOS-II》、《uCOS-II 移植与深入实战指南》,照着做一遍,先大致了解一下uCOS-II的工作原理。其中第二本书要求读者阅读一下《CM3权威指南》。这里我都有。 (uCOS-II那本书用的工程文件跟uCOS-III的不一样,其实也只是BSP的接口函数不一样啦,改一改就行。当然不放心的同学可以下这个uCOS-II对应的工程) 除了野火的书外,还有一本叫《STM32F4 UCOS开发手册V2.1》的书,书里的内容是是针对STM32F4系列,是战舰系列的配套教程(有一本F1的,但实际内容是F4的)。这本书讲的就比较通俗易懂,里面从uC/OS-II、讲到M3/M4内核机制,再讲到uC/OS-III的内容,图文并茂,讲的比较生动。个人建议手头已经有STM32F407开发板的同学,可以直接按照此教程来学习。但如果各位和我一样只有F103板子的话,还是看野火的书吧,这本书完全可以当个参考,毕竟没必要花那个冤枉钱。 本人也是按照野火的书一步步学的,从这里开始就写一下我对该书的理解好了,因为书已经讲得很细了嘛 3#移植 移植就按照教程一步步来就好了。个人认为最重要的是修改SysTick和PendSV的中断处理函数入口名称。该向量定义在启动文件stm32f10x_hd.s中,共两处: DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler 1 2 PendSV_Handler PROC EXPORT PendSV_Handler [WEAK] B 。 ENDP SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B 。 ENDP 1 2 3 4 5 6 7 8 uC/OS给的官方例程中,这两个中断函数入口名称分别为:OS_CPU_PendSVHandler和OS_CPU_SysTickHandler,跟Keil给出的启动文件不一样。这里需要修改启动文件中这两处名称,让其能够与uC的源码正确的连接起来。 之所以特地把这里拎出来,是因为这两个中断至关重要。至于为什么重要,去好好看看这张图吧: 这张图的讲解在《uCOS-II 移植与深入实战指南》和《CM3权威指南》中,请务必把这张图搞清楚,不然真是学的一脸阿库娅。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:05 , Processed in 0.900045 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号