热搜关键词: 模拟电路单片机编程FPGARISC-V

pdf

嵌入式实时操作系统μCOS原理与实践(第2版) (卢有亮)

  • 1星
  • 2022-12-24
  • 6.35MB
  • 需要1积分
  • 1次下载
  • favicon收藏
  • rep举报
  • free评论
标签: 嵌入式

嵌入式

嵌入式实时操作系统μC/OS原理与实践(第2版)》内容包括:实时操作系统基础、任务管理、中断和时间管理、事件管理、消息管理、内存管理、移植、工程实践及μC/OS-III分析、移植与应用实践等。本书内容翔实,图文并茂,采用逐步深入、反复印证的方法,从数据结构的设计入手,再到代码分析、示例验证的剖析方法,逐层深入讲解,给出在虚拟平台下的移植示例和针对各章内容示例,并给出了基于ARM  Cortex  M3内核的STM32系统上移植和工程实例。

《嵌入式实时操作系统μC/OS原理与实践(第2版)》适用于计算机、电子、通信、自动化及相关专业大学本科、研究生,也适用于广大嵌入式开发工程技术人员、电子技术研究人员、操作系统研究人员。

第1章  实时操作系统基础............................1

1.1  操作系统概述........................1

1.1.1  什么是操作系统...............................1

1.1.2  操作系统基本功能...........................2

1.2  实时操作系统概述....................3

1.2.1  什么是实时操作系统.......................3

1.2.2  实时操作系统的基本特征...............4

1.3  任务................................5

1.3.1  任务简介..........................................5

1.3.2  多任务..............................................6

1.3.3  任务状态..........................................7

1.3.4  任务切换..........................................8

1.3.5  可重入函数和不可重入函数  ..........9

1.4  基于优先级的可剥夺内核.............11

1.4.1  内核  ...............................................11

1.4.2  基于优先级的调度算法.................11

1.4.3  不可剥夺型内核和可剥夺型内核  .12

1.5  同步与通信.........................13

1.5.1  同步  ...............................................13

1.5.2  互斥................................................14

1.5.3  临界区............................................14

1.5.4  事件................................................15

1.5.5  信号量............................................15

1.5.6  互斥信号量....................................17

1.5.7  事件标志组....................................17

1.5.8  消息邮箱和消息队列.....................17

1.6  时钟和中断.........................19

1.7  内存管理...........................21

1.8  嵌入式实时操作系统μC/OS学习开发指引  ....21

习题....................................22

第2章  任务管理..........................................23

2.1  任务管理数据结构...................24

2.1.1  任务控制块....................................24

2.1.2  空闲链表和就绪链表.....................28

2.1.3  任务优先级指针表.........................30

2.1.4  任务堆栈........................................31

2.1.5  任务就绪表和就绪组.....................33

2.2  任务控制块初始化...................38

2.2.1  代码解析........................................38

2.2.2  流程分析........................................40

2.3  操作系统初始化.....................41

2.3.1  代码解析........................................41

2.3.2  流程分析........................................45

2.4  任务的创建.........................45

2.4.1  OSTaskCreate代码解析..................46

2.4.2  OSTaskCreate流程分析..................48

2.4.3  OSTaskCreateExt代码解析............49

2.4.4  OSTaskCreateExt流程分析............52

2.5  任务的删除.........................53

2.5.1  任务删除代码解析.........................54

2.5.2  任务删除流程分析.........................57

2.5.3  请求删除任务代码解析.................58

2.5.4  请求删除任务流程.........................59

2.6  任务挂起和恢复.....................60

2.6.1  OSTaskSuspend代码解析...............61

2.6.2  OSTaskSuspend流程分析...............63

2.6.3  OSTaskResume代码解析...............63

2.6.4  OSTaskResume流程分析...............65

2.7  任务的调度和多任务的启动...........66

2.7.1  任务调度器....................................66

2.7.2  任务切换函数................................68

2.7.3  中断中的任务调度.........................73

2.7.4  多任务的启动  ..............................74

2.8  特殊任务...........................75

