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

下载本文档

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

文档简介

1、嵌入式系统实验指导书EFLAGARM-S3C44B0北京工业大学电控学院DSP与嵌入式系统研究室二零零四年十月嵌入式系统实验指导书实验一 ARM处理器指令系统实验实验目的 熟悉ARM指令系统,熟悉ARM SDT编辑,编译,连接ARM Project Manager和ARM Debugger的设置和使用。实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager 和 ARM Debugger。实验内容 学习使用ARM Project Manager建立项目文件,编辑汇编文件,并加入项目。 学习ARM编译器和汇编器的设置。 通过编程熟悉ARM指令,包括跳转指

2、令,数据处理指令,状态寄存器传送指令,load/store指令,中断异常产生指令。 学习ARM调试起的使用方法,包括程序的导入,单步执行,断点设置等。实验要点 工程文件的建立,在ARM Project Manager中点击File->New选择Project,点击确定。项目如上图设置。 连接器的设定,需要设置代码和数据段的起始地址,如下图点击图标,选择不进行远程调试,即可打开调试器。按下CtrlF,即可显示源代码,使用工具栏提供的工具即可进行单步调试。一段最简单的ARM程序: AREA test, CODE, READONLY ENTRYStart B Start END实验二 JTAG

3、调试器的使用实验目的 熟悉JTAG调试器的原理。熟悉ARM SDT ARM Debugger JTAG调试的设置和使用。 实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager 和 ARM Debugger;jtag.exe; EFLAGARMS3C44.B0实验箱。实验内容 学习使用JTAG调试器的设置。 PC机同实验箱的连接。 启动调试器服务程序DebugServer.exe。 配置ARM调试器参数,完成同实验箱的连接。 通过调试器配置实现箱上的ARM处理器SDRAM参数。 实验要点 在调试软件目录中启动DebugServer.exe,调试起服务

4、程序。启动SDT调试软件ARM Debugger。首先打开DebugServer.exe调试器服务程序首次使用SDT调试软件时,要对SDT进行配置,如下图。点击菜单中Options选项,点击Configure Debugger选项。点击Configure选项,选择Ethernet,输入IP地址为:127.0.0.1即本机缺省IP回环地址。打开SDT菜单中的File选项中的Load image菜单,调入编译好的要调试的映像文件,可按照单步、全速、设置断点等方式进行调试。选择Remote_A在Windows2000和WindowsXP下使用并行口需要驱动程序,在本实验系统中使GiveIOInsta

5、ller来安装并口驱动程序。在GiveIO目录下点击GiveIOInstaller.exe即可。将下面代码使用文本文件编辑器(如notepad等)保存为sdram.ini, 并copy到ARM251/bin/目录下。|*SDRAM_CONFIG*let $vector_catch = 0x00let psr=%IF_SVC32let 0x1d80000=(0x34<<12)+(0x3<<4)+0x1)let 0x1c80000=0x11111190let 0x1c80004=(3<<13)+(3<<11)+(7<<8)+(3<&

6、lt;6)+(3<<4)+(3<<2)+0)let 0x1c80008=(3<<13)+(3<<11)+(7<<8)+(3<<6)+(3<<4)+(3<<2)+0)let 0x1c8000c=(3<<13)+(3<<11)+(7<<8)+(3<<6)+(3<<4)+(3<<2)+0)let 0x1c80010=(3<<13)+(3<<11)+(7<<8)+(3<<6)+(3<

7、<4)+(3<<2)+0)let 0x1c80014=(3<<13)+(3<<11)+(7<<8)+(3<<6)+(3<<4)+(3<<2)+0)let 0x1c80018=(3<<13)+(3<<11)+(7<<8)+(3<<6)+(3<<4)+(3<<2)+0)let 0x1c8001c=(3<<15)+(0<<2)+0)let 0x1c80020=(3<<15)+(0<<2)+0)

8、let 0x1c80024=(1<<23)+(0<<22)+(1<<20)+(1<<18)+(2<<16)+1019)let 0x1c80028=0x0let 0x1c8002c=0x20let 0x1c80030=0x20打开ARM调试器 ARM Debugger for Windows,在View中选择Command,在Command窗口键入obey sdram.ini注:以上步骤是为了配置SDRAM控制寄存器,使得SDRAM能够作为系统的主存,能够被调试器读写。实验三 S3C44B0 GPIO的使用实验目的 熟悉JTAG调试器的

