嵌入式系统课程实验指导书.docx
《嵌入式系统课程实验指导书.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课程实验指导书.docx(37页珍藏版)》请在冰豆网上搜索。
嵌入式系统课程实验指导书
《嵌入式系统》课程实验指导书
第一部分 实验教学系统硬件介绍
第二部分 EmbestIDE集成开发环境使用说明
第三部分 实验指导
第一部分 实验教学系统硬件介绍
1.1教学系统的硬件电路
EmbestS3CEV40开发板是实验系统的主要硬件平台,它是英蓓特公司开发的一款全功能ARM开发板,基于Samsung公司的S3C44B0X处理器(ARM7TDMI),资源丰富。
硬件系统包含了嵌入式系统开发应用所需的大部分设备,如串口、以太网口、USB口、音频输出、LCD及TSP触摸屏、4*4的小键盘、固态硬盘、大容量的Flash和SDRAM等等。
用户不仅可以在该硬件平台上完成实验系统提供的实验例子,还可以参考该平台设计自己的目标系统。
该硬件平台如下图所示:
图1-1实验系统硬件平台
EmbestS3CEV40开发板的基本资源如下:
●电源:
外部5V电源供电或者由USB接PC供电,电源指示LED以及500mA保险丝
●1M×16bitFlash
●4×1M×16bitSDRAM
●4KbitIICBUS的串行EEPROM
●2个串口,其中一个为简单接口,一个为全接线接口,可跳接RS232MODEM
●复位开关
●两个中断按钮,两个LED
●外部IDE硬盘接口
●LCD及TSP触摸屏接口
●20针JTAG接口
●USB连接器
●4×4键盘接口
●4个2×20PINCPU扩展接口
●10M以太网接口
●8段数码管
●MICROPHONE输入口
●IIS音频信号输出口,可接双声道SPEAKER
●固态硬盘16M×8bit
●320*240带触摸功能的显示屏
EmbestARM教学系统主要功能模块如图1-2所示:
图1-2EmbestS3CEV40功能模块
1、存储系统
实验系统上的存储系统包括一片1M×16bit的Flash(SST39VF160)和一片4M×16bit的SDRAM(HY57V65160B)。
Flash连接电路如图1-3所示,处理器是通过片选nGCS0与片外Flash芯片连接。
由于是16bit的Flash,所以用CPU的地址线A1-A20来分别和Flash的地址线A0-A19连接。
Flash的地址空间为0x00000000~0x00200000。
图1-3Flash连接电路
SDRAM连接电路如图1-4所示,SDRAM分成4个BANK,每个BANK的空量为1M×16bit。
BANK的地址由BA1、BA0决定,00对应BANK0,01对应BANK1,10对应BANK2,11对应BANK3。
在每个BANK中,分别用行地址脉冲选通RAS和列地址脉冲选通CAS进行寻址。
本开发板还设置跳线,可以为用户升级内存容量至4×2M×16bit。
对于8M的SDRAM,0欧姆电阻接在R1,R3处,R2,R4空着,即BA0,BA1分别接到CPU的A21,A22上;行列地址线宽度各为A1~A11,地址空间为4×210×210,从0x0C000000~0x0C3FFFFF。
对于16M的SDRAM,0欧姆电阻接在R2,R4处,R1,R3空着,即BA0,BA1分别接到CPU的A22,A23上;行列地址线宽度各为A1~A12。
地址空间为4×211×211,从0x0C000000~0x0C7FFFFF。
SDRAM由MCU专用SDRAM片选信号nSCS0选通。
图1-4SDRAM连接电路
2、串行接口
串行接口电路如图1-5所示,实验系统提供两个串口(DB9)。
其中UART1为主串口,可与PC或MODOM进行串行通迅。
由于S3C44B0X未提供DCD(载波检测)、DTR(数据终端准备好)、DSR(数据准备好)、RIC(振铃指示)等专用I/O口,故用MCU的通用I/O口替代。
UART0只采用二根接线RXD和TXD,因此只能进行简单的数据传输及接收功能。
全接口的UART1采用MAX3243E作为电平转换器,简单接口的UART0则采用MAX3221E作为电平转换器。
图1-5串口电路
3、八段数码管
实验系统使用了一个八段数码LED,该数码管是共阳极的,低电平信号使LED点亮。
CPU数据总线DATA(0~7)经74LC573驱动器对数码管进行驱动。
其片选信号由CPU的nGCS1及3个地址线A20、A19、A18经过译码器生成的CS6选通信号选通,而8-SEG的内容则由CPU低八位数据线决定。
图1-6八段数码管
4、4×4键盘电路
键盘接口电路如图1-7所示,板上扩展了一个4×4行列式矩阵键盘接口。
该键盘是采用中断扫描的方式进行工作,行线选用了4个数据线,列线选用了4个地址线。
行线接上拉电阻保持高电平,并通过与门74HC08将输出信号与MCU的中断EXINT1连接;列线接下拉电阻保持低电平。
当有键盘按下时,该行线被拉为低电平,使得EXINT1输入也为低电平,MCU产生中断。
中断产生后通过对键盘的行和列进行扫描的方法可以计算出是哪个键按下,并跳到相应的键盘处理程序中去。
芯片74HC541是通过片选信号nGCS3来选通的,这样可以保证在键盘不使用的情况下MCU读不到行线的输入信息。
5、电源、复位、时钟电路和JTAG接口
实验系统是采用DC5V稳压电源进行供电,电源输入后经过两个稳压芯片分别产生3.3V和2.5V的电压,给MCU的I/O和ARM内核供电;
实验系统上接了一个系统复位按钮RESET,按下该按钮即可使系统复位;
实时时钟是通过MCU外接32.768KHz晶振和工作供电电路实现;
实验系统使用的20脚标准JTAG接口连接电路如图1-6所示。
图1-6键盘接口电路
图1-7JTAG接口电路
1.2程序设计硬件参考
1.片选信号
EmbestARM教学系统的片选信号设置如表1-1:
表1-1片选信号设置
片选信号
选择的接口或器件
NGCS0
FLASH
NGCS6/NSCS0
SDRAM
NGCS1
A20
A19
A18
0
0
0
CS1
USB
0
0
1
CS2
固态硬盘
0
1
0
CS3
IDE
0
1
1
CS4
1
0
0
CS5
1
0
1
CS6
8-SEG
1
1
0
CS7
ETHERNET
1
1
1
CS8
LCD
2.外围地址空间分配
实验系统的外围地址空间为配如表1-2:
表1-2外围地址空间分配
外围器件
片选信号
片选控制寄存器
地址空间
FLASH
NGCS0
BANKCON0
0X0000_0000~0X01BF_FFFF
SDRAM
NGCS6
BANKCON6
0X0C00_0000~0X0DF_FFFF
USB
CS1
BANKCON1
0X0200_0000~0X0203_FFFF
固态硬盘
CS2
BANKCON1
0X0204_0000~0X0207_FFFF
IDE(IOR/W)
CS3
BANKCON1
0X0208_0000~0X020B_FFFF
IDE(KEY)
CS4
BANKCON1
0X020C_0000~0X020F_FFFF
IDE(PDIAG)
CS5
BANKCON1
0X0210_0000~0X0213_FFFF
8-SEG
CS6
BANKCON1
0X0214_0000~0X0217_FFFF
ETHERNET
CS7
BANKCON1
0X0218_0000~0X021B_FFFF
LCD
CS8
BANKCON1
0X021C_0000~0X021F_FFFF
NOUSE
NGCS2
BANKCON2
0X0400_0000~0X05FF_FFFF
KEYBOARD
NGCS3
BANKCON3
0X0600_0000~0X07FF_FFFF
NOUSE
NGCS4
BANKCON4
0X0800_0000~0X09FF_FFFF
NOUSE
NGCS5
BANKCON5
0X0A00_0000~0X0BFF_FFFF
NOUSE
NGCS7
BANKCON7
0X0E00_0000~0X1FFF_FFFF
3.总线扩展
EmbestARM教学系统上预留了所有CPU引脚的扩展接口,用户可以非常方便地根据需求扩展存储器和各种外部设备,能够满足大部分产品的应用。
用户在扩展时需要自己制作扩展板,只要扩展板上的接口定义和实验系统上扩展接口相对应即可。
实验系统的总线扩展接口定义如图1-8和图1-9所示:
图1-8总线扩展接口定义a图1-9总线扩展接口定义b
第二部分 EmbestIDE集成开发环境使用说明
2.1教学系统介绍
EmbestARM教学系统包括EmbestIDE集成开发环境,EmbestEmulatorforARMJTAG仿真器,Flash编程器,EmbestS3CEV40开发板、各种连接线、电源适配器等。
基本实验模型示意图如2-1所示:
图2-1实验模型示意图
2.2EmbestIDE集成开发环境
1.主框架窗口
在Windows98/NT/2000/XP环境中运行EmbestIDEforARM(主应用程序为EmbestIDE.exe)后,即进入EmbestIDE集成开发环境。
EmbestIDE集成开发环境主界面见下图。
图2-2EmbestIDE主界面图
EmbestIDE集成开发环境的主框架窗口由标题栏、菜单条、工具条、工程管理窗口、源文件窗口、输出窗口和状态条等组成。
标题栏显示当前打开的文件名。
工程管理窗口用于显示当前打开工程的有关信息,包括工程的文件组成等内容。
源文件窗口用于文本编辑器进行C、汇编等源文件的编辑以及调试时的源代码执行跟踪。
输出窗口输出编译信息、调试信息、命令行输入输出和输出一些查询结果信息等。
主框架窗口的最底端为状态栏,用于显示关于菜单条、工具条等的简单说明信息以及文本编辑器中当前光标所在的行列号等。
用户可以通过鼠标拖动,将菜单条、工具条、工程管理窗口、源文件窗口和输出窗口等随意更换顺序和位置,也可以隐藏其中的某些窗口。
在调试过程中,可以根据需要打开和关闭寄存器窗口、函数栈窗口、变量窗口、存储器窗口、数据观察窗口以及反汇编窗。
2.工程管理
在EmbestIDE集成开发环境中,工程是一个非常重要的概念,它是用户组织一个应用的所有源文件、设置编译链接选项、生成调试信息文件和最终的目标Bin文件的一个基本结构。
一个工程管理一个应用的所有源文件、库文件、其它输入文件,并根据实际情况进行相应的编译链接设置,一个工程须生成一个相对应的目录,以进行文件管理。
(1)工程的创建
工程是置于工作区之中进行管理的,因此在创建一个工程的同时,会创建一个工作区。
操作过程:
1)点击菜单项File>NewWorkspace,系统弹出一个对话框,如下图所示。
图2-3创建一个新工程
2)在Projectname框中输入新建工程名,Location框中输入该工程要保存的目录路径,或点击
选择要保存的目录路径。
3)点击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。
此时在工作区窗口将打开该工作区和工程。
也可在一个打开的工作区窗口中,利用右键菜单中的“AddNewProjecttoWorkspace…”来创建一个新工程,其操作同以上操作相同,只是创建的工程也将加入当前工作区。
(2)建立一个新的源文件
点击菜单项File>New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位于窗口中第一行,用户即可编辑输入源文件代码。
默认情况下,在用户编辑输入时,按C语法来进行颜色加亮显示。
编辑完后,保存该文件。
(3)工程中文件的加入
选择Project菜单中AddToProject>Files命令,或单击工程管理窗口中的相应右键菜单命令,弹出文件选择对话框,在工程目录下使用CTRL键同时选择要加入的源文件:
图2-4加入源文件到工程中
(4)设置活动工程
在一个工作区中可以存在几个同时打开的工程,但只有一个工程处于活动状态,处于活动状态的工程才可以作为调试工程。
在工作区窗口中,处于活动状态的工程,其工程图标将显示为加亮彩色。
如图2-5所示。
图2-5彩色图标及右键菜单设置活动工程
在工作区窗口中,选中要设置为活动状态的工程,点击鼠标右键,弹出右键菜单,选择SaveasActiveProject项,可将该工程设置为活动状态,如图2-5所示;或选中要设置为活动状态的工程,点击菜单项Project>SetActiveProject,选择工程名即可将相应工程设置为活动状态。
(5)工程基本配置
选择菜单项Project>Settings…或快捷键Alt+F7,弹出工程设置对话框。
在工程设置对话框中,可完成对处理器、仿真器、调试、编译、汇编、链接等的配置。
图2-6处理器配置对话框
3.工程的编译链接
完成工程的设置后,就可以对工程进行编译链接了。
用户可以通过选择主窗口Build菜单项或Build工具条按钮,编译相应的文件或工程,同时将在输出窗的Build子窗口中输出有关信息。
如果在编译链接过程中,出现任何错误,包括源文件语法错误和其它错误时,编译链接操作立刻终止,并在输出窗的Build子窗口中提示错误,如果是语法错误,用户可以通过鼠标左键双击错误提示行,来定位引起错误的源文件行。
图2-7工程build菜单和工具条
第三部分 实验指导
实验一 ARM汇编指令实验
一、实验目的
1、初步学会使用EmbestIDEforARM开发环境及ARM软件模拟器;
2、通过实验掌握简单ARM汇编指令的使用方法。
二、实验设备
硬件:
PC机
软件:
EmbestIDE2003集成开发环境,Windows98/2000/NT/XP。
三、实验内容
1、熟悉开发环境的使用并使用ldr/str,mov等指令访问寄存器或存储单元。
2、使用add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。
四、实验原理
1.ARM处理器共有37个寄存器:
●31个通用寄存器,包括程序计数器(PC)。
这些寄存器都是32位的。
●6个状态寄存器。
这些寄存器也是32位的,但是只是使用了其中的12位。
2.GNU基础知识
EmbestIDE集成了GNU汇编器as,编译器gcc,链接器ld。
因此,我们写程序要符合GNU的语法和规则。
这里简单介绍几点基本知识:
1)程序默认入口点为“_start”,代码段默认起始地址为0x8000
2)as常用伪操作符
.equ
.equ伪操作为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。
语法格式
.equsymbol,expr
其中,expr为基于寄存器的地址值、程序中的标号,32位的地址常量或者32位的常量。
Symbol为.equ伪操作为expr定义的字符名称。
示例
.equVersion,"0.1"
.global及.glabl
.global声明一个符号可以被其他文件引用。
相当于声明了一个全局变量,.globl与.global相同。
语法格式
.globalsymbol
其中,symbol为声明的符号的名称。
它是区分大小写的。
示例
.globalMyAsmFunc
.text
.text伪操作将操作符开始的代码编译到代码段或代码段子段(subsection)
语法格式
.text{subsection}
示例
.text
.end
标记汇编文件的结束行,即标号后的代码不作处理。
语法格式
.end
五、实验操作步骤
1)新建工程:
2)建立源文件
3)添加源文件
4)配置工程
实验二:
C语言程序实验
一、实验目的
1、学会使用EmbestIDE编写简单的C语言程序并进行调试;
2、学会编写和使用命令脚本文件;
3、掌握通过memory/register/watch/variable窗口分析判断运行结果。
二、实验设备
硬件:
PC机。
软件:
EmbestIDE2003集成开发环境,Windows98/2000/NT/XP。
三、实验内容
利用命令脚本初始化栈指针,并使用c语言完成延时函数。
四、实验原理
1、命令脚本文件
用户在集成环境与目标板连接时、软件调试过程中以及复位目标板后,有时需要集成环境自动完成一些特定的功能,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等,这些特定的功能可以通过执行一组命令序列完成,保存一组命令序列的文本文件称为命令脚本文件(EmbestIDE使用.cs作为命令脚本文件扩展名)。
命令脚本文件中各行以半角格式的“;”号开始作为注释内容,分号前是一条命令。
凡是可以在调试命令窗口使用的命令,都可以在脚本文件中使用,包括执行脚本文件命令“SCRIPT”。
调试命令及详细参考请参照EmbestIDE所带的电子文档UserGuide.chm中“调试命令列表”一节。
命令脚本文件执行时按照命令在脚本文件中排列的先后顺序自动连续地执行。
2、命令脚本文件的执行方法
命令脚本文件有两种执行方法:
1、在命令输入窗口,输入:
script脚本文件名
2、在项目设置对话框调试属性页指定连接后的行为(Actionafterconnected),此时,可选择命令脚本文件(Commandscript),并在编辑框中设定命令脚本文件名,则在IDE与目标系统连接后首先自动执行指定的脚本文件。
3、常用命令介绍
GO–执行程序
语法:
go
说明:
从当前PC执行目标程序。
参数:
无
选项:
无
示例:
Go
MEMWRITE–存储区写
语法:
memwrite[–e]地址数值
说明:
向存储区指定地址写入数值。
参数:
地址要写入数值的存储区地址
数值待写数值
选项:
-e大印第安方式写入
示例:
memwrite0x10000x5A
向地址0x1000处写入数值0x5A
memwrite-e0x20000000x22334455
等效于memwrite0x20000000x55443322
REFRESH–刷新窗口
语法:
refresh
说明:
刷新所有窗口命令,调试命令执行后,各窗口相关内容并不更新,用户可以调用本命令刷新界面各窗口保持与实际内容一致。
参数:
无
选项:
无
示例:
refresh
刷新界面显示的所有窗口
REGWRITE–寄存器写
语法:
regwrite寄存器名称寄存器值
说明:
写寄存器
参数:
寄存器名称待写入数值的寄存器名称
寄存器值待写入的数值
选项:
无
示例:
regwritepc0x3840
向PC寄存器写入数值0x3840
RESET–复位目标设备
语法:
reset
说明:
复位目标设备
参数:
无
选项:
无
示例:
reset
STOP–停止执行程序
语法:
stop
说明:
停止目标板运行
参数:
无
选项:
无
示例:
stop
4、链接脚本文件
所有的链接都是通过链接脚本来控制实现的。
这些链接脚本文件使用链接命令语言编写。
链接脚本的最主要作用是描述我们编写的文件中这么多个部分应该如何的相应摆放在输出文件中,并控制存储区如何定位这些输出文件。
同时,如果需要,我们还可以使用链接脚本文件实现其它功能。
大部分链接脚本文件都是很简单的。
最简单的链接脚本只有一行命令:
SECTIONS。
我们使用SECTIONS命令来告诉存储区应该如何摆放我们的输出文件。
SECTIONS命令是一个强大的命令,我们使用一个简单的例子来说明一下。
我们假设你的程序包括代码、已经初始化的数据和还没有初始化的数据。
这些需要相应的分别摆放在.text.data和.bss部分。
针对这个例子,我们可以假设代码必须放在0x10000,数据必须放在地址0x8000000开始的地方。
下面是一个描述上面内容的一个简单的链接脚本:
SECTIONS
{
.=0x10000;
.text:
{*(.text)}
.=0x8000000;
.data:
{*(.data)}
bss:
{*(.bss)}.
}
链接脚本文件中全部使用半角符号,文件编写格式必须从SECTIONS关键字开始,紧接着是开大括号,接着是所有需要输出的描述部分,最后用闭大括号收尾。
上面的例子的链接脚本命令第一行使用专门的符号“.”,它指向当前的地址计数器。
如果您没有在其它地方专门的说明输出部分的地址(有关“其它地方”后面有说明),一般程序都会默认当前的地址计数器。
地址计数器会根据输出部分的大小而增加。
在SECTIONS命令开始,地址计数器一般为0。
第二行定义了一个输出区,.text。
其中的“:
”号是必须的,但是它经常被忽略了。
在大括号里面,每个输出部分的名称后面你必须把所有需要输入的部分的名字都列出来。
“*”号是一个通配符,可以搭配成任何文件名字。
*(text)表示代表在输入文件中所有的.text输入部分。
我们开始的时候定义了输出部分.text的起始地址为0x10000,链接器会把输出文件中的.text部分的地址设置为0x10000。
后面的几行里面,我们定义了.data和.bss部分。
连接器会把.data输出部分的起始地址设置为0x8000000。
当连接器设置完.data部分,当前地址计数器会自动指向0x800000。
这样,连接器会紧跟着把.bss部分放在.data部分后面。
链接器会增加本地计数器以确保需要的时候每个输出部分都有必需的队列。
在这个例子里面,为.text和.data部分指定了特定的地址,这两个部分会确保可以得到队列保证,但是连接器可能会在.data和.bss之间创建一个小小的空隙。
五、实验操作步骤
1、参考EmbestIDE使用方法创建新的工程的(工程名为:
C1);
2、按照参考程序,编写源文件C1.c和C1.cs,并把它们加入工程里面。
C1.cs加在工程根目录即可。
3、参考前面内容进行标准的设置,其中需要注意的是在调试Debug对话框设置的时候,增加连接后自动执行脚本文件:
实验三 ARM处理器工作模式实验
一、实验目的
1、通过实验掌握学会使用msr/mrs指令实现ARM处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU结构的理解;
2、通过实验掌握ld中如何使用命令行指定代码段起始地址。
二、实验设备
硬件:
PC机。
软件:
EmbestIDE2003集成开发环境,Windows98/2000/NT/XP。
三、实验内容
通过ARM汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM不同模式的进入与退出。
四、实验原理
1、ARM处理器模式
ARM体系