天嵌 ARM开发社区

 找回密码
 注册
查看: 14995|回复: 24

《uC/OS-II原理与ARM应用程序设计》

[复制链接]
zhnyong 发表于 2009-11-21 10:19:08 | 显示全部楼层 |阅读模式
本帖最后由 zhnyong 于 2010-3-18 17:30 编辑

《uC/OS-II原理与ARM应用程序设计》第九章介绍了TQ2440下uC/OS-II的移植和应用程序设计,Bootloader设计等。 前言如下:
前  言
        µC/OS-II的由来与特点
µC/OS-II是美国J. J. Labrosse编写的实时嵌入式操作系统内核,该内核的雏形µC/OS最早可见于1992年5月他在《Embedded System Programming》杂志上发表的实时操作系统(RTOS),后来,他升级了该内核,同时,为了推动和普及该内核的应用,Labrosse于1999年注册了Micrium公司,并于同年和2002年编写了介绍µC/OS-II的书,即《MicroC/OS-II The Real-Time Kernel》,邵贝贝于2003年将其译成了中文版《嵌入式实时操作系统µC/OS-II》,书中介绍的µC/OS-II版本号为V2.52。
    µC/OS-II和著名的Windows CE都属于多任务实时操作系统。一般认为,Windows CE定位于基于ARM、MIPS、SH4和X86的高端嵌入式应用,强调美观的用户界面和强大的系统管理功能;而µC/OS-II定位于基于单片机、ARM、DSP和SOC等微控制器或微处理器的嵌入式应用系统,注重系统的安全性、可靠性和实时性。因此,µC/OS-II的应用范围和领域更加广阔,已经成功应用的领域有军事/航天、工业应用、医疗、汽车和消费电子等。目前,µC/OS-II是以源代码的形式提供,但µC/OS-II不是自由软件。
从程序设计方法来讲,在C++语言诞生之前,基本的程序设计方法是面向过程的程序设计方法,而在出现了C++以后,面向对象的程序设计思想和方法开始流行起来,再后来,随着Microsoft Windows视窗操作系统的普及以及集成开发环境Visual Studio与Borland Developer Studio的广泛应用,又出现了面向事件(或消息)的程序设计方法,大师C. Petzold在这方面做出了卓越的贡献。作者在《Windows CE应用程序设计》(2008年西电出版社)中介绍了采用面向消息的程序设计方法设计基于Windows CE的应用程序。而在出现了µC/OS-II之后,基于µC/OS-II的程序设计方法可以被称为面向任务的程序设计方法。与面向对象的程序设计方法的不同点在于,面向任务的程序设计方法的基本单位不再是类及其变量——对象,而是任务,同时,任务也是程序的组织核心,任务之间也是通过“消息”进行通信,虽然任务也包含数据和方法(或称函数),但是与类或普通函数有实质性的区别。
        本书的结构与简介
    µC/OS-II自2007年9月12日升级为V2.86版本后,V2.86仍是本书写作时的最新版本,因此,本书内容基于V2.86版本,在这个版本中最多可以创建255个任务。最近的报道显示Micrium公司推出了µC/OS-III,因此,V2.86可能是µC/OS-II的最终版本。本书内容的编排结构为:第一章“认识µC/OS-II”介绍了二个完整µC/OS-II工程程序的文件组织结构以及Borland C++ 4.51和IAR Embedded Workbench开发环境,并说明了本书实例的硬件工作平台情况;第二章“EWARM使用方法与芯片级程序”介绍了基于EWARM平台开发ARM芯片级程序的方法,列举了三个实例;第三章“将µC/OS-II移植到UP-Star实验板上”重点介绍了其在S3C2410A上的移植;第四章“µC/OS-II内核与面向任务程序设计”重点讲述了内核文件OS_CORE.C和任务处理文件OS_TASK.C的逻辑结构,并结合三个实例介绍了如何基于µC/OS-II有效地设计、组织和管理任务;第五章“任务协作与通信”全面介绍了信号量、互斥信号量、消息邮箱、消息队列、事件标志、多事件请求处理的创建和管理方法;第六章“中断与µC/OS-II定时器”介绍了µC/OS-II下中断响应处理及时钟管理任务;第七章“动态内存配置与Bootloader”介绍了µC/OS-II内存管理和可执行代码下载与启动方法;第八章“博创UP-CUP2410移植与实例”介绍基于博创UP-CUP2410实验箱的移植和程序设计实例;第九章“天嵌TQ2440移植与实例”介绍基于天嵌TQ2440开发板的移植和实例。
