好像现在Android很火,真想去学android不过android也是linux内核,即在linux内核上搞一个java虚拟机,执行java程序(我的理解不一定正确),所以学习LINUX还是很好啊。。。呵呵。
转正题UC/OS-II学习。
可重入函数
上次讲到可重入函数,什么是可重入函数呢?可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误。(简单点说就是程序在调用执行一个函数时,被中断或者挂起了,在中断执行完,或者内核再次调度此任务继续执行此函数时候,其中的数据不会都不会被改变)。
void swap(int *x, int *y) //可重入函数
{
int tmp = *x;
*x= *y;
*y= tmp;
}
int tmp;
void swap(int *x, int *y) //不可重入函数(tmp可能会被改变)
{
tmp = *x;
*x = *y;
*y = tmp;
}
也需会看到最简单的编写可重入函数的方法就是使用局部变量,而在现实的工程中式很困难的,所以引入了一种锁机制,即如果想使用一个函数(该函数可以被多个任务调用)用到了一些全局变量,可以讲此全局数据锁上,在使用完成之后释放,在使用期间别的任务不能用到此全局变量。
任务的调度需要有中断,或者模拟的中断环境,所以要保护数据也可以关闭用关闭中断来实现。
实现方法:
void Fuction(void)
{
OS_ENTER_CRITICAL(); //保存当前寄存器状态,关闭中断
/*数据处理*/
OS_EXIT_CRITICAL(); //回复原来寄存器值(这里为什么不去刻意开中断呢??因为原来的函数可能已将在关中断的环境下执行,所以不应该开中断,只应该回复到原来状态)
}
在实现任务间通信时候最会涉及对共享数据的处理,要保证处理数据的唯一性,与顺序性——以避免竞争与数据破坏。
还有采用关调度来实现共享资源的保护,但一般不用比较危险
采用信号量机制保护,因为与linux上有一点点小却别所以就不说了,以免混淆了
死锁:死锁也称抱死,知两个或者多个任务互相想用别的任务占有资源,而不释放自己拥有的资源。主要的处理方法就是让任务先得到所有的资源然后执行后立即释放,或者按照同样的循序去申请资源,而后按照逆序释放资源。同样可以设置申请资源的超时时间。
以上两个小结都是理论性的(不正确之处请指正)下一次写就会分析代码了
分享到:
相关推荐
《嵌入式实时操作系统uC/OS-II》word版(第一版) uC/OS-II是一款开源的嵌入式实时多任务操作系统,拥有微小的内核,是初学嵌入式系统朋友的首选。 源码官方地址 : micrium公司 http://www.micrium.com/ 关于...
这是邵贝贝版的uC/OS-II中文图书,书中有不少疏漏之处,但是只要阅读认真,不会误导你的。书中很大篇幅介绍了嵌入式操作系统的概念,提出了基础的内核功能,然后再说这些功能uC/OS-II大多已经具备,接下来就讲解了该...
相当于UC/OS-II相当于系统的详尽说明书,英文原版由UC/OS-II系统编著。读者只需要一些C语言的基础,如果有操作系统的基础就更好。 本书将UC/OS-II分为各个模块来讲解,几乎对所有的语句都作了注释和分析,读者可以...
嵌入式实时操作系统uc/os-ii原来及应用 北京航空航天大学出版社 任 哲 编著
《uC/OS-II原理与ARM应用程序设计》中的实例源码
STM32F103 UC/OS-II关于各种任务间通信的系列C程序(彩屏显示),程序包含编译全部内容,可直接使
uC/OS-II学习笔记—空闲链表和就绪链表
这个源码,是在vc上运行的,能更好的理解uc/os-ii,本人用这个源码做了很多的移植工作哈,包括tlsf算法等,而且非常强大的一个源码。值得拥有!
UC/OS-II移植样板,UC/OS-II移植样板
uC/OS-II内核分析、移植与驱动程序开发 uCOS学习笔记
我们再次感谢Jean J. Labrosse提供uC/OS-II。
《嵌入式实时操作系统 uC/OS-II》书中光盘的资料,里面是uC/OS-II的官方源码,希望对学习OS的朋友有帮助~~
对于学习uc/os-II有帮助 希望对大家有帮助 谢谢大家的支持了
uc/os-ii源码,提供给他家学习交流,多多交换心得
uC/OS-II v2.86 移植在STM32F103VBT6上使用,编译环境IAR6.2.
将uC/OS-II成功移植到Visual Studio 开发环境下,便于开发调试.
Uc/os-II软件开发环境,keil,realview
这是UC/OS-II最新的内核源码2.84,本人QQ154612312,呵呵,有兴趣者,可以加我哦
学习在uC/OS-II系统中应用程序设计,了解任务和事件的创建,及任务的调度;同时了解uC/OS-II系统中设备文件与设备驱动程序的关系,以及系统读写调用与驱动程序读写函数的关系。
uc/os-ii 是比较著名的嵌入式操作系统,由于其源码公开性,是我们学习嵌入式操作系统的好助手,我上传的是uc/os-ii的基本配置方法,大家需要的话可以作为参考