欢迎来到天天文库
浏览记录
ID:51019401
大小:140.35 KB
页数:20页
时间:2020-03-17
《嵌入式实验指导书.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、嵌入式实验指导书 1.1.2实验内容1.观看ADS安装视频文件“ADS安装视频文件.avi”;2.观看实验一视频文件“实验一.avi”;3.编写程序实现如下目的从汇编语言切换到C语言代码,然后在C代码中分别使用内嵌汇编语言和汇编子函数的方法实现同一功能(加函数功能)。 1.1.3预备知识1.ARM汇编语言基础知识;2.C语言基础知识;3.程序调试的基础知识和方法。 1.1.4实验设备1.硬件JXARM9-2410教学实验箱、PC机;2.软件PC机操作系统Windows98( 2000、XP)+ADTIDE集成开发环境+AD
2、S1.2集成开发环境。 1.1.5实验原理1.ADS1.2的安装 1、运行ADS光盘中的setup.exe程序,出现如下图所示界面,并点击“Next”按钮。 2、出现下图所示对话框,电机“Yes”按钮。 3、出现下图所示对话框,在“DestinationFolder”中电机“Browse”按钮选择ADS1.2的安装路径,此处选择缺省安装路径,然后选择“Next”按钮。 4、如下图所示,选择“Typical”,然后点击“Next”按钮。 5、如下图所示选择“Next”按钮。 6、如下图所示选择“Next”按钮。 7、
3、如下图所示选择“Next”按钮。 8、将开始安装,如下图所示。 9、程序安装完成之后将提示如下对话框。 10、点击“下一步”将提示下图所示对话框。 11、在“LicenseFileToBeInstalled”中点击“Browse”按钮选择您的License文件位置,然后点击“下一步”。 12、点击“完成”。 13、点击“Finish”。 14、至此,安装完成,如下图所示,从开始菜单中选择运行ADS。 15、ADS运行界面如下图所示。 2.汇编语言和C语言混合编程在ARM编程中,一个程序往往采用汇编语言和C语言混合
4、编程。 本实验的目的就是为了讲解ARM中C语言和汇编语言混合编程的方法。 1)汇编语言切换到C语言的方法C语言中定义的函数名在汇编语言中可以作为标号使用,因此,在汇编语言中可以使用程序分支指令直接转移到C语言中定义的标号(函数)中。 下面代码实现从汇编语言跳转到C语言的Main函数中汇编代码ENTRY;markthefirstinstructiontocall_startMOVsp,#0x33000000;/*建立栈指针(r13)*/BMain;/*跳转到C语言程序*/C代码voidMain(){}在上面的代码中,ENTRY
5、指定程序的入口点为其后的第一条有效指令,此处为MOV指令,该MOV指令设置栈指针r13,在正确调用C语言之前必须正确设置栈指针到系统的ram中,否则调用C语言函数之后肯能会产生异常。 接下来调用Main函数,直接进入C语言调用。 2)汇编语言中函数的实现ARM编程中不同语言的程序只要遵守ATPCS规则就可实现不同语言间的相互调用。 程序间的相互调用最主要的是解决参数传递问题。 应用程序之间使用中间寄存器及数据栈来传递参数,其中,第1~4个参数使用r0~r3传递,多于4个参数则使用数据栈进行传递。 输出参数由r0传递。
6、下面的代码就是用汇编语言写的一个简单函数。 asse_addADDr0,r0,r1/*r0=r0+r1*/MOVpc,lr/*函数返回*/它相当于如下声明的C语言函数intasse_add(intx,inty);在汇编语言中可以使用BLasse_add指令调用该函数。 输入时,r0为x参数,r1为y参数,输出r0,该函数实现功能很简单,返回参数x与y的和。 3)C语言调用汇编文件中的函数以上面的asse_add函数为例,在C语言中声明该函数在其他文件中实现externintasse_add(intx,inty);然后就可以象
7、调用C函数一样调用该函数x=asse_add(10,20);4)C语言中内嵌汇编语言GCC支持大部分基本的内嵌汇编语言。 如下示例为C语言中采用内嵌汇编语言的方式实现asse_add相同的功能。 intembed_add(intx,inty){inttmp;__asm{addtmp,x,y};returntmp;}3.建立一个新的工程打开ADS1.2,点击“File->New菜单”,弹出New对话框,如下图所示设置。 在“Project”页中的左边一栏选择“ARMExecutableImage”,在“ProjectName”
8、中输入工程名“leddemo”,在Location中选择工程保存路径,此处为“D:workexamples_adsleddemo”,请注意,输入工程名后,在Location路径的后面将自动将工程名最为一个目录追加到Location后面。
此文档下载收益归作者所有