网上购物 货比三家
您现在的位置:快乐比价网 > 图书 > 计算机与网络 > 计算机/网络 > 商品详情

ARM嵌入式系统开发:软件设计与优化

分享到:
ARM嵌入式系统开发:软件设计与优化

最 低 价:¥51.80

定 价:¥75.00

作 者:(美)Andrew Sloss, Dominic Symes, Chris Wright

出 版 社:北京航空航天大学出版社

出版时间:2005 年5月

I S B N:7810776525

商品详情

编辑推荐

从事ARM嵌入式系统软件开发的每一位工程师的桌上都应摆着这本书。对于初学者,它是一本详尽,透彻的使用指南,对于ARM专家,它则是一本有益的参考书!

内容简介

本书从软件设计的角度,全面、系统地介绍了arm处理器的基本体系结构和软件设计与优化方法。内容包括:arm处理器基础;arm/thumb指令集;c语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于arm的dsp;异常与中断处理;固件与嵌入式os;cache与存储器管理;armv6体系结构的特点等。全书内容完整,针对各种不同的arm内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的armv4/v5/thumb指令的功能、编码、周期定时以及汇编参考。
  本书适于从事arm嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到arm平台上去的专业技术人员使用,要求对arm处理器有一定的了解,并有c语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。
  本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。
  本书从开发者的角度,侧重于软件方面,全面描述了arm内核的操作。它不仅示范了如何用c语言和汇编语言编写高效的arm软件,还说明了如何优化代码。本书中的所有范例程序都可以集成到商用产品中,或者作为模板,以加速软件开发。
  本书涵盖了arm和thumb指令集、intel的xscale处理器,概括了arm体系结构的不同版本之间的差异,示范了如何实现dsp算法,解释了异常和中断处理,描述了围绕arm内核的cache技术,以及最有效的存储器管理技术。
  最后一章介绍了armv6体系结构的特征和arm未来的发展,以及对指令集所做的最新改进,这些改进增强了arm体系结构的dsp和多媒体处理能力。
  本书特色
  ●本书从系统和软件的角度来描述arm内核,这是与其它书的显著差别。
  ●作者结合了丰富的arm软件工程经验和arm开发者所需要的广泛、透彻的知识。
  ●书中提供了许多实用的可运行代码范例,并作了详尽的解释,可以从出版商的网站下载:http://www.mkp.com/companions/1558608745。
  ●包含了一个简单的嵌入式操作系统。

作者简介

Abdrew N.Sloss
于1992年获得Herefordshire大学(英国)计算机科学学土学位,英国计算机协会认证注册工程师(C.Eng,MBCS)。他已在计算机行业工作了16年,从1987年开始参与有关ARM处理器的研发,在ARM处理器上开发了众多领域的应用项目,积累了丰富的经验。他为Emerald出版集团(英国)设计了首个能够在ARM2和ARM3处理器上运行的针对中文和埃及象形文字的编辑系统。他在ARM公司工作了6年多,目前是ARM在美国加州Los Gatos的技术销售工程师,负责为开发新产品的公司提供建议和支持。
Dominic .. << 查看详细

目录

