当前位置:文档之家› ARM嵌入式系统结构与编程习题答案

ARM嵌入式系统结构与编程习题答案

ARM嵌入式系统结构与编程习题答案
ARM嵌入式系统结构与编程习题答案

《ARM嵌入式系统结构与编程》习题答案

第一章绪论

1.国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?

答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。

2.嵌入式系统是从何时产生的,简述其发展历程。

答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。

嵌入式系统的出现最初是基于单片机的。Intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,MCU的性能得到了极大的提升,特别是ARM技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。

3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。

答:主要有嵌入式Linux和嵌入式实时操作内核uC/OS-II

嵌入式Linux操作系统是针对嵌入式微控制器的特点而量身定做的一种Linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。

uC/OS是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

4.举例说明嵌入式设备在工控设备中的应用。

答:由于工业控制系统特别强调可靠性和实时性,“量身定做”的嵌入式控制系统恰能满足工业控制的需求。例如:工业过程控制,数字控制机床,电网设备监测,电力自动控制系统,石油化工监控等。

5.嵌入式技术的发展趋势有哪些?

答:未来嵌入式系统的发展趋势有:1.随着信息化与数字化的发展,嵌入式设备进行网络互联是未来发展的趋势。2.优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本。3.指令集的并行计算技术将引入嵌入式微处理器。4.嵌入式微处理器将会向多核技术发展。5.嵌入式技术将引领信息时代。

第2章 ARM技术与ARM体系结构

1.简述ARM处理器内核调试结构原理

答:ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Trace Macro),它是ARM公司自己推出的调试工具。ARM处理器都支持基于JTAG(Joint Test Action Group 联合测试行动小组)的调试方法。它利用芯片内部的Embedded ICE来控制ARM内核操作,可完成单步调试和断点调试等操作。当CPU处理单步执行完毕或到达断点处时,就可以在宿主机端查看处理器现场数据,但是它不能在CPU运行过程中对实时数据进行仿真。

ETM解决了上述问题,能够在CPU运行过程中实时扫描处理器的现场信息,并数据送往TAP (Test Access Port)控制器。上图中分为三条扫描链(图中的粗实线),分别用来监视ARM

核,ETM,嵌入式ICE的状态。

2.分析ARM7TDMI-S各字母所代表的含义。

答:ARM7 T D M I – S 中

ARM是Advanced RISC Machines的缩写

7是系列号;

T:支持高密度16位的Thumb指令集;

D:支持JTAG片上调试;

M:支持用于长乘法操作(64位结果)ARM指令,包含快速乘法器;;

I:带有嵌入式追踪宏单元ETM,用来设置断点和观察点的调试硬件;

S:可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以编译成一种易于EDA工具使用的形式。

3.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理

器在什么情况下进入相应的模式。

答:ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。

?1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下

执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式

?2.FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先

级(fast)中断产生时将会进入这种模式。

?3.IRQ模式:也称为普通中断模式,:当一个低优先级(normal)中断产生时将会进

入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。

通常的中断处理都在IRQ模式下进行。

?4.SVC模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令

执行时处理器将进入这种模式。

?5.中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存

储或存储保护。

?6.未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未

定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。

?7.系统模式:使用和User模式相同寄存器组的特权模式,用来运行特权级的操作

系统任务。

?在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,

在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。

?在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式,每种

异常都对应有自己的异常处理入口点。

4.分析程序状态寄存器(PSR)各位的功能描述,并说明C,Z,N,V在什么情况下进行置位

和清零。

答:

?条件位:

?N = 1-结果为负, 0-结果为正或0

?Z = 1-结果为0, 0-结果不为0

? C =1-进位, 0-借位

?V =1-结果溢出, 0结果没溢出

?Q 位:

?仅ARM 5TE/J架构支持

?指示增强型DSP指令是否溢出

?中断禁止位:

?I = 1: 禁止 IRQ.

? F = 1: 禁止 FIQ.

?T Bit

?仅ARM xT架构支持

?T = 0: 处理器处于 ARM 状态

?T = 1: 处理器处于 Thumb 状态

?Mode位(处理器模式位):

?0b10000 User

?0b10001 FIQ

?0b10010 IRQ

?0b10011 Supervisor

?0b10111 Abort

?0b11011 Undefined

?0b11111 System

5.简述ARM处理器异常处理和程序返回的过程。

答:只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM7TDMI内核保存当前的处理器状态,这样当处理程序结束时可以恢复执行原来的程序。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。

在异常发生后,ARM7TDMI内核会作以下工作:

1.在适当的LR中保存下一条指令的地址

2.将CPSR复制到适当的SPSR中;

3. 将CPSR模式位强制设置为与异常类型相对应的值;

4.强制PC从相关的异常向量处取指。

ARM7TDMI内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。

注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。

当异常结束时,异常处理程序必须:

1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;

2.将SPSR的值复制回CPSR;

3.清零在入口置位的中断禁止标志。

注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。

6.ARM处理器字数据的存储格式有哪两种?并指出这两种格式的区别。

答:ARM7TDMI处理器可以将存储器中的字以下列格式存储

?大端格式(Big-endian)

?小端格式(Little-endian)

?小端存储器系统:

在小端格式中,高位数字存放在高位字节中。因此存储器系统字节0连接到数据线7~0。

?大端存储器系统:

在大端格式中,高位数字存放在低位字节中。因此存储器系统字节0连接到数据线31~24。

7.分析带有存储器访问指令(LDR)的流水线运行情况,并用图示说明流水线的运行机制。答:存储器访问指令LDR 流水线举例

取指的存储器访问和执行的数据路径占用都是不可同时共享的资源,对于多周期指令来说,如果指令复杂以至于不能在单个时钟周期内完成执行阶段,就会产生流水线阻塞。

对存储器的访问指令LDR是非单周期指令

LDR指令的执行,访问存储器,回写寄存器(占用了3个周期)。造成了MOV指令的执行被阻断。

8.简述ARM9的5级流水线每一级所完成的功能和实现的操作。

答:ARM920在指令操作上采用5级流水线 .

取指:从指令Cache中读取指令。

译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。

执行:进行ALU运算和移位操作,如果是对存储器操作的指令,则在ALU中计算出要访问的存储器地址。

存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache)。

寄存器回写:将指令运算或操作结果写回到目标寄存器中。

9.什么叫流水线互锁?应如何来解决,举例说明。

答:互锁:当前指令的执行需要前面指令的执行结果,但前面的指令没有执行完毕,引起流水线的等待。互锁发生时,硬件会停止指令的执行,直到数据准备好。

上边程序中ORR指令执行时需要使用LDR指令加载后的R4寄存器,因此造成了ORR指令的等待。

编译器以及汇编程序员可以通过重新设计代码的顺序或者其他办法来减少互锁的数量。

第3章 ARM指令集寻址方式

1.在指令编码中,条件码占几位,最多有多少个条件,各个条件是如何形成的?

答:条件码占4位,最多有15个条件

2. 指令条件码中,V标志位在什么情况下才能等于1?

答:V—溢出标志位

对于加减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1表示符号位溢出,其他指令通常不影响V位。

3. 在ARM指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是8位常数和4位移位数)

0x5430 0x108 0x304 0x501

0xfb10000 0x334000 0x3FC000 0x1FE0000

0x5580000 0x7F800 0x39C000 0x1FE80000

答:立即数必须由1个8位的常数通过进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即一个8位的常数通过循环右移2*rotate_4位(即0,2,4,。。。30)得到

0X5430

0000,0000,0000,0000,0101,0100,0011,0000 非法立即数

0X108

0000,0000,0000,0000,0000,0001,0000,1000 0x42循环右移30位(rotate_4=0xF)

0X304

0000,0000,0000,0000,0000,0011,0000,0100 0xC1循环右移30位(rotate_4=0xF)

0x501

0000,0000,0000,0000,0000,0101,0000,0001 非法立即数

0xfb10000

0000,1111,1011,0001,0000,0000,0000,0000 非法立即数

0x334000

0000,0000,0011,0011,0100,0000,0000,0000 0Xcd 循环右移18位(rotate_4=0x9)

0x3FC000

0000,0000,0011,1111,1100,0000,0000,0000 0XFF 循环右移18位(rotate_4=0x9)

0x1FE0000

0000,0001,1111,1110,0000,0000,0000,0000 非法立即数

0x5580000

0000,0101,0101,1000,0000,0000,0000,0000 非法立即数

0x7F800

0000,0000,0000,0111,1111,1000,0000,0000 非法立即数

0x39C000

0000,0000,0011,1001,1100,0000,0000,0000 0XE7循环右移18位(rotate_4=0x9)

0x1FE80000

0001,1111,1110,1000,0000,0000,0000,0000 非法立即数

4.分析逻辑右移,算术右移,循环右移,带扩展的循环右移它们间的差别。

答:LSL逻辑左移:

LSR逻辑右移:

ASR算术右移:

ROR循环右移:

RRX带扩展的循环右移:

5.ARM数据处理指令具体的寻址方式有哪些,如果程序计数器PC作为目标寄存器,会产生什么结果?

