种豆资源网

当前位置:首页 > 经验 / 正文

嵌入式软体设计之思想与方法

(2021-04-29 22:32:27) 经验
嵌入式软体设计之思想与方法

嵌入式软体设计之思想与方法

《嵌入式软体设计之思想与方法》从教学的角度出发,全面讨论了嵌入式软体设计的思想与方法。在编排上循序渐进,从基础準备,到驱动模型,再深入到整个系统及系统的构建。在讲解上通过建立模型来帮助读者系统掌握嵌入式软体设计的普遍原理与编程接口。

基本介绍

  • 书名:嵌入式软体设计之思想与方法
  • 作者:张邦术
  • ISBN:9787811244205
  • 类别:软体设计
  • 定价:32元
  • 出版社:北京航空航天大学出版社
  • 出版时间:2009年
  • 开本:16开

内容简介

本书内容包括:高效、稳定和规範的程式基础,多任务环境,I/O系统的内部结构,驱动模型,BSP设计要素,嵌入式软体设计的经验技巧;在硬体基础方面讨论了汇流排与设备的模型,基于MIPS和ARMSoC在多个系统平台VxWorks,Linux及WinCE下的系统资源的操控。
《嵌入式软体设计之思想与方法》可作为在校学生学习嵌入式软体设计原理的教学参考用书,也可作为嵌入式软体开发工程人员深入掌握系统软体设计的指南,以及嵌入式软体培训的参考教材。

作者简介

张邦术,1999年毕业于电子科技大学,先后在联想、泰鼎、微开和泰克公司从事近10年嵌入式软体及系统软体的研发工作,在VxWorks,Linux和WinCE系统平台上的开发,以及在音/视频、移动媒体、测试仪器等领域具有丰富的设计经验,在软体团队的组建、培训和项目管理等方面积累了大量经验。

目录

