logo资料库

Freescale MQX实时操作系统用户手册(中文).pdf

第1页 / 共161页
第2页 / 共161页
第3页 / 共161页
第4页 / 共161页
第5页 / 共161页
第6页 / 共161页
第7页 / 共161页
第8页 / 共161页
资料共161页,剩余部分请下载后查看
Freescale MQX 实时操作系统用户手册 译自: Freescale MQXTM Real-Time Operating System User’s Guide Document Number:MQXUG Rev. 0(04/2009) 苏州大学 Freescale 嵌入式教学与应用培训中心译 2010 年 3 月
目 录 第一章 前言 .................................................................................................... 1 1.1 关于 MQX .............................................................................................. 1 1.2 关于本手册 ............................................................................................ 1 1.3 3.0 和 2.50 版本的新特点 ...................................................................... 2 1.4 约定 ........................................................................................................ 4 1.4.1 提示 ................................................................................................ 4 1.4.2 注释 ................................................................................................ 4 1.4.3 注意事项 ......................................................................................... 4 第二章 MQX 概述 .......................................................................................... 5 2.1 MQX 的组织结构 .................................................................................. 5 2.2 初始化 .................................................................................................... 6 2.3 任务管理 ................................................................................................ 6 2.4 调度 ........................................................................................................ 7 2.5 存储管理 ................................................................................................ 7 2.5.1 可变大小存储块管理 ..................................................................... 7 2.5.2 固定大小存储块管理(区块) ..................................................... 7 2.5.3 高速缓存控制 ................................................................................. 8 2.5.4 存储器管理单元(MMU)控制 ................................................... 8 2.5.5 轻量级存储管理 ............................................................................. 8 2.6 任务同步 ................................................................................................ 8 2.6.1 轻量级事件 ..................................................................................... 8 2.6.2 事件 ................................................................................................ 8 2.6.3 轻量级信号量 ................................................................................. 8 2.6.4 信号量............................................................................................. 9 2.6.5 互斥 ................................................................................................ 9 2.6.6 消息 ................................................................................................ 9 2.6.7 任务队列 ......................................................................................... 9 2.7 处理器间通信 ........................................................................................ 9 2.8 定时 ...................................................................................................... 10 2.8.1 时间组件 ....................................................................................... 10 2.8.2 轻量级定时器 ............................................................................... 10 2.8.3 定时器........................................................................................... 10 I
2.8.4 看门狗........................................................................................... 10 2.9 中断和异常处理 .................................................................................. 10 2.10 I/O 驱动 .............................................................................................. 11 2.10.1 格式化 I/O ................................................................................. 11 2.10.2 I/O 子系统 ................................................................................... 11 2.11 检测工具 ............................................................................................ 11 2.11.1 日志 ............................................................................................. 11 2.11.2 轻量级日志 ................................................................................. 11 2.11.3 内核日志 ..................................................................................... 12 2.11.4 栈的运用 ..................................................................................... 12 2.12 出错处理 ............................................................................................ 12 2.12.1 任务出错代码 ............................................................................. 12 2.12.2 异常处理 ..................................................................................... 12 2.12.3 实时测试 ..................................................................................... 12 2.13 队列操纵 ............................................................................................ 13 2.14 命名组件 ............................................................................................ 13 2.15 嵌入式调试 ........................................................................................ 13 第三章 使用 MQX ........................................................................................ 14 3.1 前言 ...................................................................................................... 14 3.2 初始化并开始运行 MQX .................................................................... 14 3.2.1 MQX 初始化结构 .......................................................................... 14 3.2.1.1 默认的 MQX 初始化结构 .................................................... 15 .2.2 任务模板列表 ................................................................................. 15 3.2.2.1 指定任务优先级 .................................................................... 16 3.2.2.2 指定任务属性 ........................................................................ 16 3.2.2.3 默认任务模板列表 ................................................................ 16 3.2.2.4 举例:一个任务模板列表 .................................................... 16 3.2.2.5 实例:创建一个自启动任务 ................................................ 17 3.3 使用 FREESCALE CODEWARRIOR DEVELOPMENT STUDIO ................... 18 3.4 管理任务 .............................................................................................. 20 3.4.1 创建任务 ....................................................................................... 21 3.4.2 获取任务IDs ................................................................................ 21 3.4.3 获取和设置一个任务环境 ........................................................... 21 3.4.4 管理任务错误 ............................................................................... 22 3.4.5 重启任务 ....................................................................................... 22 II
3.4.6 终止任务 ....................................................................................... 22 3.4.7 实例:创建任务 ............................................................................ 23 3.4.7.1 实例代码 ................................................................................ 23 3.4.7.2 在 MQX 下编译和连接应用程序 ........................................ 25 3.5 调度任务 .............................................................................................. 25 3.5.1 FIFO 调度 ..................................................................................... 25 3.5.2 轮循调度 ....................................................................................... 26 3.5.2.1 抢占........................................................................................ 27 3.6 内存管理 .............................................................................................. 27 3.6.1 使用可变块管理内存 ................................................................... 27 3.6.2 利用可变大小块管理轻量级内存 ............................................... 29 3.6.3 使用固定大小块管理内存(区块) ........................................... 30 3.6.3.1 为动态区块生成区块组件 .................................................... 30 3.6.3.2 生成区块 ................................................................................ 30 3.6.3.3 分配和释放区块 .................................................................... 30 3.6.3.4 撤销动态区块 ........................................................................ 30 3.6.3.5 举例:两个区块 .................................................................... 30 3.6.4 操纵缓冲寄存器 ........................................................................... 32 3.6.4.1 清除数据缓存 ........................................................................ 32 3.6.4.2 使数据/指令缓存失效 ........................................................... 32 3.6.5 控制MMU(虚拟存储器) ........................................................ 33 3.6.5.1 举例:使用虚拟存储初始化 MMU ..................................... 34 3.6.5.2 举例:创建虚拟现场 ............................................................ 35 3.6.5.3 举例:使用虚拟现场创建任务 ............................................ 35 3.7 任务同步 .............................................................................................. 36 3.7.1 事件 .............................................................................................. 36 3.7.1.1 生成事件组件 ........................................................................ 38 3.7.1.2 创建事件组 ............................................................................ 38 3.7.1.3 打开与事件组的连接 ............................................................ 38 3.7.1.4 等待事件位 ............................................................................ 39 3.7.1.5 设置事件位 ............................................................................ 39 3.7.1.6 清除事件位 ............................................................................ 39 3.7.1.7 关闭与事件组的连接 ............................................................ 39 3.7.1.8 撤销事件组 ............................................................................ 39 3.7.1.9 举例:使用事件 .................................................................... 39 3.7.2 轻量级事件 ................................................................................... 42 III
3.7.2.1 生成轻量级事件组 ................................................................ 43 3.7.2.2 等待事件位 ............................................................................ 43 3.7.2.3 设置事件位 ............................................................................ 43 3.7.2.4 清除事件位 ............................................................................ 43 3.7.2.5 撤销轻量级事件组 ................................................................ 43 3.7.3 关于信号量类型的对象 ............................................................... 43 3.7.3.1 限制........................................................................................ 43 3.7.3.2 优先级倒置 ............................................................................ 44 3.7.3.3 举例:优先级倒置 ................................................................ 44 3.7.3.4 使用优先级继承防止优先级倒置 ........................................ 44 3.7.3.5 使用优先级保护防止优先级倒置 ........................................ 45 3.7.4 轻量级信号量 ............................................................................... 46 3.7.4.1 生成轻量级信号量 ................................................................ 46 3.7.4.2 等待并传递轻量级信号量 .................................................... 47 3.7.4.3 撤销一轻量级信号量 ............................................................ 47 3.7.4.4 举例:生产者与消费者 ........................................................ 47 3.7.5 信号量........................................................................................... 51 3.7.5.1 信号量使用纵览 .................................................................... 51 3.7.5.2 生成信号量组件 .................................................................... 52 3.7.5.3 生成信号量 ............................................................................ 52 3.7.5.4 打开与信号量的连接 ............................................................ 53 3.7.5.5 等待信号量与传递信号量 .................................................... 53 3.7.5.6 关闭与信号量的连接 ............................................................ 53 3.7.5.7 撤销信号量 ............................................................................ 53 3.7.5.8 举例:任务同步与互斥操作 ................................................ 53 3.7.6 互斥 .............................................................................................. 59 3.7.6.1 创建互斥组件 ........................................................................ 60 3.7.6.2 互斥属性 ................................................................................ 60 3.7.6.3 互斥等待协议 ........................................................................ 60 3.7.6.4 调度协议 ................................................................................ 61 3.7.6.5 创建与初始化互斥 ................................................................ 61 3.7.6.6 锁定互斥 ................................................................................ 62 3.7.6.7 解锁互斥 ................................................................................ 62 3.7.6.8 撤销互斥 ................................................................................ 62 3.7.6.9 举例:使用互斥 .................................................................... 62 3.7.7 消息 .............................................................................................. 64 IV
3.7.7.1 创建消息组件 ........................................................................ 66 3.7.7.2 使用消息池 ............................................................................ 66 3.7.7.3 分配与释放消息 .................................................................... 67 3.7.7.4 发送消息 ................................................................................ 67 3.7.7.5 消息队列 ................................................................................ 68 3.7.7.6 使用私有消息队列接收消息 ................................................ 68 3.7.7.7 使用系统消息队列接收消息 ................................................ 68 3.7.7.8 确定排队消息数 .................................................................... 69 3.7.7.9 警告函数 ................................................................................ 69 3.7.7.10 举例:客户/服务器模式 ..................................................... 69 3.7.8 任务队列 ....................................................................................... 73 3.7.8.1 创建和撤消任务队列 ............................................................ 73 3.7.8.2 挂起任务 ................................................................................ 73 3.7.8.3 重启任务 ................................................................................ 74 3.7.8.4 举例:任务同步 .................................................................... 74 3.8 处理器间的通信 .................................................................................. 76 3.8.1 发送消息到远程处理器 ............................................................... 76 3.8.1.1 举例:四核处理器的应用。 ................................................ 77 3.8.2 创建和结束远程处理器上的任务 ............................................... 77 3.8.3 访问远程处理器上的事件组 ....................................................... 77 3.8.4 创建和初始化IPC ....................................................................... 78 3.8.4.1 编译 IPC 路由表 ................................................................... 78 3.8.4.2 创建 IPC 协议初始化表 ....................................................... 79 3.8.4.3 IPC 使用 I/O PCB 设备驱动程序 ......................................... 79 3.8.4.4 启动 IPC 任务 ....................................................................... 80 3.8.4.5 举例:IPC 初始化信息 ........................................................ 80 3.8.5 消息头的端模式转换 ................................................................... 87 3.9 定时 ...................................................................................................... 87 3.9.1 MQX 定时翻转法 .......................................................................... 87 3.9.2 MQX 定时精度 .............................................................................. 87 3.9.3 定时器组件 ................................................................................... 87 3.9.3.1 秒/毫秒时间 .......................................................................... 89 3.9.3.2 滴答时间 ................................................................................ 89 3.9.3.3 消逝时间 ................................................................................ 90 3.9.3.4 时间分辨率 ............................................................................ 90 3.9.3.5 绝对时间 ................................................................................ 90 V
3.9.3.6 日期中的时间格式 ................................................................ 90 3.9.3.7 超时........................................................................................ 91 3.9.4 定时器........................................................................................... 92 3.9.4.1 创建定时器组件 .................................................................... 92 3.9.4.2 开启定时器 ............................................................................ 93 3.9.4.3 取消重要定时器请求 ............................................................ 93 3.9.4.4 举例:定时器的使用 ............................................................ 93 3.9.5 轻量级定时器 ............................................................................. 96 3.9.5.1 启动轻量级定时器 .............................................................. 96 3.9.5.2 取消重要定时器请求 .......................................................... 96 3.9.6 看门狗......................................................................................... 96 3.9.6.1 创建看门狗组件 .................................................................. 97 3.9.6.2 启动或复位看门狗 .............................................................. 97 3.9.6.3 终止看门狗 .......................................................................... 97 3.9.6.4 举例:看门狗的使用 .......................................................... 97 3.10 中断和异常处理 ............................................................................ 100 3.10.1 中断处理初始化 ..................................................................... 101 3.10.2 装载应用程序定义的ISR ...................................................... 102 3.10.3 针对ISR 的限制 ..................................................................... 102 3.10.3.1 ISR 不能调用的函数 ...................................................... 102 3.10.3.2 ISR 不应该调用的函数................................................... 103 3.10.4 修改默认ISR .......................................................................... 104 3.10.5 异常处理 ................................................................................. 104 3.10.6 ISR 异常处理 .......................................................................... 105 3.10.7 任务异常处理 ......................................................................... 105 3.10.8 举例:装载ISR ...................................................................... 105 3.10.8.1 利用 MQX 编译和连接应用程序 .................................. 107 3.11 工具 ................................................................................................ 108 3.11.1 日志 ......................................................................................... 108 3.11.1.1 创建日志组件 .................................................................. 109 3.11.1.2 创建日志 .......................................................................... 109 3.11.1.3 格式化日志条目 .............................................................. 109 3.11.1.4 写日志 .............................................................................. 109 3.11.1.5 读日志 .............................................................................. 109 3.11.1.6 禁用和启用记录日志 ...................................................... 109 3.11.1.7 重置日志 .......................................................................... 110 VI
3.11.1.8 举例:使用日志 .............................................................. 110 3.11.2 轻量级日志 ............................................................................. 112 3.11.2.1 创建轻量级日志组件 ...................................................... 113 3.11.2.2 创建轻量级日志 .............................................................. 113 3.11.2.3 格式化轻量级日志条目 .................................................. 113 3.11.2.4 写轻量级日志 .................................................................. 113 3.11.2.5 读小型日志 ...................................................................... 113 3.11.2.6 禁用和启用轻量级日志 .................................................. 114 3.11.2.7 重置轻量级日志 .............................................................. 114 3.11.2.8 举例:使用轻量级日志 .................................................. 114 3.11.3 内核日志 ................................................................................... 115 3.11.3.1 使用内核日志 .................................................................... 116 3.11.3.2 禁用内核日志 .................................................................... 117 3.11.3.3 举例:内核日志的应用 ..................................................... 117 3.11.4 堆栈使用工具 ............................................................................ 119 3.12 工具 .................................................................................................. 119 3.12.1 队列 ........................................................................................... 119 3.12.1.1 队列的数据结构 ................................................................ 120 3.12.1.2 创建队列 ............................................................................ 120 3.12.1.3 向一个队列增加元素 ........................................................ 120 3.12.1.4 从队列中移除元素 ............................................................ 120 3.12.2 命名组件 ................................................................................... 120 3.12.2.1 创建命名组件 ..................................................................... 121 3.12.3 运行时测试 ............................................................................... 121 3.12.3.1 举例:运行时测试 ............................................................ 122 3.12.4 其它工具 ................................................................................... 126 3.13 嵌入式调试....................................................................................... 127 3.14 实时编译配置 MQX ........................................................................ 127 3.14.1 MQX 编译时配置选项 .............................................................. 128 3.14.2 推荐设置 ................................................................................... 131 第四章 重建 MQX ...................................................................................... 133 4.1 为什么要重建 MQX? ...................................................................... 133 4.2 开始之前 ............................................................................................ 133 4.3 FREESCALEMQX 的目录结构 ............................................................ 134 4.3.1 MQX RTOS 目录结构 ................................................................. 134 VII
分享到:
收藏