答:数据处理指令寻址方式具体可分为5种类型:

1)第二操作数为立即数2)第二操作数为寄存器3)第二操作数为寄存器移位方式且移位的位数为一个5位立即数4)第二操作数为寄存器移位方式且移位数值放在寄存器中5)第二操作数位寄存器进行RRX移位得到。如果PC (R15)用作目标寄存器,指令会产生不可预知的结果。

6.在Load/Store指令寻址中,字,无符号字节的Load/Store指令寻址和半字,有符号字节寻址,试分析它们之间的差别。

答:在Load/Store指令寻址中,

字,无符号字节的Load/Store指令寻址中共有以下3种内存地址构成格式:

1)Addressing_mode 中的偏移量为立即数 2)Addressing_mode 中的偏移量为寄存器的值3)Addressing_mode 中的偏移量通过寄存器移位得到

半字,有符号字节的Load/Store指令寻址中共有以下2种内存地址构成格式:

1)Addressing_mode 中的偏移量为立即数 2)Addressing_mode 中的偏移量为寄存器的值7.块拷贝Load/Store指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。

答:批量Load/Store指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有以下4种类型:

?后增IA (Increment After) :每次数据传送后地址加4;

?先增IB (Increment Before) :每次数据传送前地址加4 ;

?后减DA (Decrement After) :每次数据传送后地址减4 ;

?先减DB (Decrement Before) :每次数据传送前地址减4 ;

8.栈操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作

指令寻址和块拷贝Load/Store指令之间的对应关系。

答:根据堆栈指针的指向位置不同和堆栈的生长方向不同,共有4种类型的堆栈工作方式:满递增堆栈FA:堆栈指针指向最后压入的数据,且由低地址向高地址生成。

满递减堆栈FD:堆栈指针指向最后压入的数据,且由高地址向低地址生成。

空递增堆栈EA:堆栈指针指向下一个要放入数据的空位置,且由低地址向高地址生成。

空递减堆栈ED:堆栈指针指向下一个要放入数据的空位置,且由高地址向低地址生成。

9.分析协处理器加载/存储指令的寻址方式种的内存地址索引格式中不同的汇编语法格式下内存地址的计算方法。

答:协处理器加载/存储指令的寻址方式种的内存地址索引格式中,索引格式类似于LDR/STR 指令寻址中的立即数作为地址偏移量的形式。Addressing_mode中的偏移量为8位立即数的汇编语法格式有以下3种:

