程玉娟-嵌入式实时操作系统mqx的内核分析及应用研究

79
嵌入式实时操作系统 MQX 的内核分析及应用研究 中文摘要 I 嵌入式实时操作系统 MQX 的内核分析及应用研究 中文摘要 2009 年,飞思卡尔半导体公司在中国市场上推出了应用于工业控制、汽车电子 及消费电子的嵌入式实时操作系统 MQXMQX 最早是 Precise Software Technologies 公司 1989 年开发,2009 年飞思卡尔收购后,开放源代码。MQX 采用微内核结构, 具有标准的 API 接口、模块化架构、TCP/IP 协议栈和 USB 协议栈等,因此无论在实 时性、裁减性还是移植性上都具有卓越的性能。鉴于国内对 MQX 的研究应用尚未开 始,受飞思卡尔半导体公司委托,本课题主要从以下几个方面对 MQX 进行分析研究: 1)研究 MQX 的微内核结构、内核的管理功能,并从 MQX 的启动执行、任 务调度、设备驱动程序等方面,深入剖析 MQX 的运行实现机制。按照底层软件构件 的思想,提出 MQX 工程框架组织结构,并重新编写设备驱动程序。 2)对 MQX FIFO 任务调度策略和 RR 任务调度策略进行分析研究,并把 FIFO 调度策略与 RR 调度策略结合起来,在 MQX 中设计并实现多级反馈队列调度算 法,不仅使高优先级的任务得到响应又能使短任务迅速完成。 3)把 MQX 移植到自动折弯系统的微控制器 MCF52223 上,详细阐述了移植 步骤、移植过程中要修改和配置的文件,设计 LCD 触摸屏界面,完成了 MQX 上的 自动折弯系统的软件平台设计。 采用 MQX 的自动折弯设备运行良好,有效的控制了折弯的角度、精确度等,并 具有较高的实时响应能力。本课题完成了对 MQX 的分析、研究,对其在嵌入式控制 领域的应用具有启发指导作用。 关键词:MQX、内核、任务调度、设备驱动程序、移植 者:程玉娟 指导老师:王宜怀

Upload: huihuigg

Post on 02-Oct-2015

229 views

Category:

Documents


7 download

DESCRIPTION

embedded system operating system MQX core

