嵌入式系统设计与开发实验指导书V2.0.doc_第1页
嵌入式系统设计与开发实验指导书V2.0.doc_第2页
嵌入式系统设计与开发实验指导书V2.0.doc_第3页
嵌入式系统设计与开发实验指导书V2.0.doc_第4页
嵌入式系统设计与开发实验指导书V2.0.doc_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统设计与开发实验指导书(v2.0)版权所有,未经作者同意,严禁传播!违者扁之!编著:油海东信息学院通信教研室20011.5.13目录第1篇Embest ARM 实验教学系统11.教学系统介绍11.1.Embest IED集成开发环境11.2.Embest JTAG仿真器11.3.FLASH编程器31.4.Embest EduKit-III开发板32.教学系统安装42.1.安装Embest IDE集成开发环境42.2.安装FLASH编程器53.教学系统硬件电路53.1.跳线分布及跳线使用说明53.2.外围器件地址分配74.Edukit-III实验箱使用注意事项8第2篇实验部分101.嵌入式开发环境搭建(2学时)111.1.xubuntu8.04的安装111.2.安装build-essential包151.3.安装tcl8.4-dev包151.4.安装交叉开发工具链152.LINUX内核编译运行(4学时)162.1.安装嵌入式LINUX内核源码162.2.编译LINUX内核162.3.烧写嵌入式LINUX系统到实验箱172.4.嵌入式LINUX启动运行183.嵌入式LINUX应用程序开发(4学时)203.1.实验原理203.2.实验过程244.ARM汇编指令实验(2学时)284.1.实验目的284.2.实验设备284.3.实验内容284.4.实验原理284.5.实验步骤304.6.实验参考程序344.7.练习题355.汇编和C相互调用实验(2学时)365.1.实验目的365.2.实验设备365.3.实验内容365.4.实验原理365.5.实验步骤375.6.参考源程序386.存储器实验(4学时)436.1.实验目的436.2.实验设备436.3.实验内容436.4.实验原理436.5.实验步骤486.6.参考源程序496.7.练习题517.ARM通用I/O实验(2学时)527.1.硬件原理527.2.ARM汇编程序实现537.3.运行55第3篇附录:ARM常用指令561.ARM微处理器编程模型561.1.ARM微处理器的工作状态561.2.ARM体系结构的存储器格式561.3.指令长度及数据类型571.4.处理器模式571.5.寄存器组织57ARM状态下的寄存器组织581.6.异常(Exceptions)612.ARM微处理器的指令系统632.1.寻址方式632.2.ARM常用指令653.ARM程序设计基础683.1.常用伪指令683.2.汇编语言的语句格式70Embest ARM实验教学系统第1篇 Embest ARM 实验教学系统1. 教学系统介绍Embest ARM教学系统包括 Embest IDE 集成开发环境,Embest JTAG 仿真器,Flash 编程器,Embest EduKit-III开发板、各种连接线、电源适配器以及实验指导书等。基本实验模型示意图1-1所示图 11 基本实验模型示意图1.1. Embest IED集成开发环境Embest IDE 是一套应用于嵌入式软件开发的新一代集成开发环境。它提供高效明晰的图形化的嵌入式应用软件开发平台,包括一整套完备的面向嵌入式系统的开发和调试工具:编辑器、编译器、连接器、调试器、工程管理器等。Embest IDE 集成开发环境界面风格同 Microsoft Visual Studio,是一套良好的嵌入式软件可视化开发环境。用户可以很方便的在 Embest IDE 集成开发环境中创建和打开工程,建立、打开和编辑文件,编译、连接、运行、调试各种嵌入式应用程序。Embest IDE 开发环境界面如图1-2 所示。Embest IDE 可在 Windows 98、2000、NT 及 XP 等操作系统上运行,主要支持 ARM系列处理器。对于 ARM系列处理器,Embest IDE 目前支持 ARM7 以及 ARM9 系列。Embest IDE for ARM于 2001年正式发行,目前的版本为 Embest IDE Pro for ARM 2004。1.2. Embest JTAG仿真器JTAG 仿真器也称为 JTAG 调试器,是通过 ARM芯片的 JTAG 边界扫描口进行调试的设备。JTAG 仿真器连接比较方便,通过现有的 JTAG 边界扫描口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于 JTAG 调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、AC 和 DC参数不匹配,电线长度的限制等被最小化了。使用集成开发环境配合 JTAG 仿真器进行开发是目前采用最多的一种调试方式。Embest JTAG 仿真器如图1-3所示。图 12 Embest IDE集成开发环境界面图 13 Embest JTAG仿真器Embest JTAG 仿真器目前分为三种类型,包括标准型(Embest Emulator for ARM),增强型(Embest PowerICE for ARM)和通用型(Embest UnetICE for ARM),主要区别在于下载调试的速度不同。其中 Embest Emulator for ARM,Embest PowerICE for ARM根据采用打印机并口(LPTx)与主机通讯,即仿真器一端是一个 DB25 的接口,用于连接计算机的并行口,另外一端是20针的 IDC插头,用于连接目标板。Embest UnetICE for ARM 则可以使用 USB 接口或 Ethernet RJ45 接口与主机通讯,分别使用 USB 线或交叉网线与主机 USB 或 RJ45接口相连。Embest JTAG 仿真器面板上面都有三只指示灯,对当前的工作状态做出指示。1.3. FLASH编程器当用户程序编写完之后,需要把程序生成的二进制执行文件烧写到开发板的Flash存储器中观察实际运行结果。英蓓特公司提供了一套完善的Flash编程器,用户可以直接使用该编程器对开发板上的Flash进行读写(使用时需要配合前面提到的Embest JTAG仿真器)。其运行界面如图1-4所示:图 14 FLASH编程器界面1.4. Embest EduKit-III开发板Embest EduKit-III 开发板是实验系统的主要硬件平台,它是英蓓特公司开发的一款全功能 ARM开发板,基于 Samsung公司的 S3C44B0X 处理器(ARM7TDMI),资源丰富。硬件系统包含了嵌入式系统开发应用所需的大部分设备,如串口、以太网口、USB 口、音频输出、LCD 及 TSP触摸屏、5*4的小键盘、固态硬盘、大容量的 Flash 和SDRAM等等。用户不仅可以在该硬件平台上完成实验系统提供的实验例子,还可以参考该平台设计自己的目标系统。该硬件平台如图1-5所示。图 15 Embest EduKit-III开发板硬件图Embest Arm EduKit-III开发板的基本资源如下: n 电源:外部 5V电源供电或者由 USB 接 PC 供电,电源指示 LED以及 500mA保险丝 n 1M16bit Flash n 41M16bit SDRAM n 4Kbit IIC BUS的串行 EEPROM n 2 个串口,其中一个为简单接口,一个为全接线接口,可跳接 RS232 MODEM n 复位开关 n 两个中断按钮,两个 LED n 外部 IDE 硬盘接口 n LCD及 TSP触摸屏接口 n 20 针 JTAG接口 n USB 连接器n 44 键盘接口 n 4 个 220PIN CPU 扩展接口 n 10M 以太网接口 n 8 段数码管 n MICROPHONE 输入口2. 教学系统安装2.1. 安装Embest IDE集成开发环境使用配套光盘“IDEPo2004lab”,安装Embest IED集成开发环境,安装完成之后,应该拷贝注册文件“licenses.dat”到“EmbestIDELicenses”目录。或者直接在“EmbestIDELicenses”目录下,新建一个名字为“licenses.dat”的空文件,也可以完成集成开发环境的注册。Embest IED集成开发环境具体使用方法参考CD1中“DocumentUsers Manual”目录下的“EduKit3ARM7_UserGuide_V1.0_cn.pdf”文件,该文件为ARM7基础实验教程,其中的2.4节。2.2. 安装FLASH编程器使用配套光盘“IDEPo2004lab”,安装FLASH编程器。安装完毕后,进行注册。注册码为“USER/E-mail : EFP0705014400289”,“S/N (Password) : 2227100109775325”。注册完毕之后,就可以使用FLASH编程器了。FLASH编程器的具体使用方法参考实验6。3. 教学系统硬件电路Embest EduKit-III教学实验平台硬件模块图如图1-6所示图 16 Embest EduKit-III教学试验平台硬件模块图各模块的硬件电路原理图和工作原理参考英倍特公司编著的ARM7基础实验教程。3.1. 跳线分布及跳线使用说明Embest EduKit-III教学实验平台跳线分布如图1-7所示。各跳线的使用说明如图1-8所示。使用S3C44B0X和S3C2410时,注意跳线设置是否正确。图 17 Embest EduKit-III教学实验平台跳线分布图 18 跳线的使用说明3.2. 外围器件地址分配外围器件地址分配如图1-9所示。图 19 外围器件地址分配图其余硬件资源分配可参考英倍特编写的ARM7基础实验教程或者S3C44B0X用户手册、S2410用户手册,该用户手册,均可在配套光盘中找到。4. Edukit-III实验箱使用注意事项1.使用开发板下开发时,一般使用ev40boot.cs命令脚本文件,该脚本文件是在程序下载到子板之前,先对子板做初始化工作,否则有可能会引起一些问题。编译好程序以后,比如BOOTLOADER,再把BOOTLOADE下载到子板上去运行。2.调试程序之后,如果使用到Memory和Watch窗口,Disconnect之前应先退出Memory和Watch窗口。否则当再次Connect时,memory和watch窗口会再次出现,这样会再次读取内存,有可能会发生错误3.新建工程,下载之后,看不到源码,检查以下三个方面1)如果使用到了ld文件,则该文件的第一个地址应为代码下载地址,注意该地址应该在RAM的范围以内(该地址应该根据板子的具体配置决定)2)如果没有使用ld文件,则下载地址使用-text后的地址,该地址在IDE的linker选项卡的Link Options中3)如果即没有ld文件,也没有使用-text选项,而是使用的-T选项,则下载地址可以自由定义,当然该地址应该保证在RAM的地址范围以内,如果使用软件仿真器,可以使用0x8000。4.关于FLASH资源:1)实验箱主板上有一块FLASH,为NAND FLASH,大小为16MByte(16M*8bit),该Flash中存放的是英倍特公司烧写好的Linux(注意,不是ucLinux,而是移植好的Linux),使用S3C2410(ARM9)可以启动该Linux,S3C44B0(ARM7)不支持该Linux的启动。 2)S3C44B0(ARM7)子板和S3C2410(ARM9)子板上有一块NORD FLASH,大小为2MByte(1M*16bit)。5.关于S3C2410(ARM9)的启动:1)可以选择从子板上的NORD FLASH启动,也可以选择从主板上的NAND FLASH启动2)从子板上的NORD FLASH启动,实验箱上的SW402、SW403跳线设置为2-3闭合,S3C2410子板上的SW104断开3)从主板上的NAND FLASH启动,实验箱上的SW402、SW403跳线设置为1-2闭合,S3C2410子板上的SW104闭合,这时会启动烧写好的Linux。开启电源,等待几秒钟,显示Linux启动画面,然后用光笔点一下十字的中心,依次这样,点5次之后,就会进入Linux。6.关于S3C44B0(ARM7)的启动1)可以选择从子板上的NORD FLASH启动,也可以选择从主板上的NAND FLASH启动1)从子板上的NORD FLASH启动时,子板上的OM跳线断开,烧写的ucLinux代码一般烧写到子板上的NORD FLASH中2)从主板上的NAND FLASH启动时,子板上的OM跳线闭合7.关于RAM资源:EDUKIT-III实验箱的RAM资源只有子板上的RAM,S3C44B0和S3C2410的RAM资源均为8Mbyte(4*1M*16bit)。8.实验例程中的44binit.s即为S3C44BOX的初始配置代码,可以看作它的BOOTLOADER,相应的在做ucLinux实验时,也会找到相应的BOOTLOADER.9.S3C44B0(ARM7)和S3C2410(ARM9)启动时,都没有做memory map10.关于程序的烧写:使用FLASH编程器,可以烧写程序,在ARM7 uClinux实验中,第一个实验烧写内核时,使用到的配置文件为CD2Binary Files中的Edukit44bo&am29lv160db.cfg,使用到的引导文件为该目录下的blob.EdukitIII44b0.bin,使用到的uClinux映像文件为英倍特公司编译好的zImage,也是位于该目录下。在烧写blob.EdukitIII44b0.bin时,Flash的扇区应改为1-4,而不是1-5;在烧写zImage时,扇区应改为5-3511.关于EduKit-III 44b0子板出厂烧写程序:该程序位于CD1ImagesEduKitIII44b0board_test.bin,烧写时,可以选择FLASH扇区范围为1-20或者1-15.73实验部分第2篇 实验部分注意:1.实验中所使用的文件都可以在“实验文件”文件夹中找到2.实验箱使用的是s3c2410(ARM9)芯片,因此实验前,应该对照图1-8对实验箱上的跳线进行正确设置。如果不正确设置的话,后续实验无法进行3.“实验文件”文件夹中有两个文件,一个是“EduKit2410 Linux book.pdf”,实验2-3的详细原理可参考该文件的相关内容;另一个是“EduKit3ARM9_UserGuide_V1.0_cn.pdf”,实验4-7的详细原理可参考该文件的相关内容。1. 嵌入式开发环境搭建(2学时)首先进入Windows系统,打开控制面板-添加删除程序,如果有xubuntu,先删除。1.1. xubuntu8.04的安装注意:使用wubi方式安装xubuntu8.04,要求安装在一个单独分区上,而且分区要至少5G空间,另外,实验室的电脑由于安装了还原系统,不过F盘是没有还原的,因此,要把xubuntu8.04安装在F盘,或者向实验室老师询问哪个盘是没有自动还原的。1.把wubi.exe和xubuntu-8.04.1-desktop-i386.iso拷贝到F盘的根目录下2.双击运行wubi.exe,在上图中选择“安装在Windows中”强烈注意:上图中安装磁盘选择F盘,安装大小默认5GB,桌面环境选择XUBUNTU,而不是UBUNTU,语言默认,使用者名称统一设置为“em”,密码统一设置为“123”,然后点击安装这里要选择立即重新关机当您重新启动计算机,您会看见以下画面询问您想启动 Windows 还是 XUbuntu。因为您需要启动 XUbuntu 安装程序来安装 XUbuntu,请先选择启动 XUbuntu实验室安装XUBUNTU时,下图应该显示XUBUNTU启动 XUbuntu,过一阵子之后会进入XUBUNTU的安装界面20分钟之后,XUBUNTU安装完毕,然后会自动重启,选择XUBUNTU,就可以进入XUBUNTU系统了.1.2. 安装build-essential包LINUX程序开发,必须要安装build-essential包。由于wubi安装XUBUNTU时,会把F盘下的xubuntu-8.04.1-desktop-i386.iso删掉,安装build-essential需要使用xubuntu-8.04.1-desktop-i386.iso,因此在重新把xubuntu-8.04.1-desktop-i386.iso拷贝/home目录下。把该ISO镜像文件挂载到光驱。光驱文件一般是/cdrom,切换到ISO文件所在目录,通过如下命令挂载:打开终端(application-accessories-terminal),在终端中输入如下命令:sudo mount -o loop -t iso9660 xubuntu-8.04.1-desktop-i386.iso /cdrom依次打开System-Administration-Softwar Source,在Software Source对话框中选择“Other software”选项卡,然后点击Add CD-ROM按钮,这样就把软件源设置为了光驱在终端中输入以下命令:sudo apt-get update和sudo apt-get install build-essential,这样就可以把build-essential安装好了。(一定要确定该包安装正确,否则后面的实验无法进行)1.3. 安装tcl8.4-dev包在“实验文件”文件夹下的“xubuntulib”文件夹拷贝到/home/下,然后依次双击安装该目录下的所有包。注意,安装时要观察所需安装包的依赖关系,然后按照依赖关系依次安装。可以先安装“tcl8.4-dev_8.4.16-4ubuntu1_i386.deb”,安装时,会提示该包所需要的依赖包,然后依次按照提示安装即可,要保证所有的包都要正确安装,否则后面的实验无法进行。1.4. 安装交叉开发工具链首先打开终端,在终端中输入如下命令Sudo i,会提示输入密码,输入安装XUBUNTU时输入的密码“123”,切换到/usr/local目录下:cd /usr/local在/usr/local下新建arm目录:mkdir arm拷贝cross-2.95.3.tar.bz2到/home目录下,然后再把/home目录下的该文件拷贝到/usr/local/arm目录下:cp /home/ cross-2.95.3.tar.bz2 /usr/local/arm切换到/usr/local/arm目录:cd /usr/local/arm执行解压缩命令:tar -xjvf cross-2.95.3.tar.bz2,解压缩完成后,要把嵌入式交叉开发工具链路径添加到PATH变量,添加方法是编辑/etc/profile文件,步骤如下:打开/etc/profile文件,在终端下输入命令:vim /etc/profile,然后按下”G”,再按下“o”,然后在该文件的最后加入如下语句:export PATH=/usr/local/arm/2.95.3/bin:$PATH,然后按下ESC,接下来输入“:wq”回车,保存并退出/etc/profile,接下来重启XUBUNTU,重启之后,在终端下输入如下命令:arm-linux-gcc -v,如果能显示类似如下信息“Reading specs from /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/specsgcc version 2.95.3 20010315 (release)”,则表示交叉开发工具链安装成功。本实验结束。2. LINUX内核编译运行(4学时)做这个实验室前,一定要保证实验1正常安装完成,否则无法进行2.1. 安装嵌入式LINUX内核源码使用如下命令切换到root:sudo i,输入密码即可切换到root用户切换到/usr/src目录:cd /usr/src把“实验文件”文件夹下的linux-2.4.18-rmk7-pxa1-mz5.tar.bz2(该文件就是嵌入式LINUX的源码文件压缩包)拷贝到/home目录下,然后再拷贝到/usr/src:cp /home/linux-2.4.18-rmk7-pxa1-mz5.tar.bz2 /usr/src切换到/usr/src:cd /usr/src解压源码文件:tar -xjvf linux-2.4.18-rmk7-pxa1-mz5.tar.bz2,会在/usr/src目录下新生成一个kernel目录,kernel目录就是嵌入式LINUX源码目录把“实验文件”文件夹下的kit2410.patch (该文件是嵌入式LINUX的源码文件的补丁文件)拷贝到/home目录下,然后再拷贝到/usr/src/kernel:cp /home/ kit2410.patch /usr/src/kernel,对LINUX内核源码文件打补丁:首先切换到/usr/src/kernel目录:cd /usr/src/kernel然后打补丁:patch p1/kit2410.patch2.2. 编译LINUX内核打补丁完成之后,就可以编译LINUX内核了。使用如下命令切换到root:sudo i,输入密码即可切换到root用户切换到/usr/src/kernel:cd /usr/src/kernel首先执行如下命令:make mrproper然后执行:make xconfig,弹出如下窗口点击load configuration from file,输入./arch/arm/def-configs/edukit2410-amd,然后点击save and exit,edukit2410-amd文件是内核配置文件,在patch时写入/usr/src/kernel/arch/arm/def-configs/目录。接下来执行:make dep接下来执行:make zImage(注意大小写)如果编译成功,会在/usr/src/kernel/arch/arm/boot/目录下生成zImage,即为linux内核映像文件,把该文件烧写到实验箱上,就可以在实验箱上启动嵌入式LINUX系统了,最后把zImage文件拷贝到Windows下,要在Windows下烧写,使用如下命令:cp /usr/src/kernel/arch/arm/boot/zImage /host最后重启XUBUNTU,这次要进入WINDOWS系统2.3. 烧写嵌入式LINUX系统到实验箱要把刚才编译成功的嵌入式LINUX内核文件zImage烧写到实验箱的FLASH中,这就可以在实验箱上运行嵌入式LINUX了。实验箱的FLASH有两种,分别为NAND FLASH和NOR FLASH,本实验要把zImage烧写到NOR FLASH中。烧写LINUX之前,应该先烧写操作系统的引导文件bootloader,本实验箱采用的bootloader是vivi,所以烧写步骤应该是先烧写vivi,然后烧写zImage,最后烧写文件系统。在windows下烧写FLASH的工具是Embest Online Flash Programmer,所以应该首先安装该工具强烈注意:在烧写之前,应该把s3c2410子板上的sw104跳线断开,否则烧写无法完成!1.Embest Online Flash Programmer安装与注册1)在“实验文件”文件夹下拷贝“Embest IDE”文件夹到F盘,然后打开“实验室版”文件夹,运行autorun.exe,选择安装Embest Online Flash Programmer即可,路径采用默认路径,不要改动2)打开FLASH 编程器,并使用注册码进行激活(USER/E-mail : EFP0705014400289;S/N (Password) : 2227100109775325)。2.vivi烧写3)拷贝EduKit2410&am29lv160db.cfg文件、vivi.nor文件和root.cramfs文件到F盘4)打开file菜单,选择EduKit2410&am29lv160db.cfg文件,打开。该文件为S3C2410芯片配置文件。必须先配置。5)选择Setting菜单,打开Configure,弹出Configure窗口,romote device选择PowerIceArm9;Debug Speed 选择Full Speed;Communication Type选择PARALLEL;PARALLEL PORT选择LPT1。6)选择Flash选项卡,在Setor设置From 1 to 57)选择Program选项卡,单击Program右侧打开文件图标,选择F:目录下的vivi.nor文件,该文件为引导LINUX的BootLoader映像文件。8)按要求连接好实验箱与计算机,然后打开实验箱电源,等待10s,等待实验箱上的S3C2410完全启动。9)选择FLASH编程器右侧program按钮,把Bootloader烧写到FLASH的起始位置。3.嵌入式LINUX内核烧写10)vivi烧写完毕,下面烧写zImage。选择FLASH编程器的flash选项卡,设置sector为from 6 to 1711)选择FLASH编程器的program选项卡,单击Program右侧的打开文件图标,选择F:zImage文件,然后点击右侧的program,把zImage文件烧写到FLASH中。到此为止,bootloader和linux的映像文件都已经烧写到实验箱上的FLASH当中了。4.文件系统烧写12)选择FLASH编程器的flash选项卡,设置sector为from 18 to 3513)选择FLASH编程器的program选项卡,单击Program右侧的打开文件图标,选择F:root.cramfs文件,然后点击右侧的program,把root.cramfs文件烧写到FLASH中,该文件是LINUX的文件系统文件,把这三个文件全部烧写完毕,这样嵌入式LINUX就可以启动运行了2.4. 嵌入式LINUX启动运行嵌入式LINUX的启动运行信息会通过串口线输出到主机上,因此需要先在主机上启动能接受串口信息的终端程序,这就是windows自带的“超级终端”程序14)打开、设置超级终端,参看“设置超级终端.exe”18)断开实验箱电源,然后重新启动实验箱,会在超级终端上看到启动LINUX的信息,如下图所示。如果能成功看到该画面,就表示嵌入式LINUX烧写成功。这时,可以在超级终端中输入常用linux命令,然后在超级终端中就可以看到命令执行结果。3. 嵌入式LINUX应用程序开发(4学时)本实验要编写一个能够点亮8段LED数码管的程序,该程序运行在嵌入式LINUX操作系统下。3.1. 实验原理1. 八段数码管 嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母。如下图八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。 电平信号按照 dp,g,ea 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表如下:显示字符共阴极的值的高4位共阴极值的低4位共阴极的值abcdefgdp0111111000xFC1011000000x602110100100xDA3111100100xF24011001100x665101101100xB66101111100xBE7111000000xE08111111100xFE9111101100xF6A111011100xEEB001111100x3EC100111000x9CD011110100x7AE100111100x9EF100011100x8E-000000100x02.000000010x01全灭000000000x00全亮11111110xFF八段数码管的显示方式有两种,分别是静态显示和动态显示。 静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。 动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。2.ZLG7290器件zlg7290 键盘/LED驱动器是周立功公司针对仪器仪表行业的需要自行研制的一款芯片。该芯片能自动完成 8位 LED 数码管的动态扫描和(最多)64(8X8)个按键检测扫描,大大减轻单片机的用于显示/键盘的工作时间和程序负担,可使集中资源用于信号的检测和控制。由于采用 IIC总线方式使得芯片与 S3C2410X 之间的通讯 IIC总线接口便可完成,节省了单片机有限的 I/O 口资源。该芯片为工业级芯片,抗干扰能力强,在工业测控中已有大量应用。 zlg7290 引脚图如下图各引脚的功能说明如下: SCL IIC总线串行时钟线。 SDA IIC总线串行数据线。 /INT 中断请求线,有效的按键动作、普通键的单击连击和功能键状态变化都会令/INT 引脚信号有效(变为低电平)/RES 复位输入端,低电平有效。OSC1、OSC2 连接晶振,以产生内部时钟。VCC/GND 一般 +3.3V +5V 的工作电压。 Dig0Dig7 LED 位驱动线,和键盘行扫描线。 SegASegH LED 段驱动线,和键盘列扫描线。3. zlg7290主要寄存器1)系统寄存器 SystemReg, 地址 00H, 复位值 11110000B。 系统寄存器保存 zlg7290 系统状态并可对系统运行状态进行配置,其功能分位描述如下:SystemReg.0 置 1 时表示有效的按键动作(普通键的单击、连击和功能键状态变化),/INT 引脚信号有效(变为低电平);清 0 表示无按键动作,/INT 引脚信号无效(变为高阻态)。有效的按键动作消失后或读 Key 后,SystemReg.0 位自动清 0。2)闪烁控制寄存器 FlashOnOff,地址 0CH,复位值 0111B/0111B。高 4 位表示闪烁时亮的时间,低 4 位表示闪烁时灭的时间,改变其值同时也改变了闪烁频率,也能改变亮和灭的占空比。FlashOnOff的 1 个单位相当于 150250ms(亮和灭的时间范围为 116,0000B 相当 1 个时间单位),所有象素的闪烁频率和占空比相同。 3)扫描位数寄存器 ScanNum,地址 0DH,复位值 7。用于控制最大的扫描显示位数(有效范围为:07对应的显示位数为 18)。减少扫描位数可提高每位显示扫描时间的占空比,以提高 LED 亮度。不扫描显示的显示缓存寄存器则保持不变,如 ScanNum=3时,只显示 DpRam0DpRam3的内容。 4)显示缓存寄存器 DpRam0DpRam7,地址 10H17H,复位值 00H。缓存中的一位置 1 时,表示该像素(段)亮。DpRam7DpRam0 的显示内容对应 Dig7Dig0 引脚。4. 设备地址(DADDR) zlg7290 器件的从设备地址是 01110000。 5. 电路设计 EduKit2410 系统上,使用 S3C2410X 处理器内置的 IIC总线接口控制器作为 IIC 通信主设备,zlg7290 作为通信的从设备。电路设计如下图所示:Zlg7290和8段LED连接如下图所示:3.2. 实验过程源程序文件为myled.c,需要的头文件为test-8led.h1. 开机进入到xubuntu系统,打开终端,切换到root用户:sudo i2. 切换到/home目录下:cd /home3. 在/home目录下依次建立myled.c文件和test-8led.h文件,源程序内容如下:/*Name: myled1.c*Desc: 依次点亮lec0-led7,然后再依次熄灭led7-led0,运行该程序前,应使用insmod i2c.o命令,加载i2c.o驱动模块*Parameter:*Return:*Author: yoyoba()*Date: 2010-9-17*Modify: 2010-9-17*/#include#include#include#include#include#include#include#include#includetest-8led.h/* control code */#defineI2C_SET_DATA_ADDR 0x0601#defineI2C_SET_BUS_CLOCK 0x0602unsignedchardigit=0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E;/0-Fintmain()intfd,i;charchon=0xff,choff=0x0;printf(this is a example for 8-led,writed by youhaidong!n);if(fd=open(/dev/i2c/0,O_RDWR)=-1)/*打开i2c设备*/printf(open led device FAILD!n);exit(1);elseprintf(open led device SUCCESS!n);ioctl(fd,I2C_SLAVE_FORCE,ZLG_SLAVE_ADDR);/*设置zlg7290从设备地址*/ioctl(fd,I2C_SET_BUS_CLOCK,250*1000);/*设置i2c总线时钟频率为250khz*/for(i=0;i8;i+)ioctl(fd,I2C_SET_DATA_ADDR,REG_Dis0+i);write(fd,&chon,1);/*依次把led0-led8全部点亮*/sleep(2);for(i=0;i1)#defineREG_Sys 0x00#defineREG_Key 0x01#defineREG_Cnt 0x02#defineREG_Func 0x03#defineREG_Cmd0 0x07#defineREG_Cmd1 0x08#defineREG_Flas 0x0C#defineREG_Num 0x0D#defineREG_Dis0 0x10#defineREG_Dis1 0x11#defineREG_Dis2 0x12#defineREG_Dis3 0x13#defineREG_Dis4 0x14#defineREG_Dis5 0x15#defineREG_Dis6 0x16#defineREG_Dis7 0x17#defineSEG_A(17)#defineSEG_B(16)#defineSEG_C(15)#defineSEG_D(14)#defineSEG_E(13)#defineSEG_F(12)#defineSEG_G(11)#defineSEG_DIP(10)#endif/*_ZLG9290_H_*/保持当前目录为/home,保持当前用户为root,然后把myled.c编程成可执行程序,使用如下命令:arm-linux-gcc o myled myled.c执行命令之后就在/home目录下产生一个myled可执行文件,该文件下载到实验箱,就可以执行了。把该文件件拷贝到/host目录下:cp /home/myled /host,这样就可以在Windows下的F盘看到该文件了。4. 重启计算机,进入到Windows系统,开启超级终端,并正确设置,开启实验箱,子啊超级终端上观察嵌入式LINUX启动过程,等到嵌入式LINUX启动完成之后,在超级终端输入命令:cd /var5. 在下载myled之前,应该先加载i2c驱动模块,加载方法如下:在“实验文件”中拷贝驱动模块文件i2c.o到F盘根目录下;超级终端传送菜单-发送文件,打开发送文件对话框,点击文件名后的浏览按钮,找到并打开F:i2c.o文件,协议选择Xmodem,点击发送,经过一段时间后,i2c.o文件就发送到嵌入式LINIUX的/etc/var目录下,然后在超级终端下输入如下命令加载驱动模块:insmod i2c.o6. 下面下载myled程序,超级终端传送菜单-发送文件,打开发送文件对话框,点击文件名后的浏览按钮,找到F:myled文件,协议选择Xmodem,点击发送,经过一段时间后,myled文件就发送到嵌入式LINIUX的/etc/var目录下7. 保持嵌入式LINUX当前路径为/etc/var,在超级终端中键入如下命令:chmod +x myled(为myled增加执行权限)8. 在超级终端中键入如下命令:./myled,启动该程序运行,观察8段LED数码管的点亮和熄灭情况4. ARM汇编指令实验(2学时)实验4-实验7需要使用到EmbestIED开发环境,因此应该先安装该开发环境,安装方法如下:1.在“实验文件”中找到“Embest IDE”文件夹,进入之后打开“实验室版”文件

温馨提示

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

评论

0/150

提交评论