?前变址不回写形式:[,#+/-*4 ]

第一个内存地址编号为基地址寄存器Rn值加上/减去imm_offset8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。

?前变址回写形式: [,#+/-*4]!

第一个内存地址编号为基地址寄存器Rn值加上/减去imm_offset8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。当指令执行时,生成的地址值将写入基址寄存器。

?后变址回写形式: [],#+/-*4

内存地址为基址寄存器Rn的值,当存储器操作完成后,将基地址寄存器Rn值加上/减去imm_offset8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。最后将Rn值加上/减去imm_offset8的4倍写回到基址寄存器Rn(更新基地址寄存器)。

10.写出下列指令的机器码,并分析指令操作功能。

MOV R0,R1

MOV R1,,0X198

ADDEQS R1,R2,,0xAB

CMP R2,#0Xab

LDR R0,[R1,#4]

STR R0,[R1,R1,LSL #2]!

LDRH R0,[R1,#4]

LDRSB R0,[R2,#-2]!

STRB R1,[R2,#0Xa0]

LDMIA R0,{R1,R2,R8}

STMDB R0!,{R1-R5,R10,R11}

STMED SP!{R0-R3,LR}

答:机器码部分略。

MOV R0,R1 ;R0《-----R1

MOV R1,,0X198 ;R0《----0X198

ADDEQS R1,R2,,0xAB ;当Z=1时,R1《---R2+0xAB 并影响标志位

CMP R2,#0Xab ;R2-0xAB,并影响标志位

LDR R0,[R1,#4] ;R0《---【R1+4】

STR R0,[R1,R1,LSL #2]! ;【R1+R1*4】《---R0,R1=R1+R1*4

LDRH R0,[R1,#4] ;R0《---【R1+4】半字,R0的高16位清零

LDRSB R0,[R2,#-2]! ;R0《---【R2-2】字节,R0有符号扩展为32位,R2=R2-2 STRB R1,[R2,#0Xa0] ;【R2+0Xa0】《----R1低8位,

LDMIA R0,{R1,R2,R8}

;将内存单元【R0】~【R+11】以字为单位读取到R1,R2,R8中

STMDB R0!,{R1-R5,R10,R11}

将寄存器R1~R5,R10,R11的值以字为单位依次写入【R0】中,每写一个字之前R0=R0-4 STMED SP!{R0-R3,LR}

将寄存器R0~R3,LR的的值以字为单位依次写入【SP】中,每写一个字之后SP=SP-4

第4章 ARM指令集系统

1.ARM指令可分为哪几类?说出哪几条指令是无条件执行的。

答:ARM微处理器的指令集可以分为:数据处理指令,分支指令,加载/存储指令,批量加载/存储指令,交换指令,程序状态寄存器(PSR)处理指令,协处理器操作指令和异常产生指令八大类。

几乎所有的ARM指令都是可以有条件执行的。带链接和状态切换的跳转指令BLX,当目标地址由程序标号给出时,即:BLX

由于指令码中是没有条件编码位的,所以指令是无条件执行的。

2.如何实现两个64位数的加法操作,如何实现两个64位数的减法操作,如何求一个64位数的负数?

答:1)使用ADC实现64位加法,结果存于R1、R0中:

ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位

ADC R1,R1,R3 ;R1等于高32位相加,并加上低位进位

2)使用SBC实现64位减法,结果存于R1、R0中:

SUBS R0,R0,R2 ; 低32位相减,并影响标志位

SBC R1,R1,R3 ;高32位相减,并减去低位借位

3)使用RSC指令实现求64位数值的负数:

RSBS R2,R0,#0

RSC R3,R1,#0

3.写出LDRB指令与LDRSB指令的二进制编码格式,并指出它们之间的区别。

答:LDRB指令的二进制编码格式:

LDRSB指令的二进制编码格式:

LDRB指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用零扩展。

LDRSB指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用符号位扩展。

4.分析下列每条语句的功能,并确定程序段所实现的操作。

CMP R0,,0

MOVEQ R1,,0

MOVGT R1,,1

答:CMP R0,,0 ;比较R0与0的大小

MOVEQ R1,,0 ;若R0==0,则R1=0

MOVGT R1,,1 ;若R0>0,则R1=1

5.请使用多种方法实现将字数据0xFFFFFFFF送入寄存器R0

答:1)MVN R0,#0

2)MOV R0,#1

RSB R0,R0,#0

6.写一条ARM指令,分别完成下列操作:

(1)R0=16

(2)R0=R1/16

(3)R1=R2*3

(4)R0=-R0

答:

(1)R0=16 MOV R0,#16

(2)R0=R1/16 MOV R0,R1,LSR #4

(3)R1=R2*3 MOV R3,#3 MUL R1,R2,R3

(4)R0=-R0 RSB R0,R0,#0

7.编写一个ARM汇编程序,累加一个队列中的所有元素,碰到0时停止。结果放入R4。答:假设队列为地址从R0开始递增的字队列:

LOOP

LDR R1, [R0,#4]!

MOVS R2, R1

BEQ END

ADD R4,R4,R2

B LOOP

END

8.写出实现下列操作的ARM指令:

当Z=1时,将存储器地址为R1的字数据读入寄存器R0.

当Z=1时,将存储器地址为R1+R2的字数据读入寄存器R0

将存储器地址为R1-4的字数据读入寄存器R0。

将存储器地址为R1+R6的字数据读入寄存器R0,并将新地址R1+R6写入R1。

答:1)LDREQ R0, [R1]

2)LDREQ R0, [R1,R2]

3)LDR R0, [R1,#-4]

4)LDR R0, [R1,R6]!

9.写出下列ARM指令所实现的操作:

LDR R2,[R3,#-4]!

LDR R0,[R0],R2

LDR R1,[R3,R2,LSL #2]!

LDRSB R0,[R2,#-2]!

STRB R1,[R2,,0xA0]

LDMIA R0,{R1,R2,R8}

STMDB R0!,{R1-R5,R10,R11}

答:LDR R2,[R3,#-4]! ;R2<-[R3-4], R3=R3-4

LDR R0,[R0],R2 ;R0<-[R0], R0=R0+R2

LDR R1,[R3,R2,LSL #2]! ;R1<-[R3+R2*4], R3=R3+R2*4

LDRSB R0,[R2,#-2]!

;R0低8位<-[R2-2]字节数据,,R0高24位符号扩展,R2=R2-2

STRB R1,[R2,#0xA0]

R1低8位->【R2+0xA0】

LDMIA R0,{R1,R2,R8}

从地址R0开始的内存中依次读取字数据,送入寄存器R1,R2,R8

STMDB R0!,{R1-R5,R10,R11}

将寄存器R11,R10,R5-R1的字数据,依次写入地址R0中,每次写入前R0=R0-4 10.SWP指令的优势是什么?

答:SWP指令支持原子操作,它能在一条指令中完成存储器和寄存器之间的数据交换。11.如何用带PSR操作的批量字数据加载指令实现IRQ中断的返回?

答:在进入IRQ中断处理程序时,首先计算返回地址,并保存相关的寄存器? SUB R14,R14,#4 ;

? STMFD R13!, {R0-R3, R12, LR}

如果IRQ中断处理程序返回到被中断的进程则执行下面的指令。该指令从数据栈中恢复寄存器R0~R3及R12的值,将返回地址传送到PC中,并将SPSR_irq值复制到CPSR 中

? LDMFD R13!, {R0-R3, R12, PC}^

12.用ARM汇编语言编写代码,实现将ARM处理器切换到用户模式,并关闭中断。

答:

;禁能IRQ中断

MRS R0 CPSR

ORR R0, R0,#0x80

MSR CPSR, R0

;切换到用户模式

MRS R0 CPSR

BIC R0, #0x0F

MSR CPSR, R0

第5章 Thumb指令

1.与32位的ARM指令集相比较,16位的Thumb指令集具有哪些优势?

答:在ARM体系结构中,ARM指令集是32位的,具有很高的执行效率。但是对于嵌入式而言,其存储空间极其有限,由于每条ARM指令都要占用4个字节,对存储空间的要求较高。为了压缩代码的存储,增加代码存储密度,ARM公司设计了16位的Thumb指令。Thumb代码所需的存储空间约为ARM代码的60%~70%。

2.Thumb指令可分为哪几类?Thumb指令有条件执行指令吗,如果有请说明哪些指令是条件执行的。

答:Thumb指令可分为数据处理指令,存储器操作指令,分支指令,软中断指令。

Thumb指令集只有一条分支指令是有条件的,其余所有指令都是无条件的;

B{cond} label

3.分析下面的Thumb指令程序代码,指出程序所完成的功能。

.global _start

.text

.equ num 20

_start:

MOV SP,#0x400

ADR R0,Thumb_start+1

BX R0

.thumb

Thumb_start:

ASR R2,R0,#31

EOR R0,R2

SUB R3,R0,R2

stop:

B stop

.end

答:上述代码首先将处理器状态切换到Thumb状态,

ASR R2,R0,#31 ; 用R0的符号位填充R2

EOR R0,R2 ;如果R0为正数,则R0不变;如果R0为负数,则R0取反

SUB R3,R0,R2 ;R0-R2->R3 (R2为全零或全1)

4.在Thumb状态中,用多种方法实现将寄存器R0中的数据乘以10

答:1)MOV R1,#10

MUL R0,R1

2) LSL R1,R0,#3

LSL R2,R0,#1

ADD R0,R1,R2

5.带链接的分支指令BL提供了一种在Thumb状态下程序间相互调用的方法,当从子程序返回时,可以采用哪种返回方式?

答:通常使用下面的方式之一:

MOV PC, LR

BX LR

POP {PC} ;需要在子程序中使用PUSH {LR}

6.指出下列的Thumb程序代码所完成的功能:

ASR R0,R1,#31

EOR R1,R0

SUB R1,R0

答:ASR R0,R1,#31 ;用R1的符号位填充R0

EOR R1,R0 ;如果R1为正数,则R1不变;如果R1为负数,则R1取反

SUB R1,R0 ;R1-R0->R1 (R0为全零或全1)

第6章 ARM汇编伪指令与伪操作

1.在ARM汇编语言程序设计中,伪操作与伪指令的区别是什么?

答:伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不再处理器运行期间由机器执行,只是在汇编时被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作。

伪操作是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为了完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。也就是说,这些伪操作只是在汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。

2.分析ARM汇编语言伪指令LDR,ADRL,ADR的汇编结果,说明它们之间的区别。

答: LDR伪指令将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。如果加载的常数符合MOV或MVN指令立即数的要求,则用MOV或MVN指令替代LDR伪指令。如果加载的常数不符合MOV或MVN指令立即数的要求,汇编器将常量放入内存文字池,并使用一条程序相对偏移的LDR指令从内存文字池读出常量。

ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄

存器中,比ADR伪指令可以读取更大范围的地址。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。

ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。

3.在ADS编译环境下,写出下列操作的伪操作:

(1)声明一个局部的算术变量La_var 并将其初始化 0;

(2)声明一个局部的逻辑变量Ll_var 并将其初始化 FALSE;

(3)声明一个局部的字符串变量Ls_var 并将其初始化空串;

(4)声明一个全局的逻辑变量Gl_var 并将其初始化 FALSE;

(5)声明一个全局的字符串变量Gs_var 并将其初始化空串;

(6)声明一个全局的算术变量Ga_var 并将其初始化 0xAA;

(7)声明一个全局的逻辑变量Gl_var 并将其初始化 TRUE;

(8)声明一个全局的字符串变量Gs_var 并将其初始化“CHINA”;

答:

(1)声明一个局部的算术变量La_var 并将其初始化 0;

LCLA La_var

(2)声明一个局部的逻辑变量Ll_var 并将其初始化 FALSE;

LCLL Ll_var

(3)声明一个局部的字符串变量Ls_var 并将其初始化空串;

LCLS Ls_var

(4)声明一个全局的逻辑变量Gl_var 并将其初始化 FALSE;

GCLL Gl_var

(5)声明一个全局的字符串变量Gs_var 并将其初始化空串;

GCLS Gs_var

(6)声明一个全局的算术变量Ga_var 并将其初始化 0xAA;

GCLA Ga_var

Ga_ var SETA 0xAA

(7)声明一个全局的逻辑变量Gl_var 并将其初始化 TRUE;

GCLL Gl_var

Gl_ var SETL TRUE

(8)声明一个全局的字符串变量Gs_var 并将其初始化“CHINA”;

GCLS Gs_var

Gs_ var SETS "CHINA"

4.用ARM开发工具伪操作将寄存器列表R0-R5,R7,R8的名称定义为Reglist。

答:Reglist RLST {R0-R5,R7,R8}

5.完成下列数据定义伪操作:

(1)申请以data_buffer1为起始地址的连续的内存单元,并依次用半字数据0x11,0x22,0x33,0x44,0x55进行初始化;

(2)申请以Str_buffer为起始地址的连续的内存单元,并用字符串“ARM7 and ARM9”进行初始化;

答:(1) data_buffer1 DCW 0x11,0x22,0x33,0x44,0x55

(2) Str_buffer DCB “ARM7 and ARM9”

6.定义一个结构化的内存表,其首地址固定为0x900,该结构化内存表包含2个域,Fdatal 长度为8个字节,Fdata2长度为160个字节。

答:MAP 0x900

Fdata1 FIELD 8

Fdata2 FIELD 160

7.在GNU-ARM编译环境下,写出实现下列操作的伪操作:

(1)分配一段字节内存单元,并用57,0x11,031,'Z',0x76进行初始化;

(2)分配一段半字内存单元,并用0xFFE0,0xAABB,0x12进行初始化;

(3)分配一段字内存单元,并用0x12345678,0xAABBCCDD进行初始化;

(4)分配一段内存单元,并用长为8字节的数值0x11填充100次;

答:

(1)分配一段字节内存单元,并用57,0x11,031,'Z',0x76进行初始化;

.byte 57,0x11,031,'Z',0x76

(2)分配一段半字内存单元,并用0xFFE0,0xAABB,0x12进行初始化;

.hword 0xFFE0,0xAABB,0x12

(3)分配一段字内存单元,并用0x12345678,0xAABBCCDD进行初始化;

.word 0x12345678,0xAABBCCDD

(4)分配一段内存单元,并用长为8字节的数值0x11填充100次;

.fill 100 , 8, 0x11

8.写出与GNU-ARM编译环境下伪操作.arm , .thumb 功能相同的ARM标准开发工具编译环境下的伪操作。

答:.arm 对应 ARM 或 CODE32

.thumb 对应 THUMB 或 CODE16

第7章汇编语言程序设计

1.分别写出ARM集成开发环境下ARM汇编语句格式与GNU ARM环境下ARM汇编语句通用格式,并分析它们的区别。

答:ADS环境下ARM汇编语句格式如下:

?{symbol} {instruction} {;comment}

?{symbol} {directive} {;comment}

?{symbol} { pseudo-instruction} {;comment}

?Symbol :标号(地址)

?Instruction :指令(ARM/Thumb)

?Directive :伪操作

?pseudo-instruction:伪指令

GNU环境下ARM汇编语言语句格式如下:

?{label :} {instruction} {@comment}

?{label :} {directive} {@comment}

?{label :} { pseudo-instruction} {@comment}

2.局部标号提供分支指令在汇编程序的局部范围内跳转,它的主要用途是什么,并举一实例加以说明。

答:局部标号

?局部标号的语法格式如下:

?n {routname} (0~99)

?被引用的局部标号语法规则是:

?% {F∣B} {A∣T} n {routname}

?其中:

?n是局部标号的数字号。(0~99)

?routname是当前局部范围的名称。

?%表示引用操作。

?F指示汇编器只向前搜索。

?B指示汇编器只向后搜索。

?A指示汇编器搜索宏的所有嵌套层次。

?T指示汇编器搜索宏的当前层次。

?局部标号提供分支指令在汇编程序在局部范围内的跳转

3.先对内存地址0xB000开始的100个字内存单元填入0x10000001~0x10000064字数据,然后将每个字单元进行64位累加,结果保存于【R9:R8】(R9中存放高32位)。

答:解:先对内存地址0xB000开始的100个字内存单元填入0x10000001~0x10000064字数据,然后将每个字单元进行64位累加,结果保存于【R9:R8】(R9中存放高32位)。

在ARM集成开发环境下编程:

/*----------------------------------------------------------------------------------------

********寄存器使用说明************************

***R0:存放地址值

***R2:递减计数器

***R9:64位递加结果的高32位

***R8:64位递加结果的低32位

*---------------------------------------------------------------------------------------------*/

AREA Fctrl,CODE,READONLY ;声明代码段Fctrl

ENTRY ;标识程序入口

CODE32 ;声明32位ARM指令

START

MOV R0,#0xB000 ;初始化寄存器

MOV R1,#0x10000001

MOV R2,#100

loop_1 ;第一次循环赋值

STR R1,[R0],#4

ADD R1,R1,#1

SUBS R2,R2,#1

BNE loop_1

MOV R0,#0xB000

MOV R2,#100

MOV R9,#0

MOV R8,#0

loop_2 ;第二次循环累加

LDR R1,[R0],#4

ADDS R8,R1,R8 ;R8=R8+R1,进位影响标志位

ADDC R9,R9,#0 ;R9=R9+C,C为进位位

SUBS R2,R2,#1

BNE loop_2

Stop

B Stop ;文件结束

END

4.在GNU环境下用ARM汇编语言编写程序,初始化ARM处理器各模式下的堆栈指针SP_mode (R13),各模式的堆栈指针地址如下:

.equ _ISR_STARTADDRESS, 0xCFFF000 @设置栈的内存基地址

.equ UserStack, _ISR_STARTADDRESS @用户模式堆栈地址

.equ SVCStack, _ISR_STARTADDRESS+64 @管理模式堆栈地址

.equ UndefStack, _ISR_STARTADDRESS+64*2 @未定义模式堆栈地址

.equ AbortStack, _ISR_STARTADDRESS+64*3 @中止模式堆栈地址

.equ IRQStack, _ISR_STARTADDRESS+64*4 @IRQ模式堆栈地址

.equ FIQStack, _ISR_STARTADDRESS+64*5 @FIQ模式堆栈地址

答:

在GNU ARM开发环境下编程:

.equ _ISR_STARTADDRESS, 0xCFFF000 @设置栈的内存基地址

.equ UserStack, _ISR_STARTADDRESS @用户模式堆栈地址

.equ SVCStack, _ISR_STARTADDRESS+64 @管理模式堆栈地址

.equ UndefStack, _ISR_STARTADDRESS+64*2 @未定义模式堆栈地址

.equ AbortStack, _ISR_STARTADDRESS+64*3 @中止模式堆栈地址

.equ IRQStack, _ISR_STARTADDRESS+64*4 @IRQ模式堆栈地址

.equ FIQStack, _ISR_STARTADDRESS+64*5 @FIQ模式堆栈地址

.equ USERMODE 0x10 @用户模式

.equ FIQMODE 0x11 @FIQ模式

.equ IRQMODE 0x12 @IRQ模式

.equ SVCMODE 0x13 @管理模式

.equ ABORTMODE 0x17 @中止模式

.equ UNDEFMODE 0x1B @未定义模式

.equ SYSMODE 0x1F @系统模式

.equ MODEMASK 0x1F @模式位掩码控制字

.global _start

.text

.arm

_start:

MRS R0,CPSR @读取当前CPSR

BIC R0,R0,#MODEMASK @清除模式位

@设置系统模式下的SP

ORR R1,R0,#SYSMODE

MSR CPSR_c,R1

LDR SP,=UserStack

@设置中止模式下的SP

ORR R1,R0,#ABORTMODE

MSR CPSR_c,R1

LDR SP,=AbortStack

@设置管理模式下的SP

ORR R1,R0,#SVCMODE

MSR CPSR_c,R1

LDR SP,=SVCStack

@设置IRQ模式下的SP

ORR R1,R0,#IRQMODE

MSR CPSR_c,R1

LDR SP,=IRQStack

@设置FIQ模式下的SP

ORR R1,R0,#FIQMODE

MSR CPSR_c,R1

LDR SP,=FIQStack

Stop :

B Stop

.end @文件结束

5.内存数据区定义如下:

Src:

.long 1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10

.long 1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10

Src_Num: .long 32

Dst:

.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

请用ARM指令编写程序,实现将数据从源数据区Src拷贝到目标数据区Dst,要求以6个字为单位进行块拷贝,如果不足6个字时,则以字为单位进行拷贝(其中数据区Src_Num 处存放源数据的个数)。

答:解:程序设计思路:每进行6个字的批量拷贝前,先判断SRC_NUM是否大于6,是则进行6字的批量拷贝并将SRC_NUM减去6,否则则进行单字的拷贝,在使用寄存器组时还要注意保存现场。

在ARM集成开发环境下编程:

/*----------------------------------------------------------------------------------------

********寄存器使用说明************************

***R0:源数据区指针

***R1:目标数据区指针

***R2:单字拷贝字数

***R3:块拷贝字数

***R5~~R10:批量拷贝使用的寄存器组

***SP:栈指针

*---------------------------------------------------------------------------------------------*/

SRC_NUM EQU 32 ;设置要拷贝的字数

AREA Copy_Data,CODE,READONLY ;声明代码段Copy_Data

ENTRY ;标识程序入口

CODE32 ;声明32位ARM指令

START

LDR R0,=Src ;R0=源数据区指针

LDR R1,=Dst ;R1=目标数据区指针

MOV R2,#SRC_NUM ;R2=单字拷贝字数

MOV SP,#0x9000

CMP R2,#6

BLS Copy_Words ;R2<=6,则拷贝单字

STMFD SP!,{R5-R10} ;保存将要使用的寄存器组R5-R10

;进行块拷贝,每次拷贝6个字

Copy_6Word

LDMIA R0!,{R5-R10}

STMIA R1!,{R5-R10}

SUBS R2,R2,#6

BHI Copy_6Word ;R2>6

LDMFD SP!,{R5-R10} ;恢复寄存器组R5-R10

;将剩余的数据区以字为单位拷贝

Copy_Words ;拷贝剩余字节

LDR R3,[R0],#4

STR R3,[R1],#4

SUBS R2,R2,#1

BNE Copy_Word

Stop

B Stop

LTORG

Src

DCD 1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10

DCD 1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10

Dst

DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

END

6.将一个存放在【R1:R0】中的64位数据(其中R1中存放高32位)的高位和低位对称换位,如第0位与第63位调换,第1位与第62位调换,第2位与第61位调换,。。。。第31位与第32位调换。

答:解:程序设计思路:对于单个32位寄存器的对称换位操作,我们可以采用移位操作的方法,通过依次从低位取出目标寄存器的各个位,再将其放置到目标寄存器的最低位,然后通过移位操作,送入相应位。对于【R1:R0】到【R3:R2】的64位对称换位操作,我们可以采用R1-》R2和R0-》R3的两个32位的换位操作来完成。

在ARM集成开发环境下编程:

/*----------------------------------------------------------------------------------------

********寄存器使用说明************************

***R1,R0:源数据

***R3,R2:目标数据

***R4:计数器,初值为32,递减至0

*---------------------------------------------------------------------------------------------*/

AREA Bit_Exch,CODE,READONLY ;声明代码段Bit_Exch

ENTRY ;标识程序入口

CODE32 ;声明32位ARM指令

START

LDR R0,=0x55555555 ;输入源数据

MOV R3,#0 ;目标数据

MOV R5,#0 ;数据临时缓冲区

MOV R4,#32 ;计数器

Bitex_H32

AND R5,R0,#1 ;取出源数据的最低位送R5

ORR R3,R5,R3,LSL #1 ;将目标数据左移一位,并将取出的数据

;送入其最低位

MOV R0,R0,LSR #1 ;源数据右移一位

SUBS R4,R4,#1 ;递减计数

BNE Bitex_L

LDR R1,=0x55555555 ;输入源数据

MOV R2,#0 ;目标数据

MOV R5,#0 ;数据临时缓冲区

MOV R4,#32 ;计数器

Bitex_L32

AND R5,R1,#1 ;取出源数据的最低位送R5

ORR R2,R5,R2,LSL #1 ;将目标数据左移一位,并将取出的数据

;送入其最低位

MOV R1,R1,LSR #1 ;源数据右移一位

SUBS R4,R4,#1 ;递减计数

BNE Bitex_L

Stop

B Stop

END

7.内存数据区定义如下:

DataZone

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45

以上可以看做一个8*4矩阵,请用ARM汇编语言在ARM集成开发环境下设计程序,实现对矩阵的转置操作。

如果改为在GNU ARM环境下编程,程序应如何修改。

答:解:使用R0指向源数据区,R1指向目标数据区。从源数据区中按列取数据(每次取8个),然后顺序存入目标数据区。

在ARM集成开发环境下编程:

/*----------------------------------------------------------------------------------------

********寄存器使用说明************************

***R0:源数据

***R1:目标数据

***R2:行计数器,初值为8,递减至0

***R3:列计数器,初值为4,递减至0

*---------------------------------------------------------------------------------------------*/

AREA Bit_Exch,CODE,READONLY ;声明代码段Bit_Exch

ENTRY ;标识程序入口

CODE32 ;声明32位ARM指令

START

LDR R0,=Src

LDR R1,=Dst

MOV R3,#4

COL

MOV R2,#8

ROW

LDR R4,[R0],#16 ;按列取数据

STR R4,[R1],#4 ;按行存数据

SUBS R2,R2,#1 ;行计数递减

BNE ROW

SUBS R3,R3,#1 ;列计数递减

BNE COL

Stop

B Stop

END

第8章 ARM汇编语言与嵌入式C混合编程

1.严格按照嵌入式C语言的编程规范,写一个C语言程序,实现将一个二维数组内的数据行和列进行排序。

答:略

2.嵌入式C程序设计中常用的移位操作有哪几种,请说明每种运算所对应的ARM指令实现。答:移位操作分为左移操作与右移操作

左移运算符“<<”实现将“<<”左边的操作数的各个二进制位向左移动“<<”右边操作数所指定的位数,高位丢弃,低位补0。其值相当于乘以:2“左移位数”次方。

右移运算符“>>”实现将“>>”左边的操作数的各个二进制位向右移动“<<”右边操作数所指定的位数。

?对于空位的补齐方式,无符号数与有符号数是有区别的。

?对无符号数进行右移时,低位丢弃,高位用0补齐,其值相当于除以:2“右移位数”

次方

?对有符号数进行右移时,根据处理器的不同选择逻辑右移或算术右移

3.volatile限制符在程序中起到什么作用。请举例说明。

答:volatile的本意为“暂态的”或.“易变的”,该说明符起到抑制编译器优化的作用。

如果在声明时用“volatile”关键进行修饰,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供特殊地址的稳定访问。

?例:硬件端口寄存器读取

?Char x=0,y=0,z=0;

?x=ReadChar(0x54000000);//读端口

?y=x;

?x=ReadChar(0x54000000);//再读端口

?z=x;

?以上代码可能被编译器优化为

?Char x=0,y=0,z=0;

?x=ReadChar(0x54000000);//读端口

?y=x;

?z=x;

?为了确保x的值从真实端口获取,声明时应该为

?Volatile char x;

?Char y,z;

4.请分析下列程序代码的执行结果。

#include

main(){

int value=0xFF1;

int *p1,**p2,***p3,****p4;

p1=&value;

p2=&p1;

p3=&p2;

p4=&p3;

printf("****p4=%d\n",****p4);

}

答:程序输出结果为:****p4=4081

5.分析宏定义#define POWER(x) x*x 是否合理,举例说明。如果不合理,应如何更改?答:#define POWER(x) x*x 不合理;对于带参数的宏,其参数应该用括号括起来。

例:如果按照下边方式使用该宏

POWER(2+3) 则宏展开后为 2+3*2+3

该宏应修改为:#define POWER(x) (x)*(x)

6.条件编译在程序设计中有哪些用途?

答:条件编译包括了6条预处理指令#ifdef, #ifndef. ##if, #elif, #else, #endif.。条件编译的功能在于对源程序中的一部分内容只有满足某种条件的情况下才进行编译。

7.何为可重入函数?如果使程序具有可重入性,在程序设计中应该注意哪些问题?

答:如果某个函数可以被多个任务并发使用,而不会造成数据错误,我们就说这个函数具有

arm9嵌入式课后答案

arm9嵌入式课后答案 【篇一:arm嵌入式系统结构与编程习题答案(全)】ass=txt>第一章绪论 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。 2.嵌入式系统是从何时产生的,简述其发展历程。 答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。 嵌入式系统的出现最初是基于单片机的。intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,mcu的性能得到了极大的提升,特别是arm技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。 3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式linux和嵌入式实时操作内核uc/os-ii 嵌入式linux操作系统是针对嵌入式微控制器的特点而量身定做的一种linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。 uc/os是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

基于ARM9的人脸识别系统 嵌入式报告 课程设计

嵌入式课程设计报告 学院信息电子技术 专业通信工程 班级 学号 姓名 指导教师 2017年07月01日

基于ARM9的人脸识别系统 一、引言 人脸识别背景和意义 人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体。 人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗。 二、系统设计 1、硬件电路设计 (1)ARM9处理器 本系统所采用的硬件平台是天嵌公司的TQ2440开发板,该开发板的微处理器采用基于ARM920T内核的S3C2440芯片。 ARM9对比ARM7的优势:虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz 以上。指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。 (2)液晶显示屏 为显示摄像头当前采集图像的预览,系统采用三星的320x240像素的液晶屏,大小为206.68cm。该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。 (3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极

ARM9嵌入式复习总结

ARM9嵌入式复习 第一章 1.嵌入式微处理器的分类。 a)什么是嵌入式微处理器? 1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多 由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。 2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令 系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令集系统CISC(Complex Instruction Set Computer, CISC)。 b) 嵌入式微处理器分类 1.按照系列分:ARM系列、MIPS系列、PowerPC系列。 2.按照指令复杂程度分:CISC和RISC两类 2.微处理器划分: a)嵌入式微控制器 b)嵌入式微处理器 c)DSP处理器 d)嵌入式片上系统 e)多核处理器 3.嵌入式操作系统(EOS)的特性 EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。 第二章 1.ARM7TDMI命名 2.3级流水线与总线架构

三级流水线: 流水线使用3个阶段,因此指令分为3个阶段执行 1.取指:从程序存储器中读取指令,放入流水线中 2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路 径所需要的控制信号。 3.执行:执行已译码的指令 注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令 在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出 3.ARM的两种状态与7种工作模式 a)两种状态。 i.ARM状态:32位,这种状态下执行的是字方式的ARM指令; ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。 注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态. b)7种工作模式。

ARM9上的嵌入式Linux系统移植

《自动化技术与应用》2009年第28卷第6期 Techniques of Automation & Applications | 43 1 引言 嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,是对功能、可靠性、成本、功耗有严格要求的专用计算机系统。它一般由以下几部分组成: 嵌入式微处理器、外围硬件设备、嵌入式操作系统、及特定的应用程序。 当前,人类进入信息爆炸的时代,各类信息极度丰富,数字信息技术和网络技术的高速发展,只有借助于各种计算机,才能够对各类信息进行处理,它们已不再局限于以前的PC,而是由形态各异、性能千差万别的嵌入式系统来完成。而嵌入式操作系统主要有:嵌入式Linux 、WindowsCE 、Vxworks 、uC/OS-II 等[1]。本文主要研究嵌入式Linux 在嵌入式系统中的应用。 2 嵌入式Linux 操作系统及特点 将Linux 应用于嵌入式环境,是基于其具有以下特点:(1)Linux 操作系统是层次结构,并且内核源代码完全开放。不同领域和不同层次的用户可以根据自己应用的需要,对内核进行修改,能够低成本的开发出满足自己需要的嵌入式系统。(2)其具有强大的网络支持功能。Linux 诞生于因特网时代,并具有 ARM9上的嵌入式Linux 系统移植 邹颖婷,李绍荣 (电子科技大学光电信息学院,四川 成都 610054) 摘 要:Linux 操作系统在各个嵌入式领域有着越来越广泛的应用。主要研究了在ARM9体系结构上,嵌入式Linux 系统的移植。介 绍了嵌入式Linux 操作系统、移植目标平台SBC2410、及Linux 内核源代码的目录结构。然后详细讲述了在SBC2410硬件平台上实现Uboot 移植的过程,及概要介绍了Linux 操作系统内核移植的过程。最后将嵌入式Linux 系统成功移植上SBC2410平台。 关键词:ARM9;嵌入式Linux;Uboot 移植;内核移植 中图分类号:TP311.54 文献标识码:B 文章编号:1003-7241(2009)06-0043-03 Transplant of the Linux System on ARM9 ZOU Ying-ting, LI Shao-rong ( School of Opto-Electronic Information, University of Electronic Science and Technology of China, Chengdu 610054 China )Abstract: Linux OS has been more and more widely applied in many embedded areas. This paper introduces the transplantation of the Embedded Linux System on the ARM9. The Embedded Linux OS, the SBC2410 board, and the directory structure of the Linux kernel are introduced. The transplant process of the Uboot and of the Linux kernel are also discussed. Key words: ARM9; embedded Linux; transplantation of Uboot; transplantation of the Linux kernel 收稿日期:2009-01-04 Unix 的特性,这保证了它支持所有标准因特网协议,并且可以利用Linux 的网络协议栈,将其开发成为嵌入式的TCP/IP 网络协议栈。此外,Linux 还支持ext2、fat16、fat32、romfs 等文件系统,为嵌入式系统应用开发打下了很好的基础。(3)Linux 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。而且,Linux 也符合IEEE POSIX.1标准,使应用程序具有较好的可移植性[2]。 3 SBC2410硬件平台介绍 SBC2410是一款基于三星公司ARM9处理器S3C2410A,支持ARM-Linux 、WindowsCE 等操作系统的嵌入式硬件平台。平台的主要硬件资源有:一片64M SDRAM,一片64M Nand Flash,一片1M Nor Flash,一个串口 COM0,一个USB Host A 型接口,一个USB Slave B 型接口,一个标准JTAG 接口,等等。平台支持Linux2.4.18内核版本。 4 嵌入式Linux 系统移植 移植主要包括引导加载程序Uboot 的移植和Linux2.4.18内 计算机应用 Computer Applications

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

作者简介 Andrew N.Sloss于1992年获得Herefordshire大学(英国)计算机科学学士学位,英国计算机协会认证注册工程师(C.Eng,MBCS)。他已在计算机行业工作了16年,从1987年开始参与有关ARM处理器的研发,在ARM处理器上开发了众多领域的应用项目,积累了丰富的经验。他为Emerald出版集团(英国)设计了首个能够在ARM2和ARM3处理器上运行的针对中文和埃及象形文字的编辑系统。他在ARM公司工作了6个多,目前是ARM在美国加州Los Gatos的技术销售工程师,负责为开发新产品的公司提供建议和支持。 编辑推荐 从事ARM嵌入式系统软件开发的每一位工程师的桌上都应摆着这本书。对于初学者来说,它是一本详尽、透彻的使用指南;对于ARM专家来说,它则是一本有益的参考书。从审阅本书的第一稿以来,我就一直在使用这本书,我愿向任何希望从基于ARM的产品获得最大收益的人推荐这本书。

在过去的10年间,ARM体系统结构已经成为世界上最流行的体系结构之一,从蜂窝电话到汽车制动系统,在这些产品中使用了超过20亿片基于ARM的处理器。许多半导体厂商和产品设计公司组成了全球范围的ARM开发者团体,包括软件开发者、系统设计师和硬件设计师。就ARM系统和软件开发来说,到目前为止,还没有其它任何一本书籍能够真正满足其需求,本书将填补这一空白。 本书涵盖了ARM和Thumb指令集、Intel的XScale处理器,概括了ARM体系结构的不同版本之间的差异,示范了如何实现DSP算法,解释了异常和中断处理,描述了围绕ARM内核的cache技术,以及最有效的存储器管理技术。最后一章介绍了ARMv6体系结构的特征和ARM未来的发展,以及对指令集所做的最新改进,这些改进增强了ARM体系结构的DSP和多媒体处理能务。 本收特色 本书从系统和软件我角度来描述了ARM内核,这是与其它书的显著差别。 作者结合了丰富的ARM软件工程经验和ARM开发者的需要的广泛、透彻的知识。 书中提供了许多实用的运行代码范例,并作了详尽的解释,可以从出版商的网站下载 :https://www.doczj.com/doc/9f11337969.html,/companions/1558608745。 包含了一个简单的嵌入式操作系统。 本书简介 本书从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容包括:ARM处理器基础;ARM/Thumb指令集;C语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于ARM的DSP;异常与中断处理;固件与嵌入式OS;cache与存储器管理 ;ARMv6体系结构的特点等。全书内容完整,针对各种不同的ARM内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的ARMv4/v5/Thumb指令的功能、编码、周期定时以及汇编参考。 本书适于从事ARM嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到ARM平台上去的专业技术人员使用,要求对ARM处理器有一定的了解,并有C语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。 目录 第1章 基于ARM的嵌入式系统 1.1 RISC设计思想 1.2 ARM设计思想 1.3 嵌入式系统的硬件 1.3.1 ARM总线技术 1.3.2 AMBA总线协议 1.3.3 存储器 1.3.4 外设 1.4 嵌入式系统的软件 1.4.1 初始化(启动)代码 1.4.2 操作系统 1.4.3 应用程序 1.5 总结 第2章 ARM处理器基础 2.1 寄存器 2.2 当前程序状态寄存器 2.2.1 处理器模式 2.2.2 分组寄存器

基于ARM9的嵌入式Linux网络通信系统设计与实现

基于ARM9的嵌入式Linux网络通信 系统设计与实现

随着计算机技术的发展,嵌入式系统已经成为计算机领域的一个重要组成部分。Internet现已成为社会重要的基础信息设施之一,是信息流通的重要渠道,如何让嵌入式设备连接到Internet上,和其他通信系统进行信息交换是当前嵌入式技术领域研究的热点所在。本文结合实际应用需求,详细研究实现了一种基于S3C2410平台和Linux操作系统的嵌入式网络通信系统。 1.嵌入式网络通信系统总体设计 经过大量的资料收集比较,深入地研究分析并结合现有的实验条件,我们对系统的体系结构、硬件平台和软件系统做出了以下选择: 1)目前嵌入式CPU很多,选择哪款CPU要根据自己产品的实际需要。一般而言,首先应尽量选择系统集成度高、外围电路简洁的CPU;其次,还应综合考察CPU的各项性能指标;最后,还应该考虑软硬件开发环境的建立、厂家的货源以及代理的软件支持力度。经过比较, 本设计采用三星的S3C2410微处理器。这是一款高性价比、低功耗、高集成度的CPU,基于ARM920T内核,主频最高为203MHz,专为手持设备和网络应用而设计,能满足嵌入式系统中的低成本、低功耗、高性能、小体积的要求。 图1为硬件平台的总体设计[ 1 ] 。CPU S3C2410模块是开发板的核心部件。S3C2410 在包含ARM920T核的同时,增加了丰富的外围资源,主要包括1个LCD 控制器,支持STN 和TFT液晶显示屏; 3个通道UART; 4个通道DMA; 4个具有PWM功能的16位定时/计数器和1个16位内部定时器, 支持外部时钟源; 8通道10位ADC,最高速率可达500kB / s;触摸屏、IIS总线、SD 卡和MMC卡接口;117位通用I/O口和24位外部中断源。存储系统包括64MB的NAND Flash存储器模块和SDRAM存储器模块; Flash用于存放嵌入式操作系统、应用程序和用户数据等,并作嵌入式文件系统; SDRAM作为系统运行时的主要区域,用于存放系统及用户数据。通信模块包括串口和以太网接口模块;以太网接口为系统提供以太网接入的物理通道, UART接口则通过RS232可以和宿主机做串口通讯。JTAG调试接口用于系统的嵌入式调试。扩展总线扩展出了系统总线供今后继续开发使用。 图1 硬件平台结构框图

