收藏 分销(赏)

ARM嵌入式系统基础实验指导书.doc

上传人:精*** 文档编号:9870390 上传时间:2025-04-11 格式:DOC 页数:41 大小:1.60MB 下载积分:12 金币
下载 相关 举报
ARM嵌入式系统基础实验指导书.doc_第1页
第1页 / 共41页
ARM嵌入式系统基础实验指导书.doc_第2页
第2页 / 共41页


点击查看更多>>
资源描述
ARM嵌入式系统基础实验指导书 41 2020年4月19日 文档仅供参考,不当之处,请联系改正。 ARM嵌入式系统基础 1 实验指导书 原大明 .9 实验一 ADS 开发环境实验 一、实验目的 1、掌握 ADS 开发环境的使用; 2、了解 ADSModule 工程基本结构和内容; 3、掌握在 ADS 下建立工程进行开发的基本技巧。 二、实验内容 1、熟悉 ADS 开发环境中的各个组件; 2、建立并编译一个工程; 3、使用AXD调试仿真。 三、实验设备 1、硬件: PC 机 2、软件: PC 机操作系统(WINDOWS XP); ARM Developer Suite v1.2。 四、预备知识 1、了解 ARM 和 S3C2410 体系结构; 2、了解 ARM 和 S3C2410 汇编语言。 五、实验内容 1、实验程序 AREA EXAMPLE3,CODE,READONLY ;/*声明一段名为EXAMPLE3的CODE*/ ENTRY ;/*指定函数的入口*/ START MOV R0,#0xFF ;/*把#0xFF传送到R0*/ MOV R1,#0xEF000000 ;/*把#0XEF000000传送到R1*/ MOV R2,#0x2F000000 ;/*把#0x2F000000传送到R2*/ MVN R3,#0Xff ;/*把#0xFF取反后传送到R3*/ ADD R4,R2,R1 ;/*把R2加R1的值传送到R4*/ ADDS R5,R2,R1 ;/*把R2加R1的值传送R5,s表示会影响cpsr*/ ADCS R6,R2,R1 ;/*把R2加R1的值,再加上carry的值后传送到R6. ;s表示值会影响cpsr*/ SUB R4,R2,R1 ;/R2减R1的值传送到R4*/ SUBS R4,R2,R1 ;/*R2减R1的值传送到R4, s表示影响cpsr*/ RSB R5,R2,R1 ;/*R1减R2的值传送到R5*/ RSBS R5,R2,R1 ;/*R1减R2的值后传送到R5, ; s表示会影响cpsr*/ SBC R6,R1,R2 ;/*R1减R2的值再减去!CARRY ;后传送到R6*/ RSC R7,R1,R2 ;/*R2减R1的值再减去!CARRY ;后传送到R7*/ stop BL stop END ;/*程序结束*/ 2、实验步骤 1)编程 Step1: 启动 ADS 点击桌面开始程序ARM Developer Suite v1.2 CodeWarrior for ARM Developer Suite, 弹出 CodeWarrior for ARM Developer Suite 的界面。 Step2: 建立新的工程,点击 FileNew,弹出新建工程对话框。 Step3: 建立新的汇编文件,点击 FileNew,弹出新建工程对话框。 Step4: 将汇编文件添加至工程列表,编程。 Step5: 设置工程属性。 Step6:编译连接工程。点击工程管理对话框中的编译链接按钮。 2)调试 Step1:运行AXD,启动调试界面。 Step2:设置调试属性。 Step3:加载映像文件。 Step4:单步执行,观察程序的运行,寄存器值的变化。 3)保存退出。 实验二 ARM实时仿真环境建立 一、实验目的 1、熟悉 Multie-Server与 JTAG下载的方法; 2、熟悉 ADS 开发环境中“AXD Debugger”组建的使用; 3、熟悉掌握 ADS 调试程序的方法。 二、实验内容 1、正确连接实验系统硬件系统; 2、使用 Multie-Server建立主机与实验板的连接; 3、使用仿真器在线调试程序。 三、实验设备 1、硬件: THUEA-1A实验系统; PC 机; JTAG 仿真器; 串口线; 并口线。 2、软件: PC 机操作系统(WINDOWS XP); ARM Developer Suite v1.2; Multi-ICE V2.2; 超级终端。 四、预备知识 1、了解 ARM 体系结构; 2、了解 ARM 汇编语言; 3、掌握 C、C++语言; 4、掌握“实验一 ADS 开发环境实验”内容。 五、基础知识 1、ARM JTAG接口电路 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试,JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP(Test Access Port,测试访问口),经过专用的 JTAG 测试工具对内部节点进行测试。 当前大多数比较复杂的器件都支持 JTAG 协议,如 ARM、DSP、FPGA 器件等。标准的 JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。 2、Multi-ICE Server 简介 Multi-ICE Server 是由 ARM 公司提供的 Windows 操作系统下 ARM JTAG 的配置程序。经过它能够使 ARM JTAG 与目标板建立通讯连接,并能够反馈目标板上 ARM 处理器的硬件信息。Multi-ICE Server 能够适应大多数 JTAG 仿真器而不需要其它特别的驱动。这个软件为主机(上位机)和实验板(下位机)之间打建了软件的桥梁(硬件的桥梁就是仿真器)。在工程的下载,调试,单步运行中这个软件要始终打开。 六、实验步骤 1、硬件连接:断电进行(串并口不支持热插拔) 2、建立超级终端: Step1:点击“程序→开始→附件→通讯→超级终端”,进入如下画面,输入名称并选择 图标: Step2:点击确定出现如下画面,选择 COM1,点击确定: Step3:对端口进行如下设置,并确定: Step4:显示超级终端界面: 3、建立实时仿真 Step1:安装Multi-ICE2.2软件 打开 Multi-ICE2.2 安装文件夹,点击 Setup.exe 可执行文件,按照软件提示选择适当路径安装 Multi-ICE2.2,假设安装路径为:C/ Program Files/ ARM/ Multi-ICE。正确安装 Multi-ICE2.2 后,打开:C/ Program Files/ ARM/ Multi-ICE,右键单击 single.cfg配置文件,选择打开方式为记事本。在 single.cfg 相同目录:C/ Program Files/ ARM/ Multi-ICE下,新建记事本文件:920t.cfg,将 single.cfg 记事本的内容复制到 920t.cfg,然后在 920t.txt 中将所有“ARM7TDMI”更改为“ARM920t”,保存。 Step2:配置Multi-ICE2.2软件 检查好实验箱仿真器和电脑并口连接,打开实验箱电源。在PC开发主机上选择开始>程序>ARM Multi-ICE v2.2>Multi-ICE Server进入Multi-ICE Server主界面 Step3:使用Multi-ICE2.2软件 点击 File/Load Configuration,查找路径为:C/ Program Files/ ARM/ Multi-ICE/920t. cfg,打开 920t. cfg 后,出现如下画面: Step4:实时在线仿真器配置完成。 注意:并口类型是在PC的BIOS中进行设置的一般提供四种类型 □ Basic type部分BIOS提供值为Default或SPP等 □ EPP □ ECP □ EPP + ECP 由于ARM JTAG使用双向的并口数据总线一般ECP或EPP类型能够符合要求,但在一些比较新的BIOS版本中可能要选用基本类型而不是ECP或其它增强型,由于历史上的原因并口规范和IEEE1283协议的执行存在弹性,因此不同计算机主板厂商在并口设计上存在一些差异,当第一次使用ARM JTAG时需要对并口类型设置多作几次试验当前我们推荐用户选择EPP类型。 4、ADS编程 Step1:打开2410TEST例程。 Step2:确定 RO_Base 的地址映射在 SDRAM:0x30000000。 5、AXD仿真 Step1:运行AXD,加载映像文件。 Step2:点击“Options/Configure Target„”,选择 Multi-ICE.dll,然后点击 configure, 出现如下界面: 点击“确定”按钮,回到上一界面,点击“OK”,AXD Debugger 下实时在线仿真器 设置完成,关闭 AXD Debugger界面,再次运行,就可经过实时在线仿真器进行目标代码的下载调试。 实验三 数码管显示实验 一、实验目的 1、了解数码管的显示原理; 2、掌握数码管显示的编程方法; 3、熟悉AXD仿真调试; 4、掌握超级终端下载BIN可执行文件。 二、实验内容 1、编写程序控制数码管显示; 2、ADS软件编写程序; 3、AXD调试程序; 4、超级终端下载程序。 三、实验设备 1、硬件: THUEA-1A实验系统; PC 机; JTAG 仿真器; 串口线; 并口线。 2、软件: PC 机操作系统(WINDOWS XP); ARM Developer Suite v1.2; Multi-ICE V2.2; 超级终端。 四、预备知识 1、掌握在ADS 集成开发环境中编写和调试程序的基本过程; 2、了解ARM 应用程序的框架结构; 3、了解S3C2410 的I/O 口的控制。 五、基础知识 1、LED 显示原理 发光二极管数码显示器简称LED 显示器。LED 显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,当前广泛应用于各类电子设备之中。 7 段LED 由7 个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极能够不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g 端加上高电压,其它加低电压。这样如果码表按照h、g、f、e、d、c、b、a 的顺序由高位到低位排列的话对应的码段是“6DH”。其它的字符同理能够得到。 2、数码管显示驱动 数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。串行驱动主要是提供串——并转换,减少控制线数量;并行驱动对每一个段提供单独的驱动,电路相对简单。 1)静态显示: LED 数码管采用静态接口时,共阴极或共阳极节点连接在一起接地或者接高电平。每个显示位的段选线与一个8 位并行口线相连,只要在显示位上的段选位保持段码电平不变,则该位就能保持相应的显示字符。这里的8 位并行口能够直接采用并行I/O 口驱动,也能够采用串行驱动。相应的电路如下:很明显采用静态显示方式要求有较多的控制端(并行)或较复杂的电路(串行)。可是在设计中对器件的要求低。 2)动态显示 在多位LED 显示时,为了简化电路、节省端口(在很多系统中I/O 端口资源非常宝贵),将所有的段选线并联在器件上由一个8 位I/O 口控制。而共阴极(或共阳极)分别由相应的I/O 口控制,实现各位的分时选通。由于各个数码管共用一个段码输出口,分时轮流通电,从而大大简化了硬件线路。降低了成本。 可是这种方式的数码管接口电路中数码管不宜太多,一般应控制在8 个以内。否则会因为每个数码管发光时间太短而导致亮度低。若LED 位数较多,应采用增加驱动能力的方式提高显示亮度。 六、实验步骤 1、实验电路 4位共阴极并行动态数码管显示电路。ADDR20-23是位选信号引脚,DATA0-7是段码信号引脚,rGCS7和rGCS4为74HC573选通信号引脚。 2、ADS编程:led.c源程序文件 /***************************************************/ #include "2410addr.h" #include "2410lib.h" #include "led.h" #define rSMG0 (*(volatile unsigned char *)0x 0000) /****************共阴极数码管段码表*****************/ unsigned char st[16]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; /***************************************************/ void test_led(void) { rGPACON=rGPACON & 0x7f7e1f; //端口A设置,位选数码管显示 //GPA5,6,7,8,15 rGPADAT=0x8000; //打开74HC573 rSMG0=st[0]; //送显示"0" rGPADAT=0x0000; //关闭74HC573 } 3、AXD调试:led.axf映像文件 4、超级终端下载:led.bin二进制文件 Xmodem协议传输BIN二进制文件。 实验四 按键数码管显示实验 一、实验目的 1、了解键盘电路原理; 2、掌握键盘电路编程方法; 3、熟悉AXD仿真调试; 4、掌握超级终端下载BIN可执行文件。 二、实验内容 1、编写程序控制数码管显示; 2、ADS软件编写程序; 3、AXD调试程序; 4、超级终端下载程序。 三、实验设备 1、硬件: THUEA-1A实验系统; PC 机; JTAG 仿真器; 串口线; 并口线。 2、软件: PC 机操作系统(WINDOWS XP); ARM Developer Suite v1.2; Multi-ICE V2.2; 超级终端。 四、预备知识 1、掌握在ADS 集成开发环境中编写和调试程序的基本过程; 2、了解ARM 应用程序的框架结构; 3、了解S3C2410 的I/O 口的控制。 五、基础知识 1、LED 显示原理 发光二极管数码显示器简称LED 显示器。LED 显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,当前广泛应用于各类电子设备之中。 7 段LED 由7 个发光二极管按“日”字排列。所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。一般共阴极能够不需要外接电阻。 其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g 端加上高电压,其它加低电压。这样如果码表按照h、g、f、e、d、c、b、a 的顺序由高位到低位排列的话对应的码段是“6DH”。其它的字符同理能够得到。 2、键盘驱动原理 把键盘接入嵌入式应用系统中,使系统能够感知按键状态的变化的方法有轮询和中断。 轮询方式经过把按键直接连接到系统外部I/O 总线上,使程序以访问外部端口的方式获知总 线状态,然后再读取按键所连接的位,从而判断出开关的状态。程序不断地读入外部端口的数值,如果有变化,就能够判断按键已经被按下或者被放开。 采用轮询方式效率是非常低的,它只能用于一些比较简单且功能单一的应用系统中。在大多数情况下,都是使用中断方式。 带有中断方式的矩阵键盘连接如下图: 列线经过电阻接正电源,并将行线所接的I/O 作为输出端,而列线所接的I/O 口则作为输入端。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。由于行线输出是低电平,一旦有键按下,则输入线(列线)就会被拉低,并经过SN74LV08,把EINT7 信号拉低,CPU 就会收到一个中断信号,这时CPU 就能够跳入中断子程序去判断哪个键被按下了。而不同于轮询方式,CPU 要不断地扫描键盘,降低了CPU 地效率。 在产生中断后就确认有键被按下,然后确认闭合键所在地位置。其方法使:依次将行线置为低电平,在逐行检测各列线的电平状态。若某列为低,则该列线与置为低的行线交叉处的按键即为闭合键。 六、实验步骤 1、ADS编程:KEYBOARD.c源程序文件 /*********************按键显示程序******************/ #include <string.h> #include "2410addr.h" #include "2410lib.h" #include "def.h" /***************************************************/ void Read_value(int data); //按键显示函数 void __irq Keyboard_Int(void); //键盘扫描函数 /***************************************************/ unsigned char st[4][4]= { //共阴极数码管段码表 {0x71,0x79,0x5e,0x39}, {0x7c,0x77,0x6f,0x7f}, {0x07,0x7d,0x6d,0x66}, {0x4f,0x5b,0x06,0x3f}, }; /***************************************************/ void Test_keyboard(void) //键盘显示函数初始化 { #define rSMG0 (*(volatile unsigned char *)0x 0000) pISR_EINT4_7=(unsigned)Keyboard_Int; rGPECON=rGPECON & 0xffC0157f; //端口E设置,用于连接4*4键盘 rGPECON=rGPECON | 0x1540; //GPE3~GPE6:输出;GPE7~GPE10:输入 rGPEUP=rGPEUP | 0x7f8; //GPE3~10 pull-up DISABLE rGPEDAT = rGPEDAT & 0xff87; //GPE3~GPE6:Output0 rGPACON=rGPACON & 0x7f7e1f; //端口A设置,位选数码管显示 //GPA5,6,7,8,15 IO about smg rGPADAT=0x8000; //初始显示"0" rSMG0= 0x3f; rGPADAT=0x0000; rGPFCON=rGPFCON & 0x3fff; //端口F设置,外中断设置,检测键盘 rGPFCON|=(2<<14); //GPF7:INT7 rGPFUP|=(0x01<<7); //GPF7 pull-up DISABLE rEXTINT0 &=~(0x1<<28); // rEXTINT0 &=~(0x1<<29); // rEXTINT0 &=~(0x1<<30); //INT7 Low level rEINTMASK &=~(0x1<<7); //INT7 Enable 外中断开启 rSRCPND &=~(0x1<<4); rINTMOD &=~(0x1<<4); rINTPND &=~(0x1<<4); rINTMSK &=~(BIT_EINT4_7); } /***************************************************/ void Read_value(int data) //键值显示函数 { unsigned int keydata; keydata=(rGPEDAT>>7) & 0xf; switch(keydata) { case(0x7): rGPADAT=0x8000; //GPA5,6,7,8输出0, 15输出高 rSMG0= st[data][3]; //数码管显示 rGPADAT=0x0000; //GPA5,6,7,8输出0, 15输出低 break; case(0xb): rGPADAT=0x8000; //GPA5,6,7,8输出0, 15输出高 rSMG0= st[data][2]; //数码管显示 rGPADAT=0x0000; //GPA5,6,7,8输出0, 15输出低 break; case(0xd): rGPADAT=0x8000; //GPA5,6,7,8输出0, 15输出高 rSMG0= st[data][1]; //数码管显示 rGPADAT=0x0000; //GPA5,6,7,8输出0, 15输出低 break; case(0xe): rGPADAT=0x8000; //GPA5,6,7,8输出0, 15输出高 rSMG0= st[data][0]; //数码管显示 rGPADAT=0x0000; //GPA5,6,7,8输出0, 15输出低 break; } } /***************************************************/ void __irq Keyboard_Int(void) //扫描键值中断函数 { int i; //定义行变量 rGPEDAT = rGPEDAT & 0xfff7;//置GPE3为低,扫描键盘第四行 rGPEDAT = rGPEDAT | 0x70; //GPE4、5、6为高 i=3; Read_value(i); //读列键值 rGPEDAT = rGPEDAT & 0xffef;//置GPE4为低,扫描键盘第三行 rGPEDAT = rGPEDAT | 0x68; //GPE3、5、6为高 i=2; Read_value(i); //读列键值 rGPEDAT = rGPEDAT & 0xffdf;//置GPE5为低,扫描第二行键盘 rGPEDAT = rGPEDAT | 0x58; //GPE3、4、6为高 i=1; Read_value(i); //读列键值 rGPEDAT = rGPEDAT & 0xffbf;//置GPE6为低,扫描第一行键盘 rGPEDAT = rGPEDAT | 0x38; //GPE3、4、5为高 i=0; Read_value(i); //读列键值 } 2、AXD调试:led.axf映像文件 4、超级终端下载:led.bin二进制文件 注意: Xmodem协议传输BIN二进制文件。VIVI采用LOAD命令加载程序。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服