9、原理。熟悉ARM SDT ARM Debugger JTAG调试的设置和使用。掌握S3C44B0 GPIO的配置和使用。实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager 和 ARM Debugger;jtag.exe; EFLAGARMS3C44B0实验箱实验内容 复习实验二的内容。 编写代码,将GPIO配置成为所需要的输出模式。 在调试器上仿真软件的执行。 在实验箱上,调试软件,并观察软件的执行结果。 实验要点 在调试软件目录中启动DebugServer.exe,调试器服务程序。启动SDT调试软件ARM Debugger。首次使用SDT调试软

10、件时,要对SDT进行配置,如下图。点击菜单中Options选项,点击Configure Debugger选项。点击Configure选项,选择Ethernet,输入IP地址为:127.0.0.1即本机缺省IP回环地址。打开SDT菜单中的File选项中的Load image菜单,调入编译好的要调试的映像文件,可按照单步、全速、设置断点等方式进行调试。 实验箱上GPG3, GPE5, GPE6, GPE7上分别连接了LED,通过学习S3C44B0通用IO的使用方法。以GPG3为例,如果想要使用output功能的话,就需要首先将PCONG的对应的7:6比特字段设为01,如果需要点亮GPG3对应的LE

11、D的话,可以直接控制PDATG的比特3。程序示例: AREA GPIO, CODE, READONLY ENTRY B Start B . B . B . B . B . B . B .Start Bl gpg_init1 Bl led_on Bl delay Bl led_off Bl delay B %B1Gpg_init Ldr r0, =0x1d20040 ;PCONG Ldr r1, =0x40 Str r1, r0 Mov Pc, lrLed_off Ldr r0, =0x1d20044 ;PDATG Ldr r1, =0x00 Str r1, r0 Mov Pc, lr Led_

12、on Ldr r0, =0x1d20044 ;PDATG Ldr r1, =0x08 Str r1, r0 Mov Pc, lrDelay Mov r3, =1000001 subs r3, r3, 1 beq %B1 mov pc, lr END编译链接的设定:输出文件格式设为elf,文件名为*.axf调试时,首先启动arm调试器,选择远程调试(remote debugging),调试器设置如“JTAG调试器的使用” 实验。在File中选择 Load Image,找到所需的*.axf文件,双击,即可。实验四 汇编语言编程练习实验目的 熟悉ARM SDT 软件开发方法和技能;学习和巩固ARM

13、指令集;学习和巩固汇编语言程序设计 实验条件 Windows 平台的ARM SDT 2.51 软件:ARM Project Manager 和 ARMDebugger;DebugServer.exe; EFLAGARMS3C44B0 实验箱实验内容 目录ARM251EXAMPLESASM 下的汇编程序,学习和调试代码,分析所得结果。在调试器上仿真软件的执行。在实验箱上,调试软件,并观察软件的执行结果。实验要点 在调试软件目录中启动DebugServer.exe,调试器服务程序。启动SDT 调试软件ARM Debugger。实验报告要求 给出adrlabel.apj,blocks.apj,ldr

14、label.apj,strcopy.apj,tblock.apj五个项目的源代码分析和调试记录(存储器和寄存器的内容变化)。实验五 S3C44B0 键盘驱动实验实验目的 学习键盘驱动的原理。掌握通过CPU的I/O扩展键盘的方法。 实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager 和 ARM Debugger;jtag.exe; EFLAGARMS3C44B0实验箱。实验内容 通过ARM的rPDATC(低四位)和rPDATE(47位)扩展4*4键盘,编写实现键盘的驱动,通过按键可以在超级终端和液晶屏上显示相应的键值(若无操作系统只要求在超级终端上

15、显示)。实现键盘扫描一般有两种方法:用现有的一些I/O扩展芯片实现键盘的硬扫描。用软件实现键盘的扫描。使用硬件的办法实现键盘扫描,在程序的编写上固然比较方便,但多用一个芯片无疑会增加成本。软件扫描键盘有助于成本的降低,并且只需要级很少的程序开销,其性能是和硬件扫描的办法完全相同的。嵌入式控制器的功能强大,可以充分利用嵌入式控制器的强大功能,下面就介绍一下软件键盘扫描的实现方法。简单的键盘是接在处理器I/O口上的一个瞬时接触开关,处理器通过I/O口上的电平高低来确定当前按键的状态。当开关打开时,处理器通过上拉电阻接到电源上的I/O口将得到高逻辑电平;开关一旦关闭,该I/O口将被被拉成逻辑低电平。

