嵌入式系统实验内容.docx

上传人:b****7 文档编号:9388666 上传时间:2023-02-04 格式:DOCX 页数:79 大小:3.79MB
下载 相关 举报
嵌入式系统实验内容.docx_第1页
第1页 / 共79页
嵌入式系统实验内容.docx_第2页
第2页 / 共79页
嵌入式系统实验内容.docx_第3页
第3页 / 共79页
嵌入式系统实验内容.docx_第4页
第4页 / 共79页
嵌入式系统实验内容.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

嵌入式系统实验内容.docx

《嵌入式系统实验内容.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实验内容.docx(79页珍藏版)》请在冰豆网上搜索。

嵌入式系统实验内容.docx

嵌入式系统实验内容

嵌入式系统

 

实验讲义

 

物理与电子工程学院

2011.3

目录

实验一ADS环境及超级终端使用4

实验二Linux开发环境的建立(ARM9)15

实验三键盘输入及数码管显示驱动24

实验四定时器中断和驱动程序实验31

实验五Linux下LED设备实验38

实验六Linux下按键实验44

实验七嵌入式WEB服务器实验49

实验八基于ARM的多通道仪表数据采集实验54

实验九 基于Web的远程控制设计57

附录:

嵌入式系统设计性实验要求62

实验一ADS环境及超级终端使用

一、实验目的

熟悉ADS1.2开发环境,学会ARM仿真器的使用。

使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。

二、实验内容

本次实验使用ADS集成开发环境。

新建一个简单的工程文件,并编译这个工程文件。

学习ARM仿真器的使用和开发环境的设置。

下载已经编译好的文件到嵌入式控制器中运行。

学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。

三、预备知识

C语言的基础知识、程序调试的基础知识和方法。

四、实验设备及工具(包括软件调试工具)

硬件:

ARM嵌入式开发板、ARM7TDMI的JTAG仿真器、PC机Pentium100以上。

软件:

ADS1.2集成开发环境、仿真器驱动程序。

五、实验步骤

1)建立工程

(1)运行ADS1.2集成开发环境(CodeWarriorforARMDeveloperSuite)。

选择File|New…菜单,在对话框中选择Project,如图1B-1所示,新建一个工程文件。

图中示例的工程名为Exp6.mcp。

点set…按钮可为该工程选择路径如图1B-2所示,选中CreatFolder选项后将以图1B-1中的ProjectName或图1B-2中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。

选择ARMExecutableImage通用模板。

图1B-1新建工程

图1B-2保存工程

(2)在新建的工程中,如图1B-3所示,选择Debug版本,使用Edit|DebugSettings菜单对Debug版本进行参数设置。

图1B-3选择版本

(3)在DebugSettings对话框中选择TargetSettings项,如图1B-4所示。

在Post-linker一栏中选择ARMfromELF。

图1B-4TargetSettings

(4)在DebugSettings对话框中选择ARMLinker项,如图1B-5。

在Output选项卡的Simpleimage框中设置连接的Read-Only(只读)和Read-Write(读写)地址。

地址0x0c080000是开发板上SDRAM的真实地址,是由系统的硬件决定的;0x0c200000指的是系统可读写的内存地址。

也就是说,在0x0c080000∼0xC1fffff之间是只读区域,存放程序的代码段,在0xC200000开始是程序的数据段。

图1B-5设置连接地址范围

图1B-5所示的设置只是一种简单设置,如果程序需要用到标准C库函数的话需要按图1B-6进行连接地址的设置。

标准C中如果使用malloc及其相关的函数,需要使用系统的堆(Heap)空间,可以通过scatter文件来描述系统HEAP段的位置。

针对44B0开发板,把程序的入口定位在0xc080000,并定义scatter文件为scat_ram.scf。

在图1B-6中选择LinkType为Scattered,输入scatter文件名scat_ram.scf;然后切换到Options选项卡在ImageEntryPoint框中输入0xc080000。

也可以在图1B-6的CommandLine框中直接输入-entry0xc080000-scatterscat_ram.scf进行上述设置。

图1B-6通过scatter文件设置连接地址

提示:

1.程序移植到ADS后,程序最开始首先执行用汇编写的初始化代码——包括中断向量和内存空间的初始化。

在该段代码中使用

IMPORT__main;注意main前面是两个下划线

B__main

进行系统内部的标准C函数初始化,然后调用用户在C中定义的main()函数(注意:

个main都是小写),并且在嵌入式应用中用户C的main函数中不能有参数(intmain(void))。

2.不能有系统定义的软中断,在汇编中可以使用

IMPORT__use_no_semihosting_swi

来检测,在C中使用#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihosting

