发布一个具有基本功能的可以完全独立运行的实时内核,仅供学习所用。
功能具有:
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的消息队列,并添加了进去(这个我复制的比较多)。最后添加了一些较经典的测试内核任务切换的例子。
总结一句话是:简单的开始,把条件慢慢放大,同时保证它尽快可以运行。