ARM实验报告资料

更新时间:2024-03-21 17:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

辽宁工程技术大学上机实验报告 课程名称 ARM体系结构与设计 实验题目 ARM汇编程序设计和拓展性实验 院系 姓名 实验 目的 软件学院 杨国君 专业 学号 软件专业 班级 成绩 软件13-9 2015.11.23 1320010925 实验日期 1.掌握汇编上机过程:编辑源程序、编译、链接和调试过程 2.掌握ARM汇编程序调用C程序;C程序调用ARM汇编指令的方法。 3.完成拓展性实验,了解LED、键盘、LCD和异步电机实验。 1.H-JTAG软件安装以及配置。 (1)安装H-JTAG软件,解压H-JTAG0.7x.rar,运行H-JTAG0.7x.exe,按照默认路径安装即可。 (2)复制270-configs子目录下的所有文件到H-JTAG安装目录C:\\ProgramFiles\\H-JTAG,覆盖原有文件(不包含“270-configs”文件夹本身)正常连接下载线到目标板,并给目标板上电。点击开始菜单->H-JTAG->H-JTAG运行程序,程序首次启动后。点击Setting→lpt jtag setting,选择user defined (3) 如果程序此时提示没有检测到目标板,则需要重新确认目标板是实验 准备 否上电, 以及连接线是否连接好,然后点击工具栏上的第二个(放大镜形状的)按钮。重新检测目标板。知道能够正确检测到目标板才能进行下面操作。注意,如果计算机用的并口不是LPT1,则需要在“setting”菜单中进行选择。此时找到PXA270 0X79265013。 (4) 若多次重试都无法正确检测目标板,则点击菜单“settings->LPT Jtag Setting”出现Jtag配置界面,确认界面的配置如图4所示,并且可以调整TCK Speed选项,为“MAX/2”(此时下载速度会减慢一半),再试试是否能够正常工作。 (5) 点击主界面上的“F”形状的按钮启动H-Flasher程序(或从开始 1

菜单->H-JTAG->H-Flasher启动) (6) 点击菜单中的“Load”,装载配置文件:pxa270.hfc,配置文件在H-JTAG目 录下。装载完成后点击左侧“Program Wizard”列表中的“Programming”项目。 (7) 点击check按钮(右上角),此时应该能够正确检测到目标板,如果提示不能进入调试模式(Error:Can’t halt target and make it DEBUG state),则应再次确认目标板是否上电,或前面没有对下载线进行修改,也会出现此错误。 (8)此时就可以点击“Src File”后面的“…”按钮,选择要写入的Boot文件,然后点“program”,等待写入完成即可。注意文件类型要选“Plain Binary Format”。 2.Jflash工具驱动的安装。 (1)在控制面板中选择添加硬件。(先把Jflash_pxa270目录下giveio.sys复制到C:\\WINDOWS\\system32\\drivers) (2)然后选择“添加新的硬件设备”,确定手动安装 (3)选择“从磁盘安装” (4)找到”giveio.inf”(在系统系统安装目录中),安装完后在设备管理器中可以看到giveio的设备。 3.AXD Debugger的仿真调试。 4.AXD试验箱的测试。 5.添加ADS软件证书。 实验 进度 本次共有 5 个练习,完成 5 个。 2

实验1:ARM汇编程序设计,完成汇编程序调用C程序 实验过程: 1.建立一个工程文件。 2.建立一个汇编程序,实现数据段大量数据的复制功能,并添加到工程中。 3.设置编译连接控制选项 4.编译连接工程 5.使用AXD调试工程,方法可以采用 (1)模拟指令集形式 (2)下载到SDRAM或FLASH中硬件调试。 实验分析: 在执行汇编语言的过程中,将C语言中的参数g在汇编语言中用IMPORT进行调用,在执行到与相关参数有关行时,用BL指令跳转到C语言执行该 实验 内容 及分析 参数g部分,再使用LDR指令跳转回汇编语言界面。此实验过程中,先执行汇编语言,在执行到与C语言有关行的时候跳转到C语言执行,执行完毕后再跳转回汇编语言。PC起始地址为0X00000000。 实验1程序代码: C: #include int g(int a,int b,int c,int d,int e) { return a+b+c+d+e; } 汇编: AREA ARM_add,CODE,READONLY EXPORT ARM_add IMPORT g ENTRY STRLR,[SP,#-4]! MOV R0,#1 3