TRANSCRIPT

  • MQX

    I

    MQX

    2009

    MQXMQX Precise Software Technologies

    1989 2009 MQX

    APITCP/IP USB

    MQX

    MQX

    1 MQX MQX

    MQX

    MQX

    2 MQX FIFO RR

    FIFO RRMQX

    3 MQX MCF52223

    LCD MQX

    MQX

    MQX

    MQX

  • Abstract Kernel Analysis and Application Research of Embedded Real-time Operating System MQX

    II

    Kernel Analysis and Application Research of Embedded Real-time Operating System MQX

    Abstract

    Embedded real-time operating system MQX that applies industrial control, automotive electronics and consumer electronics is launched by Freescale semiconductor in the chinese market in 2009. MQX was first developed by Precise Software Technologies Corporation in 1989. MQX opens source after Freescale's acquisition in 2009. MQX adopts micro-kernel structure, with standard API interface, module architecture, TCP/IP protocol stack, USB protocol stack and so on. So it has excellent performance in terms of real-time, transplant and reduction. In view of the domestic research and application of MQX not yet begin, commissioned by Freescale semiconductor, the paper analyzes and researches MQX mainly from the following aspects:

    (1) Researches MQX micro-kernel structure and kernel management function, and deeply analyzes MQX running implementation mechanism from MQXs startup, task scheduling, device driver and so on. Puts forward MQX engineering framework structure by the idea of underlying software component, and rewrites device driver.

    (2) Analyzes and researches FIFO scheduling policy and RR scheduling policy of MQX, combines FIFO scheduling policy with RR scheduling policy, designs and implements multi-level feedback queue scheduling algorithm in the MQX, which not only responds the task with high priority but also makes the short task done quickly.

    (3) Transplants MQX to the automatic bending system microcontroller MCF52223, elaborates transplant procedure, files to modify and configure in the transplant process, designs LCD touch screen interface and completes the software platform design of automatic bending system on the MQX.

    Automatic bending equipment based on MQX runs well, effectively controls angle and accuracy of bending, and possesses high real-time response capability. The paper completes analysis and research of MQX, which has heuristic instructional function for its study and application in the field of embedded control.

    Key words: MQX, Kernel, Task Scheduling, Device Driver, Transplant Written by ChengYujuan

    Supervised by WangYihuai

  • ......................................................................................................................1

    1.1 .............................................................................................1 1.1.1 RTOS...........................................................................................1 1.1.2 RTOS...................................................................................................2 1.1.3 RTOS...................................................................................2 1.1.4 RTOS..................................................................................4

    1.2 MQX ................................................................................................................5 1.2.1 MQX ...........................................................................................5 1.2.2 MQX ...................................................................................................6

    1.3 .............................................................................................7 1.3.1 ........................................................................................................7 1.3.2 ........................................................................................................7

    1.4 .............................................................................................7 1.4.1 ........................................................................................................8 1.4.2 ........................................................................................................8

    1.5 .........................................................................................................9

    MQX ......................................................................................................10

    2.1 MQX ......................................................................................................10 2.1.1 ..........................................................................................10 2.1.2 MQX .................................................................................................11

    2.2 ...............................................................................................................12 2.2.1 ..............................................................................................13 2.2.2 MQX .........................................................................................13 2.2.3 MQX .............................................................................................14 2.2.4 MQX .....................................................................................15

    2.3 ...............................................................................................................16 2.3.1 MQX .....................................................................................16 2.3.2 MQX .....................................................................................16 2.3.3 MQX .........................................................................................17

    2.4 ...............................................................................................................17 2.4.1 ..........................................................................................17 2.4.2 MQX .........................................................................................18

  • 2.4.3 MQX .............................................................................................18 2.5 ...............................................................................................................19 2.6 ...................................................................................................20

    2.6.1 ..............................................................................................................21 2.6.2 ..........................................................................................................21 2.6.3 ..............................................................................................................22 2.6.4 ..............................................................................................................22

    2.7 ...............................................................................................................23

    MQX ..............................................................................................24

    3.1 MQX ..........................................................................................24 3.1.1 Bootloader.........................................................................................25 3.1.2 Bootloader.....................................................................................25 3.1.3 MQX .............................................................................................26

    3.2 MQX ..................................................................................................27 3.2.1 ..............................................................................................27 3.2.2 ..............................................................................................29

    3.3 ...........................................................................................30 3.3.1 ......................................................................................30 3.3.2 ......................................................................................31 3.3.3 ......................................................................................32 3.3.4 ..................................................................................................34

    3.4 MQX ..................................................................................34 3.4.1 MQX .............................................................................35 3.4.2 MQX ............................................................................36 3.4.3 ......................................................................................37

    3.5 ...............................................................................................................39

    MQX ..................................................................................................40

    4.1 MQX ..................................................................................................40 4.1.1 CodeWarrior..................................................................................40 4.1.2 CW ................................................................................................41

    4.2 MQX ..................................................................................................41 4.3 MQX ..............................................................................................42

    4.3.1 ..........................................................................42 4.3.2 ..........................................................................43

    4.4 MQX .....................................................................................................44 4.4.1 ..............................................................44

  • 4.4.2 CWMQX..............................................................45 4.4.3 ..................................................................46

    4.5 ...............................................................................................................51

    MQX ..........................................................................52

    5.1 ...............................................................52 5.1.1 ......................................................................................................52 5.1.2 ......................................................................................................53

    5.2 MQX ..................................................................................................53 5.3 LCD............................................................................................55

    5.3.1 LCD...........................................................................................55 5.3.2 ..........................................................................................56

    5.4 .......................................................................................58 5.4.1 ......................................................................................................58 5.4.2 ..............................................................................................61

    5.5 ...............................................................................................................62

    ............................................................................................................63

    6.1 .......................................................................................................................63 6.2 .......................................................................................................................64

    ..............................................................................................................................65

    ..................................................................70

    A MQX.....................................................................................................71

    B .............................................................................................72

    ..................................................................................................................................73

  • MQX

    1

    MQX 2009 RTOS

    ROM

    MQX

    RTOS

    RTOSMQX

    1.1

    [1]

    Embedded Real-Time Operating SystemERTOSRTOS

    1.1.1 RTOS

    20 70 40

    40RTOSRTOS

    200RTOS[2]RTOS

    120 70

    RTOS

    RTOSCRTOS

    [2]

    21981Ready System

    VRTX32[3]20 80RTOS

  • MQX

    2

    RTOSVRTXIPIMTOS 80 ISIPSOS

    16 68k8086[4]

    320 90

    RTOS

    [4]

    420 90 RTOS

    RTOS

    APIApplication Programming InterfaceAPI

    POSIXPortable Operating System Interface of UnixPOSIXWin32

    RTOS UNIXWindows

    1.1.2 RTOS

    RTOS

    [5]RTOS

    [6]

    RTOS

    Interrupt Service RoutineISR

    I/ORTOS

    1

    2

    3

    4

    5

    1.1.3 RTOS

    1.

    RTOS

  • MQX

    3

    2.

    3.

    4.

    [9]

    5.

    12

    6.

    CPUCPU

    ISR

    7.

    CPU

    8.

    CPU CPU

    CPU

    9.

  • MQX

    4

    10.

    1.1.4 RTOS

    MP4[7]RTOS

    RTOS

    VxWorksC/OS-IIClinuxmicro-control LinuxQNXeCosEmbedded

    Configurable Operating System[8]-[13]RTOS

    Windows CEAndroidSymbian[14]-[16] 1-1RTOS 1-1 RTOS

    VxWorks

    WindRiver

    400

    C/OS-II

    Jean Labrosse 1992

    64

    RAM ROM

    Clinux

    Linux

    API TCP/IP

    MMU

    QNX

    QNX

    eCos GNU

    WinCE

    OS

    Visual Studio PDA

    Android Google Linux

    Linux

    Symbian

  • MQX

    5

    1.2 MQX

    Message Queue eXecutiveMQXPrecise Software Technologies

    19892000 3MQXARC

    [17]FreescaleColdFireIBM/Freescale

    PowerPCARMARCi.MX[18]2009

    ColdFire MCUMQXRTOS

    MQX

    1.2.1 MQX

    2009MQXRTOS 3.0.1

    3.6.2

    [19]-[21] 1-2 1-2 MQX RTOS

    3.0.1 2009,1

    1CodeWarrior Task-Aware DebuggingTAD2Board Support PackageBSPTrivial File SystemTFSI2CInter Integrated CircuitFlexCANReal-Time ClockRTC I/OGeneral Purpose I/OGPIOPCPC 3 TCP/IPReal-Time TCP/IP Communication SuiteRTCSMQXMQX File SystemMFSUniversal Serial BUSUSB RAM 4RTCS HTTP 5 USB HUBHUB 6 USB USBHost Development KitHDK

    3.1.0 2009,4

    1 2 SNMPv2Simple Network Management ProtocolSNMP ROMManagement Information BaseMIB 3Analog-to-Digital ConverterADCSerial Peripheral InterfaceSPI

    3.2.1 2009,6 1 ColdFire V1 V2 2MQX Flash FlashX Flash

    3.3.0 2009,8

    1 ColdFire V1-V4Fast Ethernet ControllerFECMedium Access ControlMAC 2ShellMFSFile Transfer ProtocolFTP 3USBMASS Storage DeviceMSDCommunication Device ClassCDC

  • MQX

    6

    3.4.0 2009,10

    1 USBEnhanced Host Controller InterfaceEHCI 2Personal Hospital Device ClassPHDCInter-processor communicationIPC 3 SPI SPIQSPI DSPI SPI SD

    3.5.0 2010,2

    1MQX 2SPI EEPROM SPIEEPROMMRAM 3ENET MAC

    3.5.1 2010,4 1 ColdFire V1-V4 2 SDEmbeded Secure Digital High CapacityESDHCDigital-Analog ConverterDACNAND Flash

    3.6.0 2010,6 1 CodeWarrior 10 2 eGUIembedded Graphical user interfaceeGUI 3 UDP IPC

    3.6.2 2010,11

    1Freescale Kinetis ARM Cortex M4 PSP 2 ARM IARMQX Kinetis 3 RTC API I/O MAC-NET Kinetis

    1.2.2 MQX

    MQX

    MQX

    [22]

    1

    MQX Freescale

    MQX

    2[23]

    MQX

    3

    MQX

    4 APIMS-DOSMS-DOS

    File SystemMFS

    5[24]

    RTCSMAC TCP/IPFTPTelnet

    DHCPSNMPDNSHTTP

  • MQX

    7

    6USB[25]

    USB USB USB PHDC

    HIDMSD CDCHUB

    1.3

    1.3.1

    RTOS 40 RTOS

    VxWorksC/OS-IIClinuxWindows CEAndroid 1-1

    1.3.2

    RTOS

    MCU&DSP

    RTOS

    RTOS MQXMQX

    1.4

    MQX

    MQX

  • MQX

    8

    APITCP/IP[22]

    MQX

    1.4.1

    MQX

    1 MQX MQX RTOS

    MQX

    2 MQX MQX

    MQX MQX

    MQX FIFO

    RRMQX

    MQX

    3 MQX

    MQX

    4 MQX

    LCD

    1.4.2

    RTOS

    RTOS

    MQXMQX

    MQX

    MQXMQXMQX

    MQX

    RTOSMQX

  • MQX

    9

    1.5

    RTOS RTOS

    RTOSMQX

    RTOS

    MQXMQX

    MQXMQX

    MQX

    MQX

    MQX

    MQXMQX

    Bootloader

    MQX

    MQXMQX

    MQX

    MQX MQX CodeWarrior

    CW

    MQX

    MQX

    MQX

    MQX

    MQXMCF52223

    LCD

  • MQX MQX

    MQX

    MQX RTOS

    RTOS

    CPU

    MQX

    MQX

    2.1 MQX

    MQX

    2.1.1

    [26]

    [27] 2-1

    2-1

    10

  • MQX MQX

    2.1.2 MQX

    MQX

    MQX

    2-2 MQX[22]

    MQX

    A

    2-2 MQX

    2-2 MQX

    MQX 2-1

    11

  • MQX MQX

    12

    2-1

    RRFIFO

    MQX

    MQXMQX

    Memory Management UnitMMU

    ID

    EDS EDSMQX

    BSP

    BSP I/O

    I/O I/O I/O I/O API

    2.2

    TaskRTOS

    CPU

    ID

    TCB[28]

    RTOSC

    [29]

  • MQX MQX

    13

    2.2.1

    MQXTASK_TEMPLATE_STRUCT

    MQX_AUTO_START_TASK

    MQX

    typedef struct task_template_struct {

    _mqx_uint TASK_TEMPLATE_INDEX; // void (_CODE_PTR_ TASK_ADDRESS)(uint_32); // _mem_size TASK_STACKSIZE; // _mqx_uint TASK_PRIORITY; // char _PTR_ TASK_NAME; // _mqx_uint TASK_ATTRIBUTES; // uint_32 CREATION_PARAMETER; // _mqx_uint DEFAULT_TIME_SLICE; //

    };

    MQX

    32 IDMQX

    MQX 0

    6

    7

    1MQX

    2Digital Signal ProcessingDSPMQX DSP

    3MQX

    4MQX FIFO

    2.2.2 MQX

    OS[30]MQX

  • MQX MQX

    2-3[31]

    2-3

    MQX

    1Terminated CPU

    2Blocked

    [30]

    3Ready

    4Active CPU

    2.2.3 MQX

    OSCPU

    CPUMQX

    MQX

    1

    2

    3

    4

    14

  • MQX MQX

    15

    2.2.4 MQX

    RTOSMQX

    [22][32]

    1

    [33]

    MQX_task_create()_task_create_blocked()

    _task_create()

    _task_create_blocked()

    _task_ready()

    2 IDs

    _task_get_id() ID

    _task_get_creator() ID

    ID

    _task_get_id_from_name()

    ID

    3

    _task_get_priority()_task_set_priority()

    4

    _sched_get_policy()_sched_set_policy()

    5

    _task_stop_preemption()

  • MQX MQX

    16

    _task_start_preemption()

    6

    MQX

    _task_get_error()

    _task_set_error()

    MQX_OKMQX_OKMQX

    7

    _task_restart()

    ID

    8

    ID

    MQX MQX

    _task_destroy()_task_abort()

    2.3

    2.3.1 MQX

    MQXtick

    MQX

    200 5MQX ISR

    MQX MQX

    2.3.2 MQX

    _time_get_resolution()

  • MQX MQX

    17

    _time_set()

    _time_get()

    _time_delay()

    2.3.3 MQX

    MQX

    1 MQX

    2

    MQX

    MQX

    2.4

    [34]

    ISRRTOS

    CPU

    RTOS[35]

    RTOSCPU

    ISRISR

    [36]

    2.4.1

    ISR

  • MQX MQX

    18

    1

    ISRISR

    ISR

    2

    3

    4 ISR API ISR

    API ISR

    5

    2.4.2 MQX

    MQXISRMQXISR[37]

    1

    2

    3

    4

    2.4.3 MQX

    MQX ISR ISR

    ISR MQX

    ISR ISR

    MQX ISR

    ISR

    1

    2

    3 ISR

    4 ISR

    MQX ISR ISR

  • MQX MQX

    ISR ISR ISR

    2-4MQX

    2-4 MQX

    MQX

    1MQX ISR

    ISR ISR_int_default_isr() ISR

    2 ISRMQX_int_install_isr()

    ISR ISR_int_install_isr()

    123

    ISR

    3 ISR_int_install_kernel_isr() ISR ISR

    ISR1

    2MQX3

    2.5

    RTOS malloc() free()

    RTOS

    MQX

    MQX MQX

    19

  • MQX MQX

    MQX

    MQX MMU

    MMUMMUMMU

    2-5MMU

    2-5 MQX

    2.6

    [30]

    RTOS

    MQX

    MQX MQX

    20

  • MQX MQX

    21

    2.6.1

    ISR

    ISR

    1

    234

    5

    MQX

    ISRMQX

    MQX

    MQX

    2.6.2

    ISR

    12

    3[38]

    [39]

    3

    [9]

    MQX MQX

    MQX 0 MQX

    MQX

  • MQX MQX

    22

    MQX

    MQX

    [40]

    [41]

    MQX

    2.6.3

    MQX

    2.6.4

    ISR

    12

    [42]

    MQX

    MQX MQX

    ID

    MQX

    MQX ID

  • MQX MQX

    23

    ISR

    MQX

    2.7

    MQXMQX

    1

    MQX

    2 MQX

    MQX

    3MQX

    4 MQX

    MQX

    MQXMQX

    MQX

  • MQX MQX

    MQX

    RTOS

    RTOSMQX

    BootloaderMQX

    MQX

    MQXMQX

    3.1 MQX

    MQX Bootloader

    main()_mqx()

    MQX 3-1 MQX

    CodeWarrior BSPMQX

    3-1 MQX

    1ColdWarrior

    CF_startup.cColdWarrior _start()

    _SP_INIT.bss/.sbss C

    24

  • MQX MQX

    25

    initialize_hardware() initialize_OS() main()

    2BSP[37]

    vectors.c_boot()

    init_hw.c/bsp_init.c Flash

    SDRAM PLLFlex

    cw.cMetrowerksCodeWarrior

    CW

    cw2.cMQX Cmain()

    init_bsp.cBSP I/O

    3MQX

    mqx.cMQX_mqx()

    dispatch.cw

    3.1.1 Bootloader

    Bootloader

    BootloaderMQX

    Bootloader

    CPU

    Bootloader[43]

    3.1.2 Bootloader

    vectors.c

    (vector_entry)__BOOT_STACK_ADDRESS, // __boot, //(0x004) PC

    __BOOT_STACK_ADDRESS intflash.lcf

  • MQX MQX

    26

    __boot__boot

    Program CounterPC__boot

    _boot() start()_boot()

    SRAMFlash IPSBAR 4G

    IPSBAR

    FLASHBAR Flash RAMBAR1 SRAM

    start()

    jsr mcf5222_init // jmp _start //

    jsr mcf5222_init

    PC jmp _start

    CF_startup.c start()

    CPU ColdFire

    initialize_hardware() initialize_OS() main()

    3.1.3 MQX

    Bootloader main()_mqx()

    MQXMQX

    main() cw2.cMQXMQX

    TASK_TEMPLATE_STRUCT

    MQX_AUTO_START_TASK

    MQX

    main()

    int main(void) {

    extern MQX_INITIALIZATION_STRUCT MQX_init_struct; _mqx(&MQX_init_struct ); //MQX return 0;

    }

    mqx()

    TD

  • MQX MQX

    27

    BSP

    mqx()

    _mqx()MQX[22]

    typedef struct mqx_initialization_struct {

    _mqx_uint PROCESSOR_NUMBER; // pointer START_OF_KERNEL_MEMORY; // RAM pointer END_OF_KERNEL_MEMORY; // RAM _mqx_uint INTERRUPT_STACK_SIZE; // TASK_TEMPLATE_STRUCT_PTR TASK_TEMPLATE_LIST; // _mqx_uint MQX_HARDWARE_INTERRUPT_LEVEL_MAX; // _mqx_uint MAX_MSGPOOLS; // _mqx_uint MAX_MSGQS; // char _PTR_ IO_CHANNEL; // I/O char _PTR_ IO_OPEN_MODE; // I/O _mqx_uint RESERVED[2]; //

    }MQX_INITIALIZATION_STRUCT, _PTR_ MQX_INITIALIZATION_STRUCT_PTR;

    3.2 MQX

    MQX

    First In First Out

    FIFORound RobinRR

    FIFO RR

    MQX

    3.2.1

    MQX POSIX.4

    1. FIFO

    MQX FIFOFIFO

    \mqx\source\kernel\mqxiinit.h

    #if MQX_HAS_TIME_SLICE kernel_data->SCHED_POLICY = MQX_SCHED_FIFO;// #endif

  • MQX MQX

    FIFO

    3-2

    1MQX

    2

    3

    3-2 FIFO

    2. RR

    RR

    RR

    MQX_TIME_SLICE_TASK RR

    \lib\.cw\mqx\mqx_cnfg.h

    #define MQX_HAS_TIME_SLICE 1

    MQX_TIME_SLICE_TASK

    DEFAULT_TIME_SLICE

    0

    BSP 5ms

    50ms _sched_get_rr_interval()

    _sched_get_rr_interval_ticks()_sched_set_rr_interval()

    _sched_set_rr_interval_ticks()

    MQX

    MQX

    28

  • MQX MQX

    RR

    FIFO 3-3

    3-3

    3.

    #define MQX_TASK_QUEUE_FIFO (0x00) #define MQX_TASK_QUEUE_BY_PRIORITY (0x08)

    1_taskq_create()

    2_taskq_suspend()

    3_taskq_resume()

    3.2.2

    MQX

    \lib\.cw\mqx\mqx.h

    1 MQX_AUTO_START_TASK

    #define MQX_AUTO_START_TASK (0x01)

    2 MQX_FLOATING_POINT_TASK 29

  • MQX MQX

    30

    #define MQX_FLOATING_POINT_TASK (0x02)

    3MQX_TIME_SLICE_TASK

    RR

    #define MQX_TIME_SLICE_TASK (0x04)

    4MQX_DSP_TASK DSP

    DSP DSP

    DSP

    #define MQX_DSP_TASK (0x08)

    3.3

    [44]

    [45]

    3.3.1

    MQXFIFORR

    MQX FIFO

    1

    21

    2 CPU I/O

  • MQX MQX

    31

    MQX RR

    CPU

    CPU

    FIFO

    CPU

    RR

    1T=N*q

    2

    3

    MQX FIFO RR

    FIFO RR

    3.3.2

    MQX[30][46]

    1NQ1,Q2....QN

    Priority(Q1)>Priority(Q2)>...>Priority(QN)

    2

    Q1FIFO

    Q2FIFO

    Q2Q3

  • MQX MQX

    Q1QnQn

    3Q1Q2Q1~Qi-1

    QiQi

    Q1~Qi-1

    Qi

    3-4

    3-4

    3Q1Q2Q3 248Priority(Q1)>

    Priority(Q2) > Priority(Q3) 3J1J2J3 013

    CPU 321

    3-5

    3-5

    3.3.3

    MQXTask DescriptorTD

    _task_set_priority()_sched_internal()

    _sched_setscheduler()_sched_set_policy()MQX

    kernel _sched_internal()

    32

  • MQX MQX

    33

    _sched_setscheduler()_task_set_priority()

    \mqx\source\psp\coldfire\

    dispatch.cw

    sc_irdyq.c

    \mqx\source\kernel

    sc_ipq.c

    sc_obsel.csc_spol.c

    sc_srr.c

    MQX

    1 kernel

    60~5 5 FIFO

    MQX 5ms

    5ms 5*2nn0n5

    2 TD_STRUCT

    QnumberWaitTime

    3_sched_internal()

    1 6 WaitTime

    maxWaitTime 1

    2 1 FIFO

    _task_set_priority()

    2 5

    6 6

    1

    3 I/O

    4

  • MQX MQX

    3.3.4

    ColdWarrior 7.2

    3.6.2 MQX MCF52223

    80 RR

    3-6 3-7

    3-6

    3-7

    MQX

    MQX

    3.4 MQX

    1

    2

    3

    4

    34

  • MQX MQX

    3.4.1 MQX

    MQX

    1 I/O

    2 buffercache

    3

    MQX

    [47]

    MQX

    MQX

    3-8 I/O I/O

    3-8 MQX

    MQX

    FILE_STRUCTFILE_STRUCTMQX

    API

    FILE_STRUCT

    [48] 3-9

    3-9 I/O

    MQX

    (open)(close)(read)(write)

    I/O(ioctl)MQX

    I/OAPI35

  • MQX MQX

    POSIXI/O[37][49]MQXAPI 3-10

    3-10 MQXAPI

    MQX

    1

    2

    3.4.2 MQX

    MQX BSP

    RAM\config\\user_config.h

    #define BSPCFG_ENABLE_TTYB 0

    1 BSP

    fopen

    MQX 3-1

    3-1 MQX

    I/O (user_config.h) ttya: UART0 BSPCFG_ENABLE_TTYA ttyb: UART1 BSPCFG_ENABLE_TTYB ttyc: UART2 BSPCFG_ENABLE_TTYC ittya: UART0 BSPCFG_ENABLE_ITTYA ittyb: UART1 BSPCFG_ENABLE_ITTYB ittyc: UART2 BSPCFG_ENABLE_ITTYC i2c0: I2C0 BSPCFG_ENABLE_I2C0 i2c1: I2C1 BSPCFG_ENABLE_I2C1 spi0: SPI0 BSPCFG_ENABLE_SPI0 spi1: SPI1 BSPCFG_ENABLE_SPI1 gpio: GPIO BSPCFG_ENABLE_GPIODEV adc: ADC BSPCFG_ENABLE_ADC

    adcn: ADC BSPCFG_ENABLE_ADCn flashx: CFM BSPCFG_ENABLE_FLASHX

    36

  • MQX MQX

    37

    3.4.3

    I/OMQX

    1

    2BSPBSP[50]

    1.

    MQX device.h device.c

    1

    device.h extern "C" {

    extern _mqx_uint _io_device_install(char_ptr); }

    2

    device.c MQX

    1_io_device_install(char_ptr)_io_dev_install()

    MQX

    fopen

    _mqx_uint _io_device_install(char_ptr identifier) {

    _mqx_uint result; result = _int_io_dev_install (

    identifier, _io_device_open, _io_device_close, _io_device_read, _io_device_write, _io_device_ioctl, NULL

    ); return result;

    }

    2_io_device_open(FILE_PTR, char_ptr, char_ptr)

  • MQX MQX

    38

    fopen I/O

    _io_device_open 3-10

    _io_device_open

    3_io_device_close(FILE_PTR)

    fclose I/O_io_device_close 3-10

    _io_device_close xxx_open

    4_io_device_read(FILE_PTR, char_ptr, _mqx_int)

    read I/O_io_device_read 3-10

    _io_device_read

    5_io_device_write(FILE_PTR, char_ptr, _mqx_int)

    write I/O_io_device_write 3-10

    _io_device_write

    6_io_device_ioctl(FILE_PTR, _mqx_uint, pointer)I/O

    _io_device_ioctl

    ioctl

    I/O_io_device_ioctl 3-10

    3

    device.h device.c\mqx\source\io\

    device device.h device.c

    2. BSP

    MQXPlatform Support PackagePSP

    Board Support PackageBSPPSP

    BSP

    MQX BSP

    Codewarrior BSP \mqx\build\codewarrior\

    bsp_.mcp

    1 device Codewarrior IO Drivers

  • MQX MQX

    39

    2OK

    3 device.h \lib\

    .cw\mqx

    4

    #include_io_device_install fopenfclosewriteread

    ioctl

    3.5

    MQX

    1MQXMQX

    BootloaderBootloaderMQX

    main() main() mqx()

    2MQXMQX

    MQX FIFO

    RRMQX

    MQX

    MQX

    3MQXMQX

    MQX

    RTOSMQX

  • MQX MQX

    40

    MQX

    MQXMQX

    1MQX

    2 MQX 3 MQX

    MQX4

    MQX

    4.1 MQX

    PC

    MQX CodeWarrior

    4.1.1 CodeWarrior

    CodeWarriorCWFreescale MCU

    DSP

    [51]CodeWarriorGUIIntegrated

    Development EnvironmentIDEMCUC

    C++

    CodeWarrior 3Special Edition

    C

    12KB 30

    3 license

    CodeWarrior

    CodeWarrior for S08 V6.2CodeWarrior for HC12 V4.6CodeWarrior for

    ColdFire V6.3CodeWarrior for ColdFire 7.1CodeWarrior for Microprocessor 9.2

    CodeWarrior for MCU V10

    CW

  • MQX MQX

    [7]CW

    MQX IARCodeWarrior for ColdFire V6.3

    4.1.2 CW

    CW Windows

    license key

    E-MAIL License.dat

    License.dat License.dat

    MQX

    MQX

    4.2 MQX

    MQX

    4-1

    1config

    Common BSP

    BSP

    2demo demo

    3docMQXMQX

    MFSRTCSUSB 4-1 MQX

    4lib BSP

    5mfsMFSBuildExamples

    Source

    6mqx MQX BSP 41

  • MQX MQX

    42

    BuildExamples Source

    Build CodeWarriorIAR

    BSP PSP bat

    BSPPSP

    ExamplesMQX

    MQX BSP

    Source MQX BSP PSP

    7rtcsTCP/IP

    8shellshell

    9tools

    10usbUSB

    4.3 MQX

    MQX

    MQX

    4.3.1

    Embedded Software ComponentESC

    [52]MCF52223

    CW 7.2MQX 4-2

  • MQX MQX

    4-2 MQX

    4-2:

    1 inflash.lcf

    MQX

    2BSPMQX

    MQXApplication Binary InterfaceABI

    MQXBSPABIBSP

    [21]

    3main

    ID

    4.3.2

    MQX

    43

  • MQX MQX

    4-3 MQX

    4-3MQX

    mcp

    .S19MCU

    MQX

    .S19

    bin map

    MCU map

    MCU

    .c

    .o

    .S19

    CodeWarrior

    4.4 MQX

    4.4.1

    #include

    44

  • MQX MQX

    45

    [53]

    1

    2

    3 MCU

    MCU

    4

    5

    4.4.2 CWMQX

    File->New ProjectMCU

    CRelocatable assembly

    Project name Location

    Light LCD

    1 LCD

    2 Light.mcp LCD.mcp

    3 Light_Data

  • MQX MQX

    46

    4 bin

    4.4.3

    MCF52223

    MQX

    MCF52223 I/O I/O

    MCF52223 0 MCF52223

    PC

    main_taskled_taskuart0_task

    1. GPIO

    GPIO

    1 0 1 0MCU GPIO

    Port GPIO

    GPIO IO_Driver.hIO_Driver.c GPIO

    GPIO

    Light_Run0 MCU GPIO_PORT_TC 0

    MCU IO_Driver.h

    1GPIOIO_Driver.h

    //-------------------------------------------------------------------------------------------* //:IO_Driver.h(GPIO) * //-------------------------------------------------------------------------------------------* #include // #include // static FILE_PTR output_port=NULL; // #define Light_PORT GPIO_PORT_TC // GPIO TC #define Light_Run0 0 //Run0 0// boolean IO_Init(uint_32 port,uint_32 name,uint_32 state); //IO_Init() void IO_Control(uint_32 port,uint_32 name,uint_32 state); //IO_Control()

    2GPIOIO_Driver.c

    IO_Driver.c

  • MQX MQX

    47

    //----------------------------------------------------------------------------------------------* //:IO_Driver.c(GPIO) * //----------------------------------------------------------------------------------------------* #include //----------------------------------------------------------------------------------------------* //:IO_Init * // : * // :port: * // name: * // state:,1=(),0=() * // : IO * //----------------------------------------------------------------------------------------------* boolean IO_Init(uint_32 port,uint_32 name,uint_32 state) { uint_32 output_set[] = // { GPIO_PIN_STATUS_0, GPIO_LIST_END }; output_set[0]=port|name|output_set[0]; output_port=fopen("gpio:write",(char_ptr)&output_set); // GPIO if(output_port) // GPIO { ioctl(output_port,(state)? GPIO_IOCTL_WRITE_LOG1:GPIO_IOCTL_WRITE_LOG0,(pointer)&output_set); } return(output_port!=NULL); } //-----------------------------------------------------------------------------------------------* //:IO_Control * // : * // :port: * // name: * // state:,1=(),0=() * // : * //------------------------------------------------------------------------------------------------* void IO_Control(uint_32 port,uint_32 name,uint_32 state) { uint_32 light[]= { GPIO_PIN_STATUS_0, GPIO_LIST_END }; light[0]=port|name|light[0]; if(output_port) // GPIO { ioctl(output_port,(state)?GPIO_IOCTL_WRITE_LOG1:GPIO_IOCTL_WRITE_LOG0,(pointer)&light); } }

    2. Light

    Light_task.hLight_task.cLight_task.h

  • MQX MQX

    48

    UART_SEMLIGHT_SEM

    Light_task.c

    1LightLight_task.h

    //------------------------------------------------------------------------------------------------* //:Light_task.h () * //------------------------------------------------------------------------------------------------* #include #include #include #include extern uint_8 times; // extern LWSEM_STRUCT UART_SEM; extern LWSEM_STRUCT LIGHT_SEM; extern boolean IO_Init(uint_32 port,uint_32 name,uint_32 state); // extern void IO_Control(uint_32 port,uint_32 name,uint_32 state); void led_task(uint_32); //

    2LightLight_task.c

    //---------------------------------------------------------------------------------------------------* //:Light_task.c() * //---------------------------------------------------------------------------------------------------* #include //---------------------------------------------------------------------------------------------------* //:led_task * // : * // :initial_data * // : * //----------------------------------------------------------------------------------------------------* void led_task(uint_32 initial_data) { uint_8 i; _lwsem_wait(&LIGHT_SEM); // for(i=0;i

  • MQX MQX

    49

    1UARTUart_task.h

    #include #include #include // #define LED_TASK 6 // extern uint_8 times; // extern LWSEM_STRUCT UART_SEM; extern LWSEM_STRUCT LIGHT_SEM; void uart0_task(uint_32 initial_data); //

    2UARTUart_task.c

    #include //-------------------------------------------------------------------------------------------------------------* //:uart0_task * // :,,, * // :initial_data * // : * //--------------------------------------------------------------------------------------------------------------* void uart0_task(uint_32 initial_data) { uint_32 c; uint_32 flags=0; _task_id task_id; uint_32 result; FILE_PTR serial_fd = fopen("ttya:",0); // 0 IO_Init (GPIO_PORT_TC,Light_Run0,0); // ioctl(serial_fd, IO_IOCTL_SERIAL_SET_FLAGS, &flags); // result = _lwsem_create(&UART_SEM, 1); // result = _lwsem_create(&LIGHT_SEM, 1); if (result!=MQX_OK) { printf("\nCreating sem failed: 0x%X",result); _mqx_exit(0); } while(TRUE) { if(fstatus(serial_fd)) // { _lwsem_wait(&UART_SEM); // c=fgetc(serial_fd); // times=c; if(c==IO_ERROR)break; putchar((char)c); // _lwsem_post(&LIGHT_SEM); // task_id=_task_create(0,LED1_TASK,0); // if(task_id==MQX_NULL_TASK_ID) { printf("\nCould not create LED_TASK\n"); } else

  • MQX MQX

    50

    { printf("\nLED_TASK created\n"); } } } fclose(serial_fd); }

    4.

    main_taskled_task

    uart0_taskmain_task uart0_task

    uart0_task PCled_task

    //-----------------------------------------------------------------------------------------------------------* // :Light * //:MCU 0 PC * //: I/O, * // :MQX * // : Freescale MCU * //--------------- 2011-----------------------------------* #include // #define MAIN_TASK 5 // ID, #define LED_TASK 6 #define UART_TASK 7 uint_8 times; // LWSEM_STRUCT UART_SEM; // LWSEM_STRUCT LIGHT_SEM; // extern void main_task(uint_32); extern void led_task(uint_32); extern void uart0_task(uint_32); // TASK_TEMPLATE_STRUCT MQX_template_list[] = { //, ,,,, , , {MAIN_TASK,main_task,1500, 9, "main",MQX_AUTO_START_TASK,0, 0},// {LED_TASK,led_task, 1500, 10, "led1", 0, 0, 0},// {UART_TASK,uart0_task,1500, 11, "uart", 0, 0, 0},// {0, 0, 0, 0, 0, 0, 0, 0} // }; //------------------------------------------------------------------------------------------------------------* //:main_task * // : * // : initial_data * // : * //-------------------------------------------------------------------------------------------------------------* void main_task(uint_32 initial_data) { int i=0; _task_id task_id; task_id=_task_create(0,UART_TASK,0); //

  • MQX MQX

    51

    if(task_id==MQX_NULL_TASK_ID) { printf("\n Could not create UART_TASK\n"); } else { printf("\n UART_TASK created \n"); } }

    MCF52223MQX

    UART SPI IIC AD

    Flash

    4.5

    MQXMQX

    1 MQX CodeWarrior CW

    MQX CW

    2 MQX

    MQX

    3 MQX MQX

    4 MQX

  • MQX MQX

    52

    MQX

    MQX

    RTOS MQX MQX

    MQX

    LCD

    5.1

    ColdFire V2MCF52223[54]-[56]

    RTOS MQX

    5.1.1

    MCU LCD

    MCU LCD

    /

    1 1 4 6 /

    1141

    14141 USB

    2LCD USB

    3

  • MQX MQX

    5.1.2

    MCF52223 /

    LCD USB 5-1

    B

    5-1

    MCF52223

    USB

    RS232

    /

    LCD

    ZigBee

    5.2 MQX

    MQXColdFire V2 MCF52223

    MQX 4-1 MQX

    mqxbuildBSPPSP

    [57]

    1. BSP

    MCF52223MCF52235 ColdFire V2MQX

    MCF52235MCF52235 BSP

    2. BSPPSP

    \mqx\build\cwcf72 bsp_m52235evb.mcp

    psp_m52235evb.mcp bsp_MCF52223.mcp psp_MCF52223.mcp

    \mqx\build\bat bsp_m52235evb.bat

    psp_m52235evb.bat bsp_MCF52223.bat psp_MCF52223.bat

    \mqx\source\bspMCF52223

    53

  • MQX MQX

    54

    \mqx\source\bsp\m52235evbMCF52223

    \libMCF52223.cw\lib\MCF52223.cw mqx

    3.

    bsp_ MCF52223.bat psp_ MCF52223.bat m52235evb

    MCF52223

    \mqx\source\bsp\MCF52223\ m52235evb.h

    MCF52223.h m52235evb

    MCF52223

    \mqx\source\bsp\MCF52223\cw\dbg

    m52235evb.cfg m52235evb.memMCF52223.cfgMCF52223.mem

    MCF52223.mem FlashMCF52223 Flash

    \mqx\source\bsp\MCF52223\cw\intflash.lcf

    MCF52223 ROM Flash

    \mqx\source\bsp\MCF52223\.c.h

    m52235evbMCF52223

    4. PSP

    codewarrior for Microcontroller V7.2 \mqx\build\cwcf72\

    psp_MCF52223.mcp

    m52235evb user configMCF52223 user config user_config.h

    \config\MCF52223\user_config.h

    Debug RegABI setting

    1 Target Setting choose output Directory

    \lib\MCF52223.cw\mqx

    2 Access Paths{Project}...\...\config\m52235evb add

    \config\MCF52223

    3 BatchRunner P choose\mqx\build\bat\

    psp_MCF52223.bat

    5. BSP

    Codewarrior for Microcontroller V7.2 \mqx\build\cwcf72\

  • MQX MQX

    55

    bsp_MCF52223.mcp

    m52235evb user configMCF52223 user config user_config.h

    \config\MCF52223\user_config.h

    m52235evb BSP FilesMCF52223 BSP Files

    add files\mqx\source\bsp\

    .h.c

    Debug RegABI setting

    1 Target SettingAccess Paths BatchRunner P

    MCF52223 PSP

    2 Coldfire Target File Name m52235evb_regabi_d.a

    MCF52223_regabi_d.a

    6.

    \mqx\source\bsp\MCF52223\bsp_init.c MQX

    5.3 LCD

    MCU LCD

    5.3.1 LCD

    LCDDMT80600T080TFT

    MAX232MCU[58]

    LCDMCU

    0xAA 0xCC0x330xC30x3C

    [59] 5-1 5-1

    0xAA (1) 0xCC 0x33 0xC3 0x3C

    LCD1 18

    LCD MCU 2 8

  • MQX MQX

    3 9 LCD

    LCD

    5.3.2

    4

    PC

    LCD

    LCD

    1.

    5-2

    MCU Flash

    5-2

    56

  • MQX MQX

    2.

    5-3

    5-3

    3.

    5-4

    5-4

    57

  • MQX MQX

    4.

    5-5

    LCDLCD

    5-5

    5.4

    5.4.1

    RTOS

    [28]

    I/O

    [60]

    LCD

    LCD LCD

    58

  • MQX MQX

    USB Flash

    5-6

    5-6

    PWM

    I/O I/O PIT

    I/O

    UART LCDUART

    LCD LCD

    PC

    LCD

    LCD

    MCU

    5-7

    LCD

    59

  • MQX MQX

    5-7 LCD

    MCU LCD

    5-8

    5-8 LCD

    USB MCU Flash

    FlashMCU Flash

    MCUMCU

    60

  • MQX MQX

    61

    5.4.2

    I/O

    I/O

    1

    2

    3

    MQX

    LCD

    LCD LCD

    io_LCD_int_install()io_LCD_int_open()io_LCD_int_close()

    io_LCD_int_read()io_LCD_int_write()io_LCD_int_ioctl()io_LCD_int_isr()LCD ISR

    LCD

    ISR

    typedef struct io_ lcd _init_struct // LCD {

    _mqx_uint QUEUE_SIZE; /// uint_32 DEVICE; // uint_32 VECTOR; // _int_level LEVEL; //

    }LCD_INT_STRUCT; typedef struct io_ lcd _ info_struct // {

    LCD_INT_STRUCT INIT; // pointer OLD_ISR_DATA; // void (_CODE_PTR_ OLD_ISR)(pointer);

    } LCD_INFO_STRUCT;

  • MQX MQX

    62

    5.5

    MQX

    1

    MQX

    2 MQX MCF52223

    3 LCD

    4 RTOS

    MQX

  • MQX

    63

    6.1

    RTOS

    RTOS

    RTOS RTOSMQX

    ROM API

    RTOS

    RTOS MQX

    1 RTOS RTOS

    MQX

    2MQXMQX

    MQX

    3MQXBootloader

    MQXMQX

    MQXMQX

    4MQX CodeWarrior CW

    MQX

    MQX

    MQX

    5 MQX MCF52223

    LCD RTOS

  • MQX

    64

    6.2

    RTOS MQXMQX

    MQX

    1MQX TCP/IP

    MQXMQX

    2 MQX MQX

    3MQX

    ZigbeeMQX

  • MQX

    65

    [1] Wolf WMadsen JEmbedded systems education for the future[J]Proceedings of

    the IEEE2000,88(1):23-30.

    [2] [J]

    2002,(6):6-9.

    [3] VRTX32[J]

    1992,5(4):7-14.

    [4] [J]

    2001,(3):12-17.

    [5] [J]

    2000,24(5):105-108.

    [6] Mohamed Tag ElsirPatrick SebastianYap Vooi VoonA RTOS for Educational

    Purposes[CA]International Conference on Intelligent and Advanced Systems

    (ICIAS)2010:1-4.

    [7] 2[M]:

    2011.

    [8] Paul ParkinsonFranco GasperoniHigh-Integrity Systems Development for

    Integrated Modular Avionics Using VxWorks and GNAT[C]Blieberger and

    Strohmeier2002:163-178.

    [9] Jean J.Labrosse C/OS-II( 2)[M]

    2003:88-91.

    [10] Rick Lehrbaum Using Linux in Embeded and Real time

    Systems[J/OL]http://www.linuxdevices.com.

    [11] P MantegazzaBianchi EDozio LPapacharalambous SRTAIReal-Time

    Application Interface[J]Linux Journal Magazine2000,4:105-108.

    [12] Cheng FeiMiao Ke-jianWang Rui-minAnalysis and real-time performance

    tests of QNX and VxWorks[J] Computer Engineering and Design

    2008,29(18):4734-4739.

  • MQX

    66

    [13] Anthony J Massa eCos[M]

    2006.

    [14] Dong YibingWang LangDesign of Embedded Cropland Data Acquisition and

    Processing System Based On Xscale and WinCE[J]International Forum on

    Information Technology and Applications2009,31(13):22-119.

    [15] Sarah AllenVidal GrauperaLee LundriganPro Smartphone Cross-Platform

    Development iPhoneBlackBerryWindows Mobileand Android Development

    and Distribution[M]Paul Manning2010:35-50.

    [16] Thomas BaduraMichael BecherTesting the Symbian OS Platform Security

    Architecture[CA] Advanced Information Networking and Applications

    2009:838-844.

    [17] Anon ARC international precise/MQX[J] Penton Publishing Co

    2002,50(12):90-94.

    [18] MQX RTOS[DB/OL]http://en.wikipedia.org/wiki/MQX.

    [19] Freescale MQX RTOS 3.0.1 Release Notes[DB/OL]http://www.freescale.com.

    [20] Freescale MQX RTOS 3.4.0 Release Notes[DB/OL]http://www.freescale.com.

    [21] Freescale MQX RTOS 3.6.2 Release Notes[DB/OL]http://www.freescale.com.

    [22] Freescale MQXTM Real-Time Operating System Users Guide

    [DB/OL]http://www.freescale.com.

    [23] AnonPrecise/MQX RTOS Gets User-configurable[J]Cahner Publishing Co

    2001,46(12):20-25.

    [24] Freescale MQX RTCS Users Guide[DB/OL]http://www.freescale.com.

    [25] PHDC USB[DB/OL]http://www.freescale.com.

    [26] Gien M Micro-kernel Architecture Key to Modern Operating System

    Design[EB/OL]http://www.chorus.com/documentation/ref.html.

    [27] [J]

    2001,21(1):113-115.

    [28] RTOS[D]

    2008.

    [29] [J]

  • MQX

    67

    2000,19(8):13-15.

    [30] [M]

    2006:37-38.

    [31] MQX RTOS Hands-On[DB/OL]http://www.freescale.com.

    [32] Freescale MQX RTOS Reference Manual[DB/OL]http://www.freescale.com.

    [33] Ren PengXiang ZhengA Multitask Scheduling Algorithm For Vxworks: Design

    and Task Simulation[CA]International Conference on Artificial Intelligence and

    Computational Intelligence2009,3:353-357.

    [34] Linux 2.6[D]

    2008.

    [35] RAM C/OS-II[D]2005.

    [36] [J]

    2002,24(4):38-40.

    [37] Hands-On Workshop: Freescale MQX Drivers and BSPs[DB/OL].

    http://www.freescale.com2010.

    [38] Yan LiPing-Ping GuXian-Shan WangThe Implementation of Semaphore

    Management In Hardware Real-time Operating System[J] Information

    Technology Journal2011,10(1):63-158.

    [39] RTOS[D]

    2007.

    [40] Tao WangDaxin LiuAvoiding Unbounded Priority Inversion by Integrating Task

    Inheritance and Classification into Preemption Threshold

    Scheduling[CA]ISSCAA2006: 593-596.

    [41] Jaehong ShimKyunghee ChoiGihyun JungSeungkyu ParkHyeonSik Shin

    Dongyoon KimPriority inversion handling in microkernel-based Real-Time

    Mike[CA]Real-Time Computing Systems and Applications1996:238-245.

    [42] Shu Hong-xiaWang Ji-hongDesign and Implementation of Message Passing for

    Distributed Real-time Operating System[J]Computer Engineering and Design

    2008,29(9):2239-2245.

    [43] Xiaofeng WanHailin HuXiaojun ZhouAnalysis and Design of Bootloader on

  • MQX

    68

    Embedded Electric Power Steering System[CA]ISECS International Colloquium

    on Computing, Communication, Control, and Management(CCCM)

    2008,2:276-280.

    [44] [D]

    2009.

    [45] Hessel FMarcon CSantos THigh Level RTOS Scheduler Modeling for A Fast

    Design Validation[CA]IEEE Computer Society Annual Symposium on VLSI

    2007:6-10.

    [46] Linux[J]2004

    30(20):81-83.

    [47] Alessandro Rubini Linux Device Drivers[M] Sebastopol CA

    OReilly&AssociatesInc1998.

    [48] Freescale MQXTM I/O Drivers Users Guide[DB/OL]http://www.freescale.com.

    [49] Ji Chan MaengJong-Hyuk KimMinsoo RyuAn RTOS API Translator for

    Model-driven Embedded Software Development[CA]12th IEEE International

    Conference on Embedded and Real-Time Computing Systems and Applications

    2006:363-367.

    [50] How to Develop I/O Drivers for MQX[DB/OL]http://www.freescale.com.

    [51] CodeWarrior Development Studio for ColdFire Architectures

    V7.2[DB/OL]http://www.freescale.com.

    [52] 32 ColdFire[M]

    2009.

    [53] [D]

    2007.

    [54] ColdFire [M]

    2006.

    [55] MCF52223 Data Sheet Rev 2[DB/OL]http://www.freescale.com.

    [56] MCF52223 ColdFire Integrated Microcontroller Reference Manual

    Rev3[DB/OL]http://www.freescale.com.

    [57] MQX BSP [DB/OL]http://www.freescaleic.org.

  • MQX

    69

    [58] DMT80600T080[DB/OL]http://www.dwin.com.cn.

    [59] DMT80600T080[DB/OL]http://www.dwin.com.cn.

    [60] [J]

    2000,26(7):190-192.

  • MQX

    70

    [1] RFID

    2011,28(3):44-46

    [2]

    [3]

    2011 2

    [4]

    0171463

    [5] 2

    2011

    [6] 2009

  • MQX

    A MQX

    71

  • MQX

    B

    72

  • MQX

    73

    1.1 1.1.1 RTOS1.1.2 RTOS1.1.3 RTOS1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

    1.1.4 RTOS

    1.2 MQX1.2.1 MQX1.2.2 MQX

    1.3 1.3.1 1.3.2

    1.4 1.4.1 1.4.2

    1.5

    MQX2.1 MQX2.1.1 2.1.2 MQX

    2.2 2.2.1 2.2.2 MQX2.2.3 MQX2.2.4 MQX

    2.3 2.3.1 MQX2.3.2 MQX2.3.3 MQX

    2.4 2.4.1 2.4.2 MQX2.4.3 MQX

    2.5 2.6 2.6.1 2.6.2 2.6.3 2.6.4

    2.7

    MQX3.1 MQX3.1.1 Bootloader3.1.2 Bootloader3.1.3 MQX

    3.2 MQX3.2.1 1. FIFO2. RR3.

    3.2.2

    3.3 3.3.1 3.3.2 3.3.3 3.3.4

    3.4 MQX3.4.1 MQX3.4.2 MQX3.4.3 1. 123

    2. BSP

    3.5

    MQX4.1 MQX4.1.1 CodeWarrior4.1.2 CW

    4.2 MQX4.3 MQX4.3.1 4.3.2

    4.4 MQX4.4.1 4.4.2 CWMQX4.4.3 1. GPIO1GPIOIO_Driver.h2GPIOIO_Driver.c

    2. Light1LightLight_task.h2LightLight_task.c

    3. UART1UARTUart_task.h2UARTUart_task.c

    4.

    4.5

    MQX5.1 5.1.1 5.1.2

    5.2 MQX1. BSP2. BSPPSP3. 4. PSP5. BSP6.

    5.3 LCD5.3.1 LCD5.3.2 1. 2. 3. 4.

    5.4 5.4.1 5.4.2

    5.5

    6.1 6.2

    A MQXB