第一篇基础方法篇
第1章程式基础
1.1设计高性能程式的必要性3
1.1.2嵌入式软体的设计範畴3
1.1.3嵌入式软体的分层结构6
1.2嵌入式软体的程式设计要求8
1.2.1代码结果的要求9
1.2.2代码形式的要求10
1.3嵌入式软体开发的基本思路和原则10
1.3.1系统分析,定义接口11
1.3.2函式实现,最佳化算法12
1.3.3清理代码,补充注释14
1.3.4测试修订,完善文档14
1.4程式实例剖析14
1.4.1正确理解栈14
1.4.2记忆体泄漏18
1.4.3消除编译依赖18
1.4.4消除潜在隐患20
1.4.5规範实现範例21
1.4.6性能最佳化23
1.5程式设计其他注意点30
1.5.1谨慎使用“宏”30
1.5.2正确理解预定义宏34
1.5.3避免歧义37
第2章多任务作业系统
2.1板级支持包40
2.2嵌入式作业系统与实时性40
2.2.1嵌入式作业系统41
2.2.2实时作业系统42
2.3多任务概述42
2.3.1进程、执行绪与任务43
2.3.2何时需要多任务44
2.3.3任务状态的转换50
2.3.4进程调度与调试算法51
2.3.5任务相关的API51
2.4进程间共享代码与可重入性53
2.4.1共享代码53
2.4.2共享代码可重入性问题53
2.4.3使用私有数据55
2.4.4使用临界区数据57
2.5执行绪间通信57
2.5.1共享数据结构57
2.5.2互斥59
2.5.3信号量60
2.5.4临界区与信号量的实现实例63
第3章硬体基础
3.1ARM74
3.1.1ARM编程模式75
3.1.2ARM指令概述78
3.1.3ARM异常及处理80
3.2MIPS86
3.2.1MIPS编程模式87
3.2.2MIPS指令概述90
3.2.3MIPS中断与异常95
3.3接口基础98
3.3.1汇流排概述99
3.3.2I2C汇流排105
3.3.3PCI汇流排108
3.3.4设备模型115
3.3.5一个IDE控制器设备实例117第二篇驱动模型篇
第4章驱动的通用模型
4.1设备驱动的作用121
4.2驱动类型123
4.2.1Linux中的驱动类型123
4.2.2WinCE中的驱动类型125
4.2.3VxWorks中的驱动类型125
4.3设备驱动的通用模型126
4.3.1模组部分的驱动126
4.3.2设备的驱动例程127
第5章VxWorks的驱动模型
5.1VxWorks的I/O系统131
5.1.1I/O系统概述131
5.1.2档案名称与设备133
5.1.3基本I/O134
5.1.4缓冲I/O136
5.1.5格式化I/O136
5.2VxWorks的驱动及其内部结构137
5.2.1驱动的安装、驱动表138
5.2.2设备的创建、设备鍊表140
5.2.3档案的打开、档案描述符表142
5.2.4档案的读、写、控制和关闭操作143
第6章Linux的驱动模型
6.1Linux的驱动载入方式145
6.1.1核心驱动模组与模组化驱动145
6.1.2模组化驱动的载入与卸载146
6.2Linux的驱动架构147
6.2.1一个最简单的核心驱动148
6.2.2一个最简单的模组驱动151
6.2.3Linux驱动中注册驱动153
6.2.4Linux系统中的设备档案154
6.3Linux字元型设备驱动155
6.3.1驱动的载入与清理155
6.3.2中断的申请与释放156
第7章WinCE的驱动模型
7.1WinCE驱动类型158
7.2设备管理器及其驱动模型159第三篇BSP/OAL篇
第8章BSP的基本概念
8.1BSP与驱动161
8.2BSP开发的目标任务162
第9章BSP的设计要素
9.1中断处理163
9.1.1物理中断号与逻辑中断号163
9.1.2CPU中断与中断控制器扩展164
9.1.3中断源的查找165
9.1.4中断处理执行绪166
9.2CPU异常166
9.2.1异常向量表167
9.2.2向量表的安装173
9.2.3异常处理代码实例177
9.3硬体I/O的访问188
9.3.1避免使用绝对物理地址188
9.3.2记忆体一致性问题192
9.3.3I/O访问的刷新198
第10章Linux的启动过程
10.1Linux的启动流程199
10.2Linux的启动过程简介201
10.2.1_stext函式201
10.2.2start_kernel函式203
10.2.3setup_arch函式204
10.2.4trap_init函式204
10.2.5init_IRQ函式205
10.2.6sched_init函式205
10.2.7do_initcalls函式205
10.2.8init函式206
10.2.9init程式207
第11章WinCE的设计
11.1WinCEOS平台开发简介209
11.1.1WinCE平台的开发流程209
11.1.2WinCE核心结构211
11.1.3WinCE设计中的一些名词术语212
11.2WinCEBSP开发213
11.2.1启动装载器213
11.2.2OAL开发215
11.2.3WinCE配置档案219
11.3WinCE设备驱动的开发流程221
11.3.1设备驱动原始码221
11.3.2修改配置档案222
11.3.3向OS平台注入驱动223第四篇扩展篇
第12章理解程式的内部结构
12.1x86彙编及其程式结构226
12.1.1x86程式段定义227
12.1.2关联段暂存器、确定段的种类230
12.1.3段组伪指令230
12.2嵌入式系统中的程式结构231
12.2.1嵌入式系统中执行程式的映像231
12.2.2连结器与命令脚本236
12.3ELF档案格式241
12.3.1ELF档案格式概述241
12.3.2ELF档案格式分析器248
第13章嵌入式系统的设计思想
13.1直截了当的思想262
13.2层次化的思想267
13.3循序渐进的思想269
13.4实践是最好的老师269
13.5团队协作意识270
13.6大胆尝试与积极创新270
结束语272
参考文献273
插图索引
图11嵌入式软体的分层结构7
图21VxWorks中的任务状态转换图50
图22驱动中的可重入性问题154
图23驱动中的可重入性问题256
图24使用共享数据区访问临界区的例子58
图31ARM程式状态暂存器格式77
图32MIPSCPU暂存器88
图33MIPSFPU暂存器90
图34I2C数据位的传输106
图35I2C起始条件和停止条件106
图36I2C汇流排数据传输时序图107
图37PCICONFIGADDRESS暂存器格式113
图38PCI类型0配置空间头部114
图39ITE8172IDE控制器框图118
图51驱动在系统中的层次结构132
图52VxWorksI/O系统的调用关係133
图53VxWorks驱动安装140
图54VxWorks设备添加141
图55VxWorks档案打开142
图56档案读操作的I/O控制流程143
图61Linux驱动与作业系统核心之间的关係147
图71WinCE驱动内部框图158
图72WinCE系统中应用程式与设备驱动的互动160
图91驱动程式中完整的中断处理架构164
图92IT8172G中断控制器内部框图177
图101Linux启动流程框图200
图102Linux启动执行过程细节201
图111WinCEOS开发的工作流程210
图112WinCE的内部层次结构211
图113WinCEBSP框图214
图121x86彙编段结构228
图122宏彙编中的段连结映像230
图123x86段组定义231
图124节的简单格式237
图125节的完整定义239
图126口(ENTRY)的定义240
图127ELF目标档案格式242
插表索引
表31ARM暂存器组织结构75
表32ARM状态暂存器的模式位78
表33ARM异常处理的入口地址81
表34ARM异常的优先权86
表35MIPS系统控制暂存器CP088
表36MIPS32/MIPS64装入/存储指令所支持的数据类型91
表37MIPS对齐的装入存储指令91
表38MIPS非对齐的装入存储指令91
表39MIPS原子更新的装入存储指令92
表310协处理器装入存储指令92
表311MIPS立即数操作的算术指令92
表312MIPS三运算元算术指令92
表313MIPS二运算元算术指令93
表314MIPS移位指令93
表315MIPS乘除法指令94
表316MIPS256M区域内无条件跳转指令95
表317MIPSPC相对的条件转移指令95
表318MIPS的中断、状态及缘由暂存器的映射关係96
表319MIPS异常向量的基地址97
表320MIPS异常向量的偏移地址97
表321I2C汇流排术语定义105
表322PCI汇流排命令110
表323ITE8172IDE控制器的PCI配置暂存器119
表324ITE8172IDE汇流排主设备IDE输入/输出暂存器119
表325IDE命令暂存器120
表111WinCE常见的映像配置档案219
表121字元串表简单例子246
表122对字元串表索引所得到的字元串246
……