3.scatter文件内容如下,创建了一个RAM_LOAD的程序和数据的装载区域,起始地址0xc080000。

RAM_LOAD0xc080000{RAM_EXEC0xc080000

{

44binit.o(init,+First)

*(+RO)

}

RAM0x0c200000

{

*(+RW,+ZI)

}

HEAP+0UNINIT

{

heap.o(+ZI)

}

STACKS0xc7ff000UNINIT

{

stack.o(+ZI)

}

ISR_STARTADDRESS0xc7fff00;SDRAMbottom{isr_address.o(+ZI)

}}在图1B-7中说明了这个装载区域的划分。

图1B-7程序和数据装载区域的划分

4.定义retarget.c函数,重新定位标准C库中stdio的一些相关函数。

主要有:

struct__FILE{inthandle;/*Addwhateveryouneedhere*/};FILE__stdout;//文件的定义intfputc(intch,FILE*f)//fputc函数intferror(FILE*f)//ferror函数void_sys_exit(intreturn_code)//系统退出函数void_ttywrch(intch)__value_in_regsstruct__initial_stackheap__user_initial_stackheap(unsignedR0,unsigned

SP,unsignedR2,unsignedSL)//用户的堆空间和栈空间函数具体定义,可以参考init/retarget.c

(5)在第(4)步中如果不选择简单的连接地址设置,则需按图1B-8所示设置C编译器。

在DebugSettings对话框中选择ARMCCompiler项,在ATPCS选项卡中选择ARM/Thumpinterwork,或者在命令行中添加-apcs/interwork。

图1B-8设置ARMCCompiler

(6)在DebugSettings对话框中选择ARMLinker项,如图1B-9。

在Layout选项卡的Placeatbeginningofimage框中设置程序的入口模块。

指定在生成的代码中,程序是从44binit.s开始运行的。

Object设为44binit.o,section设为init。

图1B-9设置入口模块

(7)在DebugSettings对话框中选择ARMfromELF项,如图1B-10。

在Outputfilename框中设置输出文件名为system.bin,这就是要下载到开发板的嵌入式应用程序文件。

图1B-10设置输出文件名

(8)回到如图1B-3所示的工程窗口中,选择Release版本,使用Edit|ReleaseSettings菜单对Release版本进行参数设置。

(9)参照第(3)、(4)、(5)、(6)、(7)步在ReleaseSettings对话框中设置Release版本的Post-linker、连接地址范围、入口模块和输出文件。

(10)回到如图1B-3所示的工程窗口中,选择Targets选项卡,如图1B-11所示。

选中DebugRel版本,按Del键将其删除。

DebugRel子树是一个折衷版本,通常用不到,所以在这里删除。

图1B-11删除DebugRel版本

(11)设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。

将工程文件名改为44B0ARMExecutable.mcp。

然后在ADS1.2软件安装目录下的Stationery目录下新建名为44B0ARMExecutableImage的模板目录,再将刚设置完的44B0ARMExecutable.mcp工程模板文件存放到该目录下即可。

这样以后新建工程的时候如图1B-1所示就能看到以44B0ARMExecutableImage为名字的模板了。

(12)新建工程后,可以执行菜单Project|AddFiles把和工程相关的所有文件加入到工程中。

ADS1.2不能自动按文件类别对这些文件进行分类,需要的话用户可以执行菜单Project|CreateGroup创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。

如图1B-12所示。

更为简单的办法是,在新建工程时ADS创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。

选中所有目录拖动到任务栏上的ADS任务条上,不要松开鼠标当ADS窗口恢复后再拖动到工程文件窗口,松开鼠标。

这样ADS将以子目录名建立同名文件组并以此对文件分类。

图1B-12加入工程文件

(13)双击图1B-12中的Main.c打开该文件,可以看到Main()函数的内容:

intmain(void)

{ARMTargetInit();//开发版初始化

LCD_Init();LCD_ChangeMode(DspTxtMode);//转换LCD显示模式为文本显示模式LCD_Cls();//文本模式下清屏命令LCD_printf("Helloworld!

\n");//向液晶屏输出Uart_Printf("\nHelloworld!

\n");//向串口输出while

(1);

}

查看其他源文件的内容以对系统运行有所了解。

可以发现ADS的文本编辑器已经有了很大的改善,文本按语法分颜色显示,读者可以根据喜好在Edit菜单下的Preferences窗口中进行设置。

并可以很好的支持中文注释。

2)进行程序的在线仿真、调试

(1)回到图1B-12所示的工程窗口选中Debug版本,执行菜单Project|Make对工程进行编译连接。

在出现的错误/警告窗口中选择某错误/警告信息,ADS会自动打开相应源文件并用箭头指向出错的文本行。

