搜索
bottom↓
回复: 32

分享一个AVR的操作系统(来源ECE4760网站)

  [复制链接]

出0入0汤圆

发表于 2014-9-5 13:55:37 | 显示全部楼层 |阅读模式
分享原因:代码结构非常清晰,文档描述也比较详细。如果连这个的逻辑都看不懂的话,就不要谈去看uC/OS的源码了。楼主表示除了涉及到信号量的部分理解稍有困难外,其他代码都能看懂是什么意思。另外,楼主也在学uC/OS,《嵌入式实时操作系统μCOS-II原理及应用》这本书看到移植的部分了。我最大的感觉就是,这类操作系统的核心就是通过任务堆栈的保存和读取,进行的任务切换机制。什么时候切换?任务中有sleep()之类的函数实现延时以及任务等待某种信号量等。切换到哪个任务?则交由shedule()之类的函数进行处理,将当前最高优先级的任务找出来,并完成一次切换。那么任务的sleep()时候退出?这个是通过一个定时器中断函数在每个systick时间到达的时候,对延时参数进行减1操作,减到0的时候任务就就绪了,可以重新被执行。

分享这个AVR的操作系统之前,先分享一个STC官网提供的“软件生产16个定时器”例程,这个思想其实和上述分析的那个定时器中断函数处理机制类似,而且在《时间触发嵌入式系统设计模式》这本书里,也对这种思想进行了讨论。

上传一个《时间触发嵌入式系统设计模式》中的一个代码片段供参考


“软件生产16个定时器”代码在此


AVR的操作系统aOS代码及文档在此


文章最后,多说一句,理解这种操作系统的代码,指针的操作,对数据结构的理解(主要是链表)实在是太必要太有效了,当然其他的C语言知识也是必须的,一句话,C语言基础一定要扎实才行,楼主也在朝这个方向努力着。再次推荐C语言之父里奇和柯林汉(业界对该书作者的简称K&R)合著的《The C Programming Language》。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-9-6 21:10:41 | 显示全部楼层
本帖最后由 didadida 于 2014-9-6 21:15 编辑

花一下午时间把aOS的文档翻译成了中文,并且对几乎全部的程序注释进行了解释,我相信这样就更有价值了,毕竟很多人看英文头大
另外,我有个挺宏大的想法,莫大能不能给穿个裤子呢?

完整翻译aOS中文文档(带程序注释)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-9-5 14:05:09 | 显示全部楼层
再补充一句,数据结构的书籍也是要看的,比如《算法精解:C语言描述》这本,傻孩子在微博推荐过,然后就买来看了,最近挑数据结构的部分进行了学习,感觉还是比较全面的。

出0入0汤圆

发表于 2014-9-5 17:54:04 | 显示全部楼层
顶,参考一下. 我觉得小ram的mcu还是用QP或者LGT板块的那个调度器比较好.

出0入0汤圆

 楼主| 发表于 2014-9-6 08:52:46 | 显示全部楼层
bondxie3 发表于 2014-9-5 17:54
顶,参考一下. 我觉得小ram的mcu还是用QP或者LGT板块的那个调度器比较好.

本帖注重学习思想,我觉得那个aOS结构非常清晰,适合入门学习

出0入0汤圆

发表于 2014-9-6 21:21:38 来自手机 | 显示全部楼层
支持楼主这份精神

出0入0汤圆

发表于 2014-9-6 21:23:55 | 显示全部楼层
顶顶

出0入0汤圆

 楼主| 发表于 2014-9-6 21:25:15 | 显示全部楼层
soos 发表于 2014-9-6 21:21
支持楼主这份精神

谢谢,其实我回这个贴的目的主要是想顶贴了,希望想学嵌入式系统的初学者看到。我就是初学者,我认为这个系统有学习的价值

出0入0汤圆

 楼主| 发表于 2014-9-6 21:26:06 | 显示全部楼层

谢谢!如有问题还请指教

出0入93汤圆

发表于 2014-9-6 21:29:45 | 显示全部楼层
谢谢楼主,下来学习学习

出0入0汤圆

 楼主| 发表于 2014-9-6 21:32:07 | 显示全部楼层
tim 发表于 2014-9-6 21:29
谢谢楼主,下来学习学习

我要继续无节操顶贴

出0入0汤圆

发表于 2014-9-6 21:39:43 | 显示全部楼层
本帖最后由 zhwm3064 于 2014-9-6 21:59 编辑
didadida 发表于 2014-9-6 21:10
花一下午时间把aOS的文档翻译成了中文,并且对几乎全部的程序注释进行了解释,我相信这样就更有价值了,毕 ...


楼主你好,你发的这个aOS,相比与时间触发的调度器程序,两者相比,哪个好呢?
我大休看了一下你发的aOS,程序上要比时间触发复杂得多,而且好多汇编程序。

出0入0汤圆

发表于 2014-9-6 21:58:46 来自手机 | 显示全部楼层
手机标记

出0入0汤圆

 楼主| 发表于 2014-9-6 22:34:31 | 显示全部楼层
zhwm3064 发表于 2014-9-6 21:39
楼主你好,你发的这个aOS,相比与时间触发的调度器程序,两者相比,哪个好呢?
我大休看了一下你发的aOS, ...

