嵌入式系统体系结构实验指导书_第1页
嵌入式系统体系结构实验指导书_第2页
嵌入式系统体系结构实验指导书_第3页
嵌入式系统体系结构实验指导书_第4页
嵌入式系统体系结构实验指导书_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统体系结构实验指导书信息工程学院物联网工程系 TOC o 1-5 h z HYPERLINK l bookmark1 o Current Document 实验一 ARM ADS集成开发环境3 HYPERLINK l bookmark150 o Current Document 实验二ARM汇编指令实验18 HYPERLINK l bookmark192 o Current Document 实验三ARM汇编语言程序设计实验(一)20 HYPERLINK l bookmark243 o Current Document 实验四ARM汇编语言程序设计实验(二)22实验五ARM汇编与C语言

2、混合程序设计实验26 HYPERLINK l bookmark338 o Current Document 实验六ARM的串行口实验29 HYPERLINK l bookmark380 o Current Document 实验七键盘及LED驱动实验32 HYPERLINK l bookmark427 o Current Document 实验八LCD与触摸屏程序设计35实验一 ARM ADS集成开发环境一、实验目的熟悉ARM ASD1.2开发环境,并学会ADS1.2环境下工程的仿真、调试及配置方法。使用ADS编译、 下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验内容

3、本次实验使用ARM ASD 1.2集成开发环境。新建一个工程文件,并编译这个工程文件。学习ADS1.2 环境下工程的仿真、调试及配置方法。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打 下基础。三、预备知识C语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬件:PC机Pentium100以上。软件:PC机Windows操作系统、ARM ADS 1.2集成开发环境、AXD五、实验步骤(一)ASD1.2集成开发环境的使用1.新建工程现在可以通过“开始”一“程序”一“ ARM Developer Suite v1.2”一“ CodeWarrior for

4、ARM Developer Suite” 来打开开发软件了,如图1-1所示。一】宰用_巨囱旧矢此十版EKD7 IDE1fl a di a fl:KD7 IDE iTE)-J超03憨端1回 croxakl DffL caEntEupLoi*”Outlook Express(f) Y jfl a di -a. Pl ayfitrVinToww N -3vi q Flokerj远程协助厄J MUILEI宦)方正软件保护卡图1-1启动 Metrowerks CodeWarrior for ARM Developer Suite v1.2后界面如图 1-2 所示。图1-2在CodeWarrior中新建一

5、个工程的方法有两种,可以在工具栏中单击“New”按钮,如图1-3所示。也可以在“File”菜单中选择“New。”菜单,如图1-4所示。图1-3图1-4这样打开一个如图1-5所示的窗口。该窗口有Project、File和Objict三个选项卡,现在我们新建工程, 故选Project选项卡。这个对话框中为用户提供了 7种可选择的工程类型。此7种工程类型已经在图中标出, 大家熟悉一下。这里我们选择第一种ARM Executable Image工程类型,在“Project name: ”下输入工程名,如test,点 击“Location: ”文本框的“Set.”按钮,浏览选择想要将该工程保存的路径。如

6、存放在E盘的armtest文件夹 中,进入E盘后按照图1-6,图1-7的步骤完成。图1-5图1-6图1-7改完名后,双击armtest文件夹再点击“保存”按钮,就会出现图1-8所示界面,此时点击“确定”按钮即可建 立一个新的名为test的工程,这时会出现test.mcp的窗口,如图1-9所示。Nev区图1-8图1-9图 1-102.设置目标及其参数开发环境要经过设置才能与ARM3000实验平台配套使用。在工具栏中有一个用于选择目标的下拉列表框,如图1-11圈中所示。新建工程的默认目标是DebugRel,另外还有两个可选择的目标,分别是Debug 和Release,他们的含义如下:DebugRe

7、l:生成目标时,为每一个源文件生成调试信息;Release:生成目标时,不生成调试信息;Debug:生成目标时,为每一个源文件生成最完全的调试信息。图 1-11这里选择Debug,接下来对Debug目标进行参数设置。单击工具栏上的设置按钮迫或使用Edit-DebugSettings菜单命令打开设置对话框,如图1-12所示,设置框如图1-13所示。图 1-12图 1-13在Debug Setting对话框中需要设置的内容比较多。设置方法是首先在左侧的树形目录中选中需要设置的对象,然后在右侧面板中进行相应的设置。下面对经常使用的设置选项进行介绍。(1)目标设置(Target Setting)在树形