如果某个源文件被修改,重新编译时ADS会自动同步各文件的日期信息。

(2)在ADS中执行菜单Project|Debug启动ADS1.2的调试工具AXD。

(3)在AXD中执行菜单Options|ConfigureTarget对AXD进行设置。

如图1B-13所示。

选择ADP即远程调试,点Configure按钮进一步设置具体参数,如图1B-14所示。

图1B-13设置AXD参数

(4)在图1B-14中点Select按钮选择远程连接为ARMethernetdriver,点Configure按钮输入仿真器的IP地址。

如果用户使用的是并行口仿真器,请输入127.0.0.1即可。

图1B-14设置远程连接

(5)等待程序装载完毕以后,通过Execute|Go菜单以及Execute|Stop(或者工具栏中

的相应按钮)运行或暂停程序。

程序暂停后在窗口中将显示出程序暂停的位置。

(6)通过Execute|Step菜单(或者工具栏中的相应按钮)可以单步运行程序。

也可以使用StepIn、StepOut菜单命令进入或者跳出函数的调用。

RunToCursor命令运行到光标位置。

(7)程序停止后可以通过ProcessorViews|Sources菜单查看源文件,并可在适当位置按F9设置端点。

(8)使用在ProcessorView菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。

读者可以逐一地尝试,为以后调试程序打下基础。

注意:

在进行调试时在ADS中必须选择当前工程的Debug版本,如果选择Release版本则无法正常调试程序。

但在调试通过后就必须选择Release版本进行编译连接并将生产的system.bin文件复制到开发板的Flash中。

将开发板上的Flash激活并使Windows认其为一个U盘的操作在下节中描述。

实验一B:

超级终端设置及BIOS功能使用

1、运行Windows系统下的超级终端(HyperTerminal)应用程序,如图1C-1所示新建一个通信终端,取名为arm。

单击“确定”按钮。

图1C-1创建超级终端

2、选择终端的连接的串口(如串行口1),如图1C-2所示,设置通信的格式和协议。

这里波特率为115200,无数据流控制。

图1C-2设置串行口

3、完成超级终端设置以后,可以保存为一个特定终端到桌面上,以备后用。

用串口线将PC机和平台UART0正确连接后,就可以在终端上看到程序输出的信息了,比如本实验的“Helloworld!

4、启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS设置状态。

如图1C-3所示。

图1C-3系统的BIOS设置程序

5、该画面上提示了该BIOS的版本等信息。

ShellMenu是平台的检测菜单,每个条目的最左边字母是该功能的快捷键,按PC机键盘相应键将执行对应功能。

注意操作时保持超级终端处于激活状态,并且PC机键盘为小写。

6、读者可以试着用一下每个测试功能,其中:

.l:

测试LCD的文本和图形显示。

.o:

格式化开发平台的16MFLASH,其中的文件将丢失,需要重新拷贝。

.n:

设置平台网卡的IP地址,子网掩码等,下有子菜单。

u:

激活平台的USB连接,开发平台可以被PC机认为一个U盘,从而可以方便的将字库,应用程序等文件从PC机拷贝到平台的FLASH中。

e和k:

测试平台上由ZLG7289构成的LED显示和键盘电路。

s:

测试平台触摸屏,触摸屏有动作时终端上会显示动作类型和坐标。

h:

设置触摸屏的坐标基准点,也就是校屏功能。

需要按提示点击触摸屏的3个位置并保存结果。

a和d:

测试平台的AD和DA电路,终端显示AD0-AD3的数值,而DA需要用电压表测量平台DA输出端子。

.t:

设置平台RTC时间参数,该时间由平台电池保证持续计时。

请按提示输入时间。

.i:

测试平台的音频电路,可以听到一段从平台扬声器发出的音乐。

.m:

测试平台的电机,需要打开电机开关,按提示分别测试步进电机或直流电机。

.c:

测试平台的CAN控制器。

.b:

引导FLASH中的应用程序。

该功能将推出BIOS状态,把控制交给应用程序。

7、按PC键盘的u键(要使超级终端处于活动状态),这时超级终端上会显示如图1C-4

所示的信息。

图1C-4进入U盘状态

8、这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就是开发板的海量存储器16M非线性Flash。

开发板就像一个U盘,可以通过“我的电脑”进行操作。

把上两节内容中生成的system.bin文件通过USB下载到嵌入式开发板中,复位系统,运行并检查输出结果。

提示:

system.bin文件是系统通过BIOS引导以后,装入内存中运行的默认文件名。

所以上文中对工程的设置都使用该文件名作为编译最终文件。