汇编只有一个用途,就是用来进行任务切换。你想想类似中断的处理机制就行了,保存现场、恢复现场之类的,只不过不是完全相同。其他的部分,也不是太复杂,其实就是链表来链表去,在链表的头插入,在链表的尾插入,遍历链表之类的。
至于时间触发的嵌入式系统,采用的是到特定时间去执行某个任务,但是据我的了解,这个任务执行完了才能轮到下一个任务去执行,任务与任务之间的关系不够灵活。另外,好像也没有aOS这类系统的任务间通信机制吧。
另外,其实uC/OS的实现机制和aOS是类似的,只不过uC/OS更复杂一些。你要问uC/OS有什么优势,我也说不清楚。。。说的不对的地方还请指出

出0入0汤圆

 楼主| 发表于 2014-9-6 22:42:57 | 显示全部楼层

同样,回此帖是为了顶贴(无节操了)
学uC/OS的可以先看看这个,或者结合着看看,我想会有帮助的

出0入8汤圆

发表于 2014-9-6 23:00:03 来自手机 | 显示全部楼层
没用AVR,STM8有没有些小型的系统?

出0入0汤圆

 楼主| 发表于 2014-9-6 23:05:25 | 显示全部楼层
本帖最后由 didadida 于 2014-9-6 23:07 编辑
qqtfh 发表于 2014-9-6 23:00
没用AVR,STM8有没有些小型的系统?


其实不严格的说,只需要改动一处,就是任务切换的部分,_aos_dispatch()函数,这个涉及底层汇编,不同单片机肯定是不一样,不过原理肯定相通。抱歉的是,我还没达到完全看懂这里边汇编的程度,但其他c的函数还是看的懂的,因为就是逻辑、数据结构,到什么单片机上,都是一样的。另外,我觉得这个可以算作是uC/OS这类系统的简化版本、学习版本。说的不对的地方,请各位指出

出0入0汤圆

发表于 2014-9-6 23:22:52 来自手机 | 显示全部楼层
一直想学操作系统,一个可以看看

出0入0汤圆

 楼主| 发表于 2014-9-7 09:19:29 | 显示全部楼层
dongyanbo 发表于 2014-9-6 23:22
一直想学操作系统,一个可以看看

大家给反馈啊,无节操顶贴

出0入0汤圆

发表于 2014-9-7 09:28:56 | 显示全部楼层
学过一段时间UCOS,不过就跑过LED
楼主这个中文文档教程做的不错,顶顶

出0入0汤圆

 楼主| 发表于 2014-9-7 09:30:44 | 显示全部楼层
strongking 发表于 2014-9-7 09:28
学过一段时间UCOS,不过就跑过LED
楼主这个中文文档教程做的不错,顶顶

谢谢!希望更多的砖头,更多的意见

出0入0汤圆

发表于 2014-9-7 09:32:48 | 显示全部楼层
下载了5楼的翻译文档

出0入0汤圆

 楼主| 发表于 2014-9-7 09:37:31 | 显示全部楼层
lrzxc 发表于 2014-9-7 09:32
下载了5楼的翻译文档

feedback!I need feedback!

出0入0汤圆

发表于 2014-9-7 10:15:45 | 显示全部楼层
能搞到stm8 or 32 系列就好了

出0入0汤圆

 楼主| 发表于 2014-9-7 12:43:39 | 显示全部楼层
Vmao 发表于 2014-9-7 10:15
能搞到stm8 or 32 系列就好了

哈哈,STM32已经有uC/OS了哦,这个系统既便于学习,有有一定的实用价值

出0入0汤圆

 楼主| 发表于 2014-9-8 09:56:16 | 显示全部楼层
麻烦下了中文文档的同学们,给个反馈好不,是垃圾还是不错?是情况属实还是名不符实?作为一个嵌入式系统,够不够清晰简洁?

出0入0汤圆

发表于 2015-1-25 18:21:39 来自手机 | 显示全部楼层
这个aOS不错,够简洁,值得研究一下。感谢楼主推荐。

出0入0汤圆

发表于 2015-1-25 18:58:19 | 显示全部楼层
最近在看 《基于嵌入式实时操作系统的程序设计技术》,标记一下,学习学习~

出0入0汤圆

发表于 2015-1-25 19:16:10 | 显示全部楼层
mark  aOS       基于嵌入式实时操作系统的程序设计技术  AVR 操作系统

出0入0汤圆

发表于 2015-1-25 19:46:09 | 显示全部楼层
想学习ucos 楼主能否给点建议

出0入0汤圆

发表于 2015-1-25 22:11:07 | 显示全部楼层
之前就标记了,今天下载学习。

出0入0汤圆

 楼主| 发表于 2015-1-26 16:54:10 | 显示全部楼层
hanbing333444 发表于 2015-1-25 19:46
想学习ucos 楼主能否给点建议

看书呗,缺啥补啥。C语言其一,这个文档你也可以作为入门看看,然后就是ucos相关的书啦。推荐你先看看数据结构链表的知识,知道怎么插入怎么删除怎么遍历之类的。我是菜鸟

出0入0汤圆

发表于 2015-1-27 07:27:49 来自手机 | 显示全部楼层
下载看看,系统标记avr
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 15:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表