




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录EL-ARM-830实验系统的资源介绍1实验一 ADS1.2开发平台及汇编语言程序设计17实验二 基于ARM的C语言程序设计27实验三 基于ARM的硬件BOOT程序的基本设计32实验四 ARM的I/O接口实验36实验五 ARM的定时器实验45实验六 ARM的中断实验50 EL-ARM-830实验系统的资源介绍ARM实验箱硬件资源概述 EL-ARM-830型教学实验系统属于一种综合的教学实验系统,该系统采用了目前在国内普遍认同的ARM7TDMI核,32位微处理器,实现了多模块的应用实验。它是集学习、应用编程、开发研究于一体ARM实验教学系统。用户可根据自己的需求选用不同类型的CPU适配板,
2、在不需要改变任何配置情况下,完成从ARM7到ARM9的升级,同时,实验系统上的Tech_V总线能够拓展较为丰富的实验接口板。用户在了解Tech_V标准后,更能研发出不同用途的实验接口板。除此之外,在实验板上有丰富的外围扩展资源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元),可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验。 图1-1 EL-ARM-830实验教学系统的功能框图1.1 实验系统的硬件资源总览CPU单元:内核ARM7TDMI,芯片三星的S3C44B0X,工作频率最高66MHz;线性存储器:2MB, 芯片SST39VF160;动态存储器:16MB
3、,芯片HY57V641620; USB单元: 1个主接口,两个设备接口,芯片SL811H/S,PDIUSBD12; 网络单元: 10M以太网,芯片RTL8019AS; UART单元: 2个,最高通信波特率115200bps; 语音单元: IIS格式,芯片UDA1341TS,采样频率最高48KHz; LCD单元: 5.7寸,256色,320X240像素; 触摸屏单元: 四线电阻屏,320X240,5.7寸; SD卡单元: 通信频率最高25MHz,芯片W86L388D,兼容MMC卡; 键盘单元: 4X4键盘,带8位LED数码管;芯片HD7279A; 模拟输入输出单元:8个带自锁的按键,及8个LED
4、发光管; A/D转换单元:芯片自带的8路10位A/D,满量程2.5V; 信号源单元: 方波输出; 标准键盘及PS2鼠标接口; 标准的IDE硬盘接口; 达盛公司的Tech_V总线接口; 达盛公司的E_Lab总线接口; 调试接口: 20针JTAG; CPLD单元; 电源模块单元。1.2 核心板的资源介绍1.核心板的硬件资源(ARM7TDMI核)在核心CPU板上包括下列单元和芯片,32位ARM7TDMI的处理器,即三星的S3C44B0芯片,两片动态存储器,每片8M字节,一片2M字节线性flash存储器,一个USB主从芯片,完成USB的主从通信选择,一个10M的以太网控制芯片,完成网络访问功能,一个U
5、ART接口,完成串口通信,最高波特率率为115200bps, 一个RTC实时时钟,一个5V转3.3V和2.5V的电源管理模块,一个20针的JTAG调试接口。具体元器件见表1-1。表1-1 具体元器件芯片名称数量功能板上标号S3C44B0X1ARM7TDMI,中央处理器ARMHY57V6416202动态存储器(SDRAM),16MBU10,U11SST39VF1601线性flash,存储芯片,2MBU9SL8111USB主/从控制U14RTL8019AS110M以太网控制U12LM1117-3.315V转3.3VU5LM1117-2.515V转2.5VU4MAX32321RS232转换U2IMP
6、811-S1复位U7具体的单元、跳线见表1-2。表1-2 具体单元、跳线标号名称功能POWER5V电源单元电源供应,(需内正外负插头)S1电源开关打开/关闭5V电源SW1复位键系统复位按键J1串口0单元和S3C44B0X的串口0通信P3主USB单元主USBP5从USB单元USB设备U13网络单元访问以太网SW2USB主从选择开关1、2“ON”;3、4“OFF” 为主1、2“OFF”;3、4“ON” 为从JP1RTC时钟开关短接为启动RTC时钟JP2JTAG单元20针调试接口JP4从设备数据D+、D-上拉上短接为D-上拉,下短接为D+上拉J4功能单元J7数据、地址单元J9功能单元核心板上各LED
7、指示灯的意义见表1-3。表1-3 LED指示灯标号名称功能D1LED灯串口0发送数据指示D2LED灯串口0接收数据指示D3LED灯电源指示D5LED灯网口正常指示D6LED灯接收、发送数据指示D7LED灯GPI/O 口B口的一位指示D8LED灯GPI/O 口B口的一位指示核心板上的晶振单元见表1-4。表1-4 晶振单元标号名称功能X1CPU主时钟晶振外接8MHzY1RTC时钟晶振外接32.768KHzY2网络时钟晶振外接20MHzY3USB时钟晶振外接 12MHz2核心板资源的具体介绍1)电源模块在S3C44B0 CPU板上由于其内核采用2.5V,I/O接口采用3.3V供电,因此需要将通用的5
8、V转换成2.5V和3.3V。图1-2为使用LM1117电源转换芯片把5V转成3.3V和2.5V的转换电路。2)线性flash存储器单元该存储单元在板卡上标号为U9,选用2MB字节的 SST39VF160,16位数据总线,片选接NGCS0,CPU分配给它的地址空间为0x000000000x001fffff,也就是S3C44BOCPU的bank0区。启动代码部分则放在从0x00000000开始的地址空间内。程序代码可以在里面执行。3)同步动态存储器单元该存储单元在板卡上标号为U10,U11。选用两片8MB字节的 HY57V641620,16位数据总线。片选NSCS0接U10单元,片选NSCS1接U
9、11单元,CPU分配给U10单元的地址空间为0x0C0000000x0C7fffff,也就是S3C44BOCPU的bank6区。CPU分配给U11单元的地址空间为0x0E0000000x0E7fffff,也就是S3C44BOCPU的bank7区。图1-2 系统电源电路4)RS232串口单元该存储单元在板卡上标号为U2,在板卡的背面,选用了MAX3232CSE电压转换芯片,进行PC机与CPU板的串口通讯。它采用收、发、地,三线连接,无握手信号。D1为向外部发送数据时的显示灯,D2为接收外部数据时的显示灯。通过S3C44B0X内部的串口0控制器进行控制。5)主/从USB单元该存储单元在板卡上标号为
10、U14,选用了SL811H/S主从芯片,8位数据总线传输,片选NGCS1接主/从USB单元,CPU分配给U14单元的地址空间为0x020000000x03ffffff,也就是S3C44BOCPU的bank1区。S3C44B0CPU的外部中断ExINT0响应主/从USB中断。GPB4位控制芯片的主/从模式选择。它是软件控制方式。6)网络单元该存储单元在板卡上标号为U12,选用了RTL8019AS网络芯片,16位数据总线传输,片选NGCS3接网络单元。CPU分配给U12单元的地址空间为0x060000000x07ffffff,也就是S3C44BOCPU的bank3区。S3C44B0CPU的外部中断
11、ExINT1响应该中断。D5和D6为网络的指示灯。为清楚显示核心板上各存储区及单元,见表1-5。表1-5 各存储区及其单元标号名称存储区存储的有效区容量(字节)U9线性存储器Bank00x000000000x001fffff2MU10同步动态存储器Bank60x0C0000000x0C7fffff8MU11同步动态存储器Bank70x0C8000000x0D0000008MU12网络控制器Band30x06000000后的若干若干寄存器U14USB控制器Bank10x02000000后的若干若干寄存器NAND_FLASH海量存储器Bank20x040000000x04ffffff16M7)JT
12、AG单元JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试,JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。通过JTAG接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高
13、效的手段。目前JTAG接口的连接有两种标准,即14针接口和20针接口,EL-ARM-830核心上使用的是20针接口。接口定义见表1-6。表1-6 JTAG接口定义引 脚名 称描 述1VTref目标板参考电压,接电源2VCC接电源3nTRST测试系统复位信号4、6、8、10、12、14、16、18、20GND接地5TDI测试数据串行输入7TMS测试模式选择9TCK测试时钟11RTCK测试时钟返回信号13TDO测试数据串行输出15nRESET目标系统复位信号17、19NC未连接在核心板上,JTAG的第1脚用一白色的方框标注,当串口、USB口、网络口向左摆放时,第1脚下面的管脚为第2脚,它左面的管脚
14、依次为3,5,19;第2脚左面的管脚依次为4,6,20。1.3 实验箱底板的资源介绍1. 概述实验箱底板上的资源丰富,具体的实验单元有:LCD模块,触摸屏模块,语音单元模块,串口2模块,USB设备模块,电源模块,模拟输入输出模块,键盘模块,CPLD烧写模块,键盘数码管模块,SD(MMC)卡模块,A/D转换模块,信号源发生器模块。以及PS2鼠标键盘接口,IDE硬盘接口,Tech_V总线接口,E_LAB总线接口等等。实验箱上的底板详细具体资源见表1-7。接下来详细介绍各模块单元。2. 底板资源的具体介绍1)模拟输入输出接口单元8bit的数字量输入(由八个带自锁的开关产生),通过74LS244缓冲;
15、8bit的数字量输出(通过八个LED灯显示),通过74LS273锁存。数字量的输入输出都映射到CPU的IO空间。数字值的显示的通过八个LED灯和LCD屏,按下一个键,表示输入一个十进制的“0”值,8个键都不按下,则数字量的十进制数值为255,8个键都按下,则数字量的十进制数值为0,通过LED灯,和LCD的显示可以清楚的看到实验结果。2)键盘数码管模块 键盘接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管或(64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。HD7279A内部含
16、有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。在该实验系统中,仅提供了16个键。3)USB设备模块USB设备模块,采用了飞利蒲的USB设备控制芯片PDIUSBD12,该芯片遵从USB1.1规范,最高通信率12Mbps,该单元位于实验箱的左下角。D3为通信状态指示灯。使用外部中断4来响应中断请求。4)串口1模块串口1模块,采用了美信的MAX202CPE芯片,通过它可以把PC的电信号转换成实验箱可以使用的信号,它的最高串行通信波特率为115
17、200bps.表1-7 板底具体资源单元名称关键控制芯片功能备注LCD模块S3C44B0X内置LCD控制器液晶显示320X240,5.7寸,256色触摸屏模块ADS7843完成触摸响应12位转换语音模块UDA1341TS完成语音模拟信号的采集采样率最高48KHz;串口1模块MAX202CPE完成与PC机的串行数据的转换最高串行通信率为115200 bps.USB设备模块PDIUSBD12完成PC机与实验箱的USB通信控制USB1.1键盘数码管模块HD7279A中断请求,数码管显示4X4键,8位数码管模拟输入输出模块74LS273,244完成数据锁存,数据发送8位数据SD(MMC)卡模块W86L
18、388DSD(MMC)卡命令的发送,数据的读取最高时钟25MHzA/D转换模块S3C44B0X内置A/D转换器采集模拟信号10位8路E_LAB总线接口留有扩展接口,有扩展板。信号源模块自动产生信号源电源模块5V,+12V,-12VPS2鼠标键盘接口硬件扩展口(有扩展板)IDE硬盘接口留有扩展接口Tech_V总线接口留有扩展接口,有扩展板。5)音频模块语音的模拟信号的编解码采用了UDA1341TS芯片。该芯片有两个串行同步变换通道、D/A转换前的差补滤波器和A/D变换后的滤波器。其他部分提供片上时序和控制功能。芯片的各种应用配置可以通过芯片的三根线,由串行通信编程来实现。主要包括:复位、节电模式
19、、通信协议、串行时钟速率、信号采样速率、增益控制和测试模式、音质特性。最大采样速率48kb/s。 语音处理单元由UDA1341TS模块、输出功率模块组成。语音的模拟信号经过偏置和滤波处理后输入到语音的编解码芯UDA1341TS中,UDA1341TS以IIS的语音格式送入S3C44B0X中,S3C44B0可以处理也可以不处理该信号,把它保存起来,也可用DMA控制而不经过CPU处理,直接实时的采集,然后实时的播放出去。音频信号通过D/A转换后输出,经过一次功率放大,然后可以推动功率为0.4W的板载扬声器,也可以接耳机输出,如图1-3所示。图1-3 语音处理单元原理框图语音处理单元接口说明:LINE
20、_IN:音频输入端子,可输入CD、声卡、MP3等语音信号。MIC:音频输入端子,麦克风等语音信号。SPEAKER:音频输出端子,可接耳机、音箱。语音处理单元旋钮说明:“SPEAKER_R”:表1-8 SPEAKER_R使用说明逆时针旋转音量变大顺时针旋转音量变小“SPEAKER_L”:表1-9 SPERKER_L的使用说明逆时针旋转音量变大顺时针旋转音量变小6)LCD模块本实验系统仅选用了LCD液晶显示屏,LCD的控制器使用S3C44B0X的内部集成的控制器,LCD屏选用的是5.7寸,320X240像素,256色的彩屏。电源操作范围宽(2.7V to 5.5V);低功耗设计可满足产品的省电要求
21、。其中,可调变位器VR2用于调节LCD屏色彩的对比度,产品出厂时,已设定成在室温下较好的对比度,当因温度低或高等因素显示不正常时,可适当调节VR2到合适的色彩。一般请不要调整。“VR2”:表1-10 VR2的使用说明逆时针旋转LCD屏变亮顺时针旋转LCD屏变暗“LCD_ON/OFF”按键,控制着LCD屏的电源,是电源的开关。7)A/D转换单元A/D转换单元,采用S3C44B0X内置的A/D转换器,它包含一个8路模拟输入混合器,12位模数转换。最大转换速率:100KSPS,输入电压范围:0-2.5V输入带宽: 0-100 Hz(无采样和保持电路),低的电源消耗。在本实验系统中,模拟输入信号经过降
22、压、偏置处理后输入A/D转换器,然后转换的数字量给S3C44B0X处理,如图1-4所示。各路信号都来源于信号源单元输出的方波。图1-4模数单元原理框图模数转换单元拨码开关说明见表1-11:SW3:拨码开关表1-11 SW3拨码开关说明码位备注1ON, 采集的模拟信号从A/D转换器的第1路输入;OFF, A/D的第1路输入悬空,缺省设置;2ON, 采集的模拟信号从A/D转换器的第2路输入;OFF, A/D的第2路输入悬空,缺省设置;3ON, 采集的模拟信号从A/D转换器的第3路输入;OFF, A/D的第3路输入悬空,缺省设置;4ON, 采集的模拟信号从A/D转换器的第4路输入;OFF, A/D的
23、第4路输入悬空,缺省设置;5ON, 采集的模拟信号从A/D转换器的第5路输入;OFF, A/D的第5路输入悬空,缺省设置;6ON, 采集的模拟信号从A/D转换器的第6路输入;OFF, A/D的第6路输入悬空,缺省设置;7ON, 采集的模拟信号从A/D转换器的第7路输入;OFF, A/D的第7路输入悬空,缺省设置;8ON, 采集的模拟信号从A/D转换器的第8路输入;OFF, A/D的第8路输入悬空,缺省设置;插孔DGND为数字地,插孔ADIN为模拟电压信号的输入,输入电压的范围02.5V。插孔SINE为正弦波输出,当系统上电后,输出正弦波。插孔SQUARE为方波输出。当系统上电后,输出方波。当进
24、行AD采样实验时,使用连接线把SQUARE插孔和ADIN插孔连接起来,或者把SINE插孔和ADIN插孔连接起来。 8)PS2单元PS2单元中S5为复位键,U5_1接口为键盘接口,U4_2为鼠标接口。D1为数据传输指示灯。控制芯片为AT2051。9)CPLD单元由于实验箱上的资源众多,几乎每一个设备资源都要使用片选信号或中断信号或一些串口的信号,以及一些寄存器的地址等等,这样一来,S3C44B0X的I/O资源是不能满足的,因此该实验箱通过加入了一片CPLD芯片,用来完成各资源所需的地址译码,片选信号,以及一些高低电平的模拟。CPLD单元使用S3C44B0X的片选是NGCS4,地址是0x08000
25、0000x0a000000;由于底板上大多的资源都通过CPLD的地址译码,进行片选电平的产生,以及模拟高低电平的产生,所以,应给CPLD的地址里写入相应的数据以产生相应的信号。表1-12列出了底板中所需信号的地址。#define clrcs1 (*(volatile unsigned *)0x08200004) = 0x01;#define setcs1 (*(volatile unsigned *)0x08200004) = 0x02;利用宏定义来代替置高、置低;给相应的地址里写1,表示该CPLD的相应引脚输出低电平,给相应的地址里写2,表示该CPLD的相应引脚输出高电平。有的地址需要写入8
26、位数据。表1-12 底板中所需信号的地址标号功能地址实现方法CS_PS_clrPS2键盘鼠标的片选0x08200000在地址里写0x01CS_PS_setPS2键盘鼠标的禁止0x08200000在地址里写0x02clrcs14X4键盘的片选0x08200004在地址里写0x01setcs14X4键盘的禁止0x08200004在地址里写0x02s_clrHD7279向CPLD发数据0x08800000在地址里写0x01s_setCPLD向HD7279发数据0x08800000在地址里写0x02CS_273数据线数据锁存0x08400000在地址里写入8位数据CS_244从数据线读取数据0x082
27、00008从地址里读取8位数据clrcs触摸屏片选0x08400004在地址里写0x01setcs触摸屏禁止0x08400004在地址里写0x02clrL3MIIS模式低电平0x08600004在地址里写0x01clrL3CIIS时钟低电平0x08600000在地址里写0x01setL3MIIS模式时钟高电平0x08600004在地址里写0x02setL3CIIS时钟高电平0x08600000在地址里写0x02SETDATA设定数据发送地址0x08400008写入相应的数据(USB)SETADDR设定命令发送地址0x08400009写入相应的命令(USB)rCMD_PIPE_REG命令寄存器0
28、x08800000写入相应的数据(SD)rSTA_REG状态寄存器0x08800002读出相应的状态(SD)表1-12(续) 底板中所需信号的地址标号功能地址实现方法rCON_REG控制寄存器0x08800002写入相应的命令(SD)rRCE_DAT_BUF接收数据缓冲器0x08800004读出接收到的数据(SD)rTRA_DAT_BUF发送数据缓冲器0x08800004写入要发送的数据(SD)rINT_STA_REG中断状态寄存器0x08800006读出中断的状态(SD)rINT_ENA_REG中断使能寄存器0x08800006写入相应的使能中断(SD)rGPIO_DAT_REGGPIO数据
29、寄存器0x08800008写入相应的GPIO数据(SD)rGPIO_CON_REGGPIO控制寄存器0x08800008写入相应的GPIO命令(SD)rGPIO_INT_STA_REGGPIO中断状态寄存器0x0880000A读出GPIO中断的状态(SD)rGPIO_INT_ENA_REGGPIO中断使能寄存器0x0880000A写入GPIO中断的命令(SD)rIND_ADD_REG补充命令寄存器0x0880000C写入补充命令的地址rIND_DAT_REG补充数据寄存器0x0880000E写入补充命令具体的应用,请详见源码程序。10)其它接口说明电源单元:为系统提供+5V、+12V、-12V
30、、+3.3V电源,其中各指示灯如表1-13所示。表1-13 电源指示灯标号名称功能LED15LED灯+3.3V电源指示LED16LED灯+5V电源指示LED17LED灯+12V电源指示LED18LED灯-12V电源指示 SW2:拨码开关,扩展中断选择如表1-14所示。表1-14 扩展中断选择 码位功能1-ONEXT中断2引出2-ON未定义3-ONEXT中断3引出4-ONEXT中断3用于PS2键盘鼠标的中断请求 在底板上,留出了两列插孔,它们是供外部扩展所用。具体功能见表1-15。表1-15 外部扩展 标号功能IICSCLS3C44B0X的IIC控制时钟引出IICSDAS3C44B0X的IIC数
31、据线引出CS1CPLD的第100管脚的引出CS2CPLD的第77管脚的引出EXINT2S3C44B0X的外部中断请求2管脚引出EXINT3S3C44B0X的外部中断请求3管脚引出IO-1CPLD的第52管脚的引出IO-2CPLD的第97管脚的引出IOC-3S3C44B0X的TOUT1管脚引出,J4的13IOC-4S3C44B0X的TOUT3管脚引出,J4的45AIN3采集的模拟信号从第3路输出AIN2采集的模拟信号从第2路输出在信号扩展单元处,又扩展了PS2键盘鼠标接口,还有IDE硬盘接口。在此对底板上的设备所使用的中断作一总结。见表1-16。表1-16 底板上的设备所使用的中断设备使用的中断
32、网卡外部中断EXINT1PS2外部中断EXINT3USB设备外部中断EXINT44X4键盘外部中断EXINT5SD(MMC)卡外部中断EXINT6触摸屏外部中断EXINT7IDE硬盘外部中断EXINT7 SW4:拨码开关,ARM系列的CPU板卡选择如表1-17所示。表1-17 CPU板卡选择 功能 1 2ARM7offoffARM9OnoffARM10OffonARM11Onon综上所述,本章介绍了该系统的硬件资源,看完本章内容,应该对实验系统有一个基本的了解,在后面的几章中将会结合光盘资料给出的实验程序详细介绍每个单元在实验中的具体应用。 当进行嵌入式系统开发时,选择合适的开发工具可以加快开
33、发进度、节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、连接软件、调试软件、工程管理及函数库的集成开发环境(IDE)是必不可少的。当今在ARM领域,被多数嵌入式开发人员使用的集成开发环境有ARM SDT2.5 和 ARM ADS,其中ARM ADS为ARM公司推出的新一代ARM集成开发工具,最新版本为ADS1.2。这两种开发工具都是ARM公司为了方便用户开发使用ARM内核芯片而推出的,目前被广泛应用。这两种开发工具各有自己的优点和缺点,SDT调试不需要仿真器,只要有一跟JTAG调试电缆就可以了,但是它在调试的时候占用CPU的资源,调试的稳定性稍差,成本低,比较适合学生学习使用。ADS1
34、.2在仿真时要外接仿真器,其在调试时不占用CPU的资源,稳定性好,但是成本高,适合用于科研教学和嵌入式的产品开发。在课程主要是针对ARM的实验开发环境、ARM的汇编、高级语言的使用,以及针对三星的44B0的硬件资源进行一系列的硬件实验。这其中包括ARM ADS 1.2 开发环境创建与简要介绍、基于ARM汇编语言程序设计、基于ARM的C语言程序设计 基于ARM的硬件boot程序设计、ARM的I/O接口实验、ARM的中断实验 。这些实验是脱离操作系统的硬件实验,通过此类实验可以了解和学习ARM硬件的架构和软件的启动过程、运行过程,真正理解ARM芯片的应用。实验一 ADS1.2开发平台及汇编语言程序
35、设计一、实验目的1. 熟悉ADS1.2开发环境,了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程。二、实验内容1. 学习ADS1.2开发环境及汇编语言编程三、实验设备1PentiumII以上的PC机2PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境四、实验步骤1. ADS1.2下建立工程1)运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM的通用模板,如图2-1所示,选中它即可生成
36、ARM的执行文件。在Project name栏中输入工程的名称,以及在Location中输入其存放的位置(如在E:ARMtest文件夹下建立工程test)。按确定建立工程,出现如图2-2所示的工程管理窗口。图2-1 新建工程图2-2 工程管理窗口2)点击file/New,在New对话框中,选择File选项,如图2-3所示,新建汇编文件(如exam.s),并添加到新建的工程,同时选择Targets方式,如图2-3所示,最后,按确定。图2-3 新建文件并添加到工程3)在新建的文件中输入汇编程序。4)在新建的工程中,选择Debug版本,如图2-4,使用Edit|Debug Settings菜单对De
37、bug版本进行参数设置,弹出如图2-5所示对话框。图2-4 Targets方式选择4)在如图2-4中,点击Debug Setting 按钮,弹出2-5图,选中Target Setting项,在Post-linker栏中选中ARM fromELF项。按OK确定。这是为生成可执行的代码的初始开关。图2-5 Debug settings设置对话框5)在如图2-6中,点击ARM Assembler ,在Architecture or Processer栏中选ARM7TDMI。这是要编译的CPU核。6)在如图2-7中,点击ARM C Compliler ,在Architecture or Process
38、er栏中选ARM7TDMI。这是要编译的CPU核。图2-6 ARM Assembler设置图2-7 ARM C Compliler设置7)在如图2-8中,点击ARM linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址。RW Base栏中填写程序数据存放的起始地址,该地址是属于SDRAM的地址。本次实验室是软件仿真实验,不需要相应的硬件,因此,在图2-8中填入RO和RW是虚拟地址。(注:后面涉及到硬件时,RO和RW填入的必须是硬件资源中扩展的存储器空间地址。)在options栏中,如图2-9,Image entry po
39、int要填写程序代码的入口地址,其他保持不变。图2-8 代码段和数据的起始地址设置图2-9 程序代码的入口地址在Layout栏中,如图2-10,在Place at beginning of image框内,需要填写工程的入口程序的目标文件名,如,整个工程项目的入口程序是44binit.s,那么应在Object/Symbol处填写其目标文件名44binit.o,在Section处填写程序入口的起始段标号。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。图2-9图2-10 工程的入口程序得目标文件名8)在如图2-11中,即在Debug Setting对话框中点击左栏的ARM fromEL
40、F项,在Output file name栏中设置输出文件名*.bin,前缀名可以自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件。图2-10中使用的是test.bin. 到此,在ADS1.2中的基本设置已经完成。图2-11 输出文件设置 9)读者可根据自己习惯,更改Edit|Preference窗口内关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。如图2-12。图2-12 编辑窗口的环境参数设置10)文件编辑完成后,用project/compile(没有错误)èproject/make完成编译链接,最后用p
41、roject/debug进入AXD调试界面,调试按钮如下:左起第一个是全速运行,第二个是停止运行,第三个跳入函数内部,第四个单步执行,第五个跳出函数,第六个运行到光标处。(也可以在AXD界面下加载*.axf文件调试)11)AXD界面下配置设置选择optionsèconfigure target设置,如图2-13所示。在图中选择ARMUL仿真方式,再点击其中的Configure按钮,在processor选项中选择ARM7TDMI。12)调试,查看相关寄存器,存储器的内容变化情况并记录下来。查看寄存器,存储器和变量等用processor view菜单下的命令。 13)实验报告图2-13
42、target环境设置汇编程序示例: 程序1:COUNTEQU0x40003100; 定义一个变量,地址为0x40003100 AREAExample2,CODE,READONLY; 声明代码段Example2 ENTRY; 标识程序入口CODE32; 声明32位ARM指令STARTLDRR1,=COUNT; R1 <= COUNTMOVR0,#0; R0 <= 0 STR R0,R1; R1 <= R0,即设置COUNT为0LOOP LDRR1,=COUNTLDRR0,R1; R0 <= R1 ADDR0,R0,#1; R0 <= R0 + 1CMPR0,#10;
43、 R0与10比较,影响条件码标志 MOVHS R0,#0; 若R0大于等于10,则此指令执行,R0 <= 0STRR0,R1; R1 <= R0,即保存COUNTBLOOPEND 程序2:; 文件名:TEST4.S; 功能:计算X的n次方的值; 说明:X和n均为无符号整数XEQU9; 定义X的值为9nEQU8; 定义n的值为8AREAExample4,CODE,READONLY; 声明代码段Example4ENTRY; 标识程序入口CODE32; 声明32位ARM指令STARTLDRSP,=0x40003F00; 设置堆栈(满递减堆栈,使用STMFD/LMDFD指令)LDRR0,=
44、XLDRR1,=nBLPOW; 调用子程序POW,返回值为R0HALTBHALT; 名称:POW; 功能:整数乘方运算。; 入口参数:R0底数; R1指数; 出口参数:R0运算结果; 占用资源:R0、R1; 说明:本子程序不考虑溢出问题POWSTMFDSP!,R1-R12,LR; 寄存器入栈保护MOVSR2,R1; 将指数值复制到R2,并影响条件码标志MOVEQR0,#1; 若指数为0,则设置R0=1BEQPOW_END; 若指数为0,则返回CMPR2,#1BEQPOW_END; 若指数为1,则返回。(此时R0没有被更改) MOVR1,R0; 设置DO_MUL子程序的入口参数R0和R1SUBR
45、2,R2,#1; 计数器R2 = 指数值减1POW_L1BLDO_MUL; 调用DO_MUL子程序,R0 = R1 * R0SUBSR2,R2,#1; 每循环一次,计数器R2减1BNEPOW_L1; 若计数器R2不为0,跳转到POW_L1POW_ENDLDMFDSP!,R1-R12,PC; 寄存器出栈,返回 ; 名称:DO_MUL; 功能:32位乘法运算。; 入口参数:R0乘数; R1 被乘数; 出口参数:R0计算结果; 占用资源:R0、R1; 说明:本子程序不会破坏R1DO_MUL MULR0,R1,R0; R0 = R1 * R0 MOVPC,LR; 返回 END实验二 基于ARM的C语言
46、程序设计一、实验目的1.了解ARM C语言的基本框架,学会使用ARM的C语言编程二、实验内容1. 用C语言编写一个简单的应用程序三、实验设备1. PentiumII以上的PC机。2. PC操作系统WIN98或WIN2000或WINXP, ADS1.2集成开发环境,四、ARM C语言简介与使用规则1. ARM使用C语言编程是大势所趋在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,并且不宜移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂
47、,管理较为容易等等。因此,C语言的在ARM编程中具有重要地位。2. ARM C语言程序的基本规则在ARM程序的开发中,需要大量读写硬件寄存器,并且尽量缩短程序的执行时间的代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件紧密相关。在使用C语言时,要用到和汇编语言的混合编程。当汇编代码较为简洁,则可使用直接内嵌汇编的方法,否则,使用将汇编文件以文件的形式加入项目当中,通过ATPCS的规定与C程序相互调用与访
48、问。ATPCS,就是ARM、Thumb的过程调用标准(ARM/Thumb Procedure Call Standard),它规定了一些子程序间调用的基本规则。如寄存器的使用规则,堆栈的使用规则,参数的传递规则等。在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规则。但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规则。具体来说,汇编语言的子程序应满足下面3个条件: 在子程序编写时,必须遵守相应的ATPCS规则; 堆栈的使用要遵守相应的ATPCS规则; 在汇编编译器中使用-atpcs选项。基本的
49、ATPCS规定,请参考相关PDF文档。汇编程序调用C程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。在调用C程序时,要正确设置入口参数,然后使用BL调用。C程序调用汇编程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序。具体的编程规则同标准C语言。五、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西社会工作者成绩复核流程及办理指南
- 小学生作文辩论课件
- 《铸智慧殿堂》课件
- 《构建物联网》课件
- 专职安全生产管理人员(C类)模拟试题含答案(附解析)
- 配电线路工专业模考试题与参考答案解析
- 2024年11月预防医学考试题(附答案解析)
- 11月财务报表管理模拟试题(附参考答案解析)
- 航空物流中的航空货运标准化与规范化考核试卷
- 互联网生活服务行业智能硬件应用考核试卷
- 2025年北京市朝阳区高三二模-政治+答案
- 温州市普通高中2025届高三第三次适应性考试物理试题及答案
- 《光纤激光切割技术》课件
- 10.信息光子技术发展与应用研究报告(2024年)
- 《导数及其应用》复习课教学课件
- 2025年下半年商务部外贸发展事务局第二次招聘8人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年山西杏花村汾酒集团有限责任公司招聘笔试真题
- 《行政法与行政诉讼法》课件各章节内容-第一章 行政法概述
- 浙江2025年浙江省地质院本级及所属部分事业单位招聘笔试历年参考题库附带答案详解
- 2025年广东广州中物储国际货运代理有限公司招聘笔试参考题库含答案解析
- 2025-2030中国屏蔽泵市场运行态势分析及运营动态规划研究报告
评论
0/150
提交评论