CoOS使用教程——中断、裁剪、移植

来源:互联网 发布:淘宝免费上传视频 编辑:程序博客网 时间:2024/05/17 00:11

1、中断。

在CoOS下,只使用了M3内核的时钟滴嗒和PendPV,两个中断。

时钟滴嗒是调度任务的时间间隔,而PendPV是切换任务上下文的中断入口。

这说明了,其它中断可以跟裸机开发一样使用,只要中断服务函数不出问题(当然,中断服务函数不要太过复杂),就不影响内核调度。

注意:在中断服务函数中,不能使用CoPostSem()等函数,而使用isr_PostSem()。

此外,这些内核函数(如:isr_PostSem()、isr_PostMail()、isr_PostQueueMail()、isr_SetFlag()等),在中断服务函数内使用的时候,需要进入临界段(CoEnterISR()),以保护现场,使用完之后,再退出临界段(CoExitISR())。

2、裁剪。

裁剪,其实就是留下需要的功能,去掉不要的功能。CoOS的内核裁剪都在OsConfig.h这个文件里面进行

不要的功能,在相应的宏定义里面,写0(黑色剪头指向的地方)。需要的功能,写1。


能裁剪的功能,也就前面说过的信号量、互斥量、消息队列、消息邮箱等。

其中,这个文件里面还设置了芯片类型、主频、和调度时间间隔等参数,可以视具体情况来设置。

3、移植。

只需要修改上面三个文件(port.c、arch.c、OsArch.h)就可以移植到其它芯片了。

当然,首先你得熟悉需要移植的芯片架构及其指令集,还要熟悉操作系统的调度原理,其次才是改这三个文件。

其中,关键的地方,就是port.c、arch.c,这两个文件。

arch.c,是时钟滴嗒的具体实现(调度的时间间隔),如果是51单片机,可以用定时器来实现这个功能。

port.c,实现了进栈、出栈、及切换任务上下文这三个功能,而C语言无法实现这三个功能,所以只能用汇编。

4、CoOS.h文件。

这个文件定义了很多常量,如:EVENT_SORT_TYPE_FIFO等。

此外,还声明了所有的内核函数,忘记函数名或者常量名的,可以在这个文件找找。

0 0
原创粉丝点击