8、目录中选中TargetTarget Setting项,在右侧面版的Post-linker下拉表框中选择ARM fromElF, 使得工程连接后通过fromELF产生二进制代码,使其可以烧写到ROM中。方法如图1-14所示。图 1-14(2)语言设置(Language Settings)开发语言有汇编、C、C+及其混合语言等。我们在开发前要对其设置,这里主要是对其硬件(架构 或处理器)的支持设置,如实验是在基于S3C44B0X的实验箱进行开发,则在右侧面板Architecture or Processer (架构或处理器)下拉列表框中选择ARM7TDMI,若实验是在基于S3C2410处理器的实验

9、箱中开 发的,则选择ARM920T。具体设置方法是先选中树形目录中Language Settings下的开发语言,然后在本语言对应的右侧面板的、 Architecture or Processer下拉列表框中选择ARM7TDMI,其他选项保持默认。注意,在开发中用到的语言都要进行这样设置汇编语言的设置过程如图上臣所示,其他语言设置方法与此一样。Metrcv心虹 CodeVan ior for ARM Developer Suite v!2 /Film EUR 钠卵 Saardi 口河机方 Debug Window H皂IpTircet MFCS | Cipticns| Ustinf| Ewtr

10、&s |-旦Igtidg PaiiitIPilTt-flDldLML s&f+fp丁竺皂&二?白匕1|1四 戏口兰 P- T可&白tTu-p Sb L L PithsJnild Irtr-SE Enntirib SattiikZE 1*1 竦 pi 口 gw J- dut-= 7ri.E Cebugel Setdr-ig.Un T srjel.lEj!。Qrlar Initial Sl4tLiULw End:A.ZE4nblETC Bis血di的r珈知脚 Ctz-吊 CU Carj-1 Hunb C Carjiler Thmb C+ Cm.曰 Liztkeif;牌 LljiLtt-L-稀 fr

11、tnELFP- E Jl tor图 1-15(3)链接器设置(Linker)在左侧的树形目录中选中LinkerARM Linker,出现链接器的设置对话框,如图1-16所示。此处设 置很重要,详细介绍一下各个选项卡的设置方法。1)Output选项卡:如图1-16所示。其中Linktype选项中为链接器提供3种链接类型:Partial:表示链接器只进行部分链接,链接后的目标文件可以作为以后进一步链接的输入文件;Simple:表示链接器将生成简单的ELF格式的映像文件,地址映射关系在Simple image选项区域中 设置;Scattered:表示链接器将生成复杂的ELF格式的映像文件,地址映射关

12、系在Scatter格式的文件中指定。 我们常用的是Simple和Scattered两种。Simple是一种简单设置,如果程序需要用到标准C库函 数的话需要按Scattered进行连接地址的设置。若程序员用不到标准C库函数的话,请选择Simple选 项,若需要用到标准C库函数的话,请选择Scattered选项。在ARM Linker项的Output选项卡中,我们选择Simple选项,在其右侧Simple image选项区域 中包含RO Base和RW Base两个文本框,如图1-21所示。在Simple image框中设置连接的Read-Only (只读)和Read-Write (读写)地址。这

13、两项的地址均由硬件决定,并应该在SDRAM的地址范围内。 地址0 x0c080000是开发板上SDRAM的真实地址,是由系统的硬件决定的;0 x0c200000指的是系统可 读写的内存地址。也就是说0 x0c080000 0 xC1fffff之间是只读区域,存放程序的代码段,在0 xC200000开始是程序的数据段。Cc-dsLVjrnai ForLi nktvpsTTigm JLi nkij r5泌电1 gdj tJiigStrip!&Cue!on KmcrdsAKI Dsbusi-7Sfltancs r/ - Fa 1h Hlsppa nxxKunlintt Sttii-nes图 1-29

14、若连接 ARM3000 开发平台,RO Base 和 RW Base应设置为 0 xc0800000、0 xc200000。图 1-302) Layout选项卡:如图1-31所示。该选项卡在链接方式为Simple时有效,他用来安排一些输入段在映像文件中的位置。即在Place at beginning of image区域中Object/Symbol文本框中填写启动程序的目标文件名44binit.o和Section文本框中填写程序 入口起始段的标号init。其作用是通知编译器,整个项目从该段开始执行。图 1-31如果希望将编译后生成的二进制文件放到指定文件夹,可以在左侧的树形目录中选中Linke