本书内容讲述µC/OS-II原理与移植以及基于ARM嵌入式系统的程序设计,偏重于ARM应用程序设计,延期出版的《µC/OS-II原理与面向任务程序设计》,则偏重于µC/OS-II原理与实时操作系统设计。作为从事嵌入式方面教学的一名大学教师,作者将一直跟踪µC/OS-II的升级和发展,并会不断充实和修订本书。
        本书的学习方法
如果用本书作为大学教材,理论课时宜在30学时左右,上机课时不低于20学时。授课内容宜选择第1~7章,适宜作为专业拓展课和课程设计。
本书以实例为主线,讲解为辅,适合工程技术人员。如果自学本书,需要有一台高档点的计算机和一套ARM920T实验板,需要安装PDF阅读器和EWARM软件,在学习本书的过程中,必须结合书中提到的资料同步学习,同时要反复调试程序和理解程序的运行过程,才能学好本书,这可以理解为一种现代式的看书方法。如果单纯是通过浏览本书内容是无法学好本书的。
本书不是自成体系的,作者编写的《ARM原理与C程序设计》(2009年西电出版社)是本书的基础,同时学习过程中要参考学习µC/OS-II V2.86的文档资料,邵贝贝译的《嵌入式实时操作系统µC/OS-II(第2版)》,以及作者可能会出版的《µC/OS-II原理与面向任务程序设计》一书。
事实上,本书的起点稍高,建议读者有一些C程序设计和单片机技术的基础。
        本书的特色
本书的特色在于实例丰富且完整,而且读者可以通过Email:zhnyong@21cn.com或QQ:493815991和作者联系索取源代码,但是,作者强烈建议读者自行输入代码并进行调试以提高学习效率。尽管书中使用的硬件平台为博创UP-Star实验板(嵌入式工程师认证考试指定平台,第一章至第七章)、博创UP-CUP2410实验箱(作者上课用的实验设备,第八章)和天嵌TQ2440开发板(作者做项目用的平台,第九章),但是书中的程序几乎不用修改或略作修改就可以应用在其他ARM平台上。除第一章实例借助集成开发环境Borland C++ 4.51外,其余全部实例工程均基于上海爱亚软件技术咨询有限公司提供的正版软件IAR Embedded Workbench for ARM V5.30.1,简称为EWARM。
本书与已经出版的《ARM原理与C程序设计》、《Windows CE应用程序设计》以及将要出版的《µC/OS-II原理与面向任务程序设计》同属于嵌入式系统设计与开发系列丛书,作者还拟近期出版基于单片机和DSP方面的µC/OS-II著作,以进一步完善该系列丛书。
        本书的平台赞助商
作者的每本书都有平台赞助商,事实上,没有平台赞助商,很难写出这类针对性和工程性都很强的书来,而大学里面关于专业拓展课的要求也是工程性强,这正好也是这些赞助商大学计划的一部分。
本书的平台赞助商为北京博创科技、广州天嵌科技和上海爱亚软件,在此表示诚挚的感谢。作者还要感谢那些阅读了我们的书并反馈了宝贵意见的读者,这些意见对于作者编写新书和修订再版有实质性的帮助。由于作者水平有限,本书中仍难免有错误纰漏之处,敬请同行专家和热情读者来信批评指正。
最后,感谢西安电子科技大学出版社李惠萍编辑为本书出版所做的细致工作。
        改错声明
    由于《ARM原理与C程序设计》一书还没有再版,故在此处更正其的二处严重错误:其一为第5.4.1节关于EINT5的描述是错误的;其二为第6.2节中关于重定位代码的写法有一些问题。刚好这二处错误在本书程序中更正了过来,这二处错误是2009年5月博创科技工程师王举提出来的,在此表示感谢。
        关于读者来信