2.8.1  空闲任务OS_TaskIdle....................75

2.8.2  统计任务OS_TaskStat....................76

2.9  任务管理总结.......................78

习题....................................79

第3章  中断和时间管理.............................80

3.1  中断管理...........................80

3.1.1  中断管理核心思路.........................80

3.1.2  中断处理的流程.............................82

3.1.3  时钟中断服务................................82

3.2  时间管理...........................83

3.2.1  时间管理主要数据结构.................83

3.2.2  时间的获取和设置.........................84

3.2.3  任务延时函数OSTimeDly.............84

3.2.4  任务按分秒延迟函数

OSTimeDlyHMSM...........................86

3.2.5  延时恢复函数OSTimeDlyResume.....87

习题....................................90

第4章  事件管理..........................................91

4.1  事件管理的重要数据结构.............91

4.1.1  事件控制块(ECB).....................91

4.1.2  事件等待组和事件等待表.............92

4.1.3  事件控制块空闲链表.....................93

4.2  事件管理程序.......................94

4.2.1  事件控制块(ECB)初始化.........94

4.2.2  事件等待表初始化.........................94

4.2.3  设置事件等待................................95

4.2.4  取消事件等待................................97

4.2.5  将等待事件的任务就绪.................97

4.3  信号量管理.........................99

4.3.1  信号量的建立OSSemCreate...........99

4.3.2  信号量的删除OSSemDel..............101

4.3.3  请求信号量OSSemPend................104

4.3.4  提交信号量...................................107

4.3.5  无等待请求信号量........................109

4.3.6  放弃等待信号量............................110

4.3.7  信号量值设置...............................111

4.3.8  查询信号量状态............................112

4.3.9  信号量应用举例............................113

4.4  互斥信号量管理....................117

4.4.1  互斥信号量的建立........................118

4.4.2  请求互斥信号量............................120

4.4.3  互斥信号量的删除........................125

4.4.4  发互斥信号量  ..............................128

4.4.5  无等待请求互斥信号量................130

4.4.6  查询互斥信号量状态....................131

4.4.7  改变任务的优先级并重新就绪....133

4.4.8  互斥信号量应用举例....................133

4.5  事件标志组管理....................137

4.5.1  事件标志组数据结构....................138

4.5.2  事件标志组初始化........................140

4.5.3  创建事件标志组............................141

4.5.4  事件标志组阻塞函数....................142

4.5.5  请求事件标志...............................143

4.5.6  删除事件标志组............................150

4.5.7  提交事件标志组............................152

4.5.8  标志节点任务就绪........................154

4.5.9  无等待的请求事件标志................155

4.5.10  事件标志管理应用举例..............157

习题...................................161

第5章  消息管理........................................162

5.1  消息邮箱..........................162

5.1.1  建立消息邮箱...............................163

5.1.2  等待消息.......................................165

5.1.3  发消息...........................................168

5.1.4  删除消息邮箱...............................170

5.1.5  放弃等待邮箱...............................173

5.1.6  无等待请求消息............................175

5.1.7  查询消息邮箱状态........................175

5.1.8  消息邮箱的例子............................176

5.2  消息队列..........................178

5.2.1  消息队列数据结构........................179

5.2.2  初始化消息队列............................182

5.2.3  建立消息队列...............................183

5.2.4  发消息到消息队列........................185

5.2.5  等待消息队列中的消息................186

5.2.6  删除消息队列...............................188

5.2.7  取得消息队列的状态....................190

5.2.8  消息队列应用举例........................191

习题...................................194

第6章  内存管理........................................195

6.1  内存管理数据结构..................195

6.1.1  内存控制块...................................195

6.1.2  内存控制块实体............................196

6.1.3  空闲内存控制块链表....................196

6.1.4  内存分区.......................................196

6.2  内存控制块初始化..................197

6.3  创建内存分区......................198

6.4  内存分区获取......................200

6.5  内存分区释放......................201

6.6  查询内存分区的状态................202

6.7  内存管理实例......................203

习题...................................205

第7章  移植  ..............................................206

7.1  移植说明..........................206