15、r-ARM frpmELF进行设置,如图1-32所示。此框如为空,将默认在工程目录下生成二进制文件。该二进制文件可 用于以后下载到Flash (试验箱等硬件)中执行。图 1-32至此,对Debug Settings的设置基本完成,单击Apply-OK按钮,保存设置。为了避免以后每次新建工程再这样设置,我们可以将该新建的空工程作为模板保存起来。方法是:在 ADS1.2的安装目录的Stationary文件夹下新建一个适合模板的目录名,如 S3C44B0 ARM Executable Image ;然后将刚设置好的工程文件以一个适合的名字如S3C44B0 ARM .mcp另存到该模板目录中即可。 以

16、后使用File-New。菜单命令新建工程时就可以在弹出的New对话框中看到S3C44B0 ARM Executable Image工程模板,如图1-33所示。选用该模板创建工程就可以免去设置过程,直接向工程中添加文件、进 行编码就可以了。图 1-333.向工程中添加源文件工程创建、设置好以后就会出现test.mcp的窗口,该窗口包含File、Link Order和Targets三个选项卡, 如图1-34所示。默认情况下显示的是File选项卡,此时可以通过执行Project-Add File.,菜单命令把与工 程有关的所有源文件加入到该工程,如图1-35。或者通过鼠标右击空白处弹出的快捷菜单Ad

17、d Fil e.,来完成,如图1-36所示。图 1-34UiridoTErojecttiles.Cr TiEcCr eaLe Segpejit/OverlayFil | LiiJj Order | 7arTilsEreprocessrrjsaompilCtrl4-Coda1Check SyniaxCbrl4.ConpiltCtT14F7DiEassarilileCtrl 十 ShLEt十 FTBrine Up To lateCtrHVSt op BuildC-bfl4Er 曲。1:回区I1 t cat. neproverks CodcYpTior fox jLRJi Loper Suite v

18、l. 2图 1-35Kenova Dbj fict 匚add图 1-36对于本次试验,没有源文件可用,首先需要新建源文件。这里以新建文件类型为C语言文件,文件 名为led.c为例向大家说明一下过程。选择File-New。菜单命令,如图1-37所示。在弹出的窗口中选择 File选项卡;在File name文本框中输入新建文件的文件名led.c,注意:文件名后缀与要使用的开发语言 种类有关,如用。语言开发时文件名后缀为,汇编语言开发时文件名后缀为;在Location文本框中输 入文件的保存位置E:armtestest;选中Add to Project复选框;在Project下拉列表框中选择将文件添

19、加到的工程test。mcp;在Targets复选框中选中文件要添加的目标,过程如图1-37所示。单击确定即可将新建 的文件添加到工程中,文件添加到工程后的窗口如图1-38所示。接下来只需在新建文件中进行编码、保存 即可,如图 1-39 所示。注意:此时 Metrowerks CodeWarrior for ARM Developer Suite v1.2 窗口中包含工程 和文件两个窗口,如图M0所示。我们需要点击相应的最小化或向下还原按钮来进行切换。如图9和 图1-40中圈中所示。Kdit Ki点 鱼Eaardh. EroJeeL式inHn Ke】;Inpcitft Praj&ct EpDt

20、Praj&c t匚。队 D占队瓶CtrH-PCtrlfDCtrH-DClrU-WCirH-StiiF&ga Stiap.Prixit.Open B.ec tnts回国CHL+Shift+N1图 1-37若需要添加汇编文件,文件后缀名为.s。图 1-37图 1-38图 1-39图 1-40工程创建好以后,接下来就是对其进行编译和链接。选择Metrowerks CodeWarrior for ARM Developer来完成编译和链接。如果有错误或警告,窗口Suite v1.2窗口的“Project”一“Make”菜单命令或点击按钮 如图1-41所示,用户可根据提示更改程序。图 1-41如果没有语

21、法错误,将在工程所在目录下生成一个名为“工程名_data”的文件夹。如本例的工程名为 test.mcp,生成的文件夹名为test_data。在该文件夹下,针对不同类型的目标将生成多个文件夹。本例中由 于使用的是Debug目标,因此生成的最终文件都在Debug文件夹下。进入Debug文件夹会看到编译、链 接后生成的映像文件(xxx.axf)和二进制文件(xxx.bin)。映像文件用于调试,二进制文件用于烧写到Flash 中运行。(二)、ADS1.2环境下工程的仿真、调试及配置方法通过“开始菜单”一“ ARM Developer Suite v1.2”一,AXD Debugger”来打开调试软件,

