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等。
此外,还声明了所有的内核函数,忘记函数名或者常量名的,可以在这个文件找找。
- CoOS使用教程——中断、裁剪、移植
- CoOS使用教程——信号量
- CoOS使用教程——互斥量
- CoOS使用教程——事件标志
- CoOS使用教程——消息邮箱
- CoOS使用教程——消息队列
- CoOS使用教程——软件定时器
- CoOS使用教程——第一个工程
- CoOS使用教程——任务的状态
- Arduino教程——外部中断的使用
- 图片裁剪的使用——拼图游戏
- Ollydbg使用教程:中断方法
- DSP中断使用简明教程
- TI Davinci DM6446开发攻略——根文件系统的裁剪和移植
- TI Davinci DM6446开发攻略——根文件系统的裁剪和移植
- TI Davinci DM6446开发攻略——根文件系统的裁剪和移植
- TI Davinci DM6446开发攻略——根文件系统的裁剪和移植
- 【1】基于TQ2440的MP3设计——【5、裁剪和移植Linux 2.6 内核】
- JVM生命周期和类加载机制
- Java HashMap排序
- swap 去除vector多余的容量
- 宣化上人:诸病从何来?
- ReentrantLock源码分析(JDK 1.7)
- CoOS使用教程——中断、裁剪、移植
- Ubuntu Server 配置中的各种坑
- 面试
- cocos2dx 3.7添加手机震动
- POJ1008 玛雅历
- Html设置超链接文字颜色
- 将长度大于30的spot_intr字段, 显示为下面样式“XXXXX......”
- Android项目实战之战途牛
- 双缓存解决闪烁及对话框背景覆盖控件问题