发布一个具有基本功能的可以完全独立运行的实时内核,仅供学习所用。

功能具有:

1. 任务创建删除延迟等
2. 两进制信号量
3. 计数信号量
4. 互斥信号量,任务优先级反转
5. 消息队列
6. VxWorks内存分区

7. 串口输入输出 

8. 内存、对象、优先级队列可以在VS2005上运行

发布内容: 

源码下载:VxWorks-Like.rar

源码在线:http://www.gandancing.com/rain/index.htm

 

运行需要:http://gxemul.sourceforge.net/ (tools.rar里面应该有这个的编译版本吧)

运行:  

 gxemul.exe -E qemu_mips -M 64 ../build/rain.elf (当然目录相对位置自己定了)

最后简单介绍这个历程吧,也许对想学习的人有用:

我以前在http://www.vxbus.com/ 这个网上找到VxWorks的源码。路径是http://www.vxbus.com/vxworks_src/target/index.html 但是现在失效了。

有段时间较闲,我便开始剖析VxWork内核,把系统启动过程,任务调试都看了一遍。具体过程分以下步骤:

STEP1. 开始对内核源码进行剖析,先是内核对象的设计,内存分配,任务优先级队列等数据结构自己实现了一遍。就是在test目录里可以用Vs2005编译的~使用可以单步调试。

STEP2. 然后觉得这个微内核还是比较好理解的,于是想把代码剖析得更彻底一些,于是实现了一个BSP,可以在gxemul上直接运行VxWorks。 gxemul可以直接用汇编调用,并且很简单,给调试内核带来了便利。

STEP3.  觉得具体了解VxWorks内核的基础了,然后编译了个MIPS工具链,并利用UCOS的开源嵌入式系统的一些头文件,以及一些初始化信息,开始去实现这个简单的系统。

STEP4. 先不开中断,实现了根任务的启动。接着改进,加上最简单的任务切换。接着添上了一个二进制信号量。加上时钟中断,测试信号量的正确性。完善任务设计,加上中断中的任务切换。加上数字信号量,互斥信号量。

STEP5. 本来没时间了,但是为了给大家学习的时候能更完善一点,又进一步完善系统。看了VxWorks的消息队列,并添加了进去(这个我复制的比较多)。最后添加了一些较经典的测试内核任务切换的例子。

总结一句话是:简单的开始,把条件慢慢放大,同时保证它尽快可以运行。