MQX使用手册.docx
- 文档编号:26829848
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:40
- 大小:56.17KB
MQX使用手册.docx
《MQX使用手册.docx》由会员分享,可在线阅读,更多相关《MQX使用手册.docx(40页珍藏版)》请在冰豆网上搜索。
MQX使用手册
一、MQX简介
消息队列执行〔MessageQueueeXecutive,MQX〕是PreciseSoftwareTechnologies公司1989年开发的一款嵌入式实时操作系统。
2000年3月,MQX被ARC公司收购,并在新的处理器体系中〔主要包含:
Freescale的ColdFire系列、IBM®/Freescale的PowerPC、ARM、
ARC和i.MX等〕继续开发。
2021年,飞思卡尔半导体公司出售ColdFireMCU时,附送
MQX,并在官方网站上提供开源源代码,使其成为开源RTOS。
MQX的应用主要是向电子系统的智能化方向延伸。
MQX是面向应用的、专用特制的嵌入式实时操作系统。
它除具有根本的处理多任务、文件及设备驱动的操作系统功能之外,还具有如下系统特性:
〔1〕方便移植;
〔2〕系统结构的可伸缩性和可裁减性强;
〔3〕带有最优化上下文切换和中断时间的功能强大的、高效的预测响应时间,具有实时高性能;
〔4〕采用很小的可配置外形、直接应用编程接口〔API〕和模块化架构,能够很好地满足各种不同应用需求;
〔5〕面向特定应用的简化型系统调用接口,专门支持一类嵌入式应用;
〔6〕最小内核处理集,系统开销小,运行效率高,并可用于各种非计算机设备;
〔7〕可伸缩性、可裁减的系统体系结构,提供多层次的系统体系结构;
〔8〕具有各种即插即用的设备驱动接口,如USB主机/设备堆栈;
〔9〕具有网络功能,提供TCP/IP协议栈(RTCS)协议支持统一的MAC访问层接口。
MQX采用微内核结构,由核心组件〔必选〕和可选性组件构成。
对于核心组件,只有那些MQX或应用程序调用的函数包含在映像中。
为了满足要求,应用程序可通过参加可选组件来扩展和配置核心组件。
MQX采用很小的可配置外形,可配置为低至6KB的ROM,包括内核,中断,信号量,队列和内存管理器。
MQX微内核包含带有抢占式和快速中断响应的多任务内核、扩展的进程间通信、同步工具和文件系统。
图1-1为MQX的组成结构。
图1-1MQX的组成结构
二、MQX开展
从2021年,MQX推出第一个版本RTOS3.0.1后,其版本不断进行升级和更新,功能
不断加强,目前推出的最新版本号是。
下面详细阐述其版本在升级过程中做的改良和添加的功能,如表2-1所示。
表2-1MQXRTOS的版本升级
版本号
推出时间
添加功能
2021,1
〔1〕为系统分配的存储器添加了内存块“类型〞信息。
CodeWarrior中的任务调试插件〔Task-AwareDebugging,TAD〕能给出内核或系统组件分配的存储器块的详细信息。
〔2〕为板级支持包〔BoardSupportPackage,BSP〕添加了如下驱动:
微小文件系统〔TrivialFileSystem,TFS〕,I2C〔InterIntegratedCircuit〕驱动,FlexCAN驱动,实时时钟〔Real-TimeClock,RTC〕驱动,串口驱动,以太网驱动,通用I/O〔GeneralPurposeI/O,GPIO〕驱动,PC卡驱动,PC闪存驱动。
〔3〕设置实时TCP/IP通信套组〔Real-TimeTCP/IPCommunicationSuite,RTCS〕,
MQX文件系统〔MQXFileSystem,MFS〕和通用串行总线〔UniversalSerialBUS,
USB〕对具有有限RAM资源的设备是可以优化的。
〔4〕RTCS中的HTTP效劳器能够由一个单一的任务担任多个会话。
〔5〕添加新的USB主机HUB类。
HUB操作对用户应用程序是完全透明的。
〔6〕把单独的底层设备驱动、主机开发套件库和USB类库工程结合成为USB主机开发套件〔HostDevelopmentKit,HDK〕。
2021,4
〔1〕存储器类型信息添加轻量级内存结构。
〔2〕改变简单网络管理协议SNMPv2〔SimpleNetworkManagementProtocol,SNMP〕代码为能够基于ROM管理信息库〔ManagementInformationBase,MIB〕的结构。
〔3〕添加了模数转换〔Analog-to-DigitalConverter,ADC〕和串行外设接口〔Serial
PeripheralInterface,SPI〕驱动。
2021,6
〔1〕重写以太网驱动,使其能够适用于ColdFireV1和V2处理器。
〔2〕移植MQXFlash驱动程序〔称为FlashX〕用来支持内部Flash设备。
2021,8
〔1〕重写以太网驱动的设备相关局部,用来支持ColdFireV1-V4的快速以太网控制器〔FastEthernetController,FEC〕模块、多重介质访问控制层〔MediumAccessControl,MAC〕设备。
(2)Shell实例使用MFS库,并支持所有的文件传送输协议〔FileTransferProtocol,FTP〕命令。
(3)USB主机更新:
代码重构,更新大容量存储器件〔MASSStorageDevice,MSD〕
和通信器件类〔CommunicationDeviceClass,CDC〕。
2021,10
〔1〕实现对USB增强型主机控制器接口〔EnhancedHostControllerInterface,EHCI〕的支持。
〔2〕支持个人医疗器件类〔PersonalHospitalDeviceClass,PHDC〕和处理器间通信〔Inter-processorcommunication,IPC〕。
〔3〕重写SPI驱动,并支持SPI,QSPI和DSPI,并添加基于SPI的SD卡驱动程
序。
2021,2
〔1〕添加定时基准测试应用程序,用来测量MQX内核的关键定时参数。
(2)SPI的例如应用程序的测试从EEPROM扩展到一般SPI存储器〔EEPROM,闪存或串行的MRAM〕。
(3)ENETMAC接口结构扩展到支持通用和设备特定的控制命令〔即媒体控制命
令〕。
2021,4
〔1〕代码大小的基准测试程序扩大到覆盖的ColdFireV1-V4平台。
〔2〕添加新的I/O驱动程序:
ESDHC〔EmbededSecureDigitalHighCapacity,ESDHC〕驱动,数模转换〔Digital-AnalogConverter,DAC〕驱动,NANDFlash驱动。
2021,6
〔1〕支持CodeWarrior10。
〔2〕支持嵌入式图形用户界面eGUI〔embeddedGraphicaluserinterface,eGUI〕。
〔3〕添加电阻式触摸屏驱动,使用UDP实现处理器间通信IPC。
2021,11
〔1〕为FreescaleKinetisARM®CortexM4PSP做准备。
〔2〕使ARM的IAR嵌入式工作台支持飞思卡尔MQXKinetis端口。
〔3〕增强RTC驱动程序的API,修改I/O驱动程序代码,添加带有硬件时间戳的新
MAC-NET以太网驱动程序来支持Kinetis平台。
三、MQX特性
不像通用操作系统设计的桌面系统,MQX是专为嵌入式系统的速度和规模效益而设计的。
MQX是面向应用的、专用特制的嵌入式实时操作系统。
它除具有处理多任务、文件、设备驱动等根本的操作系统功能之外,还具有如下特性:
〔1〕开放源码,本钱低,软件资源丰富。
〔2〕采用微内核结构,系统体系结构具有可伸缩性、可裁减性。
MQX采用微内核结构,使用最小内核处理集,系统开销小,运行效率高,可以根据需要添加可定制组件,比拟容易适用于各种嵌入式系统应用。
〔3〕高实时响应,内核实时效率高。
MQX采用基于优先级的、抢占式调度策略。
带有最优化上下文切换和中断处理,用于实现快速、高效的预测响应时间,具有高实时性。
〔4〕具有直接应用编程接口API、高度模块化架构、MS-DOS文件系统〔MS-DOSFileSystem,MFS〕,能够很好地满足各种不同应用需求。
〔5〕快速网络功能。
使用RTCS协议支持统一的MAC访问层接口,提供TCP/IP协议栈、FTP、Telnet、DHCP、
SNMP、DNS、HTTP等效劳。
〔6〕高速USB功能。
四、MQX移植
4.1安装FreescaleMQXRTOS
MQX不提供样例程序的芯片,我们需要自己编写硬件驱动。
下面就以K60N512为例。
测试说明MQX移植到K60N512上的最小占用空间:
Flash为:
18Kbytes
RAM为:
3Kbytes
4.2设置FreescaleMQXRTOS
MCU的主要模块被分别封装为库,封装过程如下:
在MQX安装文件中的如下目录中:
通过修改user_config.h文件来改变BSP(板级支持包)和PSP(平台支持包)的设置。
开发者通
过在该文件中添加和移除标志〔即通过宏定义〕来添加或移除组件,为不同的驱动程序改变设置、添加或移除日志设置。
user_config.h文件可以通过以下路径找到:
修改user_config.h后,需要重新编译库。
使用IAR打开
4.3MQX移植的实现
MQX与硬件电路板相关的包有:
BSP(Boardsupportpackage)和PSP(ProcessorSupport
假设MQX没有提供一个新的电路控制板的样例程序,此时,需要根据自己的电路控制板来开发新的BSP〔这里说明一下,psp只需要在工程中修改一下芯片相关头文件的包含同一系类的代码一样,只是芯片相关不一样〕。
先在以twrk40x256为例,具体步骤如下:
选择一个基准BSP进行修改。
可以以同一系列的BSP作为基准的BSP。
其具体步骤是:
①创立一个新的BSP源目录,如:
TestK60N512为我想创立的芯片bsp文件。
②进入基准目录,复制基准目录中的所有内容到新目录,即复制twrk40x256文件下的所有内容到TestK60N512文件下。
③创立与新BSP相关的其他的文件和目录。
新的BSP配置目录,如:
config\bsp\TestK60N512;新的构建输出目录,如lib\TestK60N512,并在lib\TestK60N512下创立子目录mqx。
④复制选择的bsp和psp工程文件,配置文件。
–在
–在
⑤修改
–在bsp_TestK60N512.bat和psp_TestK60N512.bat中把所有的twrk40x256字符串替换为
TestK60N512。
同时,翻开psp_TestK60N512.bat修改“copy/Y..\..\..\mqx\source\psp\cortex\MK40X256VMD100.h.〞为“copy/Y..\..\..\mqx\source\psp\cortex\MK60N512VMD100.h.〞。
–将新创立的
TestK60N512.h,翻开这个文件,将文件里的所有twrk40x256字符串替换为TestK60N512。
–将
definesymbolICFEDIT_region_ROM_enddefinesymbolICFEDIT_region_RAM_startdefinesymbolICFEDIT_region_RAM_end
/*-Sizes-*/
=0x0003FFFF;
=0x1FFF8000;
=0x20007FF0;
definesymbolICFEDIT_size_cstackdefinesymbolICFEDIT_size_heap
=0x400;
=0x200;
defineexportedsymbolINTERNAL_FLASH_SIZE=0x00040000;defineexportedsymbolVECTOR_TABLE_RAM_START=0x1fff8000;
defineblockKERNEL_DATAwithalignment=8,size=ICFEDIT_size_heap
{section.kernel_data};
placeinROM_region{readonly,lastblockFLASHX_POOL};
修改为:
definesymbolICFEDIT_region_ROM_enddefinesymbolICFEDIT_region_RAM_startdefinesymbolICFEDIT_region_RAM_end
/*-Sizes-*/
=0x0007FFFF;
=0x1fff0000;
=0x2000FFF0;
definesymbolICFEDIT_size_cstackdefinesymbolICFEDIT_size_heap
=0;
=0;
defineexportedsymbolINTERNAL_FLASH_SIZE=0x00080000;defineexportedsymbolVECTOR_TABLE_RAM_START=0x1fff0000;
defineblockKERNEL_DATAwithalignment=8,size=ICFEDIT_size_heap
{section.kernel_data};
placeinRAM_region{readwrite,lastblockKERNEL_DATA};
⑥修改
“twrk40x256〞修改为“TestK60N512〞。
⑦修改工程设置
–使用iar翻开工程文件build_libs.eww。
–修改PSP工程
如下列图4-1所示,在[GeneralOptions]中选择[Output]选项,把该选项中的“twrk40x256〞
[Preprocessor]、[BuildActions]的[BuildActionsConfiguration]和[LibraryBuilder]的
[Output]中做同样的修改。
同时代码做如下修改:
图4-1psp工程选项
把psp工程中的组名“twrk40x256UserConfig〞改为“TestK60N512UserConfig〞,删除其下文件,添加
同时修改文件内容:
“#defineMQX_CPUPSP_CPU_MK40X256〞为“#defineMQX_CPU
PSP_CPU_MK60N512〞。
–修改BSP工程
如下列图4-2所示,在[GeneralOptions]中选择[Output]选项,把该选项中的“twrk40x256〞
[Preprocessor]、[BuildActions]的[BuildActionsConfiguration]和[LibraryBuilder]的
[Output]中做同样的修改。
图4-2bsp工程选项
同时代码做如下修改:
修改组名“twrk40x256BSPFiles〞为“TestK60N512BSPFiles〞,删除其子文件,添加
翻开文件“TestK60N512.h〞把其内容中所有的“twrk40x256〞都替换为“TestK60N512〞,同时修改相应的参数。
如:
存放器基地址、RAM大小和基地址、ROM大小和基地址、芯片工作频率、参考时钟频率、各个外围模块的工作频率等参数和与具体板子有关的各种设置。
翻开文件“bsp.h〞修改其内容。
把“#include
#include
#include
在“peripheralIODrivers〞组的各子目录下的“XXX_mk40.*〞替换成相应的
“XXX_mk60.*〞,这两个文件在同一个目录下。
最后,编译bsp和psp。
编译结束得到的包放在“
目录下。
五、MQXIO驱动方法
1.在MQX的BSP工程下添加两个文件“my_io.h〞和“my_io.c〞。
2.添加头文件
1〕在my_io.h文件中包含以下几个头文件。
#include"mqx.h"/*StructuresandconstantsusedbyMQX*/#include"fio.h"/*standardformattedI/Olibrary*/
#include"io.h"/*I/Osubsysteminterface.*/2〕在my_io.c文件中添加以下头文件
#include"my_io.h"/*Thisistheheaderforthisdriver*/
3.在my_io.h中声明以下函数
_mqx_uint_io_my_install(
/*[IN]Astringthatidentifiesthedeviceforfopen*/char_ptridentifier
//添加你定义的参数
);
_mqx_int_io_my_open(FILE_PTR,char_ptr,char_ptr);
_mqx_int_io_my_close(FILE_PTR);
_mqx_int_io_my_read(FILE_PTR,char_ptr,_mqx_int);
_mqx_int_io_my_write(FILE_PTR,char_ptr,_mqx_int);
_mqx_int_io_my_ioctl(FILE_PTR,_mqx_uint,pointer);
4.在my_io.c中实现以上函数
1〕_mqx_uint_io_my_install(char_ptr)
_mqx_uint_io_my_install(
/*[IN]Astringthatidentifiesthedeviceforfopen*/char_ptridentifier
//添加你定义的参数
)
{
_mqx_uintresult;
//添加你的代码
result=_io_dev_install(identifier,
_io_my_open,
_io_my_close,
_io_my_read,
_io_my_write,
_io_my_ioctl,NULL);
returnresult;
}
2〕_io_my_open()
该函数的参数是由操作系统定义的,除了函数名,其他不能修改。
_mqx_int_io_my_open(
/*[IN]thefilehandleforthedevicebeingopened*/FILE_PTRfd_ptr,
/*[IN]theremainingportionofthenameofthedevice*/char_ptropen_name_ptr,
/*[IN]theflagstobeusedduringoperation:
**echo,translation,xon/xoff,encodedintoapointer.
*/
char_ptrflags
)
{
_mqx_uintresult=MQX_OK;
//添加你的代码returnresult;
}
3〕_io_my_close()
该函数的参数是由操作系统定义的,除了函数名,其他不能修改。
_mqx_int_io_my_close(
/*[IN]thefilehandleforthedevicebeingclosed*/FILE_aPTRfd_ptr
)
{
_mqx_uintresult=MQX_OK;
//添加你的代码returnresult;
}
4〕_io_my_read(),_io_my_open()
该函数的参数是由操作系统定义的,除了函数名,其他不能修改。
_mqx_int_io_my_read(
/*[IN]thefilehandleforthedevice*/FILE_PTRfd_ptr,
/*[IN]wherethecharactersaretobestored*/char_ptrdata_ptr,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MQX 使用手册
![提示](https://static.bdocx.com/images/bang_tan.gif)