22、如图1-42所示。Mzihm Heeia fl:WindawE Hadia PlflyorAll? IDE QCKSWindows llovia PlaJrark)!D Dbl-Uggbr政协助C a delV airi or for ON D 4r End 七卷UilLi D.g Eooks所有程序世!卜 标淄Suibm叩1M 了 |Setup 皿 KBM Developer Sai te vL. 2QI注柏心1关闭计贫机L?彼 h 小“J W方正砍伴与扩ffor Dvol:p4r Sui to vl. 2图 1-42如果程序代码没有错误或警告,也可以点击Metrowerks CodeWar

23、rior for ARM Developer Suite v1.2窗口的Project一Debug菜单命令或点击 法如图1-43和图1-44所示。按钮或点击工程窗口的按钮来直接调出AXD调试窗口,方.letrovetks CodeVarriQE forAI Developer Simite E. 2 aza.e sHEEE Zile Eiit Ylw 眼*h .Utbuc Kndonr KelpJiAPEL ENTRYA xrra ax. i. to Pr dj s-=*LAdd Eilt=.Er &o.t iSrourpCriitw Tfll-gA tCreae Se-cr-ejit/OTe

24、rlaypcLe cnM07MOVADDM07LDRSUITO .OaciCheck Synt-=aiEX eproc t=s Plrac :Tip 匚立卫i 1白 Dj-SasBembli-CtrL+ .CtrHFV CtrL+Shitt+r?EHDBrine Up To Hale ge51 txp Build.ITCtrL+Etrq al:krtExcsptianI l口clEjc i tObjfl:e t Code.RA-dMirch Ear FlIakReset Project ZntrE PithsCtrL4-Sat DwfAixLt Tarait图 1-43图 1-44AXD调试窗

25、口如图1-45所示。aTargetTFi HI VersionAMC: YFROGRA 1.EirL!i.Ramotc: A. H11.2 JJ. SU5| ARWLIL.C:,.FEDGRA1.BirL-.jilnli+c. -ill1. EJJ. 805 IT org卷 t. En.vi r crjTi 皿七 g图 1-45第一次使用需要对AXD进行配置,具体方法如下:初次运行AXD,左侧的目标平台为ARM7TDMI。试 验箱采用的CPU为ARM7TDMI,所以需要配置AXD使之匹配。方法为点击AXD窗口的OptionsConfigure Target菜单命令,如图1-46。图 1-46C

26、onfigure Target窗口如图1-47所示。在图1-47中,Target栏代表不同的目标CPU。“ADP”和“ARMUL” 是缺省的设置。选择ARMUL,表示使用软件仿真,此时PC机可以不连接任何目标板,ARM系统中CPU 的行为完全由软件模拟。我们使用软件仿真,故选择ARMUL。Choose Tarcet* Flqsclftat.tsi-gc:t srtvironnQitt from + He -ibovg list or j.dd qJ t urgbt anvir onm ant to tha li ct Kota that a target anvi r onm antt a h

27、a canf i gur ad o.t Iaae t anc a h cf ar a i t can ba usad|C mnu elHelu图 1-47要设置CPU类型需双击ARMUL,然后在出现的设置对话框中点Processor区域中的Variant下拉菜单, 找到ARM7TDMI并选中,然后点击Ok-Ok即可。设置过程如图1-48所示。&RMulator ConfigurationDProzessor勺顷 I Ah rvi JMIClockEmulated Speed:!i* Real-tinneOptionsFloatra Poinl EfrdationDebug Enicn慎 Lit

28、tle L BigGM 比 iget Erd-an& Debug Enden P Hadware EndianMstctsi Mcp Fife No Map Fier Map Fie TOC o 1-5 h z 日EUJ比|Floating Port iZqoroceKDifpu. noZffu三MMUJPU IniliaizationPagctab |DEFAULT_PAQETABLES刁X | Cdnutl | Hiu图 1-48设置好的AXD界面左侧就会显示ARM7TDMI 了。现在可以向AXD调试软件中添加工程的映像文 件了。方法为点击AXD窗口的File-Load Image菜单命令