在出版作者的第一本书时,导师陈天麒先生曾为作者全文修改并指出留下联系方式的委婉形式,后来正如先生所料,书出版后有几千封来信;最近的二本书也导致了同样的问题。因此,作者申请了一个网站http://a.oot.cn/zhnyong/,本书的代码都放在上面了。如果读者单纯为了索取代码,请直接到网站上下载。如果来信指正错误,请用表格,并精确到某页的某行。尽管作者没有足够多的时间回复每一封信,但是无论如何,都认真地阅读了所有读者的来信,分享了和分享着您读书的乐趣,并感谢您购买了作者的书。
        免责声明
本书内容仅用于教学研究用,书中引用的相关内容的知识产权归相关公司所有,作者保留其余内容的所有权利。禁止任何单位或个人摘录本书内容出版发行,严禁依据本书出版实验教程。

    目录如下:
目  录
第一章  认识µC/OS-II        1
1.1  准备工作        1
1.2  BC4.51和实例一        2
1.3  实例二        10
1.4  µC/OS-II文件与函数        14
1.4.1  µC/OS-II文件关联        15
1.4.2  µC/OS-II函数        16
1.5  UP-Star硬件原理图        25
1.6  本章小结        30
第二章  EWARM使用方法与芯片级程序        31
2.1  EWARM和ARM芯片级实例        31
2.1.1  EWARM开发环境和实例一        31
2.1.2  实例一工程源码        50
2.2  定时器中断与实例二        59
2.2.1  S3C2410中断源        59
2.2.2  定时器4中断        61
2.2.3  实例ex2_2        66
2.3  串口通信与实例三        71
2.3.1  串口通信方法        72
2.3.2  实例ex2_3        74
2.4  本章小结        81
第三章  将µC/OS-II移植到UP-Star实验板上        82
3.1  µC/OS-II LED实例        82
3.1.1  实例ex3_1        83
3.1.2  实例ex3_1注解        100
3.2  µC/OS-II移植        101
3.2.1  os_cpu.h文件        103
3.2.2  os_cpu_c.c文件        105
3.2.3  os_cpu_a.asm文件        108
3.2.4  bsp.c文件        109
3.3  µC/OS-II串口通信实例        110
3.3.1  实例ex3_2        110
3.3.2  实例ex3_2调试与运行        117
3.4  本章小结        119
第四章  µC/OS-II内核与面向任务程序设计        120
4.1  µC/OS-II内核OS_CORE.C        120
4.1.1  任务控制块        122
4.1.2  事件控制块        124
4.1.3  就绪表        125
4.1.4  空闲任务和统计任务        128
4.1.5  时钟节拍        129
4.1.6  µC/OS-II初始化        130
4.2  任务OS_TASK.C        132
4.2.1  工程ex4_1        132
4.2.2  主程序app.c        136
4.2.3  任务程序appfun.c        137
4.2.4  工程ex4_2        144
4.3  时间OS_TIME.C        148
4.4  本章小结        150
第五章  任务协作与通信        151
5.1 信号量OS_SEM.C        151
5.1.1  工程ex5_1        151
5.1.2  工程ex5_1代码与注解        153
5.2  互斥型信号量OS_MUTEX.C        155
5.2.1  工程ex5_2        156
5.2.2  工程ex5_2代码与注解        158
5.3  消息邮箱OS_MBOX.C        162
5.3.1  工程ex5_3        162
5.3.2  工程ex5_3功能注解        163
5.4  消息队列OS_Q.C        168
5.4.1  工程ex5_4        168
5.4.2  工程ex5_4功能注解        170
5.5  事件标志OS_FLAG.C        173
5.5.1  工程ex5_5        174
5.5.2  工程ex5_5功能注解        176
5.6  多事件请求处理        179
5.6.1  工程ex5_6        179
5.6.2  工程ex5_6功能注解        181
5.7  µC/OS-II组件配置OS_CFG.H        184
5.8  本章小结        187
第六章  中断与µC/OS-II定时器        188
6.1  外部中断处理        188
6.1.1  外部中断实例        188
6.1.2  工程ex6_1注解        189
6.2  定时器OS_TMR.C        204
6.2.1  定时器实例        205
6.2.2  工程ex6_2注解        207
6.3  本章小结        212
第七章  动态内存配置与Bootloader        214
7.1  动态存储OS_MEM.C        214
7.1.1  内存分区实例        214
7.1.2  工程ex7_1注解        216
7.2  Bootloader设计        219
7.2.1  读写Flash工程        219
7.2.2  用于自举的工程ex7_3        226
7.2.3  目标代码转化为C头文件flash.h        237
7.2.4  Bootloader工程ex7_4        241
7.2.5  H-JTAG下载方式        243
7.3  本章小结        247
第八章  博创UP-CUP2410移植与实例        248
8.1  准备工作        248
8.2  UP-CUP2410工程实例        248
8.2.1  工程ex8_1        249
8.2.2  工程ex8_1代码与注解        250
8.3  本章小结        264
第九章  天嵌TQ2440移植与实例        265
9.1  准备工作        265
9.2  TQ2440工程实例        265
9.3  Bootloader        291
9.4  本章小结        303
附录一  第2.1节实例一的MAP表文件ex2_1.map内容        304
附录二  TQ2440实验板K9F1208代码下载工程        309
freewing 发表于 2010-3-12 15:13:03 | 显示全部楼层
已经出版了哦,   uC/OS-II原理与ARM应用程序设计》第九章介绍了TQ2440下uC/OS-II的移植和应用程序设计,Bootloader设计等。  顶起来。
xuehui869 发表于 2010-3-16 16:05:38 | 显示全部楼层
可以把这一章公开出来吗
yh1988 发表于 2010-3-19 09:49:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
nongfuxu 发表于 2010-4-22 11:19:31 | 显示全部楼层
本帖最后由 nongfuxu 于 2010-4-22 11:30 编辑