7.1.1  μC/OS-II的代码结构..................206

7.1.2  操作系统中与CPU相关的代码解析....209

7.1.3  μC/OS-II移植步骤......................213

7.2  在Visual  C++  6.0上实现基于

Windows的虚拟μC/OS-II移植.........213

7.2.1  目录结构和工程的建立................213

7.2.2  包含文件includes.h........................214

7.2.3  os_cpu.h中修改的代码..................215

7.2.4  os_cpu.c中修改的代码..................216

7.2.5  主程序代码实现............................219

7.2.6  移植测试.......................................220

7.3  μC/OS-II在ARM  Cortex  M3下的移植......221

7.3.1  与移植相关的ARM  Cortex  M3研究....221

7.3.2  os_cpu.h代码解析.........................223

7.3.3  os_cpu_c.c移植代码解析..............225

7.3.4  os_cpu_a.asm移植代码解析..........227

7.3.5  移植后的目录结构........................233

习题...................................234

第8章  工程实践  .....................................235

8.1  工程需求说明......................235

8.2  分析..............................236

8.3  工程设计..........................236

8.3.1  整体设计.......................................236

8.3.2  主机硬件接口设计........................237

8.3.3  多任务设计...................................238

8.3.4  串口数据格式...............................239

8.4  程序设计..........................239

8.4.1  主程序...........................................239

8.4.2  串口中断服务程序........................240

8.4.3  缓冲区处理任务代码....................240

8.4.4  显示任务代码...............................242

8.4.5  AD  采集任务代码........................243

8.4.6  触摸屏任务代码............................244

8.4.7 μC/GUI消息处理任务代码..........244

8.4.8 启动任务代码...............................245

8.4.9  工程代码结构...............................245

8.5  运行测试..........................246

习题...................................246

设计题.................................247

第9章  μC/OS-III分析、移植与应用实践.....248

9.1  本章说明..........................248

9.2  μC/OS-III代码结构.................248

9.3  μC/OS-III在STM32上的移植..........250

9.3.1  os_cpu.h代码.................................250

9.3.2  os_cpu_c.c移植代码......................251

9.3.3  os_cpu_a.asm移植代码..................252

9.4  μC/OS-III函数.....................253

9.4.1  任务管理函数...............................253

9.4.2  时间管理函数...............................255

9.4.3  信号量管理函数............................255

9.4.4  互斥信号量管理函数....................257

9.4.5  消息队列管理函数........................258

9.4.6  中断管理函数...............................259

9.4.7  内核函数.......................................259

9.5  μC/OS-III工程示例.................260

9.5.1  工程分组.......................................260

9.5.2  主程序...........................................261

9.5.3  串口中断服务程序........................263

9.5.4  缓冲区处理任务代码....................264

9.5.5  显示任务代码...............................266

9.5.6  启动任务代码  ..............................266

9.5.7  其他代码  ......................................267

9.5.8  运行测试.......................................267

习题...................................267

设计题.................................267

附录A  亮点STM32开发板资源...............268

A.1  硬件资源概述......................268

A.2  硬件资源按引脚分配................269

A.3  接口描述..........................271

A.4  软件资源..........................276

A.5  网络资源..........................277

参考文献...................................................278

推荐帖子 最新更新时间:2023-01-24 04:10

