山东大学嵌入式实验报告-(8000字)_第1页
山东大学嵌入式实验报告-(8000字)_第2页
山东大学嵌入式实验报告-(8000字)_第3页
山东大学嵌入式实验报告-(8000字)_第4页
山东大学嵌入式实验报告-(8000字)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式实验报告班级:电信工x班姓名:xxx学号:20120012xxxx实验一、arm汇编指令实验-简单数据搬移实验实验目的:熟悉实验开发环境,掌握简单arm汇编的使用方法实验内容熟悉开发环境并使用ldr/str,mov等指令访问寄存器或存储单元;使用ads/sub/lsl/lsr/and/orr等指令完成基本数学/逻辑运算。实验要求(1)按照前面叙述介绍的方法,在ads下创建一个工程asmlabl,定义两个变量x,y和堆栈地址0x1000,将变量x的内容存到堆栈顶,然后计算x+y,并将和存到堆栈的下一个单元。通过axd查看寄存器和memory和寄存器中数据的变化。(2)在指令后面加上适当注释,说明指令功能。(3)指出程序执行后各相关寄存器及存储器单元的具体内容。程序代码截图如下:程序运行结果截图:由实验结果可知堆栈的第二个单元中存放了x+y的值6d练习题编写程序实现对一段数据的最大值和最小值搜索,最大值存在于max变量之中,最小值存在于min变量之中。提示:数据的定义采用伪指令:dcd来实现。基本思路:利用r0做基地址,将r1,r2分别放入第一单元的内容,利用r3做循环计数,利用r4遍历读取第2至最后一个数据,如果r1的数据小于新读入的r4数据则将r4的内容存入r1,如果r2的内容大于r4的内容则将r4的内容存入r2,。遍历完成之后,r1将存放最大数据,r2将存放最小数据。程序代码截图如下:程序运行结果截图:实验二arm汇编指令实验2-字符串拷贝实验实验目的通过实验掌握使用ldb/stb,b等指令完成较为复杂的存储区访问和程序分支,学会使用条件码。实验内容熟悉开发环境的使用并完成一块存储区的拷贝。完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。实验要求(1)按照2.3节介绍的方法,在ads下创建一个工程asmab2,定义两个数据存储区src和dst,src用于存放原字符串,dst用于存放目的字符串。堆栈地址0x400,将变量原字符串的内容拷贝到目的字符串中,要能判断原字符串的结束符(0),并统计字符串的个数。通过axd查看寄存器和memory和寄存器中数据的变化。(2)在指令后面加上适当注释,说明指令功能。(3)指出程序执行完后各相关寄存器及存储器单元的具体内容。程序代码截图如下:程序运行结果源字符串字符串复制后两个数据存储区src:0x8040和dst:0x8047中的数据情况实验三arm汇编指令实验3-arm处理器工作模式实验实验目的(1)通过实验掌握学会使用msr/mrs指令实现arm处理器工作模式的切换,观察不同模式下的寄存器,加深对cpu结构的理解;(2)通过实验掌握ld中如何使用命令指定代码段起始地址。实验内容通过arm汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握arm不同模式的进入与退出。实验要求(1)按照2.3节介绍的方法,在ads下创建一个工程asmmodelab,完成各个模式下的堆栈初始化工作,并将r1-r12的内容存入当前模式下堆栈。通过axd运用单步执行方式调用程序,验证工作的模式,使用寄存器观察切换到不同的工作模式下观察sp(r13)的变化情况。(2)实验过程中请记录并思考以下内容:1)程序复位之后系统处于什么模式?2)记录每种模式下的厨师堆栈指针,以及执行r1-r12内容压栈后本模式堆栈相关内存单元的数值。并分析快速中断fiq模式与其他模式存入的r1-r12有什么不同。3)切换成用户模式之后还能否从用户模式切换到其他模式?4)用户模式下能否执行堆栈压栈操作?如果能的话,观察用户模式下压栈之前和之后其堆栈区域的变化情况。5)观察本程序模式切换过程中spsr有无变化,并解释其原因。程序运行结果截图:6)程序复位之后系统处于什么模式?答:程序复位之后系统处于管理模式。7)记录每种模式下的初始堆栈指针,以及执行r1-r12内容压栈后本模式堆栈相关内存单元的数值。并分析快速中断fiq模式与其他模式存入的r1-r12有什么不同。答:(管理模式)即管理模式的栈顶指针为0x8240满递减模式,r1-r12压栈后,管理模式栈顶指针为0x8210相距0x30,压入12个字(中断模式)(2)实验过程中请记录并思考以下内容:1)如何访问寄存器并修改其中的1位或者多位数据?答:通过与、或、非等关系来访问寄存器并修改其中的1位或者多位数据的。2)如何配置s3c2440的pio端口?答:配置相应的寄存器。3)在c语言中如何实现按键处理程序?答:在c语言中一定要通过延时按键延时去抖动。4)如何初始化dram,从而实现程序下载并在线调试?5)尝试实现利用按键切换控制跑马灯的顺序轮换(不是控制其轮换方向,而是在有按键按下并松开后实现一次跑马灯切换)。答:可改变轮换方向实验六arm硬件接口实验2-外部中断实验实验目的(1)通过实验掌握arm处理器的中断方式和中断处理(2)熟悉s3c2440x的中断控制寄存器的使用;(3)理解s3c2440x的中断处理机制(4)熟悉掌握如何进行arm处理器中断处理软件编程方法(5)掌握生成离线运行程序的开发环境设置方法(6)掌握通过j-link向norflash烧写程序的方法。实验内容硬件电路和前面的实验五完全相同。这里讲按钮开关所连接的gpf5引脚定位外部中断eint5,中断模式为irq,在中断服务程序中完成led灯的切换,即正常状态时led5灯亮,按下按钮开关时led6灯亮。实验要求(1)环境设置完了之后进行程序写入。关掉试验箱,将其核心板上的拨动开关拨到右边的nor位置,观察程序运行结果。按下inkey按钮,再次观察程序运行结果。(2)实验过程中请记录并思考以下内容:打开s2440addr.h头文件。观察并分析其内容。2)分析中断控制程序的结构。3)仔细分析中断初始化程序和中断处理程序中寄存器的设置方法,并理解其含义。4)总结中断程序的设计方法。程序代码截图如下:程序和注释截图如下初始化汇编程序c语言处理程序思考题打开s2440addr.h头文件。观察并分析其内容。//%%%%%%%%%%%%%%s3c2440.h%%%%%%%%%%%%%%%%/*wotchdogregister*/#definewtcon(*(volatileunsignedlong*)0x53000000)/*sdramregisers*/#definemem_ctl_base0x48000000#definesdram_base0x30000000/*nandflashregisters*/#definenfconf(*(volatileunsignedint*)0x4e000000)#definenfaddr(*(volatileunsignedchar*)0x4e000008)#definenfdata(*(volatileunsignedchar*)0x4e00000c)#definenfstat(*(volatileunsignedchar*)0x4e000010)/*gpioregisters*/#definegpbcon(*(volatileunsignedlong*)0x56000010)#definegpbdat#definegpfcon#definegpfdat#definegpfup#definegpgcon#definegpgdat#definegpgup#definegphcon#definegphdat#definegphup/*uartregisters*/#defineulcon0#defineucon0#defineufcon0#defineumcon0#defineutrstat0#defineutxh0#defineurxh0#defineubrdiv0/*interruptregistes*/#definesrcpnd#defineintmod(*(volatileunsignedlong*)0x56000014)(*(volatileunsignedlong*)0x56000050)(*(volatileunsignedlong*)0x56000054)(*(volatileunsignedlong*)0x56000058)(*(volatileunsignedlong*)0x56000060)(*(volatileunsignedlong*)0x56000064)(*(volatileunsignedlong*)0x56000068)(*(volatileunsignedlong*)0x56000070)(*(volatileunsignedlong*)0x56000074)(*(volatileunsignedlong*)0x56000078)(*(volatileunsignedlong*)0x50000000)(*(volatileunsignedlong*)0x50000004)(*(volatileunsignedlong*)0x50000008)(*(volatileunsignedlong*)0x5000000c)(*(volatileunsignedlong*)0x50000010)(*(volatileunsignedchar*)0x50000020)(*(volatileunsignedchar*)0x50000024)(*(volatileunsignedlong*)0x50000028)(*(volatileunsignedlong*)0x4a000000)(*(volatileunsignedlong*)0x4a000004)#definepriority(*(volatileunsignedlong*)0x4a00000c)#defineintpnd(*(volatileunsignedlong*)0x4a000010)#defineintoffset(*(volatileunsignedlong*)0x4a000014)#definesubsrcpnd(*(volatileunsignedlong*)0x4a000018)#defineintsubmsk(*(volatileunsignedlong*)0x4a00001c)/*externalinterruptregisters*/#defineeintmask(*(volatileunsignedlong*)0x560000a4)#defineeintpend(*(volatileunsignedlong*)0x560000a8)经分析知,s2440addr.h文件中的主要内容是定义了一些看门狗,sdram,gpio等的寄存器地址,并定义了串口通讯和中段的寄存器地址。2)分析中断控制程序的结构。首先要对中段进行初始化,并对端口功能设定。继而进行相应中段使能,打开有关中段屏蔽位,并进入主函数等待中断,直到中段产生,由中段向量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论