内容节选

第一篇 基础方法篇
本篇就笔者的理解来讨论一些嵌入式软体设计所必备的基础技能。如果读者急于了解嵌入式系统软体设计的方法,可以直接跳到第二篇“驱动模型篇”。借用一些老套的话——“万丈高楼从地起”“磨刀不误砍柴功”,打好扎实的基础是非常重要的。在我看来,对嵌入式软体系统的基本要求是高效和稳定,它要求软体开发人员设计出的程式逻辑严密,层次清楚,效率最佳化,品质高精;与此同时,软体需要与硬体系统打交道,需要处理複杂的套用问题,涉及到的专业面广泛且深入,由此软体开发人员还需要掌握很多複杂的专业知识。所以,基础与方法对于嵌入式软体的设计至关重要。
本书虽然不求将各种专业知识与技能讲解得全面透彻,但希望笔者多年积累的一些点滴经验,能够给读者带来开指路的功效。
1.心理準备
如上所述,嵌入式软体的设计是一项极其艰辛複杂的程式设计工作,它需要有丰富、扎实的专业知识,还需要有艰苦卓绝、锲而不捨、敢于拼搏和敢于挑战的精神。在最开始着手研究嵌入式软体开发时,就需要树立脚踏实地的学习和工作作风,在设计工作中要实事求是,不能臆想,不能武断,不能自大。
另外,也要去除心目中的畏难情绪和神秘观念。只要认真学习、深入钻研,就可以设计出性能优秀的嵌入式产品;只要思路清晰、方法正确,也可以创造奇蹟。
嵌入式软体系统既是软体设计,又是艺术设计。它要求不但要实现产品的功能,还要设计出友好、易用、能够一眼就吸引住用户眼球的界面。所以嵌入式软体不但要求内部结构精细,还要求外部界面设计精细,每一个细微角落都要体现出设计者的独具匠心!
诚然,嵌入式软体设计也是软体设计人员人生的一大乐趣。当一个产品从你手中诞生时;当一个用户津津乐道地使用一个PS2玩一个游戏,或者使用一个手持设备观看一部惊险电影时;当一名工作人员使用办公室的大萤幕进行远程监控,或远程操作一个複杂的机器设备时;如果这些软体系统都是出自于自己的作品,那幺这些岂不是为之振奋的事情?
当大家有了这些心理準备,有了这些远景的乐趣,就会为自己的学习产生巨大潜能和动力。兴趣是攻克难关的先导,希望读者带着强烈的兴趣阅读完本书!
搜索
热门图片
最近更新
随机推荐

Powered By 种豆资源网||