29、选择要加载的映像文件(后缀为.axf),如图1-49所示。Eyfrw-Eh Jrs-=irMT Si m 琏*!* tr+cit+ Lti me Iiidf HiLp0 amKV明-H.-业电王M司IFili.Ltfrl Suuy FjIi.&炒SJBEiry T.468 i -. MIL村kmUM图2-1 ARM实验2的运行结果六、实验参考程序XEQU11YEQU8BIT23 EQU (1 2*X ?MOVR0,#YADDR0,R0,R0,LSL #2MOVR0,R0,LSR #1MOVR1,#XMOVR1,R1,LSL #1CMPR0,R1LDRHIR2,=0 xFFFF0000ANDHI

30、R5,R5,R2ORRLSR5,R5,#0 x000000FFTSTR5,#BIT23BICNER5,R5,#0 x00000040BSTARTEND实验三ARM汇编语言程序设计实验(一)一、实验目的掌握ADS1.2集成开发环境了解ARM汇编指令用法,并能够编写简单的汇编程序掌握指令的条件执行,掌握LDR/STR指令,完成存储器的访问二、实验内容 用LDR指令读取0 x40003100地址上的数据,将该数据加1,若结果大于10,则使用STR指令将结 果写入原地址,否则,将把0写入原地址。 用ADS1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegister)

31、监视 R0、R1的值,打开存储器观察窗口(Memory)监视0 x40003100地址处的值。三、预备知识1、用ARM ADS集成开发环境,编写和调试程序的基本过程。2、ARM指令的使用四、实验设备及工具(包括软件调试工具)硬件:PC机Pentium100以上。软件:PC机Windows操作系统、ARM ASD 1.2集成开发环境、AXD五、实验步骤启动ADS1.2,使用ARM Executable Image工程模板建立一个工程。如SY3建立汇编源文件Test3.s,加入工程中。设置工程连接地址 R0 Base 0 x40000000,RW Base 0 x40003000。编译、连接工程,

32、选择Project Debug,启动AXD软件仿真调试。打开寄存器窗口,监视R0、R1的值,设置观察地址0 x40003100,显示方式为32bit,监测0 x40003100 上的值。可以单步运行程序,可以设置、取消断点,或者全速运行,停止运行,调试时观察寄存器0 x40003100 上的值,运行结果见图3-1。图3-1 ARM实验3的运行结果六、实验参考程序COUNT EQU 0X40003100AREAENTRYCODE32TEST3, CODE,READONLYSTARTLDRR1,=COUNTMOVR0,#0STRR0,R1LOOPLDRR1,=COUNTLDRR0,R1ADDR0,

33、R0,#1CMPR0,#10MOVHSR0,#0STRR0,R1BLOOPEND实验四ARM汇编语言程序设计实验(二)一、实验目的掌握ADS1.2集成开发环境掌握如何使用ARM的MRS/MSR指令实现工作模式切换二、实验内容使用ARM的MRS/MSR指令实现工作模式切换,并初始化堆栈指针观察ARM控制器在工作模式下的寄存器的区别。三、预备知识1、用ARM ADS集成开发环境,编写和调试程序的基本过程。2、ARM指令的使用四、实验设备及工具(包括软件调试工具)硬件:PC机Pentium100以上。软件:PC机Windows操作系统、ARM ASD 1.2集成开发环境、AXD五、实验步骤启动ADS

34、1.2,使用ARM Executable Image工程模板建立一个工程。如SY4建立汇编源文件Test4.s,然后加入工程中。设置工程连接地址 R0 Base 0 x40000000,RW Base 0 x40003000。设置调试入 口地址 Image Entry point 为 0 x400000000编译、连接工程,选择Project Debug,启动AXD软件仿真调试。打开寄存器窗口,监视寄存器的值,选择current项监视各个寄存器上的值。 可以单步运行程序,可以设置、取消断点,或者全速运行,停止运行,调试时观察寄存器CPSR、SPSR、 R13、R14和R15的值,运行观察见图4

35、-1 o图4-1 ARM实验4的运行观察结果注意:CPSR寄存器的显示方式如图4-1所示,显示分两个部分,一是各个运算标志位,二是工作模 式显示。(1)运算标志位NZCV:显示为大写字母,表示结果为1,否则为0。(2)中断标志位IF: I为IRQ中断禁止位,F为FIQ中断禁止位。(3)工作模式位:包括User、Fiq、Irq、SVC、Abort、Undef 和 SYS。六、实验参考程序;the stack length is being definedUSR_STACK_LENGTHEQU64SVC_STACK_LENGTHEQU0FIQ_STACK_LENGTHEQU16IRQ_STACK_

36、LENGTHEQU64ABT_STACK_LENGTHEQU0UND_STACK_LENGTHEQU0AREA MODE1,CODE,READONLYENTRYCODE32 TOC o 1-5 h z START MOVR0,#0MOVR1,#1MOVR2,#2MOVR3,#3MOVR4,#4MOVR5,#5MOVR6,#6MOVR7,#7MOVR8,#8MOVR9,#9MOVR10,#10MOVR11,#11MOVR12,#12BLinit_stack;init stack pointer in every mode;enable the IRQMRSR0,CPSR;R0-CPSRBICR0

37、,R0,#0X80MSRCPSR_cxsf,R0;CPSR-R0;switch to usr modeMSRCPSR_c,#0 xd0MRSR0,CPSR;swicth to svc modeMSRCPSR_c,#0 xdfMRSR0,CPSRHALT BHALT;INIT STACKinit_stackMOVR0,LR;Setup thesvc stackMSRCPSR_c,#0 xd3LDRSP,StackSvc;Setup the Irq stackMSRCPSR_c,#0 xd2LDRSP,StackIrq;Setup the Fiq stackMSRCPSR_c,#0 xd1LDRS

38、P,StackFiq;Setup the Abt stackMSRLDRCPSR_c,#0 xd7 SP,StackAbt;Setup the Und stackMSRCPSR_c,#0 xdbLDRSP,StackUnd;Setup the Usr stackMSRCPSR_c,#0 xdfLDRSP,StackUsrMOVPC,R0;define the stack pointerStackUsrDCDUsrStackSpace + (USR_STACK_LENGTH - 1) * 4StackSvcDCDSvcStackSpace + (SVC_STACK_LENGTH - 1) * 4

39、StackIrqDCDIrqStackSpace + (IRQ_STACK_LENGTH - 1) * 4StackFiqDCDFiqStackSpace + (FIQ_STACK_LENGTH - 1) * 4StackAbtDCDAbtStackSpace + (ABT_STACK_LENGTH - 1) * 4StackUndDCDUndStackSpace + (UND_STACK_LENGTH - 1) * 4SPACESPACESPACESPACESPACESPACE;ALLOCATED THE STACK SPACEUsrStackSpaceSvcStackSpaceIrqSta

40、ckSpaceFiqStackSpaceAbtStackSpaceUndStackSpaceUSR_STACK_LENGTH * 4SVC_STACK_LENGTH * 4IRQ_STACK_LENGTH * 4FIQ_STACK_LENGTH * 4ABT_STACK_LENGTH * 4UND STACK LENGTH * 4END实验五 ARM汇编与C语言混合程序设计实验一、实验目的掌握如何使用ADS 1.2编写混合语言程序二、实验内容1 .掌握C语言中调用汇编程序技术2.汇编程序完成加法运算,计算z = x + y值三、预备知识1、用ARM ADS 1.2集成开发环境,编写和调试程序的

41、基本过程。2、ARM应用程序的框架结构。四、实验设备及工具(包括软件调试工具)硬件:PC机Pentium100以上。软件:PC机Windows操作系统、ARM ASD 1.2集成开发环境、AXD五、实验步骤启动ADS1.2,使用ARM Executable Image工程模板建立一个工程。如SY5 建立C语言源文件test5_c.c,和汇编语言文件test5_s.s,然后加入工程中。.设置工程连接地址 R0 Base 0 x40000000,RW Base 0 x40003000。设置调试入 口地址 Image Entry point 为 0 x400000000设置位于开始位置的起始代码段,

42、如图5-1o编译、连接工程,选择ProjectDebug,启动AXD软件仿真调试。在Test5_C.c文件中的Add()函数处设置断点,然后,全速运行程序。程序在断点处停止,可以单步运行程序,判断程序是否跳入汇编程序中运行。选择Processor Views9Variables打开变量观察窗口,观察全局变量的值,单步、全速运行程序,判断 程序的运算结果是否正确。如图5-2所示。日ARM Linker: Ac cess r athz j Build ExtrasEuntime Sett : File MappingE : Soufca Fra = ARM Tarset Lmpi4ge Ee tt

43、AF甜 AsEemlilerC Ccinipiler :怔即计+ Ccnij-ilThuTib C C&mpil Thumb C C i:iiti .日“ Linker:.岫 fror-ELF 曰Edi t orOUect/SymbolSection11-intu totals -entry OxLicLibLiDLiO -ru-nase OxUcUijULiOLi -rw-bsse LijcZLCiODLi -rirst st:artup. o(stazt)图5-1设置开始位置的起始代码段file 既srcQi Iroffiess&r Fieirs 钮 tHii i 场3Lij-i a mi

44、s MnMw HelpOMDCSDOODOONODaODQO? OTEDESDO ttXEVTfOOlfl LttESliiJ&80ijDNETFFDaLD CulDESDD DxE7JTDain CwISDflEBOQ DxETFFDflLQ CuISODEaDCi nxE7JTDflD CwKSDAEBdO HXE7FFD0LD OxESUDEZaOD MrFODin OxESDDEBDaMl喘晶1回庄 区司|回长1nB_BjE01cm.ji|(-|u-IY阿邑目旦1ABETg -岫的丁-|a|x|uienc rDDKODUODDO?-ElDlfOCaODOODL_DkODOODDODl-

45、:E30muC2u00u4 r4UKODQODDOO-ESaNUDQuDDuD-xCOXODOODDOD000000000yIXODQODDOO-eBDNDDaODDDDTUIOXODOODDOD-EllDMdDtlODDODlt1ZIXODQODDOOr-rl3DM4DaO3TTB-t14oxonoooo53-pcDMOCtlSDDTDHE匚呻 Ft* 时三|iM亡m亡 jlijcB utinLijned chaxfdftl JIlii J1Ki!Z321 此匚extecn uuit32 Add(i.iintE rijin.t32 y |;umt-33 ma. 3veil MALM 1-3-

46、AckLi:* H uMLfeflVCwDr2DDQlD图5-2 ARM实验5的运行观察结果图5-3实验5源代码组织见六、实验参考程序文件_ startup file startup.sIMPORTIImage$RO$LimitlIMPORTIImage$RW$BaseIIMPORTIImage$ZI$BaseIIMPORTIImage$ZI$LimitIIMPORT MAIN ;declare the main() in the C ProgAREA start,CODE,READONLYENTRYCODE32ResetLDRSP,=0 x40003f00;initial the C cas

47、eLDRR0,=IImage$RO$LimitILDRR1,=IImage$RW$BaseILDRR3,=IImage$ZI$BaseICMPR0,R1BEQLOOP1LOOP0CMPR1,R3LDRCCR2,R0,#4STRCCR2,R1,#4 TOC o 1-5 h z BCCLOOP0LOOP1LDRR1,=IImage$ZI$LimitIMOVR2,#0LOOP2CMPR3,R1STRCCR2,R3,#4BCCLOOP2BMAINEND文件二 test5_c.c#define uint8 unsigned char#define uint32 unsigned intextern ui

48、nt32 Add(uint32 x,uint32 y);uint32 sum;void MAIN(void)sum = Add(5,4);while(1);文件三 test5_s.sEXPORT AddAREA Addc,CODE,READONLYENTRYCODE32AddADDR0,R0,R1MOVPC,LREND实验六ARM的串行口实验一、实验目的.掌握ARM的串行口工作原理。.学习编程实现ARM的UART通讯。掌握CPU利用串口通讯的方法。二、实验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的 功能,熟悉ARM系统硬件的UART相关接口。

49、编程实现ARM和计算机实现串行通讯:ARM监视串行口,将接收到的字符再发送给串口(计算机与 开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给 PC,在超级终端上显示。三、预备知识1、用ARM ADS 1.2集成开发环境,编写和调试程序的基本过程。2、ARM应用程序的框架结构。3、了解串行总线四、实验设备及工具硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线软件:PC机操作系统win98、Win2000或WinXP、ARM ADS 1.2集成开发环境、仿真器驱动程序、 超级终端通讯程序五、实验步骤新

50、建工程,将光盘中“串行口实验startup ”目录下的文件添加到工程中,这些是启动时所需要的 文件。定义与UART有关的各个寄存器地址和一些特殊的位命令。主要有以下各寄存器(44b.h):/* UART的全部功能寄存器*/#define rULCON0#define rULCONl#define rUCON0#define rUCONl#define rUFCON0#define rUFCONl#define rUMCON0#define rUMCONl#define rUTRSTAT0(volatile unsigned *)0 x1d00000)(volatile unsigned *)0

51、 x1d04000)(volatile unsigned *)0 x1d00004)(volatile unsigned *)0 x1d04004)(volatile unsigned *)0 x1d00008)(volatile unsigned *)0 x1d04008)(volatile unsigned *)0 x1d0000c)(volatile unsigned *)0 x1d0400c)(volatile unsigned *)0 x1d00010)#define#define#define#define#define#define#define#define#definerUT

