搜索
bottom↓
回复: 51

简易多任务OS设计---ARM9上运行的简单多任务调度器(源码+详细设计文档)【恢复】

[复制链接]

出0入0汤圆

发表于 2009-1-4 02:10:28 | 显示全部楼层 |阅读模式
本文档以ARM9(三星2410/2440)为平台,介绍一个多任务抢占式调度器------抢占式任务调度,提供延时,挂起,恢复任务操作。最精简化,没有加入信号量邮箱等同步通信机制。只实现一个基本任务调度器的功能。

虽然不能称为操作系统,但已体现了小型嵌入式操作系统的精髓。OS代码不到1.5K,核心函数只有几个,思路简单明了。比起UCOS,更适合用作多任务系统原理的学习入门。 对初学者来说,看UCOS的源代码很容易迷糊。

回想初学嵌入式多任务系统时,什么都不懂,Jean J.Labrosse的经典之作《嵌入式实时操作系统uc/osII》看得我一头雾水。事实上,使我对多任务的原理印象最深的是网上的一篇文章----《建立一个属于自己的AVR的RTOS》。

学习就应该这样,循序渐进。把一步步把简单的东西弄懂了,便没有复杂的了,所谓水到渠成。

这篇文章是面对初学者的,把很多问题简化了。希望对刚接触嵌入式多任务系统的兄弟有所帮助。

必定存在不少bug,欢迎指正。

点击此处下载 ourdev_570383.rar(文件大小:467K) (原文件名:SIMPLE_OS.rar) 





 (原文件名:607b4657-7020-467b-94f5-15acb5b81940.jpg) 

本贴被 lisuweizhai 编辑过,最后修改时间:2009-01-04,18:15:35.

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-1-20 14:44:58 | 显示全部楼层
kankan

出0入0汤圆

发表于 2009-1-19 15:29:09 | 显示全部楼层
好东西,支持了。。

出0入70汤圆

发表于 2009-1-15 19:44:42 | 显示全部楼层
支持

出0入0汤圆

发表于 2009-1-15 13:58:48 | 显示全部楼层
支持

出0入0汤圆

发表于 2009-1-11 10:23:17 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-1-11 00:04:38 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2009-1-5 19:54:41 | 显示全部楼层
顶一下!

出0入0汤圆

发表于 2009-1-5 19:53:57 | 显示全部楼层
超赞!

出0入0汤圆

发表于 2009-1-5 19:44:05 | 显示全部楼层
谢谢 

出0入0汤圆

 楼主| 发表于 2009-1-5 19:11:28 | 显示全部楼层
之前好了,程序在RAM中运行就不行,原因不明,下到NAND FLASH运行就好了,谢谢

-------------------------------------------------------------------------



工程中的Ro_base设的是0x30500000,要根据自己的板子和启动运行方式修改

本贴被 lisuweizhai 编辑过,最后修改时间:2009-01-05,19:13:17.

出0入0汤圆

 楼主| 发表于 2009-1-4 10:26:47 | 显示全部楼层
干这一行的起得比鸡早,睡得也比“鸡”晚啊 

本贴被 lisuweizhai 编辑过,最后修改时间:2009-01-04,13:51:48.

出0入0汤圆

 楼主| 发表于 2009-1-4 10:19:41 | 显示全部楼层
呵呵,干这一行的不容易啊

出0入0汤圆

发表于 2009-1-4 09:55:18 | 显示全部楼层
2点钟发帖子还是可以理解的,没想到居然有早晨5点上OURAVR的,阿莫老大也很牛,一大早就来了,想你们致敬~~

出0入0汤圆

发表于 2009-1-4 09:43:42 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-1-4 08:44:13 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2009-1-4 08:41:00 | 显示全部楼层
谢谢了,看看,应该会适合像我这种入门级的

出0入0汤圆

发表于 2009-1-4 08:28:14 | 显示全部楼层
Cool
头像被屏蔽

出0入0汤圆

发表于 2009-1-4 08:13:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入31汤圆

发表于 2009-1-4 08:12:04 | 显示全部楼层
不错,初学者一般编程经验也较少,编程和阅读代码的能力都不是很高,迫切需要一个比较简单的系统以学习其原理

出0入0汤圆

发表于 2009-1-4 05:04:10 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2009-1-4 22:15:00 | 显示全部楼层
“ 工程师在选用多任务操作系统前要先看看自已的项目是不是真需要用操作系统!

如果你的任务可折分性较差,折分后的各个任务之间有N多的同步问题和复用资源问题,

那么算了,我觉得你还是不要用多任务操作系统,或者将这些功能都放在一个任务里面,

不要有事没事就觉得多任务好!多任务是用降低实时性来换取软件开发的独立性,不要

被实时多任务操作系统的实时两个字骗了,这个实时只是相对于其它非实时性多任务操

作系统来讲的,实时性最高的当然是你自已编写的单任务程序。”



