当前位置:首页 > 计算机网络 > 操作系统/系统开发 > Cortex-M3 + μC/OS-II嵌入式系统开发入门与应用
出版社:人民邮电
出版日期:2010-8
ISBN:9787115231055
作者:陈瑶,李佳,宋宝华
页数:303页
章节摘录
插图: 实时性:响应外部事件的时间必须在限定的时间范围内,在某些情况下还需要是确定的、可重复实现的,不管当时系统内部状态如何,都必须是可预测的。 抢占式调度:为确保响应时间,实时操作系统必须允许高优先级的任务一旦进入就绪状态,就可以马上抢占正在运行的低优先级任务的执行权。 具有异步响应能力:异步事件是指无一定时序关系、随机发生的事件。如实时控制设备出现异常等突发事件,都属于随机事件。实际环境中,嵌入式实时系统需要处理多个外部事件,这些事件往往同时出现,而且发生的时刻也是随机的。实时操作系统应有能力对这类同时发生的外部事件进行有效的处理。 内存锁定:必须具有将程序部分代码锁定在内存的能力,将频繁访问的数据锁定在内存,减少了为获得该数据而访问磁盘的时间,从而保证了快速的响应时间。 具有优先级调度机制:实时操作系统必须允许用户定义中断和任务的优先级,并具有相应的优先级调度机制。 同步/互斥机制:提供对共享数据的同步和互斥手段。 实时操作系统能对外部事件和信号在限定的时间范围内作出响应,它所强调的是实时性、可靠性和灵活性。实时操作系统一般与实时应用软件相结合成为有机整体:用实时操作系统来管理和调度实时应用软件的各项任务,为应用软件提供良好的运行和开发环境。一般来说,实时操作系统以库的形式提供系统调用来实现对上层实时应用程序的支持;而应用程序通过链接实时操作系统的库来实现实时任务调度。
前言
Concx-M3是ARM公司推出的最新的针对微控制器应用的内核,它提供了业界领先的高性能和低成本的解决方案,将成为MCU(Micro Controller Unit,微控制单元)应用的热点和主流。Concx-M3是一个32位的核,在传统的单片机领域中,有一些不同于通用32位CPU应用的要求,谭军博士曾说,在工控领域,用户要求具有更快的中断速度,而Concx-M3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,最多可减少12个时钟周期,在实际应用中可减少 70%的中断。完全符合用户的需求。 Codex-M3采用了新型的单线调试(Single Wire)技术,专门拿出一个引脚来做调试,从而-节约了大笔调试工具的费用。同时,Codcx-M3中还集成了大部分存储器、控制器,这样工程师可以直接在MCU外连接Flash,降低了设计和应用的难度。
内容概要
李佳,高级软件工程师,曾任职于微软中国研究院。现任职于东软集团,担任项目经理一职,负责客户关系管理系统在电信行业中的应用。从事软件开发近10年时间,曾主持开发过某省教育厅学籍学历查询系统。清华大学土木水利学院实验室管理信息系统。网上购物平台等各种大型系统。熟悉各种开发语言和工具,尤其擅长C#。对软件开发有深刻的认识,具有丰富的应用型软件开发经验。
宋宝华
华清远见金牌讲师,著有《Linux设备驱动开发详解》,译有《Essential Linux Device Drivers》,曾为思科、阿尔卡特、朗讯、四方、意法半导体等知名企业提供嵌入式Linux企业培训和技术服务,受到企业广泛好评。活跃于Linux社区,已给Linux内核贡献了逾2万行代码。
陈瑶
华清远见特邀顾问,任教于北京工业大学计算机学院,计算机软件与理论系。长期以来从事软件工程和嵌入式开发方面的教学与科研工作。曾于2004年作为访问学者在美国Llniversity of Massachusetts进修。参加过多项国家自然科学基金、北京市自然科学基金项目,发表多篇论文。
书籍目录
第1部分
第1章 走进arm微处理器 3
1.1 arm体系结构的源头——arm公司 3
1.2 arm处理器的发展历程 4
1.3 arm体系结构 5
1.3.1 arm cortex处理器技术特点 6
1.3.2 arm cortex系列处理器比较 7
1.4 arm v7新增指令 12
1.4.1 位操作指令 13
1.4.2 比特反转指令 13
1.4.3 16-bit常数操作 13
1.4.4 调转表指令 14
1.4.5 it指令 14
1.4.6 检查是否为零并跳转指令(cbz) 14
第2章 cortex-m3处理器体系结构 16
2.1 cortex-m3综述 16
2.2 cortex-m3编程模式 17
2.2.1 cortex-m3的工作模式和工作状态 18
2.2.2 特权访问和用户访问 18
2.2.3 cortex-m3的寄存器组织 18
.2.2.4 cortex-m3的数据类型 19
2.2.5 cortex-m3的存储器格式 20
2.3 cortex-m3的存储器管理 21
2.3.1 存储器映射 21
2.3.2 bit-banding机制 23
2.4 cortex-m3的异常处理 24
2.4.1 异常优先级 26
2.4.2 异常处理的堆栈使用 27
2.4.3 cortex-m3特有的异常处理机制 29
2.4.4 异常退出 30
2.4.5 复位异常 31
2.4.6 中止(abort)异常 34
2.5 cortex-m3的电源管理 37
2.5.1 sleeping 37
2.5.2 sleepdeep 38
2.6 嵌套向量中断控制器nvic 38
2.7 存储器保护单位mpu 41
2.8 cortex-m3开发平台——stm32v100评估板介绍 43
第3章 arm开发环境realview mdk平台搭建 46
3.1 常用arm开发工具 46
3.1.1 免费平台gnu 47
3.1.2 realview developmentsuite开发工具 48
3.1.3 arm硬件仿真器multi-ice与multi-trace 49
3.1.4 multi 2000 50
3.1.5 hitool for arm 50
3.1.6 realview mdk 50
3.2 realview mdk概述 51
3.3 realview mdk的使用 54
3.3.1 创建工程 54
3.3.2 编译、链接工程 57
3.3.3 程序调试 59
3.3.4 工程选项设置 60
3.4 仿真工具——ulink2 61
3.5 realview mdk工程实例 62
第4章 基于realview开发环境的嵌入式软件开发 66
4.1 realview编译器的缺省行为 66
4.1.1 semihosting 66
4.1.2 c库结构 69
4.1.3 默认存储器映射 70
4.1.4 链接程序放置规则 71
4.1.5 应用程序启动 71
4.2 调整c库使其适应目标硬件 73
4.2.1 c库函数重定向 73
4.2.2 从最终代码映像中去掉semihosting 74
4.3 映像文件存储器映射调整 74
4.3.1 关于分散加载 74
4.3.2 scatter文件语法 78
4.3.3 scatter文件典型用法 85
4.3.4 等效的简单映像分散载入描述 91
4.4 复位和初始化 95
4.4.1 初始化序列 95
4.4.2 向量表 96
4.4.3 rom/ram重映射 97
4.4.4 与局部存储器设置有关的考虑事项 100
4.4.5 栈指针初始化 100
4.4.6 硬件初始化 102
第5章 stm32f103处理器内部资源c编程与实例 104
5.1 i/o控制模块c编程与实例 104
5.1.1 实例内容与目标 104
5.1.2 i/o控制模块操作原理 104
5.1.3 i/o控制实例操作步骤 109
5.1.4 i/o控制实例参考程序及说明 109
5.2 中断控制模块c编程与实例 112
5.2.1 实例内容与目标 112
5.2.2 中断模块nvic的操作原理 113
5.2.3 中断控制实例操作步骤 115
5.2.4 中断控制实例参考程序及说明 116
5.3 a/d转换和dma编程实例 119
5.3.1 实例内容与目标 119
5.3.2 a/d转换控制器与dma控制器操作原理 119
5.3.3 a/d转换和dma编程实例操作步骤 126
5.3.4 a/d转换和dma编程实例参考程序及说明 126
5.4 实时钟rtc编程实例 133
5.4.1 实例内容与目标 133
5.4.2 stm32f103实时钟操作原理 134
5.4.3 实时钟rtc编程实例操作步骤 135
5.4.4 实时钟rtc编程实例参考程序及说明 136
5.5 串行外设接口spi编程实例 139
5.5.1 实例内容与目标 139
5.5.2 spi接口操作原理 139
5.5.3 spi接口实例操作步骤 144
5.5.4 spi接口实例参考程序及说明 144
5.6 can总线编程实例 149
5.6.1 实例内容与目标 149
5.6.2 can总线操作原理 149
5.6.3 can总线编程实例操作步骤 156
5.6.4 can总线实例参考程序及说明 157
5.7 窗口看门狗wwdg实例 163
5.7.1 实例内容与目标 163
5.7.2 wwdg操作原理 164
5.7.3 看门狗实例操作步骤 166
5.7.4 看门狗实例参考程序及说明 166
5.8 uart编程实例 169
5.8.1 实例内容与目标 169
5.8.2 uart编程原理 169
5.8.3 串口编程实例操作步骤 180
5.8.4 串口编程实例参考程序及说明 180
第2部分
第6章 μc/os-ⅱ操作系统基础及其移植开发初步 189
6.1 实时操作系统基本原理与技术 189
6.1.1 实时操作系统基本特征 189
6.1.2 实时操作系统的关键技术指标 190
6.1.3 实时操作系统基本术语 191
6.2 μc/os-ⅱ应用程序开发 192
6.2.1 μc/os-ⅱ的变量类型 192
6.2.2 应用程序的基本结构 193
6.2.3 μc/os-ⅱ api介绍 194
6.2.4 μc/os-ⅱ多任务实现机制 195
6.3 μc/os-ⅱ在stm32f103处理器上的移植 196
6.3.1 移植条件 196
6.3.2 移植步骤 197
第7章 μc/os-ⅱ的内核机制 203
7.1 μc/os-ⅱ的内核结构 203
7.1.1 临界段 203
7.1.2 任务 204
7.1.3 任务状态 205
7.1.4 任务调度 206
7.1.5 中断处理 208
7.1.6 μc/os-ⅱ初始化 209
7.1.7 μc/os-ⅱ启动 209
7.2 μc/os-ⅱ的任务管理 211
7.2.1 任务建立 211
7.2.2 任务堆栈 214
7.2.3 堆栈检验 214
7.2.4 改变任务优先级 217
7.2.5 挂起任务 220
7.2.6 恢复任务 222
7.2.7 删除任务 224
7.2.8 请求删除任务 227
7.3 μc/os-ⅱ的时间管理 229
7.3.1 任务延时 230
7.3.2 时/分/秒延时函数 231
7.3.3 恢复延时任务 233
7.3.4 系统时间 235
7.4 任务之间通信与同步 236
7.4.1 事件控制块ecb 237
7.4.2 初始化任务控制块 240
7.4.3 使任务进入就绪态 240
7.4.4 使任务进入等待某事件发生状态 243
7.4.5 由于等待超时而将任务置为就绪态 243
7.4.6 信号量 244
7.4.7 邮箱 252
7.4.8 消息队列 261
7.5 内存管理 274
7.5.1 内存控制块 274
7.5.2 建立内存分区 275
7.5.3 分配内存块 278
7.5.4 释放内存块 279
7.5.5 等待内存块 280
第8章 基于μc/os-ⅱ的程序设计实例 283
8.1 实例介绍 283
8.2 实例分析 283
8.2.1 实例任务划分 283
8.2.2 实例任务设计与优先级分配 284
8.3 任务实现详解 285
8.3.1 键盘任务 286
8.3.2 显示任务 293
8.3.3 使用延时函数的采样任务 296
8.3.4 使用时钟节拍钩子函数的采样任务 297
8.3.5 使用定时中断的采样任务 299
8.3.6 使用高优先级中断的采样任务 301
8.3.7 串口发送任务 302
参考文献 304
编辑推荐
《Cortex-M3 +μC/OS-II嵌入式系统开发入门与应用》:详细介绍Cortex—M3的内核结构、编程模式及其开发工具从Cortex-M3 +μC/OS-II上的移植入手,介绍在Cortex—M3平台上用μC/OS-II操作系统开发的方法通过一个Cortex-M3 +μC/OS-II完整应用实例全面了解开发过程《Cortex-M3 +μC/OS-II嵌入式系统开发入门与应用》介绍了Cortex—M3内核和在Cortex-M3平台上用pCOS操作系统开发的方法,内容涵盖:走进ARM微处理器Cortex—M3处理器体系结构ARM开发环境RealView MDK平台搭建基子ReaIView开发环境的嵌入式软件开发STM32F103处理器内部资源C编程与实例μCOS-II操作系统基础及其移植开发初步μCOS-II的内核机制基于μCOS-II的程序设计实例
作者简介
《Cortex-M3 +μC/OS-II嵌入式系统开发入门与应用》首先讲解了Cortex-M3处理器的架构及RealViewMDK开发平台的相关知识,然后对μC/OS-Ⅱ的内核移植、驱动开发、应用程序开发进行了介绍,最后综合运用所学知识介绍了一个μC/OS-Ⅱ的程序设计实例。
《Cortex-M3 +μC/OS-II嵌入式系统开发入门与应用》内容由浅入深,为加深理解,列举了很多程序设计的相关实例。
《Cortex-M3 +μC/OS-II嵌入式系统开发入门与应用》适合嵌入式初学者、嵌入式开发人员以及高校相关专业师生阅读。
图书封面
Cortex-M3 + μC/OS-II嵌入式系统开发入门与应用下载