1嵌入式系统实验指导书唐永锋.docx
《1嵌入式系统实验指导书唐永锋.docx》由会员分享,可在线阅读,更多相关《1嵌入式系统实验指导书唐永锋.docx(39页珍藏版)》请在冰豆网上搜索。
1嵌入式系统实验指导书唐永锋
淮阴工学院
嵌入式系统实验指导书
编者:
唐永锋
适用学院:
电气学院
电子与电气工程学院
2014年6月23日
实验一开发环境的搭建与调试……………………………………1
实验二S5PV210数码管实验………………………………………14
实验三S5PV210GPIOLED控制实验………………………………20
实验四S5PV210串口实验…………………………………………25
实验五S5PV210步进电机控制实验………………………………33
实验一开发环境的搭建与调试
1、实验目的
(1)、熟悉Eclipse开发环境的搭建;
(2)、熟悉Eclipse的调试方法,
2、实验内容
创建一个工程,新建一个Makefile文件,新建一个脚本文件,新建一个汇编源文件,编译工程,并配置FS-JTAG调试工具,配置Eclipse调试工具。
3、实验设备
(1)、硬件:
CVT-A8-III教学平台,PC机,A8JTAG仿真器。
(2)、软件:
PC机操作系统(WindowsXP)+Eclipse开发环境。
4、实验步骤
4.1Eclipse开发环境的安装
Eclipse是著名的开放源代码、跨平台的自由集成开发环境(IDE)。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++等开发工具。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。
打开光盘下的目录,安装文件包,安装步骤如下:
4.1.1安装ARM-GCC交叉编译工具
打开yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.exe。
这个工具为交叉编译器。
这里的安装目录需要记住,因为在后面的编译过程中,需要使用对应的交叉编译器。
安装过程如下:
安装完成后,对应的编译器存放目录为:
D:
\ProgramFiles\yagarto\bin
4.1.2安装GNUmake工具
打开yagarto-tools-20100703-setup.exe,安装过程如下:
4.1.3安装FS-JTAG工具
打开Setup.exe。
安装过程如下:
安装完成后,桌面有如下图标。
这个工具主要是用来仿真器连接目标A8实验箱。
4.1.4安装JAVA开发包
打开jre-6u7-windows-i586-p-s.exe。
如果电脑上已经安装过JAVA此类的工具,则不需要再次安装。
4.1.5安装Eclipse
解压05.eclipse-cpp-helios-SR1-win32.zip压缩包,解压完成后,找到当中的eclipse.exe发送到桌面快捷方式,改名为eclipse_c(这里的改名主要为区别ANDROID高版本的eclipse)。
图标如下:
打开eclipse_c,设置过程如下:
这里主要是设置工作区的主目录,我们这里采用默认。
这里点击最右边的工作区按钮,就进入eclipse_c主界面。
如下所示:
4.2ARM仿真器驱动的安装
把FS-JTAG接入计算机USB口,会提示发现新硬件(如图),选择从列表或指定位置安装,然后单击下一步。
单击下一步会出现选择驱动安装目录,单击浏览找到DRIVER所在的目录(如下图)
选择好,单击确定后,会提示没有通过微软认证,选择“仍然继续”
在安装的过程中,会提示需要ftdibus.sys文件,单击浏览在DRIVER找到需要所需要的文件,应驱动安装3次,驱动就算安装完成。
4.3Eclipse的调试方法
4.3.1指定一个工程存放目录
EclipseforARM是一个标准的窗口应用程序,可以点击程序按钮开始运行。
打开后必须先指定一个工程存放路径:
4.3.2创建一个工程
进入主界面后,单击File->New->CProject菜单项,Eclipse将打开一个标准对话框,输入希望新建工程的名字(如gpioled_s)单击Finish即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。
4.3.3新建一个MakeFile文件
在创建一个新的工程后,单击File->New->Other在弹出的对话框中的General下单击file,然后单击next。
然后选择所要指定的工程后,在文件名选框中输入文件名MakeFile单击Finish。
4.3.4新建一个脚本文件
单击File->New->Other在弹出的对话框中的General下单击file,然后单击Next,然后选择所要指定的工程后,在文件名选框中输入文件名s5pc210.init,单击Finish。
4.3.5新建一个汇编源文件
单击File->New->Other在弹出的对话框中的General下单击file,然后单击Next,然后选择所要指定的工程后,在文件名选框中输入文件名led.s,单击Finish。
4.3.6编译工程
1)在汇编源文件(led.s)当中输入汇编代码
.equGPH3CON,0XE0200C60
.equGPH3DAT,0XE0200C64
.section.text
.globl_start
_start:
start:
ldrr0,=GPH3CON
ldrr1,=0x11110000@setgpiogpg3outputmode
strr1,[r0]
loop:
ldrr0,=GPH3DAT
movr1,#0xff
strr1,[r0]
ldrr0,=GPH3DAT
movr1,#0x0
strr1,[r0]
ldrr0,=GPH3DAT
movr1,#0xff
strr1,[r0]
ldrr0,=GPH3DAT
movr1,#0xef
strr1,[r0]
ldrr0,=GPH3DAT
movr1,#0xdf
strr1,[r0]
ldrr0,=GPH3DAT
movr1,#0xbf
strr1,[r0]
ldrr0,=GPH3DAT
movr1,#0x7f
strr1,[r0]
bloop
.end
2)编写MakeFile文件编译规则在MakeFile输入如下信息
all:
led.s
arm-none-eabi-gcc-4.6.2-O0-g-c-oled.oled.s
arm-none-eabi-ldled.o-Ttext0x20080000-oled.elf
arm-none-eabi-objcopy-Obinary-Sled.elfled.bin
arm-none-eabi-objdump-Dled.elf>led.dis
3)在s5pc210.init文件如输入如下信息
targetremote127.0.0.1:
3333
monitorhalt
monitorarmmcr1501000
monitorstep0
4)保存各文档,选中工程led,点击CleanProject,
建立工程如下:
5)编译Project->BulitAll
4.4Eclipse的调试工程过程
4.4.1配置FS-JTAG调试工具
在Target选项中选择s5pc100或者s5pc110,
在Workdir选项中选择自己的工程目录(D:
\eclipse_projects\gpioled_s),
单击Connect后下面出现如下图所示,即表示已经连接目标板。
(此前需要连接好仿真器,实验箱上电)。
此时表示仿真器已经与目标实验箱连接成功。
4.4.2配置调试工具
在Eclipse的菜单中单击Run–>DebugConfigurations弹出下图对话框。
单击ZyinEmbeddeddebug(Native)选项,然后右击选择“NEW”出现一个窗口。
在Main选项卡中Project框中,点击Browse选择gpioled_s工程,在C/C++Application中单击Browse找到工程目录下的led.elf文件。
在Debugger选项卡中main中GDBDebugger中单击Browse选择前面安装的C:
\ProgramFiles\yagarto\bin\arm-none-eabi-gdb.exe(这里选择自己的安装目录),在GDBCommandfile中选择自己工程目录下的s5pc100.init文件。
在Command选项卡中输入:
load
break_start
c
点击应用后点击debug开始调试运行,会出现调试界面。
程序会在断点处停下,然后使用单步和全速等工具进行调试运行程序,点击全速运行,会出现LED亮。
5、实验报告要求
(1)熟悉Eclipse开发环境的搭建;
(2)熟悉Eclipse的调试方法;
实验二S5PV210数码管实验
1、实验目的
(1)熟悉Eclipse开发环境;
(2)熟悉在ARM裸机环境下的C语言编程;
(3)熟悉CVT-S5PV210下,数码管的操作。
2、实验内容
(1)编写程序,练习C语言的使用。
(2)实现对开发板上数码管控制。
(3)代码分别在Eclipse的Debug环境下运行。
3、实验设备
(1)硬件:
CVT-S5PV210嵌入式教学实验箱、PC机;
(2)软件:
PC机操作系统(WindowsXP)+Eclipse开发环境。
4、基础知识
发光二极管数码显示器简称LED显示器。
LED显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点,目前广泛应用于嵌入式系统中。
7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。
LED的结构及连接图见图2-1。
图2-1LED结构及连接图
当选用共阴极的LED显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。
因此要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据称为字符的段码。
字符0、1、2…F与LED码段A、B、C…F以及DP(小数点)的关系如表3-8-2所示:
表2-1LED字符与码段对应表
字符
DP
G
F
E
D
C
B
A
段码(共阴)
段码(共阳)
0
0
0
1
1
1
1
1
1
3FH
C0H
1
0
0
0
0
0
1
1
0
06H
F9H
2
0
1
0
1
1
0
1
1
5BH
A4H
3
0
1
0
0
1
1
1
1
4FH
B0H
4
0
1
1
0
0
1
1
0
66H
99H
5
0
1
1
0
1
1
0
1
6DH
92H
6
0
1
1
1
1
1
0
1
7DH
82H
7
0
0
0
0
0
1
1
1
07H
F8H
8
0
1
1
1
1
1
1
1
7FH
80H
9
0
1
1
0
1
1
1
1
6FH
90H
A
0
1
1
1
0
1
1
1
77H
88H
B
0
1
1
1
1
1
0
0
7CH
83H
C
0
0
1
1
1
0
0
1
39H
C5H
D
0
1
0
1
1
1
1
0
5EH
A1H
E
0
1
1
1
1
0
0
1
79H
86H
F
0
1
1
1
0
0
0
1
71H
8EH
-
0
1
0
0
0
0
0
0
40H
BFH
.
1
0
0
0
0
0
0
0
80H
7FH
熄灭
0
0
0
0
0
0
0
0
00H
FFH
说明:
共阴的LED,被选中时的段为高电平有效,熄灭的段码为00H;
共阳的LED,被选中时的段为低电平有效.熄灭的段码为FFH。
LED显示器的接口一般有静态显示与动态显示接口两种方式,下面分别加以介绍。
1)静态显示
LED数码管采用静态接口时,共阴极或共阳极点连接在一起接地或接高电平。
每个显示位的段选线与一个8位并行口线对应相连,只要在显示位上的段选线上保持段码电平不变,则该位就能保持相应的显示字符。
这里的8位并行口可以直接采用并行I/O口,也可以采用串入/并出的移位寄存器或是其它具有三态功能的锁存器等。
2)动态显示
在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。
而共阴(或共阳)极公共端分别由相应的I/O线控制,实现各位的分时选通。
由于各个数码管是共用同一个段码输出口,分时轮流通电的,从而大大简化了硬件线路,降低了成本。
不过这种方式的数码管接口电路中数码管不宜太多,一般在8个以内,否则每个数码管所分配的实际导通时间会太少,显得亮度不足。
若LED位数较多时应采用增加驱动能力以提高显示亮度。
本实验系统中采用的是动态显示接口,其中数码管扫描控制地址为0x88007000,位0-位5每位分别对应一个数码管,将其中某位清0来选择相应的数码管,地址0x88009000为数码管的数据寄存器。
数码管采用共阳方式,向该地址写一个数据就可以控制LED的显示。
实验电路原理图如下:
实验程序如下:
#include"s5pc210.h"
#include"uart.h"
#defineU8unsignedchar
unsignedcharseg7table[16]={
/*01234567*/
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
/*89ABCDEF*/
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,
};
/********************************************************************//Functionname:
delay
//Description:
延时子程序
//Returntype:
void
//Argument:
count,延时的数值
********************************************************************/
voiddelay(intcount)
{
intcnt;
for(count=count;count>0;count--)
for(cnt=0;cnt<1000;cnt++);
}
intmain()
{
uart_init();
printf("CVTS5PV210JtagSegTest...\n");
inti;
*((U8*)0x88007000)=0x00;
for(;;){
/*数码管从0到F依次将字符显示出来*/
for(i=0;i<0x10;i++){
/*查表并输出数据*/
*((U8*)0x88009000)=seg7table[i];
delay(1000);
}
/*数码管从F到0依次将字符显示出来*/
for(i=0xf;i>=0x0;i--){
/*查表并输出数据*/
*((U8*)0x88009000)=seg7table[i];
delay(1000);
}
}
return0;
}
5、实验步骤
1.首先打开Eclipse软件,指定工作目录。
2.打开Seg工程,点击工具栏的“File”,然后点击“Import”。
然后点击“ExistingProjectintoWorkspace”。
再次点击“Browse”按钮。
进入目录D:
\eclipse_projects\Seg\。
点击“Finish”按钮。
成功添加工程到Eclipse中。
3.点击工程右键,点击“BulidProject”按钮,对工程进行编译,生成seg.elf文件。
编译成功提示如上。
4.连接好仿真器。
实验箱通电。
打开FS-JTAG调试工具,连接成功。
设置DebugConfigurations。
设置过程参看实验1内容。
调试模式成功运行后。
查看结果。
6、实验结果
六个SEG轮流闪烁,实现从0-F轮流显示。
7、实验报告要求
(1)结合户外广告屏,根据实验总结LED的不同显示方法;
(2)数码管的静态显示和动态显示各有什么优缺点。
实验三S5PV210GPIOLED实验
1、实验目的
(1)熟悉Eclipse开发环境。
(2)熟悉在ARM裸机环境下的C语言编程。
(3)熟悉CVT-S5PV210下,GpioLed的操作。
2、实验内容
(1)编写程序,练习C语言的使用。
(2)实现对开发板上GpioLed的控制。
(3)代码分别在Eclipse的Debug环境下运行。
3、实验设备
(1)硬件:
CVT-S5PV210嵌入式教学实验箱、PC机;
(2)软件:
PC机操作系统(WindowsXP)+Eclipse开发环境。
4、基础知识
从电路图上我们可以看到,发光二极管LED的一端连接到了ARM的GPIOGPH3,另一端经过一个限流电阻接电源VDD33V。
当GPIO口为低电平时,LED两端产生电压降,这时LED有电流通过并发光。
反之当GPIO为高电平时,LED将熄灭。
注意亮灭之间要有一定的延时,以便人眼能够区分出来。
实验相应寄存器
端口配置寄存器
端口数据寄存器
实验电路
实验程序如下:
#include"s5pc210.h"
#include"uart.h"
/********************************************************************
//Functionname:
delay
//Description:
延时子程序
//Returntype:
void
//Argument:
count,延时的数值
********************************************************************/
voiddelay(intcount)
{
intcnt;
for(count=count;count>0;count--)
for(cnt=0;cnt<1000;cnt++);
}
intmain()
{
uart_init();
printf("CVTS5PV210JtagGpioLedTest...\n");
volatileinti,j=0;
GPH3.GPH3CON=0x11110000;
while
(1){
GPH3.GPH3DAT=0xFF;
for(i=0;i<=1000000;i++);
GPH3.GPH3DAT=0x0;
for(i=0;i<=1000000;i++);
for(j=0;j<4;j++){
GPH3.GPH3DAT=~(0x1<<(j+4));
for(i=0;i<=1000000;i++);
}
}
return0;
}
5、实验步骤
1.首先打开Eclipse软件,指定工作目录。
2.打开GpioLed工程,点击工具栏的“File”,然后点击“Import”。
然后点击“ExistingProjectintoWorkspace”。
再次点击“Browse”按钮。
进入目录D:
\eclipse_projects\GpioLed\。
点击“Finish”按钮。
成功添加工程到Eclipse中。
3.点击工程右键,点击“BulidProject”按钮,对工程进行编译,生成gpioled.elf文件。
编译成功提示如上。
4.连接好仿真器。
实验箱通电。
打开FS-JTAG调试工具,连接成功。
设置DebugConfigurations。
设置过程参看实验1内容。
调试模式成功运行后。
查看结果。
6、实验结果
观察到gpioled亮灭,流水闪亮。
7、实验报告要求
熟悉GPIO接口作为输出与输入控制的编程方法。
实验四S5PV210串口实验
1、实验目的
1.熟悉Eclipse开发环境。
2.熟悉在ARM裸机环境下的C语言编程。
3.熟悉CVT-S5PV210下,串口uart的操作。
2、实验内容
编写程序,练习C语言的使用。
实现对开发板上串口的控制。
代码分别在Eclipse的Debug环境下运行。
3、实验设备
1.硬件:
CVT-S5PV210嵌入式教学实验箱、PC机;
2.软件:
PC机操作系统Windows98(2000、XP)+Eclipse开发环境。
4、基础知识
串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与TTL电平转换器以及地址译码电路组成。
采用的通信协议有两类:
异步协议和同步协议。
随着大规模集成电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,它们的基本功能是类似的。
采用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。
4.1异步串行通信
异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。
接收方对于同一根