【ARM9嵌入式系统硬件设计指南】嵌入式输入设备设计

【ARM9嵌入式系统硬件设计指南】嵌入式输入设备设计摘要:嵌入式系统可以对各种数据信息进行快速计算、分析、输出,即完成对数据的处理。但计算机系统无法主动产生数据和结果。对数据的处理结果做出何种决策和反应,很多时候就需要用户“告诉”系统如何执行下一步动作,或是给出决策的依据。 ZLG致远电子十余年的嵌入式硬件设计秘笈首度公开!《ARM9嵌入式系统硬件设计指南》配套划时代精品EasyARM-i.MX283A 开发平台同期发布,深入剖析ARM9 硬件设计的每一个毛孔,助您完成前所未有的技术飞跃! 7.1 嵌入式输入设备设计 嵌入式系统可以对各种数据信息进行快速计算、分析、输出,即完成对数据的处理。但计算机系统无法主动产生数据和结果。对数据的处理结果做出何种决策和反应,很多时候就需要用户“告诉”系统如何执行下一步动作,或是给出决策的依据。这时,就需要使用输入设备将用户的“指示”或“依据”传递给嵌入式系统。 常见的人机交互输入设备包括按键、触摸屏、麦克风及其他各类用户可控输入的传感器等。随着科技的发展,不仅我们常见的交互输入设备出现了新的形态,而且也出现了不少新的交互输入方式。比如,现在手机中的电容按键及重力感应传感器、距离传感器。现在的交互设备不仅体现在硬件设备的复杂性上,而且在相关数据的复杂性上也与以往有了较大的增加。比如,可用于语音输入的麦克和可用于人脸识别的摄像头,为了完成这些人机交互输入,除了硬件输入设备对信息采集外,还需要后台进行大量的数据处理,以帮助系统“理解”用户的“输入信息”。 下面我们详细介绍最常用的两种输入设备:键盘/按键、触摸屏。 7.1.1 键盘 键盘是嵌入式应用的常用外部设备之一。键盘是由若干个按键组成的开关矩阵,它是最简单的数字量输入设备。对系统而言,键盘上不同的按键代表着不同的含义(一般来说,按键的含义可通过软件定义)。用户通过按动键盘的按键,输入数据或命令,实现简单的人机交互。 1.键盘的基本电路 键盘的基本电路是一个接触开关,通、断两种状态分别表示逻辑“0”和“1”。如图7.1所示,当开关打开时,处理器检测到相应引脚为高电平,表示逻辑“1”;当开关闭合时,处理器检测到相应引脚为低电平,表示逻辑“0”。 2.键盘的分类 按键排布的方式,键盘可分为可分成独立式按键键盘和矩阵式按键键盘;按读入键值的方式,可分为直读方式和扫描方式;按编码方式,可分成非编码方式和硬件编码方式;按微处理器响应方式可分为中断方式和查询方式。以上各种方式组合可构成不同硬件结构和接口的键盘。以下介绍较为常用的两种方式。 (1)、独立式 独立式按键键盘是指将每个独立按键按一对一的方式直接接到微处理器的I/O输入端口,如图7.1所示。读键值时,处理器可以检测相应I/O输入端口的状态,判定输入电平,确定输入的逻辑值。按键之间在硬件和读取方式上均相互独立,所以习惯称这种按键为独立式按键。这种方式在软硬件上实现均比较简单,但每一个按键都占用一个I/O端口,占用的资源较多,一般在按键数量较少,微处理器I/O资源充足时采用。