16、但这只是原理上的分析。事实上,瞬时开关的接触并不是原理中分析的那样,在运行速度很快的处理器看来,瞬时开关的一次按下和抬起的动作是一连串的脉宽不等的脉冲序列,这个脉冲序列大概要持续5ms30ms左右。我们称之为键盘抖动。可以想象,如果对这样的抖动不做任何处理,那么当开关完成一次开启和闭合的动作后,处理器则会认为这个键进行了多次开启和闭合的操作,我们得到的结果肯定不会正确。我们可以在软件中解决这个问题,使一次按键只获得一次按键的结果。这叫做键盘消抖。具体办法将在程序中做详细的描述。当我们需要很多的按键时,如果还利用上面的办法,那么处理器为我们提供的I/O口资源将很快被用完。我们在设计系统时,尤其是

17、较复杂的系统时,经常会感觉薪片的I/O资源不够用,让键盘占用了过多的I/O资源是很不经济的。解决这个问题最有效的办法是使用键盘阵列。键盘阵列实际上是一个由瞬时开关组成的二维矩阵。当行数和列数一样多时,也就是方阵时,将获得最优的补阵方式。瞬时开关位于每一行和每一列的交叉点上。每一行由一个I/O口做输出驱动,而每一列则又一个上拉电阻接到一个做输入的I/O口。实验要点 键盘的扫描是由以下的方法实现的。在每一个相等的时间间隔后,做行扫描的输出端口发出一个逻辑低的行扫描信号,此时其他行扫描线保持逻辑高。接着,从处理器读列扫描线,如果有键被按下,则会在该键所在的列上读到一个逻辑低电平,结合当前的行扫描值,

18、就可以确定是哪个键被按下,这里需要注意的是,回读时一定要在程序中进行消抖,原理已经在上面介绍过了。显然,处在键盘阵列中的每一个瞬时开关都唯一对应一个确定的键值,因为矩阵中每一个元素都有其唯一对应的行号和列号。而这里所说的键值就是我们通过扫描得到的扫描码。在我们通常使用PC机时,有时会同时按下多个键来完成一个功能(如Ctrl+Alt+Del)。这种在有n-1个键已被按下同时能正确判断第n个键被按下的情况叫键盘转滚。在实验时我们不要求键盘具有这种n键转滚能力。本系统使用一个4*4键盘阵列,GPG7GPG4输出扫描信号,GPF8GPF5回读扫描值。在键盘扫描时,分别将GPG7GPG5置为逻辑低,如果

19、有键按下,则可从所对应GPF8GPF5读到一个逻辑低电平。键盘的消抖由软件实现,在处理器发现有键按下后,延迟一段时间在读一次键值,如果两次得到的键值相同则认为该键被按下一次,若不同,则认为得到的键值是由于抖动引起的。键盘允许键值的自动重复,即按住一个键不放会多次得到相同的键值并多次进行相应的操作。程序示例:void _irq keyboard(void) char x,y,xrecord,yrecord,temp, key_val; rI_ISPC=BIT_EINT0;/clear pending_bit Delay(400); if(rPDATF&0x1E0)=0x1E0) retu

20、rn; else x=1; y=1; xrecord=(rPDATF&0x1E0)>>1); xrecord=xrecord>>4; while(xrecord!=0x1) x=x+1; xrecord=xrecord>>1; if(xrecord=0) rPDATG=0X0F; return; rPDATG=0XEF; while(rPDATF&0x1E0)=0x1E0) rPDATG=rPDATG<<1; temp=rPDATG; if(temp&0xf0)=0XF0) rPDATG=0X0F; return; yre

21、cord=(rPDATG&0xF0)>>4)&0x0F; while(yrecord!=0x1) y=y+1; yrecord=yrecord>>1; if(yrecord=0) rPDATG=0X0F; return; key_val = x+(y-1)*4-1; Uart_Printf("nKey Pressed! Value: %d n", x+(y-1)*4-1); switch (key_val) case 10 : if (lcd_updown < 120) lcd_updown += 10; break; case 11 : i

温馨提示

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

评论

0/150

提交评论