本帖最后由 hxfxt 于 2019-6-2 22:52 编辑
先说下阅读情况:目前为止还未阅读完毕,目前阅读到内核篇的中断管理(进度有点缓慢),由于有ucos的相关基础,因此不急于移植,先了解下RT-Thread与ucos有什么区别,然后再对其移植及应用。
为什么选择本书阅读,当然是因为RT-Thread作者写的。应该描述的更多的是实现原理,讲解的比较深入,对以后使用RT-Thread开发是有诸多益处的,当然也会间接地影响自己的软件开发思路。
说下我认为有用或者和ucos有显著差别的部分:
1、FinSH(虽然还未阅读到这一章节,但是前面章节中相关例程均由其打印输出)用于调试或查看系统消息,对于开发者来说这个绝对是开发调试利器,虽然说就是一个串口(此处以串口为例,因为大家最常用),但是对于开发者来说必不可少,至少对于我来说。此处不针对那些连串口都不用的应用。ucos中需要自己实现。,虽然说不难,但可见RT-Thread更贴心点。
2、静态对象和动态对象的区分,这个在ucos里面并未做这样的区分,而且RT-Thread中静态内核对象和动态内核对象的初始化并不一样。本人觉得实际使用的以静态对象较多,静态对象通常放在RW端和ZI端中,系统启动后在程序中初始化,静态对象不依赖与内存堆管理器,内存分配由编译器来完成,分配时将确定。当然以实际应用为主。
3、RT-Thread中的高精度延时us级延时,对于高精度延时还是比较好的,ucos中并未提供有us级延时的函数,需要自己结合硬件定时器来实现精确延时。
4、RT-Thread中的邮箱,当然书中提到了可以使用消息队列来实现,ucosiii中已经省略了邮箱。
5、RT-Thread中的信号(软中断信号),用来通知线程发生了异步事件,用作线程之间的异常通知、应急处理。ucos中并未有此概念。
由于先入为主的缘故,感觉RT-Thread和ucos存在很多相同的地方,原理和实现应该有很多相同之处(当然代码还没有去扒,可能也没时间去扒)。此处只是本人的拙见,又因本人能力有限,如果上述有说的不对的地方,敬请指出。谢谢!
下面摘抄下来的基础知识点,对于初学者来说是非常重要的:
一、集成开发环境Keil的编译信息
1. Keil工程在编译完成之后,会有相应的程序占用的空间提示信息:
(1)Code :代码段, 存放程序的代码部分。
(2)RO-data:只读数据段,存放程序中定义的常量。
(3)RW-data:读写数据段,存放初始化为非0值的全局变量。
(4)ZI-data :0数据段, 存放未初始化的全局变量及初始化为0的变量
2. 编译工程后生成的.map文件(说明各个函数占用的尺寸和地址)部分
信息解读:
(1)RO Size:包含了Code及RO-data,表示程序占用Flash空间的大小。
(2)RW Size:包含了RW-data及ZI-data,表示运行时占用的RAM的大小。
(3)ROM Size:包含了Code、RO-data以及RW-data,表示烧写程序所占用的Flash空间的大小。
|