基于arm9和linux的嵌入式小区智能娱乐点播系统设计

基于ARM9和Linux的嵌入式小区智能娱乐点播系统设计 编制: 校对: 审核: 批准:

摘要 本项目实现了一款基于ARM Linux操作系统和Qt/Embedded图形系统的嵌入式视频点播系统。该系统提供美观、友好的图形用户界面。用户可方便地进行播放、停止、 暂停、选曲等操作。mplayer播放器输出的音频视频品质优良。 VOD是Video On Demand的缩写,即视频点播的意思。顾名思义,它是一种可以按用户需要点播节目的交互式视频系统,或者更广义一点讲,它可以为用户提供各种交 互式信息服务。交互式视频点播系统一般由VOD前端处理系统、传输网络、用户机顶 盒三个部分组成。 交互式VOD集互联网、多媒体、通讯等多种技术于一体,向用户提供包括数字电 视在内的多种交互式服务的崭新技术。 本设计将研究目标定位是设计一个GEC2440+液晶屏的视频点播系统。采用的硬 件环境为国内外广泛使用的ARM9处理器S3C2440,操作系统采用的是嵌入式Linux家族中的ARM Linux。

目录 1绪论 (6) 1.1嵌入式系统概述 (6) 1.3项目内容和实现关键部分说明 (7) 2系统总体设计 (8) 2.1系统概述 (8) 2.2服务器端设计 (9) 2.2.1 FTP服务器 (9) 2.2.2目录服务器 (9) 2.3客户端设计框架 (9) 2.4 ARM微处理器 (9) 2.4.1 ARM概述 (9) 2.4.2 ARM微处理器的特点 (10) 2.4.3 ARM微处理器系列 (10) 2.5嵌入式操作系统 (11) 2.5.1嵌入式系统软件结构体系 (11) 2.5.2嵌入式操作系统简介 (11) 2.5.3 Linux操作系统简介 (12) 2.6 Q T/E MBEDDED用户界面 (14) 3系统硬件设计 (16) 3.1嵌入式系统硬件结构 (16) 3.2 GEC2440结构 (16) 3.3 GEC2440硬件资源 (17) 3.4 S3C2440简介 (18) 4系统软件设计 (19) 4.1搭建嵌入式L INUX开发环境 (19)

