hjr-嵌入式:ucos-II操作系统

嵌入式有别于单片机的前后台程序,一个关键原因就是它有操作系统

比较火的操作系统有ucos-II和Linux,这两个一个适合用于小型实时性要求高的,一个适合用于大型,实时性要求低的(相对而言)工作环境

我们先来学习简单的ucos-II

首先说下操作系统怎么移植,打开内核程序,里面有几个文件,一共三种.h,.c,.asp

.asp是汇编,写的是与微处理器相关的代码,.c是c语言,.h是c语言的头文件

移植其实说白了就是配置,再说白了就是改一些儿程序然后下载到嵌入式处理器中

.h文件中的os_cup.h中定义了数据类型,一些宏定义等

比如,你的处理器从16位改成32位了,然后os_cpu.h中有一句

#define unsigned int  u16

就需要更改为

#define unsigned short  u16

这也是为什么很多程序不用int ,long,unsigned int之类的数据类型而用int16,int32,uint16之类的自定义的类型

就是为了方便当移植到不同位数的处理器,直接改头文件的定义就行了

比如,可以改变宏定义控制一些预编译的代码是否编译等等,主要做的就是把几个类似的文件程序改的适合当前微处理器,

然后把改好的操作系统内核放到你的工程里一起下载进处理器,这就是移植

 

ucos-II操作系统是多任务任务的实时抢占式内核

抢占式就是当前只执行优先级最高的任务

实时性就是接收外界数据后能够在规定时间内给出反应

多任务:

用汇编写中断函数时,我们需要调用堆栈保存现场,就是把寄存器的值push保存到堆栈里,中断完了再pop恢复现场

用c语言中断时利用中断寄存器,先配置中断,然后在中断处理函数里执行中断内容,保存现场之类的自动完成,但还是需要查中断号,中断表,自己判断优先级

现在用操作系统的任务其实就是再中断基础上更方便一些,直接写一句话

INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);

OSTaskCreate(任务处理函数首地址指针,任务处理函数传参,任务分配的堆栈栈顶指针,任务优先级号);

 

就把中断处理函数,优先级之类的都处理好了

而到了JAVA等面向对象语言之后,直接用线程,new一个线程里面放线程处理函数,连优先级都封装了,只需要写开启新线程,写线程处理函数就行了

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师小侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值