**************************************************



经典

出0入0汤圆

 楼主| 发表于 2009-1-4 14:11:14 | 显示全部楼层
啊,教程做的很漂亮,赞~~~

问楼主,用啥软件做的?

--------------------------

谢谢,先用Word编辑好,再转成PDF格式输出

出0入0汤圆

发表于 2009-1-4 14:04:14 | 显示全部楼层
先收下,记号

出330入0汤圆

发表于 2009-1-4 13:50:29 | 显示全部楼层
目前还没摸清ARM的大门在哪,先捧个场。



出0入0汤圆

发表于 2009-1-4 13:31:43 | 显示全部楼层
啊,教程做的很漂亮,赞~~~

问楼主,用啥软件做的?

出0入0汤圆

发表于 2009-1-4 11:28:02 | 显示全部楼层
有空看下

出0入0汤圆

发表于 2009-1-5 15:22:22 | 显示全部楼层
难得的好资料

出0入0汤圆

发表于 2009-1-5 13:43:00 | 显示全部楼层
支持一个

出0入0汤圆

发表于 2009-1-5 13:31:42 | 显示全部楼层
之前好了,程序在RAM中运行就不行,原因不明,下到NAND FLASH运行就好了,谢谢

本贴被 njnuaya 编辑过,最后修改时间:2009-01-05,16:23:01.

出0入0汤圆

 楼主| 发表于 2009-1-5 12:33:42 | 显示全部楼层
回17楼:请教,为什么我的任务只能运行一次?2440平台,初学求教! 

-----------------------------------------------------------------



应该是你板子的时钟节拍中断没有运行起来。把下面//Uart_SendByte('I');的注释“//”去掉,检查是否有输出。

 RTOS.c

 void TickInterrupt(void)

        {

                static INT8U i;

                OSTime ++;



                //Uart_SendByte('I');



                for(i = 0; i < OS_TASKS; i++)                        /* 刷新各任务时钟 */

                {

                        if(TCB.OSTCBDly )

                        {

                                TCB.OSTCBDly --;

                                if(TCB.OSTCBDly == 0)                /* 当任务时钟到时,必须是由定时器减时的才行*/

                                {

                                        OSSetPrioRdy(i);                    /* 使任务可以重新运行        */        

                                }

                        }

                }        

                rSRCPND |= BIT_TIMER0;                        

                rINTPND |= BIT_TIMER0;

}



系统运行正常的话是有输出的。

出0入0汤圆

发表于 2009-1-5 10:35:41 | 显示全部楼层

出0入0汤圆

发表于 2009-1-5 10:25:25 | 显示全部楼层
OK,不错,谢谢了!

本贴被 njnuaya 编辑过,最后修改时间:2009-01-05,12:31:07.

出0入0汤圆

发表于 2009-3-15 14:01:28 | 显示全部楼层
xiexie

出0入0汤圆

发表于 2009-3-16 08:39:10 | 显示全部楼层
好东西!

出0入0汤圆

发表于 2009-3-17 01:19:00 | 显示全部楼层
niu

出0入0汤圆

发表于 2009-5-1 20:28:25 | 显示全部楼层
LZ广工的?我都是大学城广工的,你是我师兄,现在小弟学得很迷惘,指点一下啦。

出0入0汤圆

发表于 2009-5-8 10:29:39 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-5-8 10:36:34 | 显示全部楼层
good

出0入0汤圆

发表于 2009-5-15 21:37:39 | 显示全部楼层
赞,收藏了~

出0入0汤圆

发表于 2010-6-4 11:21:17 | 显示全部楼层
我是菜鸟,再顶一下

出0入0汤圆

发表于 2010-6-4 11:45:28 | 显示全部楼层
顶一下!

出0入0汤圆

发表于 2010-6-10 11:35:41 | 显示全部楼层
把生成的BIN文件下到SDRAM中运行,显示如下,请楼主分析下原因
## Starting application at 0x30000000 ...
Board is running OK
Ready to start OS
Start OS
Task0
Task1
Task2
Resume Task2
Task2
Dummy_isr error, interrupt number: 0, INTMSK = 0xfffffbff

出0入0汤圆

发表于 2010-7-7 11:12:17 | 显示全部楼层
代码未初始化mmu

出0入0汤圆

发表于 2010-7-13 22:58:52 | 显示全部楼层
回复【楼主位】lisuweizhai
-----------------------------------------------------------------------

记号

出0入0汤圆

发表于 2011-1-6 12:07:55 | 显示全部楼层
mark!~


代码精简,用在8位机挺好!

出0入0汤圆

发表于 2011-1-6 12:35:35 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2011-1-6 13:06:45 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-1-15 21:31:01 | 显示全部楼层
xie xie liao

出0入0汤圆

发表于 2012-2-22 19:38:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-28 17:48:35 | 显示全部楼层
mark.                                         

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-25 21:23

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

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