VxWorks-Like Kernel

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

功能具有:

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的消息队列,并添加了进去(这个我复制的比较多)。最后添加了一些较经典的测试内核任务切换的例子。

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

 

 

  

 

转载于:https://www.cnblogs.com/gandancing/archive/2012/03/21/2410844.html

### 回答1: VxWorks-6.9是一个实时操作系统,具有可下载内核模块(Downloadable Kernel Module)功能。可下载内核模块是一种可以在运行时加载和卸载的软件组件,可以很方便地扩展系统功能或增加新的设备驱动程序。 下载运行可下载内核模块(.o文件)的过程如下: 1. 编写或获取所需的内核模块源代码,并将其编译为目标文件(.o文件)。 2. 将目标文件(.o文件)通过FTP、TFTP或其他网络传输工具,传输到运行VxWorks-6.9的目标设备上。 3. 在VxWorks-6.9中使用提供的命令进行内核模块的加载和运行。例如,可以使用ld命令来将目标文件载入内存,并调用模块的初始化函数。 在加载和运行内核模块之前,需要确定相应的模块位置和入口点等参数。可以通过功能丰富的命令行接口来操作内核模块,命令如下: - ld <filename>:将指定的目标文件加载到内存中。 - lsSym <symbolname>:查看某个模块导出的符号。 - callFunc <symbolname>:调用符号所代表的函数。 通过这些命令,可以将内核模块成功加载到VxWorks-6.9操作系统中,并运行模块的初始化函数,从而实现相应的功能扩展或设备驱动。 总之,VxWorks-6.9具有可下载内核模块的功能,允许用户在运行时加载和卸载软件组件,从而灵活扩展系统功能或增加新设备的驱动程序。加载内核模块的过程包括将目标文件传输到目标设备上,并通过相关命令进行加载和运行。 ### 回答2: VxWorks是一种实时操作系统,可在嵌入式系统中运行。VxWorks-6.9是VxWorks系列操作系统的一个版本。在VxWorks-6.9中,可通过下载和运行可加载内核模块(Downloadable Kernel Module)来扩展系统功能。 可加载内核模块是一种动态加载到系统内核的代码,用于增加新的驱动程序、文件系统或其他系统功能。这些模块以.o文件的形式提供,使用工具链将其编译成.o文件。 下载和运行可加载内核模块可以分为以下步骤: 1. 编写可加载内核模块的源代码,并使用VxWorks提供的工具链(如GNU工具链)进行编译。编译过程将生成.o文件。 2. 将生成的.o文件移动到目标嵌入式系统上,可以通过网络、串口或其他可用的通信方式进行传输。 3. 在目标系统上使用VxWorks的命令行界面或其他管理工具进入系统。 4. 执行VxWorks命令,将可加载内核模块从外部存储器下载到系统内核中。命令可以是"ld"或"load"。 5. 检查可加载内核模块是否成功加载。可以使用"i"或"i"命令。如果成功加载,将显示已加载的模块列表。 6. 执行已加载的可加载内核模块。可以使用"->"命令,后跟模块名和参数。模块将开始执行其提供的功能。 总的来说,下载和运行VxWorks-6.9的可加载内核模块需要在目标系统上将.o文件传输到内核,并使用VxWorks命令完成加载和执行操作。这样,就可以扩展系统的功能并满足特定需求。 ### 回答3: VxWorks是一款实时嵌入式操作系统,具有强大的可定制性和高度可靠性。在VxWorks 6.9版本中,可下载的内核模块是一种将特定功能组件编译为二进制代码的方法,这些组件可以在运行时加载和执行。 首先,为了创建可下载的内核模块,需要使用VxWorks提供的开发工具链。这些工具链包括编译器、连接器和调试器等,可以通过Wind River Systems或其他渠道获得。 编写可下载内核模块的源代码后,使用工具链中的编译器将其编译为目标文件(.o文件)。在VxWorks中,目标文件通常使用GNU编译器集合(GCC)生成。 接下来,需要将目标文件(.o文件)传输到目标设备。可以使用多种方法进行传输,比如使用FTP、TFTP或串行连接。 一旦目标文件传输到目标设备,就可以使用VxWorks shell或类似的工具加载和运行该模块。在shell命令行中,使用`ld`命令将目标文件加载到内核地址空间中。 加载完成后,可以使用VxWorks提供的API或调试工具进行对该模块的调用和测试。这些API可以在VxWorks文档中找到,并采用C或其他支持的编程语言进行调用。 需要注意的是,使用可下载的内核模块应遵循VxWorks的编程规范和安全性要求,以确保系统的稳定性和可靠性。此外,编写和加载可下载的内核模块需要具备相关的嵌入式系统开发经验和知识。 总而言之,通过VxWorks提供的工具链和API,可以编写、加载和运行可下载的内核模块。这种使用二进制代码实现模块化功能的方法提高了系统的可定制性和灵活性,并为嵌入式应用提供了强大的运行环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值