ARM9嵌入式系统设计基础课后答案全解

********************************************* ********************************************* 第一章 1.简述嵌入式的定义 以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.举例说明嵌入式系统的“嵌入性”、“专用性”、“计算机系统”的基本特征。 按照嵌入式系统的定义,嵌入式系统有3个基本特点,即“嵌入性”、“专用性”与“计算机”。 “嵌入性”由早期微型机时代的嵌入式计算机应用而来,专指计算机嵌入到对象体系中,实现对象体系的智能控制。当嵌入式系统变成一个独立应用产品时,可将嵌入性理解为内部嵌有微处理器或计算机。 “计算机”是对象系统智能化控制的根本保证。随着单片机向MCU、SoC发展,片内计算机外围电路、接口电路、控制单元日益增多,“专用计算机系统”演变成为“内含微处理器”的现代电子系统。与传统的电子系统相比较,现代电子系统由于内含微处理器,能实现对象系统的计算机智能化控制能力。 “专用性”是指在满足对象控制要求及环境要求下的软硬件裁剪性。嵌入式系统的软、硬件配置必须依据嵌入对象的要求,设计成专用的嵌入式应用系统。 3. 简述嵌入式系统发展各阶段的特点。 (1)无操作系统阶段:使用简便、价格低廉;(2)简单操作系统阶段:初步具有了一定的兼容性和扩展性,内核精巧且效率高,大大缩短了开发周期,提高了开发效率。 (3)实时操作系统阶段:系统能够运行在各种不同类型的微处理器上,具备了文件和目录管理、设备管理、多任务、网络、图形用户界面Graphic User Interface,GUI)等功能,并提供了大量的应用程序接口Application Programming Interface,API),从而使应用软件的开发变得更加简单。 (4)面向Internet阶段:进入21世纪,Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式技术与Internet技术的结合正在推动着嵌入式系统的飞速发展