版主,TQ2440开发板带UCOS II例子程序吗?
我打算购买它用于设备的界面开发,不干其它的,版主不要笑噢.只因为2440与2410软件开发差不多,而2410比那个LPC2478 ARM7还要便宜.
现在市场上价格低又支持TFF-LCD屏的芯片太少了.
用WINCE // LINUX 做简单TFF-LCD屏显示界面平台,编程量太大了.不知道大家有无同感.
nongfuxu 发表于 2010-4-26 14:41:06 | 显示全部楼层
看样子喜欢在ARM9上跑uc/os的人太少了,是否ARM9上跑uc/os小儿科了,呵呵没有发生共振现象嘛
bayji 发表于 2010-5-15 18:09:37 | 显示全部楼层
好东西 支持个
guoyin 发表于 2010-5-16 21:00:19 | 显示全部楼层
好像没有PDF格式的,不过好书还是建议买纸质的!
snowboy521 发表于 2010-6-23 09:49:00 | 显示全部楼层
版主有PDF格式的么
blueliuyun 发表于 2010-7-14 10:07:55 | 显示全部楼层
好书 不过小弟囊中羞涩啊 如果能公开第九章的PDF就太好了 :hug:
iwillbeback008 发表于 2010-8-23 16:55:54 | 显示全部楼层
好东西 支持个
ou513 发表于 2010-10-23 15:36:11 | 显示全部楼层
很期待出PDF文档
wsm123 发表于 2010-10-24 09:16:38 | 显示全部楼层
我想买,但没看到这本书啊
鬼鬼一哈 发表于 2010-10-24 17:31:53 | 显示全部楼层
哪里下载呢》?
北国孤月 发表于 2010-12-30 21:27:40 | 显示全部楼层
12# ou513


支持一下《西安电子科技大学》吗!呵呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 04:52 , Processed in 1.046881 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表