arm体系结构与编程pdf
A. 文字转语音芯片(单片机用)
45Microcontrollers & Embedded Systems2002.12
新器件新技术 NEW PRODUCT & TECH
用EP7211实现传呼信息实时语音合成和播放
■ 郑州解放军信息工程大学 胡泽明 王鹏
摘 要
关键词
阐述在一款集成传呼功能的二合一PDA系统中,使用嵌入式处理器EP7211实现个人传呼信
息的实时语音合成和播放的功能,主要包括字符语音库的建立,字符语音合成算法和Codec
语音中断服务例程等3部分.
PDA G.729 语音库 语音合成
引 言
PDA(Personal Digital Assitant,个人数字助理)
是近年来继寻呼机和移动电话之后,在国内市场迅
速崛起的便携式电子产品.就其扩展意义来讲,它
能够集成移动计算,电话和网络等多种功能.根据
不同的应用需求,它可以管理个人信息,提供名片
存储和日程安排,也可以接收各种寻呼信息(如股
市,天气预报等).如果是集成通信模块,还可以
作为移动电话使用,进行无线网络互联.广义的
PDA包括简单的电子记事本,电子辞典和功能强大
的掌上电脑,它们的主要区别表现在操作系统,存
储能力,运算速度和数据交换能力等方面.
目前国内传统PDA产品经过几年的高速发展
后,市场基本饱和,销售额出现负增长.不过由于
PDA产品的灵活性,有针对性的行业应用作为一个
新亮点,开始为人们所关注.经过行业应用改造后
的PDA产品,已经在国内市场大显身手.文曲星
展现超强的语言翻译能力,比较适合于大学生和语
言翻译者使用;蓝火系列能实时接收股市信息和
专家点评,适合工薪阶层的炒股者.国家信息产业
部已经鼓励PDA产品在交通,警务,保险等领域
的行业应用和推广.
分析市场需求,我们研发了集成传呼功能的,
专门面向铁路交通行业应用的铁路交通信息系统
PDA.本PDA系统除了具备传统PDA的个人名片
管理和辞典检索等功能外,同时提供交通行业应用
的民航航班查询,铁路列车时刻表查询等功能.
本PDA的寻呼系统实现如下功能:能够通过寻
呼对列车时刻表,列车晚点信息,列车剩余票额,
股道信息等行业数据进行动态更新.作为另一个特
色,当接收到个人寻呼时,能够将寻呼内容实时地
转换成语音并播放.
下面重点介绍本PDA系统中使用嵌入式处理
器EP7211实现个人寻呼内容的实时语音转换和播
放.该功能的实现包含前后相关的3个部分:字符
语音库的建立,字符的语音合成算法和Codec语音
中断服务例程.
1实现条件和要求
PDA属于嵌入式应用系统,其同一般PC机有
很大差别.硬件方面,嵌入式处理器基于RISC体
系结构,一般工作频率在几十MHz,甚至更低;系
统内存容量一般在几百KB~几MB之间;一般使用
容量小的ROM或者Flash作为硬盘来存储可执行程
序和数据.软件方面,PDA系统一般有专用的嵌入
式操作系统和软件开发调试移植环境.
个人传呼信息的特点是单条传呼信息长度变化
较大,20~50个字符不等.最为常见的是"请回电
话***";传呼信息涉及到的字符数量较大,字符
语音合成时运算量大,单字符合成后语音数据占用
的存储空间多;需要事先建立字符语音库等.
由于具体硬件环境的限制,传呼信息的特点和
语音合成的要求,该功能能够实现的前提有:语音
库占用的空间小;字符合成时速度要快;采用前台
进行字符语音合成时,以后台中断方式进行合成语
音的播放来保证其实时性和连续性.
2具体实现
下面分别介绍字符语音库的建立,字符语音合成
算法,本PDA系统的框架结构和语音中断服务例程.
2.1建立字符语音库
我们选用G.729语音压缩编码标准来建立语音
库.该标准采用的算法是共轭结构的代数码激励线
462002.12
新器件新技术 NEW PRODUCT & TECH
性预测(CS-ACELP),是基于CELP(码激励线性预
测)编码模型的算法.这种编码规范的严格性使性
能达到或超过了32 Kbps的G.726 ADPCM编码,具
有很高的语音质量;同时,它是在语音信号8 KHz
取样的基础上得到16 bit线性PCM后进行编码的,
压缩后的数据速率仅为8 Kbps,具有相当于8:1的
高压缩率.其算法延迟少于16 ms.由于G.729编解
码器能够实现很高的语音质量和很低的算法延时,
因此被广泛地应用.
字符语音库是一个单字发音语音数据的集合,
各段数据之间相互独立,不具有相关性.语音库包
含了国标一,二级字库中的所有6763个汉字,10个
阿拉伯数字和26个英文字符的标准普通话语音数
据.每个汉字或字符发音时长为0.65 s,采用8 KHz
抽样频率,使用了G.729A语音编码算法对上述的语
音数据进行压缩,压缩后的数据速率为8 Kbps,相
当于具有8:1的高压缩率.在汉字中,同音字占了
相当大的比例,而在语音合成中对于同音字的处理
是没有区别的,故近7000个汉字,我们只存储1123
个不同的发音.经过同音字处理和采用G.729A标准
压缩字符语音数据,则最终建立的语音库文件大小
为729 950字节,完全符合本PDA系统的数据存储
要求;否则,语音库数据量太大,本PDA系统不
能接受!
建立一个语音压缩数据库的具体步骤如下:
◇ 将数字和常用汉字的标准发音独立地录入到
数据文件中,作为基础数据.使用cooledit2000软
件完成语音的录入.
◇ 对于输入数据,按照每帧10 ms(80个样点)
的长度,将A_law语音通过简单换算变成16 bit PCM
数据,作为编码算法的输入.
◇ 按照G.729A算法标准,对数据进行编码.
◇ 将编码后的数据转换为二进制比特流,写
入语音库文件中.压缩后数据速率为8 Kbps,具有
相当于8:1的高压缩率.
用C语言实现这一过程的程序流程如图1所示.
字符语音库的建立是在Windows平台及Visual
C++编程环境下实现的,最终压缩处理后数据量的
大小为729 950字节,每个字符语音数据的大小是
650字节.
2.2语音合成
当收到个人传呼信息时,语音合成程序首先从
指定位置获取传呼信息数据,然后在语音库中查找
每个汉字,阿拉伯数字或者英文字符的发音,重组
一个数据文件.解码程序对该文件进行解码并且输
出原始语音.语音合成流程如图2所示.
语音合成过程首先是当前字符在语音库的定
位.对于10个阿拉伯数字和26个英文字符,将其
放在语音库开头.这些字符的查找比较方便.汉字
是2字节存储,我们依据其区位码来作为语音库中
的定位索引.字符语音库检索结束后的语音压缩数
头文件,全局变量,函数原型的说明
输入语音文件及压缩后的码文件名
初始化编码器,包括滤波器状态的初始
化及语音,激励等缓冲区的初始化
语音文件是否结束
读1帧语音(80点)(A_Law)
转换成16bit线性PCM
将参数码字转成串行码
流,再转成码字codeword
写文件
结束
编码主函数Coder_ld8a()
Y
N
图1 字符语音库的建立流程图
查找语音库,将寻呼文字信
息替换为压缩语音文件
解码器初始化
码文件是否结束
读取1帧数据,并
转换成二进制码流
解码主函数
输出数据变为A_LAW信号
语音播放
结束
Y
N
图2 语音合成流程图
47Microcontrollers & Embedded Systems2002.12
新器件新技术 NEW PRODUCT & TECH
据作为该字符解码过程的输入.
数据解码过程可以分为参数解码和重构信号后
处理2部分.首先要从输入的数据中提取参数符
号,对这些符号解码之后,可以获得相应于10 ms
话音帧的编码器参数.这些参数包括线性预测系
数,自适应码本矢量,固定码本矢量以及它们的增
益.解码之后的参数用来计算重建语音信号.得到
重构语音信号只有通过后处理过程来对该信号进行
放大,包括后向滤波,高通滤波以及按比例因子扩
大,最后得到原始的语音数据.
字符解码器原理如图3所示.
2.3PDA系统的体系结构
PDA系统的硬件体系结构如图4所示.
PDA系统中嵌入式处理器EP7211进行数据处
理,传呼解码芯片接收传呼信息并进行解码, LCD
提供数据输出显示,触摸屏提供用户输入接口,
Flash用来存储应用程序和数据,SRAM为程序运行
提供内存空间,电源电路为嵌入式处理器和外围设
备提供所需要的工作电压.
嵌入式处理器EP7211是Cirrus Logic公司专门为
低成本,超低功耗的嵌入式应用设计的,包含
ARM7TDMI处理器内核和丰富的外围接口.外围接
口有CODEC音频接口,SPI串行A/D接口,单色LCD
接口,DRAM接口,红外接口,2个PWM接口,实
时时钟RTC以及电源检测接口.EP7211的内核电路
工作在2.5 V,而外围电路工作在3.3 V;可根据具
体情况对内核的
时钟进行动态编
程控制,可工作
在18,36,49和74
MHz.另外EP7211
还有3种基本供
电模式:正常操
作(operating),
空闲(idle)和等
待(standby).在
等待模式,主时
钟被关断,整个
CPU及相关外围
(除中断和RTC)
也关断,但可通
过中断或按钮来
唤醒.
系统软件开发平台采用了我们自主开发研制
的,专门面向嵌入式应用系统开发的XGW平台.
XGW开发平台采用消息驱动机制,是C语言开发.
它功能强大,模块化设计,扩展性强,产品升级容
易,总体框架如图5所示.
图5全面反应了XGW开发平台的体系结构,包
括事件消息驱动机制,内存管理,字符和图形显示
输出,图形组件库等.图形组件库中的编辑框,列
表框,按钮等为用户应用程序开发提供了系统应用
编程接口API.不过,XGW平台对于系统硬件的中
断响应没有提供统一的入口和出口,需要开发人员
单独处理.XGW开发平台的消息分为鼠标消息,键
盘消息和定时器消息等3类.
2.4语音中断服务例程
嵌入式处理器EP7211本身提供的外设语音录放
Codec(coder/decoder)芯片可以实现语音的录入和
适应码
向量解码
增益解码
固定码
向量解码
结构激励
MA码增
益预测
11
,GBGA
22
,GBGA
)(nv
间隔延时
p
g^
^
c
g^
11
,CS
22
,CS
)(zP
)(nc
编码序号
LP综合
滤波器
)(nu
后滤波器
)(^ns
高通上标定
)(nfs
LSP解码内插值)(^zALSF
LSP序号
3210
,,,LLLL
每帧
每子帧
210
,,PPP
图3 字符解码原理框图
天线
LCD
触摸屏
时钟,复
位,唤醒射频输入
FlashSRAM电源管理
串行口
红外口
传呼解
码芯片嵌入式
处理器
EP7211
收音设备
语音录放电路
图4 硬件结构
482002.12
新器件新技术 NEW PRODUCT & TECH
播放功能.该模块提供2个独立的16字节长的数据
发送和接收缓冲区(FIFO),其为全双工模式,数
据收发速率是64 kbps.芯片自身提供工作时钟,定
时脉冲以及数据的串/并和并/串转换功能.编程
人员通过设置EP7211相应的控制寄存器使能这些项
功能,则每当数据收发缓冲区半慢或者半空时(8
字节),芯片自身就会产生一次中断信号供外部处
理.理论计算芯片中断速率是1 ms/次.
语音播放中断服务例程主要完成的工作是,当
产生语音中断时,仍然有数据需要播放,则向语音
数据发送缓冲区FIFO中写入指定数据,剩下的工
作由Codec芯片本身来完成.中断服务例程ISR的
伪代码如下(因为具体实现代码没有通用性,故此
处用伪码描述):
void IRQ_Codec_Handler(void)
{
while(检测系统状态寄存器,发现语音芯片数据发送缓
冲区FIFO非满)
{
if(已经播放过的语音数据长度 = 给定的需要播
放的语音数据长度) //结束
{
禁止数据发送缓冲区中断;
复位各相关的全局变量;
程序返回;
}
}
else
{
向语音芯片发送数据缓冲区FIFO写入默认数据
系统调用
通用开
发控件字符输出图形输出
内存管理用户自
定义控件
事件消息驱动
硬件中断
执行
ISR
中断返回
硬件中断
执行
ISR
中断返回
用户级应用程序
图5 XGW平台的软件体系结构
0XFF;
}
}
}3试验结果和分析
由于在设计阶段充分考虑过语音合成算法的
大运算量和系统的实时性要求,故我们在具体实
现的时候也采取了一些措施,比较突出的有:用
ARM汇编语言来实现关键性的函数代码;语音合
成时提高处理器EP7211的工作频率(处理器正常
工作频率是18 MHz);对于一些常用的三角函数计
算,采用查表的方式等来加快程序执行速度.在
PDA样机测试中,单字符合成时间在650 ms左右,
基本上能够满足实际应用需求.数据语音库经过
处理之后,占用了729 560字节也能够满足本PDA
系统的存储要求.
当PDA系统收到1条个人传呼信息时,在语音
库的支持下,立刻启动语音合成算法,逐个进行字
符语音合成.当第1个字符语音合成结束后,立刻
启动语音中断服务例程进行语音播放.这样收到的
个人传呼信息,在前台逐个字符解码时,其后台语
音播放也在进行.根据实际测试参数,基本上满足
了系统的实时性要求.
从一定角度看,单字符650 ms的语音合成时间
基本能够满足实际应用需要,但还是希望能够进一
步减小这个值.这由于我们对ARM处理器的使用
还处在研究阶段.ARM本身提供了16位的Thumb
指令集和32位的ARM指令集,而且两者在某些方
面表现出较大差别.一般来讲,Thumb代码长度是
ARM代码长度的65%,而执行效率要比后者高出
60%.但在某些方面,32位的ARM指令集也会表
现出其优于16位Thumb指令集的强大功能;同时
该处理器系统支持ARM指令集和Thumb指令集混
合编程模式.随着对二者差别和各自优势的深入理
解,结合本系统的硬件体系结构,采用有效的指令
集混合编程模式将会使程序执行效率进一步提高,
从而使实时性得到进一步加强.
参考文献
1Cirrus Logic公司. EP7211数据手册
2马忠梅. ARM嵌入式处理器结构与应用基
础. 北京:北京航空航天大学出版社,2002
3Gibson Jerry D,等. 多媒体数字压缩原理与
标准. 李煜晖等译. 北京:电子工业出版社,2000
B. 嵌入式系统自学
嵌入式系统软件工程 方法实用技术及应用,免费下载
链接:https://pan..com/s/10No3IypKyLg01bV4T9b22w
《嵌入式系统软件工程:基础知识、方法和应用》系统地阐述嵌入式系统软件工程所涉及的过程、方法、内容,以及在典型工业领域中的应用。全书内容分为两大部分:第一部分介绍嵌入式系统软件工程方法论,主要包括嵌入式软件的开发过程(需求工程、软件和系统体系结构、编程和测试等内容),开发和测试中所采用的标准,与安全性相关的软件系统的准入,以及嵌入式软件所涉及的法律问题:第二部分介绍嵌入式系统软件在汽车领域、轨道交通领域、航天领域、医疗器械、工业自动化、通信系统中的应用,在每个应用领域重点介绍具体应用领域的一些特定需求、技术和限制条件,以及它们对于嵌入式系统软件开发过程的影响。
C. 从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类
从底层硬件到上层应用,嵌入式软件的开发可以分为以下三类:
1、嵌入式操作系统开发
嵌入式操作系统EOS(Embedded Operating System)是一种被广泛使用的系统软件。过去,它主要用于工业控制和国防系统领域。 EOS负责分配和调度嵌入式系统的所有软件和硬件资源,控制和协调并发活动。
它必须体现其所在系统的特征,并能够通过加载和卸载某些模块来实现系统所需的功能。嵌入式操作系统通常以商业操作为主。自1980年代以来,商业嵌入式操作系统已开始蓬勃发展。
2、嵌入式支撑软件开发
支撑软件是用于帮助和支撑软件开发的软件,通常包括数据库和开发工具,其中数据库是最重要的。随着移动通信技术的进步,人们对移动数据处理提出了更高的要求。嵌入式数据库技术已受到学术,工业,军事和民用领域的关注。
嵌入式移动数据库或简称为移动数据库(EMDBS)是支持移动计算或特定计算模型的数据库管理系统。数据库系统与操作系统和特定的应用程序集成在一起,并在各种智能嵌入式设备或移动设备上运行。
3、 嵌入式应用软件开发
嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。
嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。
(3)arm体系结构与编程pdf扩展阅读:
嵌入式软件开发的特点:
近年来,随着计算机技术的迅猛发展,基于通信技术的信息技术以及Internet的广泛应用,传统的控制学科正在发生变化,并出现了许多新的增长点。
嵌入式系统涉及系统的最低层,芯片层的信息处理和控制。从某种意义上说,理解和控制这些“微观”世界是控制的真正目的。就设计思想和总体架构而言,通常意义上的嵌入式系统和控制系统之间存在许多差异。
在嵌入式系统和开发环境方面,仍然存在许多仍在研究和开发中的问题,例如嵌入式系统的硬件和软件协同设计方法;多目标、多任务微内核嵌入式操作系统;分布式嵌入式系统实时问题,分布式计算,分布式信息交互和综合处理;嵌入式系统的多目标交叉编译和调试工具的研究等。
D. ARM体系结构与编程的作品目录
第1章 ARM概述及其基本编程模型
1. 1 ARM技术的应用领域及其特点
1. 2 ARM体系结构的版本及命名方法
1. 2. 1 ARM体系结构的版本
1. 2. 2 ARM体系的变种
1. 2. 3 ARM/Thumb体系版本的命名格式
l. 3 ARM处理器系列
1. 3. 1 ARM7系列
1. 3. 2 ARM9系列
1. 3. 3 ARM9E系列
1. 3. 4 ARM1OE系列
1. 3. 5 SecurCore系列
l. 4 ARM处理器模式
1. 5 ARM寄存器介绍
1. 5. l 通用寄存器
1. 5. 3 程序状态寄存器
1. 6 ARM体系的异常中断
1. 6. 1 ARM中异常中断种类
1. 6. 2 ARM处理器对异常中断的响应过程
1. 6. 3 从异常中断处理程序中返回
1. 7 ARM体系中存储系统
1. 7. 1 ARM体系中的存储空间
1. 7. 2 ARM存储器格式
1. 7. 3 非对齐的存储访问操作
1. 7. 4 指令预取和自修改代码
第2章 ARM指令分类及其寻址方式
2. 1 ARM指令集概要介绍
2. 1. 1 ARM指令的分类
2. 1. 2 ARM指令的一般编码格式
2. 1. 3 ARM指令的条件码域
2. 2 ARM指令寻址方式
2. 2. l 数据处理指令的操作数的寻址方式
2. 2. 2 字及无符号字节的Load/Store指令的寻址方式
2. 2. 3 杂类Load/Store指令的寻址方式
2. 2. 4 批量Load/Store指令的寻址方式
2. 2. 5 协处理器Load/Store指令的寻址方式
第3章 ARM指令集介绍
3. 1 ARM指令集
3. 1. l 跳转指令
3. l. 2 数据处理指令
3. 1. 3 乘法指令
3. 1. 4 杂类的算术指令
3. 1. 5 状态寄存器访问指令
3. l. 6 Load/Store内存访问指令
3. 1. 7 批量Load/Store内存访问指令
3. 1. 8 信号量操作指令
3. 1. 9 异常中断产生指令
3. 1. 10 ARM协处理器指令
3. 2 一些基本的ARM指令功能段
3. 2. l 算术逻辑运算指令的应用
3. 2. 2 跳转指令的应用
3. 2. 3 Loacl/Store指令的应用
3. 2. 4 批量Load/Store指令的应用
3. 2. 5 信号量指令的应用
3. 2. 6 与系统相关的一些指令代码段
3. 3 Thumb指令介绍
第4章 ARM汇编语言程序设计
4. 1 伪操作
4. 1. l 符号定义伪操作
4. 1. 2 数据定义伪操作
4. 1. 3 汇编控制伪操作
4. 1. 4 栈中数据帧描述伪操作
4. 1. 5 信息报告伪操作
4. 1. 6 其他的伪操作
4. 2 ARM汇编语言伪指令
4. 3 ARM汇编语言语句格式
4. 3. 1 ARM汇编语言中的符号
4. 3. 2 ARM汇编语言中的表达式
4. 4 ARM汇编语言程序格式.
4. 4. l 汇编语言程序格式
4. 4. 2 汇编语言子程序调用
4. 5 ARM汇编编译器的使用
4. 6 汇编程序设计举例
4. 6. 1 ARM中伪操作使用实例
4. 6. 2 ARM中汇编程序实例
第5章 ARM存储系统
5. 1 ARM存储系统概述
5. 2 ARM中用于存储管理的系统控制协处理器CP15
5. 2. 1 访问CP15寄存器的指令
5. 2. 2 CP15中的寄存器
5. 3 存储器管理单元MMU
5. 3. l 存储器管理单元MMU概述
5. 3. 2 禁止/使能MMU
5. 3. 3 MMU中地址变换过程
5. 3. 4 MMU中存储访问权限控制
5. 3. 5 MMU中的域
5. 3. 6 关于快表的操作
5. 3. 7 ARM中的存储访问失效
5. 4 高速缓冲存储器和写缓冲区
5. 4. 1 基本概念
5. 4. 2 cache的工作原理和地址映像方法
5. 4. 3 cache的分类
5. 4. 4 cache的替换算法
5. 4. 5 缓冲技术的使用注意事项
5. 4. 6 存储系统的一致性问题
5. 4. 7 cache内容锁定
5. 4. 8 与cache和写缓冲区相关的编程接口
5. 5 快速上下文切换技术
5. 5. l 快速上下文切换技术原理
5. 5. 2 快速上下文切换技术编程接口
5. 6 与存储系统相关的程序设计指南
5. 6. l 地址空间
5. 6. 2 存储器格式
5. 6. 3 非对齐的存储访问操作
5. 6. 4 指令预取和自修改代码
5. 6. 5 IMB
5. 6. 6 存储器映射的I/O空间
5. 7 AIOA存储系统的实例
5. 7. 1 L7205的存储系统概述
5. 7. 2 L7205中的SDRAM
5. 7. 3 L7205中的 MMU
第6章 ATPCS介绍
6. 1 ATPCS概述
6. 2 基本ATPCS
6. 2. l 寄存器的使用规则
6. 2. 2 数据栈使用规则
6. 2. 3 参数传递规则
6. 3 几种特定的ATPCS
6. 3. l 支持数据栈限制检查的ATPCS
6. 3. 2 支持只读段位置无关(ROPI)的ATPCS
6. 3. 3 支持可读写段位置无关(RWPI)的ATPCS
6. 3. 4 支持ARM程序和Thumb程序混合使用的ATPCS
6. 3. 5 处理浮点运算的ATPCS
第7章 ARM程序和Thumb程序混合使用
7. 1 概述
7. 2 在汇编语言程序中通过用户代码支持interwork
7. 2. l 可以实现程序状态切换的指令
7. 2. 2 与程序状态切换相关的伪操作
7. 2. 3 进行状态切换的汇编程序实例
7. 3 在C/C++程序中实现interwork
7. 4 在汇编语言程序中通过连接器支持interwork
7. 4. l 利用veneers实现汇编程序间的程序状态切换
7. 4. 2 利用veneers实现汇编程序与C/C++程序间的程序状态切换
第8章 CC++以及汇编语言的混合编程
8. l 内嵌汇编器的使用
8. 1. l 内嵌的汇编指令用法
8. 1. 2 内嵌的汇编器和armasm的区别
8. l. 3 在CC++程序中使用内嵌的汇编指令
8. 1. 4 内嵌汇编指令的应用举例
8. 2 从汇编程序中访问C程序变量
8. 3 汇编程序.C程序以及C++程序的相互调用
8. 3. l 在C++程序中使用C程序头文件
8. 3. 2 汇编程序.C程序以及C++程序的相互调用举例
第9章 异常中断处理
9. 1 ARM中异常中断处理概述
9. 1. 1 ARM体系中异常中断种类
9. 1. 2 异常中断向量表及异常中断优先级
9. 1. 3 异常中断使用的寄存器
9. 2 进入和退出异常中断的过程
9. 2. 1 ARM处理器对异常中断的响应过程
9. 2. 2 从异常中断处理程序中返回
9. 3 在应用程序中安装异常中断处理程序
9. 3. 1 在系统复位时安装异常中断处理程序
9. 3. 2 在C程序中安装异常中断处理程序
9. 4 SWI异常中断处理程序
9. 4. 1 SWI异常中断处理程序的实现
9. 4. 2 SWI异常中断调用
9. 5 FIQ和IRQ异常中断处理程序
9. 5. 1 IRQ/FIQ异常中断处理程序
9. 5. 2 IRQ异常中断处理程序举例
9. 6 复位异常中断处理程序
9. 7 未定义指令异常中断
9. 8 指令预取中止异常中断处理程序
9. 9 数据访问中止异常中断处理程序
第10章 ARM C/0++编译器
10. 1 ARM C/C++编译器概述
10. 1. 1 ARM C/C++编译器及语言库介绍
10. l. 2 ARM编译器中与搜索路径相关的一些基本概念
10. 2 ARM编译器命令行格式
10. 2. l 过程调用标准
10. 2. 2 设置源程序语言类型
10. 2. 3 指定搜索路径
10. 2. 4 设置预处理选项
10. 2. 5 设置输出文件类型
10. 2. 6 指定目标处理器和ARM体系版本
10. 2. 7 生成调试信息
10. 2. 8 代码生成的控制
10. 2. 9 控制警告信息的产生
10. 2. 10 编译时进行的一些额外的检查
10. 2. 11 控制错误信息
10. 3 ARM编译器中的pragmas
10. 4 ARM编译器特定的关键词
10. 4. 1 用于声明函数的关键词
10. 4. 2 用于声明交量的关键词
10. 4. 3 用于限定数据类型的关键词
10. 5 ARM编译器支持的基本数据类型
10. 6 ARM编译器中预定义宏
10. 7 ARM中C/C++库
10. 7. 1 ARM中C/C++运行时库概述
10. 7. 2 建立一个包含C/C++运行时库的C/C++应用程序
10. 7. 3 建立不包含C运行时库的应用程序
10. 7. 4 裁减C/C++运行时库以适应特定的目标运行环境
第11章 ARM连接器
11. 1 ARM映像文件
11. 1. 1 ARM映像文件的组成
11. 1. 2 ARM映像文件的入口点
11. 1. 3 输入段的排序规则
11. 2 ARM连接器介绍
11. 3 ARM连接器生成的符号
11. 3. 1 连接器生成的与域相关的符号
11. 3. 2 连接器生成的与输出段相关的符号
11. 3. 3 连接器生成的与输入段相关的符号
11. 4 连接器的优化功能
11. 5 运行时库的使用
11. 5. 1 C/C++运行时库与目标文件
11. 5. 2 查找需要的C/C++运行时库
11. 5. 3 选择合适种类的C/C++运行时库
11. 5. 4 扫描C/C++运行时库
11. 6 从一个映像文件中使用另一个映像文件中的符号
11. 6. 1 symdefs文件
11. 6. 2 建立symdefs文件
11. 6. 3 symdefs文件的使用
11. 7 隐藏或者重命名全局符号
11. 7. l steering文件的格式
11. 7. 2 steering文件中的命令
11. 8 ARM连接器命令行选项
11. 9 使用scatter文件定义映像文件的地址映射
11. 9. l scatter文件概述
11. 9. 2 satter文件中各部分介绍
11. 9. 3 scatter文件使用举例
第12章 嵌入式应用程序示例
12. l 嵌入式应用程序设计的基本知识
12. 1. 1 嵌入式应用系统中的存储映射
12. 1. 2 系统初始化
12. 2 使用semihosting的 C语言程序示例
12. 2. 1 源程序分析
12. 2. 2 生成映像文件
12. 3 一个嵌入式应用系统示例
12. 3. l 源程序分析
12. 3. 2 生成映像文件
12. 3. 3 本例中地址映射模式
12. 4 进行ROM/RAM地址重映射的嵌入式应用系统
12. 4. l 地址映射模式
12. 4. 2 源程序分析
12. 4. 3 生成映像文件
12. 5 一个嵌入式操作系统示例
第13章 使用CodeWarrior
13. 1 CodeWarrior for ADS概述
13. 2 简单工程项目的使用
13. 2. 1 工程项目窗口
13. 2. 2 简单工程项目的使用
13. 3 配置生成目标
13. 3. 1 Debug Settings对话框介绍
13. 3. 2 设置牛成目标的基本选项
13. 3. 3 汇编器选项设置
13. 3. 4 编译器的选项设置
13. 3. 5 连接器的选项设置
13. 3. 6 fromELF工具的选项设置
13. 4 复杂工程项目的使用
13. 4. l 建立一个新的生成目标
13. 4. 2 将一个生成目标更名
13. 4. 3 建立生成目标之间的依赖关系
13. 4. 4 子工程项目的使用
13. 5 工程项目模板
13. 5. 1 ADS中工程项目模板的使用
13. 5. 2 建立用户工程项目模板
13. 6 编译和连接工程项目
13. 6. 1 编译文件
13. 6. 2 生成工程项目
第14章 ARM体系中的调试方法
14. 1 ARM体系中调试系统概述
14. 2 基于Angel的调试系统
14. 2. l 基于Angel的调试系统的概述
14. 2. 2 使用Angel开发应用程序
14. 2. 3 Angel执行的操作
14. 2. 4 将Angel移植到特定的目标系统
14. 3 基于JTAG的调试系统
14. 3. l 基于JTAG的调试系统的特点
14. 3. 2 基于JTAG的调试系统结构
14. 3. 3 目标系统中的调试功能扩展部件
14. 3. 4 基于JTAG的调试过程
14. 4 ADW使用介绍
14. 4. 1 ADW概述
14. 4. 2 ADW中的窗口
14. 4. 3 ADW使用介绍
E. ARM中内存是如何存放数据的
每条指令都按照规定的编码格式 arm是32位的,所以每条指令的格式如下:
[31:28] [24:21] [20]
指令执行条件编码 指令操作符编码 是否影响CPSR的值
[19:16] [15:12] [11:0]
第一个操作数寄存器编码 目标寄存器编码 第二个操作数
所以ARM的指令和数据不是存储在同一个单元的,是根据指令(在flash中)到对应的寄存器中读取该寄存器中的数据或地址的内容进行操作的。
F. ARM体系结构与编程的内容简介
ARM处理器是一种16/32位的高性能、低成本、低功耗的嵌入式RISC微处理器,由ARM公司设计,然后授权给各半导体厂商生产,它目前已经成为应用最为广泛的嵌入式处理器。
本书分14章对ARM处理器的体系结构、指令系统和开发工具作了比较全面的介绍。其中包括ARM体系介绍、ARM程序设计模型、ARM汇编语言程序设计、ARM C/C++语言程序设计、ARM连接器的使用、ARM集成开发环境CodeWarrior IDE的介绍及高性能的调试工具ADW的使用。并在此基础之上介绍一些典型的基于ARM体系的嵌入式应用系统设计时的基本技术。通过阅读本书可以使读者掌握开发基于ARM的应用系统的各方面的知识。
本书既可作为学习ARM技术的培训材料,也可作为嵌入式系统开发人员的参考手册。