推荐-基于ARM9的μCOSⅡ嵌入式系统移植 精品

大庆师范学院 本科生毕业 基于ARM9的μC/OS-Ⅱ嵌入式系统移植 院(系)物理与电气信息工程 专业电子信息工程 研究方向嵌入式技术 学生姓名钮佳楠 学号20XX01071677 指导教师姓名成宝芝 指导教师职称讲师 20XX年5 月15 日

摘要 随着计算机和电子技术的发展,越来越多的嵌入式产品出现在人们的日常生活和工业生产之中。由于嵌入式设备的智能型,使得生活和生产变得极为方便,由此也带来了嵌入式操作系统的迅速发展。本文通过ADS1.2和JLink的软件平台,以及芯片为S3C2440的ARM9开发板,成功进行微型嵌入式操作系统μC/OS-Ⅱ在开发板上的移植。在此过程中对于μC/OS-Ⅱ进行了较为全面的学习,对于移植操作也有了深刻的认识。 关键词:μC/OS-Ⅱ;Arm9;移植

Abstract With the development of puter and electronic technology, more and more embedded in people's daily life and industrial production. Intelligent embedded devices, making life extremely convenient and production, which also brought the rapid development of embedded operating system.This article by ADS1.2 and JLink, software platforms, and chip S3C2440 ARM9 development board, the success of micro embedded operating system OS-II development board transplantation. In this process, the OS-II for a more prehensive learning, have a deep understanding for the transplant operation. Key words: u C/OS - Ⅱ; Arm9; transplant

ARM9嵌入式系统设计基于S3C2410与Linux

ARM9嵌入式系统设计:基于S3C2410与Linux》针对在嵌入式市场上颇具竞争力的ARM9处理器——S3C2410和开放源码的Linux操作系统,讲述嵌入式系统的概念、软硬件的开发和调试手段、嵌入式Linux驱动程序和应用程序的开发以及图形用户界面MiniGUI的移植和应用。《ARM9嵌入式系统设计:基于S3C2410与Linux》的特点是集嵌入式系统开发的理论知识和实验教学于一体,并结合北京精仪达盛科技有限公司的开发板,给出了大量实例。 编辑推荐 《ARM9嵌入式系统设计:基于S3C2410与Linux》可作为高等院校嵌入式系统课程的教材,也可作为对嵌入式系统开发感兴趣的读者的入门教材,同时还可以作为从事ARM嵌入式系统应用开发工程师的参考书。 当前,嵌入式技术的应用越来越广泛,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心——处理器决定了产品的市场和性能。在32位嵌入式处理器市场中,ARM处理器占有很大的份额。ARM不仅是一个公司、一种技术,也是一种经营理念,即由ARM 公司提供核心技术,只出售芯片中的IP授权,采取了别具一格的“Chipless模式”(无芯片的芯片企业),不参与生产,而是由合作厂商去生产具体的芯片和产品。 现在由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。Linux自出现以来,得到了迅猛的发展。Linux是开放源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。Linux在服务器领域已经占有很大的份额,在图形界面方面也不输于Windows。由于源码可以修改、移植,Linux 在嵌入式领域中的应用也越来越广。选用Linux作为平台,可以根据具体需要自由地裁减源码,打造适合目标平台的环境,编写最有效率的应用程序。 查看所有商品描述

ARM9嵌入式系统设计期末复习