52、RSTATlrUERSTAT0rUERSTATlrUFSTAT0rUFSTATlrUMSTATOrUMSTATlrUBRDIVOrUBRDIVl(*(volatile unsigned *)0 xld040l0)(*(volatile unsigned *)0 x1d00014)(*(volatile unsigned *)0 x1d04014)(*(volatile unsigned *)0 x1d00018)(*(volatile unsigned *)0 x1d04018)(*(volatile unsigned *)0 x1d0001c)(*(volatile unsigned *)0

53、 x1d0401c)(*(volatile unsigned *)0 x1d00028)#ifdef _BIG_ENDIAN#define rUTXH0#define rUTXHl#define rURXH0#define rURXHl#define WrUTXH0(ch)#define WrUTXHl(ch)#define RdURXH0()#define RdURXH1()/大端摸式(volatile unsigned(volatile unsigned(volatile unsigned(volatile unsigned(volatile unsigned(volatile unsig

54、ned(volatile unsigned(volatile unsignedchar *)0 x1d00023)char *)0 x1d04023)char *)0 x1d00027)char *)0 x1d04027)char *)(0 x1d00023)char *)(0 x1d04023)char *)(0 x1d00027)char *)(0 x1d04027)=(unsigned char)(ch)=(unsigned char)(ch) )#define UTXH0(0 x1d00020+3) /byte_access address by BDMA#define UTXH1#d