【TI首届低功耗设计大赛】微型LCR测试仪-帖子列表
【TI首届低功耗设计大赛】微型LCR测试仪-V1.1版图片 【TI首届低功耗设计大赛】微型LCR测试仪-硬件篇之一 【TI首届低功耗设计大赛】微型LCR测试仪-硬件篇之二 【TI首届低功耗设计大赛】微型LCR测试仪-硬件篇之三 【TI首届低功耗设计大赛】微型LCR测试仪-硬件篇之四 【TI首届低功耗设计大赛】微型LCR测试仪-硬件篇之五 【TI首届低功耗设计大赛】微型LCR测试仪-软件
snoweaglemcu 微控制器 MCU
FAQ_如何在24G私有协议应用中实现低功耗模式及低功耗唤醒功能
本文作者:ST工程师 点击下载pdf文档查看: 问题 一些客户基于 ST 的 2.4G 方案设计产品,需要用到低功耗模式及相关的低功耗唤醒功能。低功耗唤 醒方式包括定时唤醒和 GPIO 唤醒。 背景: 有些客户在做上述功能会依照典型低功耗蓝牙的产品的应用方式,调用低功耗蓝牙协议栈中的 某些 API,诸如函数:BlueNRG_Stack_Initialization 和 B
nmg 意法半导体-低功耗射频
高性价比的单片机应用系统结构设计
MSP430系列单片机作为一个性能优异的MCU在大陆已经得到了广泛的应用。MSP430在高整合性与高性能方面与其他MCU比较有较大优势。该系列芯片的价格也较为合理,目前整合性最好的MAP430F44X系列,整合了60K字节程序存储(可记录数据)、2K字节片内RAM、6个I/O端口(P1、P2能中断)、160段液晶驱动、两个串行端口、4个定时器(其中TB带有7个捕获/比较器、包括看门狗)、模拟比较器
fish001 微控制器 MCU
I.MX6UL TF卡启动Linux的实现
1 TF卡启动Linux的原理1.1 TF卡简介       TF卡又称T-Flash卡。全名:【TransFLash】又名【Micro SD】,由摩托罗拉与SANDISK共同研发,在2004年推出。是一种超小型卡(11*15*1MM),约为SD卡的1/4,可以算目前最小的储存卡了。MicroSD 卡是一种极细小的快闪存储器卡,其格式源自SanDisk创造,原本这种记忆卡称为 T-Flash,及后
szembed TI技术论坛
ZRtech Altera CycloneIV FPGA开发板--红外接口原理
本帖最后由 南盗 于 2014-7-11 10:22 编辑 话说红外接口很常见,各种单片机开发板上都有,可惜以前没玩,好吧,那就零基础开始吧。于是便开始了:按照光盘中实验4所说:建立一个signaltap ,来观察IRDA接收后的数据。下面就来分析一下:按下了5(遥控器上),接收到的数据如下: 这个时候看看红外手册了,由于想快速上手,偷了个懒,网上下载了中文版。共享出来哈。首先改红外接口
南盗 FPGA/CPLD
实惠电源(RD6006)全攻略,节省的不是一点点
全新RD6006-W分享裂变优惠券 优惠券: https://c.tb.cn/c.0S9LSZ RD6006: https://c.tb.cn/c.0gdt64 349-85=264 配套S06A外壳领15元店铺优惠券 优惠券 :https://c.tb.cn/c.0ShoHX S06A :https://c.tb.cn/c.0g4aDG 128-15=113 推荐电源领3元券:h
RuiDeng 电源技术
非整数倍率YUV422图像的自由缩放DSP算法
下面的代码,实现将一幅YUV422的双通道图片(640x480大小),取中间区域(560x400大小)使用插值的办法放大至(640x480)。这个算法可以用来实现将图片外围区域截掉。 #define X_RATIO (8) #define Y_RATIO (6) PUBLIC void YUVScale(JINF_YUV_CHN_T *const yuv_ptr,const uint
Aguilera DSP 与 ARM 处理器
倍加福Lin接口传感器 急求~~
我有个倍加福的传感器(附件1)是LIN接口。买了个魔帆电子的232-LIN转换器(附件2),想通过串口对传感器调试。转换器的手册里写到根据串口转LIN通信协议,报文格式如下。我从电脑串口发送握手指令,转换器有相应的报文反馈,说明电脑和转换器是通信上了。 下图是传感器的报文格式。我按照这个报文格式从电脑串口发送指令,传感器没有任何报文反馈。因为转换器的报文格式和传感器的报文格式完全不同,我怀疑
AvrilSHE 汽车电子

评论

G886
了解了解,谢谢!
2023-01-25 20:03:29
登录/注册

意见反馈

求资源

回顶部
查找数据手册?

EEWorld Datasheet 技术支持

热门活动

相关视频

可能感兴趣器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
×