ARM复习 4.1基本IO实验(LED控制) 控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1 亮->LED2 亮->LED3 亮->LED4 亮->LED1 灭->LED2 灭->LED3 灭->LED4 灭->全亮->全灭,如此反复。 /****************************************************************************** * name: led_on * func: turn on the leds one by one ******************************************************************************/ void led_on(void) { int i,nOut; nOut = 0xF0; rGPFDAT = nOut & 0x70; for(i=0;i<100000;i++); rGPFDAT=nOut & 0x30; for(i=0;i<100000;i++); rGPFDAT=nOut & 0x10; for(i=0;i<100000;i++); rGPFDAT=nOut & 0x00; for(i=0;i<100000;i++); } /****************************************************************************** * name: led_off * func: turn off the leds one by one ******************************************************************************/ void led_off(void) { int i,nOut; nOut=0;

ARM嵌入式系统论文

ARM嵌入式系统论文 指导老师:张力一.ARM简介 如果说,“嵌入式”是2008年电子工程师谈论得最多的词之一,2009年谈论得最多的一个词就是“ARM”。究竟什么是ARM呢,他是英国一家电子公司的名字,全名的意思是Advanced RISC Machine。该公司成立于1990年11月,是苹果电脑,Acorn电脑集团和VLSI Technology的合资企业。Acorn曾推出世界上首个商用单芯片RISC处理器,而苹果电脑当时希望将RISC技术应用于自身系统,ARM微处理器新标准因此应运而生。 80年代末90年代初半导体行业产业链刚刚出现分工,台积电,联电等半导体代工厂正悄悄崛起,美国硅谷中的一些fabless公司也如雨后春笋一样涌现出来,所谓的fabless公司自己设计芯片,但是生产过程则包给台积电等代工厂生产。而ARM更是为天下先,19年前首创了chipless的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP内核,授权给半导体公司使用,半导体公司在ARM技术的基础上添加自己的设计并推出芯片产品,最后由OEM客户采用这些芯片来构建基于ARM技术的系统产品。这种方式有点象通信行业的高通和半导体行业的RAMBUS,他们站在了半导体产业链上游的上游。19年前成立的ARM可能面临着很大风险,因为没有人知道这条路能不能行得通,但是现在的事实已经证明,ARM走了一条没人走过,却是正确的道路。,作为附加产品,他还让中国的行业人士从这个窗口认识到了英国的电子公司,ARM的成功带动了英国的chipless公司的发展。 因为ARM的产品是IP Core,没有任何物理意义上的硬件或者软件实体,所以只能在中国注册成为“咨询”公司,尽管咨询只是其业务中很小的一块。ARM的核心业务是销售芯片核心技术IP,目前全球有103家巨型IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括德州仪器,意法半导体,Philips, Intel等。20大巨头中唯一没有购买ARM授权的是Intel的老对头AMD,因为Intel便携式处理器采用的是Strong ARM,而AMD则收购了Alchemy公司与之抗衡,采用的是MIPS结构。 二.ARM产品介绍 ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。 CPU内核 ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。 ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。 ARM710系列,包括ARM710、ARM710T、ARM720T和ARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache)、内存管理、写缓冲和JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。 ARM7优化用于对价位和功耗敏感的消费应用的低功耗32位核,非常低的功耗;三段流水线和冯·诺依曼结构,提供0.9MIPS/MHz。 ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard 总线。在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。常用于连网和顶置盒。 ARM940T系列低价、低能耗、高性能系统微处理器,配有、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。StrongARM:性能很高、

ARM9在嵌入式中的应用实例

ARM9在嵌入式中的应用实例 ——启动程序的实现 【摘要】:本文给出了基于ARM9嵌入式系统的启动程序的实现流程,并针对存储器控制单元的使用以及目标文件的分布装载等技术难点进行详细分析。 【关键词】嵌入式系统、启动程序、ARM9 嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统的核心部件是各种类型的嵌入式处理器,随着嵌入式系统不断深入到人们生活中的各个领域,嵌入式处理器得到前所未有的飞速发展。 典型的32位RISC芯片──ARM处理器,不论是在PDA,STB,DVD等消费类电子产品中,还是在GPS,航空,勘探,测量等军方产品中都得到了广泛的应用。越来越多的芯片厂商早已看好ARM的前景,如Intel,NS,Ateml,Philips,NEC,CirrusLogic等公司都有相应的产品。在1999年,ARM突破1.5亿个,市场份额超过了50%,已经成为业界的龙头。 在基于ARM9的嵌入式系统过程中,发现技术难点主要在于系统启动程序的编写,为此本文详细论述了在ARM9基础上开发嵌入式系统时启动程序的实现。 1.启动程序流程 嵌入式系统的资源有限,程序通常都是固化在ROM中运行。ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作由用汇编语言编写的启动程序完成。 启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行。它应包含进各模块中可能出现的所有段类,并合理安排它们的次序。 写好启动程序是设计好嵌入式程序的关键,系统启动程序所执行的操作依赖于正在开发其软件的系统,一般流程如下: 2.详细步骤 (1)设置入口指针 启动程序首先必须定义入口指针,而且整个应用程序只有一个入口指针。 (2)设置中断向量 ARM7要求中断向量表必须设置在从0地址开始,连续8×4字节的空间,分别是复位、未定义指令错误、软件中断、预取指令错误、数据存取错误、IRQ、FIQ和一个保留的中断向量。

arm9嵌入式系统设计

arm9嵌入式系统设计 基于ARM9嵌入式微处理器的远程仓库管理系统 摘要 仓库管理是物流当中的一个重要环节,也在企业的整个管理流程中起着非常重要的作用,如果不能保证及时准确的进货、库存控制和发货,将会给企业带来巨大损失,这不仅表现为企业各项管理费用的增加,而且会导致客户服务质量难以得到保证,最终影响企业的市场竞争力.传统的人工仓库作业模式和数据采集方式早已不能满足仓库管理的快速、准确要求,因此,在20世纪70年代,通用计算机开始应用到仓库管理上,它带来了仓库管理的一次革命,但随之也带来了新的问题:建设成本巨高,后期维护量大,硬件系统不可靠。随着嵌入式技术的发展,人们似乎又找到了更加适合用于仓库管理的系统。嵌入式系统以体积小,功耗低,运算能力强等优点著称,它一般被设计成某一场合专用的系统。本文设计的远程仓库管理系统,客户机是以运行Windows CE操作系统的手持式设备,服务器采用运行Windows Server 2003的PC机。客户机的硬件平台以ARM9(S3C2410)微处理器作为核心,通过以太网与服务器建立连接组成一个远程仓库管理系统。该系统可以实现到货检验、入库、出库、调拨、移库、库存盘点等各个作业环节。 关键词:远程仓库管理系统,嵌入式系统,ARM9微处理器,Windows https://www.doczj.com/doc/9f11337969.html,

ABSTRACT Warehouse management system take an important part in labour exchange , but also the entire business process management plays an important role, if it can not guarantee timely and accurate purchasing, inventory control and shipping, will be a great loss to businesses, not only the performance of the management costs for enterprises increases, and customer service quality will lead to difficult to be assured that the ultimate impact of the market competitiveness of enterprises. Traditional artificial storage and data acquisition mode of operation has long warehouse management can not meet the rapid and accurate request, therefore, in the 20th century, 70's, began to apply general-purpose computers, warehouse management, warehouse management which has brought a revolution, but with the it has also brought new problems: the construction of huge high-cost, post-maintenance, and unreliable hardware. With the development of embedded technology, there seems to have found a more suitable system for warehouse management. Embedded systems are small, low power consumption, computing power, said the strong advantages, it is generally designed as a forum dedicated system. In this paper, the design of a remote warehouse management system, client operating system is running Windows CE handheld devices, servers running Windows Server 2003 using the PC. Client hardware platform as a core ARM9 microprocessors, servers via Ethernet to connect a remote warehouse management system. The system enables delivery inspection, storage, a library, allocate, transfer database, inventory and other operational aspects of inventory. Key words:Remote Warehouse Management System,Embedded System,ARM9 Device,Windows https://www.doczj.com/doc/9f11337969.html, 目录 第1章绪论 (1) 1.1 仓库管理系统的概述 (1) 1.2 仓库管理系统研究背景与意义 (1) 1.3 国内外同类软件的研究现状与发展趋势 (1) 第2章需求分析 (3) 2.1 设计目标 (3) 2.2 需求描述 ................................................................................ 错误!未定义书签。 2.2.1 功能需求 ........................................................................ 错误!未定义书签。 2.2.2 数据需求 ........................................................................ 错误!未定义书签。 2.3 可行性分析 ............................................................................ 错误!未定义书签。 2.3.1 远程数据库系统原理可行性分析 (5) 2.3.2 硬件平台的选择 ............................................................ 错误!未定义书签。 第3章系统分析........................................................................ 错误!未定义书签。 3.1 整体硬件连接图 .................................................................... 错误!未定义书签。 3.2 服务器软件环境分析 (6) 3.2.1 SQL Server Mobile 服务器代理 (6) 3.2.2 IIS 6.0 的应用 ............................................................... 错误!未定义书签。 3.2.3 Microsoft? SQL Server? 2000简介 (6) 3.3 客户端软件环境分析 (7) 3.3.1 SQL Server Mobile 客户端代理 (7) 3.3.2 https://www.doczj.com/doc/9f11337969.html,的应用 (7) 3.3.3 客户端环境的操作系统定制 ........................................ 错误!未定义书签。 第4章服务器的实现 (10)

相关主题
文本预览
相关文档 最新文档