MOV R1,#2 MOV R2,#3 MOV R3,#4 MOV R4,#5 STR R4,[SP,#-4]! BL g ADD SP,SP,#4 LDR PC,[SP],#4 END 实验2-5: LED实验 键盘实验 LCD实验 异步电机实验 实验过程: (1)建立工程文件 建立工程文件,添加源程序,打开Edit Debugrel Settings… .,进行对编译选项进行设置。当编写好程序代码后,就要对编译选项进行设置。 Post-linker:表示用于选择对连接器输出的文件的处理方式,我们选择ARM fromELF,它可以把ELF 格式的文件转换成各种二进制文件格式。 在ARM Linker 选项组中,进行对Output 设置,RO Base 设置为0x00000000,表示从映像是烧写到FLASH 里面的。 Options 中的Image entry point 表示映像的入口点(地址),boot.o(boot)表示系统从目标文件boot.o 中boot 段开始运行。 在Layout 中,Place at beginning of image 下的Object/symbol 表示目标文件,Section 表示目标文件中的代码段。这与Options 中的Place at beginning of image 相同。 (2)对工程文件编译连接 对工程文件执行Make ,也可以直接用快捷键F7 进行编译、连接生成映像文件。 执行后,出现的编译、连接结果显示无错误,即可进行下面的调试和运行,否则修改。 (3)连接好仿真器,如果用H-JTAG,需要启动H-JTAG Server ,设置 J-FLASHER 。

4

(4)下载映像到FLASH 里,然后才进行调试,用H-JTAG 下载到FLASH ① 选择Flash→start H-flash命令,弹出H-flash烧写向导界面,灰色为找到的 默认flash芯片型号。 ② 存储器配置 ③ 设置初始化脚本 ④ 烧写设置,选择自己要烧写的文件 ⑤设置完毕,点击program按钮开始烧写 (5)下载映像到FLASH 后,打开,系统就会自动调用AXD Debugger进行仿真调试。 当打开AXD Debugger 后,就可以通过Execute 下拉列表的命令进行仿真调试。 实验分析: 与实验1的在线仿真相比,实验2-5验箱开发更为真实,与实验1的设置也有一定的区别,也使用了一些在实验1中不使用的软件,而且AXD Debugger中的target settings,ARM linker等设置不相同。而且实验2-5与实验1最大的区别就是需要使用开发版才能看到实验结果。 实验二: 烧写完成后,重新启动开发板,八盏小灯会从左至右依次亮起,通过修改程序可以改变小灯闪烁的顺序以及间隔时间。 从左至右闪烁程序代码(C语言): #define LED_CS4(*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff) int i; void Delay(unsigned int x) { unsigned int n, j, k; for (n =0; n <=x; n++) for (j = 0; j <0xff; j++) 5

} for (k = 0; k <0xff; k++); int main(void) { } 从右至左闪烁程序代码(C语言): #define LED_CS4(*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff) int i; void Delay(unsigned int x) { } int main(void) { while (1) unsigned int n, j, k; for (n =0; n <=x; n++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++); while (1) { } return 0; LED_CS4 = 0xff; for (i = 0; i < 8; i++) { } LED_CS4 = (LED_VALUE << i) -1; Delay(200); 6

} { } return 0; LED_CS4 = 0xff; for (i = 8; i >0; i++) { } LED_CS4 = (LED_VALUE << i) -1; Delay(200); 通过改变for语句中的条件设置进行次序颠倒,使得小灯闪烁顺序倒转。 实验三: 烧写完成后,重新启动开发板,键盘的LED屏幕亮起,显示为“0000”,按下对应键位会在屏幕上显示对应的数字。 实验四: 烧写完成后,重新启动开发板,开发板的显示屏会亮起,不断地闪烁各种颜色的背景,屏幕中间显示“亿道电子技术”。 实验五: 烧写完成后,重新启动开发板,开发板的小马达靠上的小马会开始转动,几乎没有杂音。 实验中遇到的问题: 在进行实验二的时候,烧写之后发现小灯不亮,通过查找问题发现是烧写的文件不对,在对文件进行修改之后,小灯亮起。 在进行实验四的时候,烧写后屏幕不亮,通过查找问题发现是AXD Debugger中的ARM Linker中的R0 Base和R1 Base设置错误,改正后屏幕正常亮起。 7

在本次实验中,我总共完成了五个练习,通过对五个练习的实验和修改,我学会了很多东西,也弄懂了很多以前没弄明白的知识。在做实验的过程中,对于第一次使用的软件和硬件,难免会有些不知所措。但是经过自己的一点点摸索以及老师和学长的指导,我慢慢学会了如何使用这些实验所需软件和硬件完成实验,让实验箱显示出实验所需要的结果。在本次实验中,我深深的认识到ARM的神奇与有趣,相信在以后的学习和生活中,我会更加认真的学习和ARM相关的知识。 在本次的实验中,除了让我明白在学习生活中除了需要能力,素质,知识之外,更重要的是学会遇到问题冷静,想办法一点一点的排除障碍,实验 总结 到最后获取成功,这就是学习的乐趣。有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。在实验过程中让我初步从理性回到感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!相信这些宝贵的经验会成为我今后成功的重要的基石。社会是不会要一个一无是处的人的,所以我们要更多更快地学习更多知识。总的来说我对这次实验还是比较满意的,它使我学到了很多东西,为我以后的学习做了引导,点明了方向,我相信在不远的未来定会有属于我们自己的一片美好天空。 教师 评语

8

本文来源:https://www.bwwdw.com/article/kfb8.html

Top