ARM实验报告--Thumb
- 格式:docx
- 大小:117.95 KB
- 文档页数:6
汇编语言与接口技术实验报告ARM汇编语言程序设计院系信科院专业班级计科1201学生姓名学号指导教师提交日期 2015 年 5 月 15 日一、实验目的●初步学会使用IAR EWARM 开发环境及ARM 软件模拟器。
●通过实验掌握简单ARM 汇编指令的使用方法。
●通过实验掌握使用ldm/stm、b、bl 等指令完成较为复杂的存储区访问和程序分支,学习使用条件码,加强对CPSR 的认识。
●通过实验掌握 ARM 处理器16 位Thumb 汇编指令的使用方法。
二、实验内容●利用实验参考程序学习使用ldr/str、mov 等指令访问寄存器或存储单元。
使用add/sub/lsl/lsr/and/orr 等指令,完成基本数学/逻辑运算。
●编写程序循环对R4~R11 进行累加8 次赋值,R4~R11 起始值为1~8,每次加操作后把R4~R11 的内容放入SP 栈中,SP 初始设置为0x800。
最后把R4~R11 用LDMFD 指令清空赋值为0。
●新建工程,并自行编写汇编程序,分别使用ldr、str、ldmia、stmia 操作,实现对某段连续存储单元写入数据,并观察操作结果。
学习分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。
●编写程序实现50!(即50的阶乘)。
●编写程序从ARM状态切换到Thumb,在ARM 状态下把R2 赋值为0x12345678,在Thumb状态下把R2 赋值为0x87654321。
同时观察并记录CPSR、SPSR 的值,分析各个标志位。
三、实验设备1. UP-TECH S2410实验平台,ARM标准/增强型仿真器套件2. PC 操作系统WIN98 或WIN2000 或WINXP,IAR EWARM集成开发环境,仿真调试驱动程序(H-JTAG)。
四、实验参考程序#*********************************************************************************************# NAME: ARMcode1.s *# Author: Embest *# Desc: ARMcode examples *# copy words from src to dst *# History: shw.He 2005.02.22 *#*********************************************************************************************NAME mainPUBLIC __iar_program_startSECTION `.text`:CODE:NOROOT(2)ARM ; ARM mode__iar_program_startmain:ldr r0, =src /* r0 = pointer to source block */ldr r1, =dst /* r1 = pointer to destination block */mov r2, #num /* r2 = number of words to copy */mov sp, #0x400 /* set up stack pointer (r13) */blockcopymovs r3,r2, LSR #3 /* number of eight word multiples */beq copywords /* less than eight words to move ? */stmfd sp!, {r4-r11} /* save some working registers */octcopyldmia r0!, {r4-r11} /* load 8 words from the source */stmia r1!, {r4-r11} /* and put them at the destination */subs r3, r3, #1 /* decrement the counter */bne octcopy /* ... copy more */ldmfd sp!, {r4-r11} /* don't need these now - restore originals */ copywordsands r2, r2, #7 /* number of odd words to copy */beq stop /* No words left to copy ? */ wordcopyldr r3, [r0], #4 /* a word from the source */str r3, [r1], #4 /* store a word to the destination */subs r2, r2, #1 /* decrement the counter */bne wordcopy /* ... copy more */stopb stopALIGNsrcDCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dstDCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0END五、程序运行测试实验代码(替换参考程序的main部分)及测试结果如下:实验1LDR R0, =SRCLDR R1,=DSTMOV R2,#55MOV SP,#0x400BLOCKCOPYMOVS R3,R2, LSR #3BEQ COPYWORDSSTMFD SP!, {R4-R11}OCTCOPYLDMIA R0!, {R4-R11}STMIA R1!, {R4-R11}SUBS R3, R3, #1BNE OCTCOPYLDMFD SP!, {R4-R11}COPYWORDSANDS R2, R2, #7BEQ STOPWORDCOPYLDR R3, [R0], #4STR R3, [R1],#4SUBS R2, R2, #1BNE WORDCOPYSTOPB STOPALIGNSRCDCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4DSTDCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0END实验2STARTldr r0,=SRCmov r2,#8mov sp,#0x800mov r4,#1mov r5,#2mov r6,#3mov r7,#4mov r8,#5mov r9,#6mov r10,#7mov r11,#8LOOPadd r4,r4,#1add r5,r5,#1add r6,r6,#1add r7,r7,#1add r8,r8,#1add r9,r9,#1add r10,r10,#1add r11,r11,#1stmfd sp!,{r4-r11}subs r2,r2,#1bne LOOPLDMIA r0!,{r4-r11}STOPLTORGSRCDCD 0,0,0,0,0,0,0,0 exit: B exitEND实验3main:STARTmov r0,#0x3000mov r1,#0x10000001mov r2,#100LOOPstr r1,[r0],#4add r1,r1,#1subs r2,r2,#1bne LOOPmov r0,#0x3000mov r2,#100mov r9,#0LOOP1ldr r1,[r0],#4adds r8,r1,r8adc r9,r9,#0subs r2,r2,#1bne LOOP1STOPb STOPEND实验4STARTmov r8,#20mov r9,#0sub r0,r8,#1LOOPmov r1,r9umull r8,r9,r0,r8mla r9,r1,r0,r9subs r0,r0,#1bne LOOPEND实验5STARTldr r2,=0x12345678CODE16ldr r2,=0x87654321END。
ARM状态和THUMB状态ARM处理器的⼯作状态在ARM的体系结构中,可以⼯作在三种不同的状态,⼀是ARM状态,⼆是Thumb状态及Thumb-2状态,三是调试状态。
《嵌⼊式系统开发与应⽤教程(第2版)》上介绍说:有两种状态ARM状态和Thumb状态,当时初学甚为不解,现在⼀知半解时再看忽然想到了显⽰中的例⼦:ARM核就好⽐⼀个⾼中学校,那种包含普通⾼中和职业⾼中的。
普通⾼中就相当于ARM状态,职业⾼中就相当于Thumb状态,这样还不能理解的话:可以认为泡泡卡丁车中普通模式和加速模式,,卡丁车加速要等到集⽓管加满,然后“ctrl”⼀下,就切换到了加速模式,⽓放完了就⼜回来了,不管加速模式还是普通模式都是在跑,只是速度不⼀样⽽已。
⽽ARM状态和Thumb状态可以直接通过某些指令直接切换,都是在运⾏程序,只不过指令长度不⼀样⽽已。
这个概念对初学者相当重要,因为当ARM Thumb是什么还没弄清楚,怎么能理解两种状态呢?他们之间的关系清楚了,这样就可以深⼊了解ARM状态是什么,Thumb状态是什么了。
另外:ARM的M系列主要⽤Thumb指令,ARM9和A系列主要⽤ARM指令S3C2440.S启动代码中根本就没⽤Thumb指令。
状态此时处理器执⾏32位的字对齐的指令,Thumb状态此时处理器执⾏16位的,半字对齐的THUMB指令。
切换程序:从到Thumb: LDR R0,=lable+1 BX R0 从ARM到Thumb: LDR R0,=lable BX R01,ARM状态arm处理器⼯作于32位指令的状态,所有指令均为32位2,thumb状态arm执⾏16位指令的状态,即16位状态3,thumb-2状态这个状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更⾼的性能,更有效的功耗及更少地占⽤内存。
总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态上有所提升,优化。
ARM Thumb指令集详解ARM Thumb指令集详解2019-04-27 12:30来源:MCU嵌入式领域ARM Thumb指令集Thumb指令可以看作是ARM指令压缩形式的子集,是针对代码密度的问题而提出的,它具有16位的代码密度。
Thumb不是一个完整的体系结构,不能指望处理只执行Thumb指令而不支持ARM指令集。
因此,Thumb指令只需要支持通用功能,必要时可以借助于完善的ARM指令集,比如,所有异常自动进入ARM状态。
在编写Thumb指令时,先要使用伪指令CODE16声明,而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。
编写ARM指令时,则可使用伪指令CODE32声明。
1 Thumb指令集与ARM指令集的区别Thumb指令集没有协处理器指令,信号量指令以及访问CPSR或SPSR的指令,没有乘加指令及64位乘法指令等,且指令的第二操作数受到限制;除了跳转指令B有条件执行功能外,其它指令均为无条件执行;大多数Thumb数据处理指令采用2地址格式。
Thumb指令集与ARM指令的区别一般有如下几点:跳转指令程序相对转移,特别是条件跳转与ARM代码下的跳转相比,在范围上有更多的限制,转向子程序是无条件的转移。
数据处理指令数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果须放入其中一个操作数寄存器中,而不是第3个寄存器中。
数据处理操作比ARM状态的更少,访问寄存器R8~R15受到一定限制。
除MOV和ADD指令访问器R8~R15外,其它数据处理指令总是更新CPSR中的ALU状态标志。
访问寄存器R8~R15的Thumb数据处理指令不能更新CPSR中的ALU状态标志。
单寄存器加载和存储指令在Thumb状态下,单寄存器加载和存储指令只能访问寄存器R0~R7。
批量寄存器加载和存储指令LDM和STM指令可以将任何范围为R0~R7的寄存器子集加载或存储。
PUSH和POP指令使用堆栈指令R13作为基址实现满递减堆栈。
arm实训总结标题:ARM实验实训总结报告一、前言本次ARM实验实训是我对嵌入式系统设计与开发的一次深度实践。
通过这次实训,我对ARM微处理器的结构原理、指令集以及基于ARM架构的嵌入式系统开发流程有了更为直观和深入的理解。
二、实训内容回顾在实训过程中,我们主要围绕ARM Cortex-M系列处理器进行学习和实践。
首先,从理论层面,我们系统地学习了ARM体系结构、工作模式、存储器管理、异常处理等基础知识;其次,在实践环节,我们使用Keil MDK等开发工具进行了汇编和C语言编程,完成了中断服务程序设计、定时器应用、串口通信等多个实战项目。
三、实训过程及收获1. 硬件操作与调试:通过对ARM开发板的实际操作,我亲身体验了硬件连接、程序下载、在线调试等环节,对硬件底层的工作原理有了更清晰的认识,也锻炼了我的动手能力和问题解决能力。
2. 软件编程与实现:通过编写和调试ARM汇编和C语言代码,我对ARM的指令集、寄存器配置、中断处理机制等有了深入理解,同时也提升了我的编程技能和逻辑思维能力。
3. 团队协作与交流:在完成复杂项目的过程中,我们分工合作,共同探讨解决方案,这不仅提高了我在团队环境下的工作效率,也锻炼了我与他人沟通协调的能力。
四、实训反思与展望尽管在实训过程中取得了一定的进步,但我也意识到自身在某些方面还有待提升,如对实时操作系统RTOS的理解与应用、硬件驱动程序的设计与优化等。
未来的学习中,我将深化对这些领域的研究,努力提升自己在嵌入式系统开发方面的综合能力。
总结,此次ARM实训是一次宝贵的实践经历,它使我对嵌入式系统的软硬件协同设计有了更深层次的认知,并为我后续从事相关领域的工作或研究打下了坚实的基础。
五、结语ARM实训不仅是对我现有知识的检验,更是对未来专业技能的磨砺。
我会珍视这份实践经验,以此为契机,持续探索并深化对嵌入式系统尤其是ARM架构技术的研究,为我国的科技创新事业贡献自己的力量。
实践-Thumb指令实践指导实践指导1:ARM与Thumb的混合编程1.实验⽬的●使⽤Thumb汇编语⾔,体会ARM与Thumb的区别。
●使⽤伪指令,加深对伪操作的理解。
2.实验设备●硬件:PC机。
●软件:ADS集成开发环境,Windows2000/XP/2003。
3.实验原理ARM与Thumb的混合编程所有的ARM指令都是可以条件执⾏的,⽽Thumb指令仅有⼀条指令(B指令)具备条件执⾏功能。
所以很多应⽤程序需要两者的混合编程,因此存在ARM与Thumb状态之间相互切换,⽽且相互之间的状态切换的开销⼏乎为零。
由于ARM处理器总是从ARM状态开始执⾏,故Thumb指令的执⾏必须由ARM状态转向Thumb状态,通常BX指令完成。
另外在Thumb指令前必须有CODE16伪指令指⽰汇编器以下指令为Thumb指令。
4.实验内容下⾯是⼀段直接进⾏状态切换的代码。
AREA AddReg,CODE,READONL YENTRYCODE32;程序从ARM状态开始ADR R0,ThumbProg+1;跳转到ThumbProg。
这⾥为什么要加1呢?因为BX指令;跳转到指定的地址执⾏程序时,若(BX{cond}Rm)Rm;的位[0]为1,则跳转时⾃动将CPSR中的标志T置位即把;⽬标代码解释为Thunb代码。
BX R0;程序切换到Thumb状态CODE16;CODE16指⽰编译器后⾯为Thumb指令ThumbProg MOV R2,#2MOV R3,#3ADD R2,R2,R3ADR R0,ARMProgBX R0;跳转到ARMProg,程序切换到ARM状态CODE32;CODE32指⽰编译器后⾯为ARM指令ARMProg MOV R4,#4MOV R5,#5ADD R4,R4,R5Stop MOV R0,#0x18;软中断参数设置LDR R1,=0x20026;软中断参数设置SWI0x123456;将CPU的控制权交给调试器END5.操作步骤Step1建⽴⼯程⽂件,输⼊程序代码。
《兼容ARMThumb指令的多指令集处理器技术研究》篇一一、引言随着移动计算和嵌入式系统的发展,处理器技术已成为推动科技进步的关键因素。
其中,ARM处理器因其高效能、低功耗的特性,在移动设备和嵌入式系统中得到了广泛应用。
本文将重点研究兼容ARMThumb指令的多指令集处理器(MIS)技术,探讨其设计原理、实现方法和应用前景。
二、ARMThumb指令简介ARMThumb指令集是ARM公司为低功耗、低成本应用开发的一种精简指令集。
它采用Thumb-2技术,能够在保持代码密度的同时,提供与ARM指令集相似的性能。
Thumb指令集的兼容性对于多指令集处理器设计具有重要意义。
三、多指令集处理器(MIS)概述多指令集处理器(MIS)是一种能够同时支持多种指令集的处理器。
通过采用不同的指令集,MIS能够根据应用需求灵活调整处理器的性能和功耗。
MIS的设计涉及到多个方面的技术,包括指令集设计、处理器架构、硬件实现等。
四、兼容ARMThumb指令的多指令集处理器设计(一)设计原则在设计兼容ARMThumb指令的多指令集处理器时,需要遵循以下原则:1. 兼容性:处理器应能够支持多种指令集,包括ARMThumb 指令集。
2. 性能:在保证兼容性的同时,处理器应具备较高的性能。
3. 功耗:考虑到移动设备和嵌入式系统的特点,处理器的功耗应尽可能低。
(二)设计方法1. 指令集设计:根据应用需求,设计适合的指令集。
在ARMThumb指令集的基础上,可以进一步优化和扩展。
2. 处理器架构:根据指令集的特点,设计合理的处理器架构。
包括流水线设计、缓存设计、寄存器文件设计等。
3. 硬件实现:采用先进的半导体工艺和电路设计技术,实现处理器的硬件电路。
五、实现方法与技术挑战(一)实现方法1. 硬件实现:采用ASIC或FPGA等技术,实现处理器的硬件电路。
2. 软件实现:通过编写编译器和操作系统等软件,支持多种指令集的运行。
(二)技术挑战1. 兼容性:如何保证处理器能够同时支持多种指令集,且不会产生兼容性问题。
ARM 实验报告学院:计算机科学与工程学院班级: 070603 学号: 070603115 姓名:张鑫实验一:工程配置一、处理器配置选择菜单项Project > Settings…或快捷键Alt+F7,弹出工程设置对话框。
在工程设置对话框中,选择Processor设置对话框,如下图,可进行目标板所用处理器的配置。
图1 处理器配置对话框用户选择对应的工程文件名进行相应的配置。
图中各项设置定义如下:处理器模块(CPU Module)选择当前所使用的处理器模块,不同的处理器模块将支持不同的处理器系列,目前Embest IDE for ARM 支持ARM7、ARM9核系列处理器。
处理器系列(CPU Family)选择用户使用的处理器所属处理器系列。
处理器成员(CPU Member)设置处理器系列中具体的处理器成员。
字节排列方式(Endian)设置该处理器当前所支持的存储区字节排列方式是大字节结尾(Big Endian)还是小字节结尾方式(Little Endian)。
处理器制造商(Peripheral Maker)选择处理器生产厂家。
处理器型号(Peripheral Chip)选择相应的处理器型号。
编译工具(Build Tools)设置该处理器对应的编译链接器。
Embest IDE for ARM 支持ARM核系列处理器。
开发ARM7核系列处理器,按照图5-11中设置;开发ARM9核系列处理器,可依照图5-11设置作相应的改变。
二、仿真器配置选择菜单项Project>Settings…,弹出工程设置对话框。
在工程设置对话框中,选择Remote设置对话框,如下图,可进行仿真器的连接配置。
图2 仿真器的连接配置在该对话框中,有两项设置:远程连接设备(Remote device)设置连接的调试设备,例如Embest IDE for ARM支持英蓓特公司的Embest Emulator for ARM和Embest PowerICE for ARM。
实验三3.1 实验目的初步学会使用Embest IDE for ARM 开发环境及ARM 软件模拟器;通过实验掌握简单ARM 汇编指令的使用方法。
实验内容熟悉开发环境的使用并使用ldr/str,mov 等指令访问寄存器或存储单元。
使用add/sub/lsl/lsr/and/orr 等指令,完成基本数学/逻辑运算。
3.2实验目的通过实验掌握使用ldm/stm,b,bl 等指令完成较为复杂的存储区访问和程序分支,学习使用条件码,加强对CPSR 的认识。
实验内容熟悉开发环境的使用并完成一块存储区的拷贝;完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。
3.3 实验目的通过实验掌握ARM 处理器16 位Thumb 汇编指令的使用方法。
实验内容使用THUMB 汇编语言,完成基本的reg/mem 访问,以及简单的算术/逻辑运算;使用THUMB 汇编语言,完成较为复杂的程序分支,push/pop,领会立即数大小的限制,并体会ARM 与THUMB 的区别。
3.4实验目的通过实验掌握学会使用msr/mrs 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解;通过实验掌握ld 中如何使用命令行指定代码段起始地址。
实验内容通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM 不同模式的进入与退出。
3.5 实验目的学会使用Embest IDE 编写简单的C 语言程序并进行调试;学会编写和使用命令脚本文件;掌握通过memory/register/watch/variable 窗口分析判断运行结果。
实验内容利用命令脚本初始化栈指针,并使用c 语言完成延时函数。
3.6 实验目的掌握建立基本完整的ARM 工程,包含启动代码,连接脚本等;了解ARM7 启动过程,学会使用Embest IDE 编写简单的C 语言程序和汇编启动代码并进行调试;掌握链接脚本的作用;掌握如何指定代码入口地址与入口点;掌握通过memory/register/watch/variable 窗口分析判断结果。
Thumb汇编指令实验二实验目的通过实验掌握ARM处理器16位汇编指令的使用方法。
实验设备●硬件:PC机。
●软件:ADS1.2集成开发环境,Windows 2000/XP/2003。
实验内容●使用Thumb汇编语言,体会ARM与Thumb的区别。
●使用伪指令,加深对伪操作的理解。
实验原理(1) ARM与Thumb的混合编程所有的ARM指令都是可以条件执行的,而Thumb指令仅有一条指令(B指令)具备条件执行功能。
所以很多应用程序需要两者的混合编程,因此存在ARM与Thumb状态之间相互切换,而且相互之间的状态切换的开销几乎为零。
由于ARM处理器总是从ARM状态开始执行,故Thumb指令的执行必须由ARM状态转向Thum b状态,通常BX指令完成。
另外在Thumb指令前必须有CODE16伪指令指示汇编器以下指令为Thumb指令。
下面是一段直接进行状态切换的代码。
AREA AddReg,CODE,READONLYENTRYCODE32 ;程序从ARM状态开始ADR R0, ThumbProg+1 ;跳转到ThumbProg。
这里为什么要加1呢?因为BX指令;跳转到指定的地址执行程序时,若(BX{cond} Rm)Rm;的位[0]为1,则跳转时自动将CPSR中的标志T置位即把;目标代码解释为Thunb代码。
BX R0 ;程序切换到Thumb状态CODE16 ;CODE16指示编译器后面为Thumb指令ThumbProg MOV R2, #2MOV R3, #3ADD R2, R2, R3ADR R0, ARMProgBX R0 ;跳转到ARMProg,程序切换到ARM状态CODE32 ;CODE32指示编译器后面为ARM指令ARMProg MOV R4, #4MOV R5, #5ADD R4, R4, R5Stop MOV R0, #0x18 ;软中断参数设置LDR R1, =0x20026 ;软中断参数设置SWI 0x123456 ;将CPU的控制权交给调试器END实验参考程序见课本page83-84:(1)ARM指令编写的“hello world”程序;(2)Thumb指令编写的“hello world”程序。
ARM实验报告综合实验摘要:ARM微处理器已经在各种电子产品中得到广泛应用。
本实验旨在通过对ARM实验板的详细学习,深入理解和掌握ARM微处理器的工作原理及应用。
通过搭建实验平台,完成基本的指令执行、数据传输和I/O操作等功能。
通过实验,掌握ARM汇编语言的基本语法和实现方法,同时提升对嵌入式系统的理解和应用能力。
关键词:ARM微处理器、实验平台、指令执行、数据传输、I/O操作、汇编语言1.引言ARM(Advanced RISC Machines)微处理器是一种精简指令集(RISC)的微处理器架构,以其高性能、低功耗和广泛应用等特点受到了广泛的关注和应用。
本实验旨在通过对ARM实验板的学习和研究,深入理解ARM微处理器的工作原理和应用。
2.实验目的2.1理解ARM微处理器的工作原理;2.2掌握ARM汇编语言的基本语法和实现方法;2.3学习搭建实验平台,完成指令执行、数据传输和I/O操作等功能;2.4提升对嵌入式系统的理解和应用能力。
3.实验内容3.1搭建实验平台3.2学习ARM汇编语言通过阅读相关资料,了解ARM汇编语言的基本语法和寄存器等特点,了解ARM微处理器的指令集和指令执行方式。
3.3编写实验程序根据实验指导书中的要求,编写实验程序,包括基本的指令执行、数据传输和I/O操作等功能实现。
3.4调试和测试经过编写程序后,需要进行调试和测试,确保程序能够正确执行,并达到预期的功能。
4.实验结果通过实验,成功搭建了ARM实验平台,并且实现了基本的指令执行、数据传输和I/O操作等功能。
通过对ARM汇编语言的学习和实践,掌握了其基本语法和实现方法。
5.结论本实验通过对ARM实验板的学习和研究,深入理解了ARM微处理器的工作原理和应用。
通过搭建实验平台和编写实验程序,进一步掌握了ARM 汇编语言的基本语法和实现方法。
通过调试和测试,验证了程序的正确性和功能实现。
通过本实验,提升了对嵌入式系统的理解和应用能力。
arm实习报告篇一:ARM实习报告通过这次模具设计,本人在多方面都有所提高。
通过这次设计,综合运用本专业所学课程的理论和实际知识进行设计,提高学生独立工作能力,巩固与扩充了arm等课程所学的内容,掌握arm设计的方式和步骤,同时各科相关的课程都有了全面的温习,独立试探的能力也有了提高。
在短短的一个礼拜中,让咱们初步让理性回到感性的从头熟悉,也让咱们初步的熟悉了那个社会,关于以后做人所应把握的方向也有所启发,表现出团队课程设计的能力和综合运用知识的能力,体会了学以致用、突出自己劳动功效的喜悦心情,从中发觉自己平常学习的不足和薄弱环节,从而加以弥补。
这次课程实际仅仅是基于arm微处置器应用的一个开端,在这期间咱们还有很多的不足,比如不能完成引脚的最优连接,不能完成硬件系统和软件程序的自主设置和编写,但我相信通过以后对arm嵌入式系统的继续学习,自己会取得进一步的提高。
我会把这此实习作为我人一辈子的起点,在以后的工作学习中不断要求自己,完善自己,让自己做的更好。
篇二:arm实习报告嵌入式课程设计与总结报告摘要通过嵌入式操纵系统的实习,使咱们了解并把握依照嵌入式操纵系统项目要求,如何设计符合操纵逻辑的原理图,复合原理图及电子电气emc 的pcb图,学习电子元器件的焊接,pcb板的调试等,最终把握嵌入式操纵系统的设计及工艺等。
一、设计实习任务1. 焊接arm7(lpc2132)最小系统pcb。
要求认真认真焊接,并调试使其能正常工作(提供最简易测试程序)。
2. 设计数码管动态扫描显示电路,三个按键的键盘电路,模拟电压取样电路等。
要求原理图设计合理,要求有与最小系统板的接口,正确焊接,调试后能正常工作。
3. 操纵软件设计在嵌入式操纵系统的设计中,系统操纵软件的设计是一项超级重要且艰巨的工作,系统可否正常靠得住的工作,成败在此一举。
因此要求同窗们认真认真的设计、调试操纵软件。
要求软件语句精炼,整体健壮,有必然的抗干扰能力。
XI`AN TECHNOLOGICAL UNIVERSITY 实验报告
西安工业大学实验报告
一丶实验目的
通过实验掌握ARM处理器16位Thumb汇编指令使用方法
二、实验内容
使用Thumb汇编语言,完成基本reg/men访问,以及简单的算术/逻辑运算。
使用Thumb汇编语言,完成较为复杂的程序分支,领会立即数大小的限制,并体会ARM与Thunb的区别。
三、实验原理
ARM 处理器共有两种工作状态:
ARM:32 位,这种状态下执行字对准的ARM 指令;
Thumb:16 位,这种状态下执行半字对准的Thumb 指令
在Thumb 状态下,程序计数器PC 使用位1 选择另一个半字。
注意: ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。
ARM 处理器在两种工作状态之间可以切换。
1)进入Thumb 状态。
当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。
如果处理器在Thumb 状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort 和SWI)返回时,自动切换到Thumb 状态。
2) 进入ARM 状态。
当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状
态。
处理器进行异常处理(IRQ,FIQ,Undef,Abort 和SWI)。
在此情况下,把PC 方入异常模式链接寄存器中。
从异常向量地址开始执行也可以进入ARM 状态。
四、实验过程
1)打开Embest IDE Pro软件,选择菜单项File-->New Workspace,系统弹出对话框,创建名为TEXT的新工程,并同时创建一个与工程名相同的工作区。
此时在工作窗口将打开该工作区和工程。
2)建立源文件:
点击菜单项File-->New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位玉窗口中第一行,将程序所需的源文件代码输入,编辑完后,进行保存,保存文件格式为_a.s文件。
3)添加源文件:
选择Project-->Add To Project-->File命令,弹出文件选择对话框,在工程目录下选择刚才建立的_a.s格式的源文件
4)基本配置:
选择菜单项Project-->Settings,弹出工程设置对话框,在工程设置对话框中,选择Processor设置对话框,选择ARM7对目标板所用处理器进行配置。
5)生成目标代码:
选择菜单项Build-->Build xxx_a.s,生成目标代码。
6)调试设置:
使用快捷键Alt+F7,弹出设置对话框,在工程设置对话框中,选择Remote设置对话框,对相应模块进行配置。
7)选择Debug菜单Remote Connect 进行连接软件仿真器,执行Download命令下载程序,并打开寄存器窗口。
打开memory窗口,观察相关内容的变化。
程序运行环境有ARM转换到Thumb进行简单的运算,再由Thumb转换到ARM进行简单运算并输出,并将r0d的地址赋值为#0x00。
具体程序源代码如下:
.global start ;定义全局变量
.text ;定义文本区
start:
adr r0,tstart+1 ;R0最低状态寄存位地址加一
bx r0 ;由ARM状态跳转到Thumb状态
.thumb ;Thumb状态
tstart:
mov r2,#2 ;R2=2
mov r3,#3 ;R3=3
add r2,r2,r3 ;R2=R2+R3
adr r0,Sstart ;由Thumb状态跳转到ARM状态
bx r0
.arm ;ARM状态
Sstart:
mov r4,#4 ;R4=4
mov r5,#5 ;R5=5
add r4,r4,r5 ;R4=R4+r5
stop:
mov r0,#0x00 ;程序结束R0地址赋为0x00
.end
根据CPSR地址进行判断状态跳转是否正常,d3状态为ARM状态,f3状态为Thumb状态
五丶心得体会
本次实验完成Thumb汇编,了解和认识了ARM状态下程序运行与Thumb状态下程序运行的不同之处,然而在程序编码上仍需要花费较大的努力,充分理解例题思路,做到举一反三。
希望下次的实验能有更丰富的收获。