第1章 基于arm的嵌入式系统1
1.1 risc设计思想2
1.2 arm设计思想3
1.3 嵌入式系统的硬件5
1.3.1 arm总线技术6
1.3.2 amba总线协议6
1.3.3 存储器7
1.3.4 外设9
1.4 嵌入式系统的软件10
1.4.1 初始化(启动)代码10
1.4.2 操作系统11
1.4.3 应用程序12
1.5 总结12
第2章 arm处理器基础1
2.1 寄存器16
2.2 当前程序状态寄存器17
2.2.1 处理器模式18
2.2.2 分组寄存器18
2.2.3 状态和指令集21
2.2.4 中断屏蔽22
.2.2.5 条件标志22
2.2.6 条件执行24
2.3 流水线24
2.4 异常、中断及向量表27
2.5 内核扩展28
2.5.1 cache和紧耦合存储器29
2.5.2 存储管理30
2.5.3 协处理器31
2.6 体系结构的不同版本31
2.6.1 命名规则32
2.6.2 体系结构的发展33
2.7 arm处理器系列34
2.7.1 arm7系列35
2.7.2 arm9系列36
2.7.3 arm10系列37
2.7.4 arm11系列37
2.7.5 专用处理器37
2.8 总结38
第3章 arm指令集1
3.1 数据处理指令42
3.1.1 move指令42
3.1.2 桶形移位器43
3.1.3 算术指令46
3.1.4 算术指令使用桶形移位器47
3.1.5 逻辑指令48
3.1.6 比较指令49
3.1.7 乘法指令50
3.2 分支指令51
3.3 loadstore指令53
3.3.1 单寄存器传送指令53
3.3.2 单寄存器loadstore指令的寻址方式54
3.3.3 多寄存器传送指令57
3.3.4 交换指令65
3.4 软件中断指令66
3.5 程序状态寄存器指令68
3.5.1 协处理器指令69
3.5.2 协处理器15(cp15)指令语法70
3.6 常量的装载71
3.7 armv5e扩展72
3.7.1 零计数指令73
3.7.2 饱和算术指令73
3.7.3 armv5e乘法指令74
3.8 条件执行75
3.9 总结77
第4章 thumb指令集1
4.1 thumb寄存器的使用81
4.2 arm-thumb交互82
4.3 其它分支指令84
4.4 数据处理指令84
4.5 单寄存器load-store指令87
4.6 多寄存器load-store指令89
4.7 堆栈指令90
4.8 软件中断指令91
4.9 总结92
第5章 高效的c编程1
5.1 c编译器及其优化概述94
5.2 基本的c数据类型96
5.2.1 局部变量类型97
5.2.2 函数参数类型101
5.2.3 有符号数与无符号数103
5.3 c循环结构104
5.3.1 固定次数的循环104
5.3.2 不定次数的循环107
5.3.3 循环展开108
5.4 寄存器分配111
5.5 函数调用113
5.6 指针别名117
5.7 结构体安排120
5.8 位域124
5.9 边界不对齐数据和字节排列方式(大/小端)127
5.10 除法131
5.10.1 带余数的无符号重复除法133
5.10.2 把除转换为乘133
5.10.3 除数是常数的无符号除法136
5.10.4 除数是常数的有符号除法137
5.11 浮点运算140
5.12 内联函数和内嵌汇编140
5.13 移植问题144
5.14 总结145
第6章 arm汇编与优化1
6.1 编写汇编代码148
6.2 性能分析和周期计数154
6.3 指令调整154
6.4 寄存器分配162
6.4.1 分配变量给寄存器163
6.4.2 使用超过14个的局部变量166
6.4.3 最大限度地使用寄存器168
6.5 条件执行172
6.6 循环结构174
6.6.1 减计数循环174
6.6.2 展开计数循环175
6.6.3 多层嵌套循环178
6.6.4 其它计数循环181
6.7 位操作182
6.7.1 固定宽度的位域打包和解包182
6.7.2 可变宽度编码的位流打包183
6.7.3 可变宽度编码的位流解包186
6.8 高效的switch188
6.8.1 在范围0≤x[n的switch189
6.8.2 基于通用变量x的switch191
6.9 边界不对齐数据的处理192
6.10 总结196
第7章 基本运算优化1
7.1 双精度整数乘法198
7.1.1 长整型乘法199
7.1.2 128位结果的无符号64位乘法200
7.1.3 128位结果的有符号64位整数乘法201
7.2 整数规格化和前导0计数203
7.2.1 armv5及以上体系结构的整数规格化203
7.2.2 在armv4体系结构上的规格化204
7.2.3 后缀0计数206
7.3 除法208
7.3.1 通过试探减法实现无符号数除法208
7.3.2 无符号整数的newtonraphson除法215
7.3.3 无符号小数newtonraphson除法221
7.3.4 有符号数除法228
7.4 平方根229
7.4.1 通过试探减法计算平方根229
7.4.2 使用newtonraphson迭代计算平方根231
7.5 超越函数:log,exp,sin,cos233
7.5.1 以2为底的对数运算233
7.5.2 2的乘幂235
7.5.3 三角函数236
7.6 字节顺序反转和位操作239
7.6.1 字节顺序反转240
7.6.2 位变换240
7.6.3‘1’位计数243
7.7 饱和及舍入运算244
7.7.1 饱和32位数到16位245
7.7.2 饱和左移245
7.7.3 舍入右移245
7.7.4 饱和的32位加减法245
7.7.5 饱和绝对值246
7.8 随机数产生246
7.9 总结247
第8章 数字信号处理1
8.1 表示一个数字信号250
8.1.1 选择一种表示方法250
8.1.2 操作以定点格式存储的值253
8.1.3 定点信号的加法和减法254
8.1.4 定点信号的乘法255
8.1.5 定点信号的除法256
8.1.6 定点信号的平方根256
8.1.7 小结:数字信号的表示256
8.2 基于arm的dsp介绍258
8.2.1 arm7tdmi的dsp259
8.2.2 arm9tdmi的dsp260
8.2.3 strongarm的dsp262
8.2.4 arm9e的dsp264
8.2.5 arm10e的dsp265
8.2.6 intel xscale的dsp267
8.3 fir滤波器269
8.4 iir滤波284
8.5 离散傅里叶变换292
8.6 总结304
第9章 异常和中断处理1
9.1 异常处理307
9.1.1 arm处理器模式及异常307
9.1.2 向量表309
9.1.3 异常优先级310
9.1.4 链接寄存器偏移311
9.2 中断313
9.2.1 分配中断313
9.2.2 中断延迟314
9.2.3 irq与fiq异常315
9.2.4 基本的中断堆栈设计与实现317
9.3 中断处理方法321
9.3.1 非嵌套中断处理321
9.3.2 嵌套中断处理324
9.3.3 可重入中断处理330
9.3.4 优先级简单中断处理334
9.3.5 优先级标准中断处理340
9.3.6 优先级直接中断处理344
9.3.7 优先级分组中断处理347
9.3.8 基于vic pl190的中断服务例程351
9.4 总结352
第10章 固件1
10.1 固件和引导装载程序354
10.1.1 arm firmware suite357
10.1.2 red hat redboot358
10.2 例子:sandstone358
10.2.1 sandstone的目录结构359
10.2.2 sandstone的代码结构359
10.3 总结364
第11章 嵌入式操作系统1
11.1 基本模块366
11.2 实例:简单小型操作系统slos367
11.2.1 slos目录结构368
11.2.2 初始化369
11.2.3 存储模型373
11.2.4 中断和异常处理374
11.2.5 调度程序378
11.2.6 上下文切换380
11.2.7 设备驱动程序框架382
11.3 总结383
第12章 高速缓冲存储器cache1
12.1 存储层次和cache387
12.2 cache结构390
12.2.1 cache存储器的基本结构391
12.2.2 cache控制器的基本操作392
12.2.3 cache与主存的关系392
12.2.4 组相联395
12.2.5 写缓冲器399
12.2.6 cache效率的衡量399
12.3 cache策略400
12.3.1 写策略——直写法或回写法400
12.3.2 cache行替换策略401
12.3.3 cache失效时的分配策略404
12.4 协处理器15与cache405
12.5 清除和清理cache406
12.5.1 清除cache407
12.5.2 清理cache410
12.5.3 清理dcache410
12.5.4 使用路和组索引寻址清理d-cache414
12.5.5 使用test-clean命令清理d-cache417
12.5.6 在intel xscale sa110和intel strongarm内核中清理d-cache418
12.5.7 清理和清除部分cache421
12.6 cache锁定426
12.6.1 在cache中锁定代码和数据427
12.6.2 通过增加路索引来锁定cache428
12.6.3 使用锁定位锁定cache433
12.6.4 在intel xscale sa110中锁定cache行437
12.7 cache与软件性能440
12.8 总结441
第13章 存储器保护单元mpu1
13.1 受保护的区域446
13.1.1 重叠区域447
13.1.2 背景区域448
13.2 初始化mpu,cache和写缓冲器449
13.2.1 定义区域的大小和位置450
13.2.2 访问权限453
13.2.3 设置区域的cache和写缓冲器属性457
13.2.4 使能区域和mpu460
13.3 mpu系统示例461
13.3.1 系统需求462
13.3.2 使用存储器映射分配区域463
13.3.3 初始化mpu464
13.3.4 初始化和配置区域465
13.3.5 完成初始化mpu468
13.3.6 受保护系统的上下文切换469
13.3.7 mpuslos470
13.4 总结470
第14章 存储管理单元1
14.1 从mpu到mmu474
14.2 虚存如何工作474
14.2.1 使用页定义区域476
14.2.2 多任务和mmu478
14.2.3 虚存系统的存储器组织480
14.3 arm mmu的详情482
14.4 页表482
14.4.1 一级页表项483
14.4.2 l1转换表基地址484
14.4.3 二级页表项485
14.4.4 为嵌入式系统选择合适的页大小486
14.5 转换旁路缓冲器487
14.5.1 单步页表搜索487
14.5.2 2步页表搜索488
14.5.3 tlb操作489
14.5.4 tlb锁定490
14.6 域和存储器访问权限491
14.7 cache和写缓冲器493
14.8 协处理器cp15和mmu配置494
14.9 快速上下文切换扩展496
14.9.1 fcse如何使用页表和域497
14.9.2 使用fcse的提示499
14.10 示例:一个简单的虚拟存储系统500
14.10.1 第1步:定义固定的系统软件区域501
14.10.2 第2步:为每个任务定义虚存映射502
14.10.3 第3步:在物理存储器中定位区域503
14.10.4 第4步:定义和定位页表503
14.10.5 第5步:定义页表和区域数据结构506
14.10.6 第6步:初始化mmu、cache和写缓冲器509
14.10.7 第7步:建立上下文切换程序524
14.11 mmuslos示例525
14.12 总结525
第15章 arm体系结构的发展1
15.1 armv6对高级dsp和simd的支持528
15.1.1 simd算法操作529
15.1.2 打包指令532
15.1.3 复数运算支持533
15.1.4 饱和指令534
15.1.5 绝对差值求和指令534
15.1.6 双16位乘法指令535
15.1.7 高位字乘法536
15.1.8 密码算法乘法扩展537
15.2 armv6增加的系统和多处理器支持538
15.2.1 混合大小端支持538
15.2.2 异常处理538
15.2.3 多处理同步原语(multiprocessing synchronization primitives)540
15.3 armv6的实现541
15.4 armv6之后的未来技术543
15.4.1 trustzone543
15.4.2 thumb2543
15.5 总结544
附录aarm和thumb汇编指令1
a.1 如何使用这篇附录2
a.2 语法548
a.2.1 可选表达式548
a.2.2 寄存器548
a.2.3 立即数548
a.2.4 条件和标志549
a.2.5 移位操作550
a.3 按字母顺序列出arm和thumb指令551
a.4 arm汇编速查597
a.4.1 arm汇编变量598
a.4.2 arm汇编标注599
a.4.3 arm汇编表达式600
a.4.4 arm汇编保留字601
a.5 gnu汇编快速查询608
附录barm和thumb指令编码612
b.1 arm指令集编码548
b.2 thumb指令集编码618
b.3 程序状态寄存器620
附录c处理器与体系结构622
c.1 arm命名规则548
c.2 内核与体系结构624
附录d指令周期定时626d.1指令周期定时表的使用627
d.2 arm7tdmi指令周期定时628
d.3 arm9tdmi指令周期定时630
d.4 strongarm1 指令周期定时631
d.5 arm9e指令周期定时632
d.6 arm10e指令周期定时634
d.7 intel xscale指令周期定时636
d.8 arm11指令周期定时637
附录e建议的参考读物642
e.1 arm参考548
e.2 算法参考643
e.3 存储器管理与cache体系结构(硬件综述与参考)643
e.4 操作系统参考644

商品评论(0条)

暂无评论!

您的浏览历史

loading 内容加载中,请稍后...