55、efine URXH0#define URXH1(0 x1d04020+3)(0 x1d00024+3)(0 x1d04024+3)#definerUTXH0(*(volatileunsignedchar*)0 x1d00020)#definerUTXHl(*(volatileunsignedchar*)0 x1d04020)#definerURXH0(*(volatileunsignedchar*)0 x1d00024)#definerURXHl(*(volatileunsignedchar*)0 x1d04024)#defineWrUTXH0(ch)(*(volatileunsignedc

56、har*)0 x1d00020)=(unsigned char)(ch)#defineWrUTXHl(ch)(*(volatileunsignedchar*)0 x1d04020)=(unsigned char)(ch)#defineRdURXH0()(*(volatileunsignedchar*)0 x1d00024)#defineRdURXH1()(*(volatileunsignedchar*)0 x1d04024)#else/小端摸式#define UTXH0(0 x1d00020)/byte_access address by BDMA#define UTXH1(0 x1d0402

57、0)#define URXH0(0 x1d00024)#define URXH1(0 x1d04024)#endif3.编写串口驱动函数(MyUart.c):图6-1串口初始化图6-2发送数据图6-3接收数据(*(volatile unsigned *)0 x1d04028)在主函数中实现将从串口 0接收到的数据发送到串口 0 (Main.c):开发板初始化ARMTargetInit()(uhal.h)从串口读取数据向串口发送数据图6-4主函数六、思考题RS232串行通讯的数据格式是什么?串行通讯最少需要几根线,分别如何连接?ARM的串行口有几个,相应的寄存器是什么?用中断方式实现串口驱动。实