SDT环境中,system.bin文件产生在工程路径下的Debug和Release目录下;ADS环境中,该文件产生在工程路径下的ProjectName_Data\Debug和Release目录下。

建议将Release下的system.bin文件拷贝的到U盘。

实验二Linux开发环境的建立(ARM9)

一、实验目的

熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。

使用Linux的arm-linux-gcc-3.4.6编译,使用基于nfs方式的下载调试,了解嵌入式开发的基本过程。

二、实验内容

本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。

创建一个新目录,并在其中编写hello.c和Makefile文件。

学习在Linux下的编程和编译过程,以及ARM9开发板的使用和开发环境的设置。

下载已经编译好的文件到目标开发板上运行。

三、预备知识

C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。

四、实验设备及工具(包括软件调试工具)

硬件:

up-Star认证考试实践板、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

五、实验步骤

1.嵌入式Linux开发环境的建立

利用VM打开Linux虚拟机。

已将所有开发软件包安装到/up-Star2410目录下,同时自动配置编译环境,建立合适的符号连接。

注意:

安装完成后看一下主编译器arm-linux-gcc-3.4.6是否在/up-Star2410/arm-linux-tools/gcc-3.4.6-glibc-2.3.6/arm-linux/bin,如果不是这个路径,请使用vi修改/root/.bash_profile文件中PATH变量为PATH=$PATH:

$HOME/bin:

/up-Star2410/arm-linux-tools/gcc-3.4.6-glibc-2.3.6/arm-linux/bin,存盘后执行:

source/root/.bash_profile,则以后arm-linux-gcc-3.4.6会自动搜索到,可以在终端上输入armv,然后按tab键,会自动显示arm-linux-gcc-3.4.6。

配置网络,包括配置IP地址、NFS服务、防火墙等。

(1)配置IP地址

主要是要安装好以太网卡,对于一般常见的RTL8139网卡,REDHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。

然后配置宿主机IP为192.168.1.28(IP地址完全跟根据需要配置,无需跟实验指导书中配置相同)。

如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情况设置。

双击设备eth0的蓝色区域,进入以太网设置界面,如图1.4.5和图1.4.6。

其中的IP根据自己的需要设置,但要保证是跟PC主机处于同一网段。

图1.4.5

图1.4.6

对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无法使用。

因此网络安装完毕后,应立即关闭防火墙。

操作如下:

点击红帽子开始菜单,选择安全级别设置,选中无防火墙,如图1.4.7。

图1.4.7

在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务的勾去掉,并确保nfs选项选中。

(2)Sabam服务器配置(实验时可以不配置)

如图选择Samba,打开。

如图1.4.8。

1.4.8

点击添加

图1.4.9

按照下图配置,注意点击“浏览”选择要共享的目录。

“描述”要填写与PC主机同一网段的IP。

如图1.4.10和1.4.11。

图1.4.10

图1.4.11

配置好网络和smb服务器,在windows的“开始”中点击“运行”输入\\192.168.1.234(注意IP为您虚拟机的IP)。

(3)nfs服务器配置

打开nfs服务,选项位于刚才samba选项下,如图1.4.12。

图1.4.12

点击“浏览”选择共享的目录,然后按照如下配置,如图1.4.13、1.4.14和1.4.15。

图1.4.13图1.4.14

图1.4.15

配置完网络、smb服务器和nfs服务器后需要对各项服务重新启动指令如下:

网络:

/etc/init.d/networdrestart

smb服务:

/etc/init.d/smbrestart

nfs服务:

/etc/init.d/nfsrestart

(4)配置MINICOM

在linux操作系统下建立终端,在终端的命令行提示符后输入minicom,类似Windows中的超级终端的功能,只是在Liunx下使用。

此处不详述,可以参见UP-Star2410三剑客(ARM9)实验指导.pdf。

2、建立工作目录

请在/home/phy建立一个个人的目录(自己的学号)。

启动终端界面后进入自己的目录,建立工作目录:

[root@zxtsmile]#mkdirhello

[root@zxtsmile]#cdhello

3、编写程序源代码

在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit等,我们在开发过程中推荐使用vim,用户需要学习vim的操作方法,请参考相关书籍中的关于vim的操作指南。

Kdevelope、anjuta软件的界面与vc6.0类似,使用它们对于熟悉windows环境下开发的用户更容易上手。

实际的hello.c源代码较简单,如下:

#include

main()

{

printf(“helloworld\n”);

}

我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:

[root@zxthello]#vihello.c

按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:

wq”保存并退出。

这样我们便在当前目录下建立了一个名为hello.c的文件。

(关于vi指令请参照附录)

4、编写Makefile

要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。

使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1