58、验七键盘及LED驱动实验一、实验目的学习键盘及LED驱动原理。掌握zlg7289芯片的使用方法。二、实验内容通过zlg7289芯片驱动17键的键盘和8个共阴极LED,将按键值在LED上显示出来。三、预备知识掌握在ARM ADS 1.2集成开发环境中编写和调试程序的基本过程。了解ARM应用程序的框架结构。了解UC/OS-II多任务的原理。四、实验设备及工具硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。软件:PC机操作系统win98、Win2000或WinXP、ARM ADS 1.2集成开发环境、仿真器驱动程序、 超级终端通讯程序五、实验步骤1 .

59、新建工程,将“键盘及LED实验”目录下的文件添加到工程。定义 zlg7289 寄存器(zlg7289.h)#define ZLG7289_CS(0 x20) /GPB5#define ZLG7289_KEY(0 x10) /GPG4#define ZLG7289_ENABLE()doZlg7289SIOBand=rSBRDR;Zlg7289SIOCtrl=rSIOCON;rSIOCON=0 x31;rSBRDR=0 xff;rPDATB&=(ZLG7289_CS);while(0)#define ZLG7289_DISABLE()dorPDATB|=ZLG7289_CS;rSBRDR=Zlg7289SIOBand;rSIOCON=Zlg7289SIOCtrl;while(0)编写 zlg7289 驱动函数(zlg7289.c)图7-2从zlg7289读取键值图 7-1 zlg7289 复位4.定义键盘映射表:(Keyboard16.c)unsigned charKeyBoard_Map=4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,1

温馨提示

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

评论

0/150

提交评论