您的当前位置:首页正文

嵌入式实验指导

2021-05-20 来源:钮旅网


〈 嵌入式系统设计与应用 〉实验指导书

实验一 ADS1.2简要介绍与开发环境创建

一、实验目的

1. 熟悉ADS1.2开发环境,正确使用仿真调试电缆进行编译、下载、调试。 二、实验内容

1. 了解实验箱硬件资源;学习在ADS1.2开发环境下建立工程项目。 三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。 WIN2000或WINXP以上PC操作系统,ADS1.2集成开发环境。

四、ARM实验箱硬件资源概述

EL-ARM-860型教学实验系统是综合性的嵌入式(Embedded System)教学实验系统,该系统采用了ARM920T微处理器,实现了多模块的应用实验。在实验板上有丰富的外围扩展资源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元),可以完成ARM的基础实验。底箱功能如图1-1 所示。

图1-1 EL-ARM-860实验教学系统的底箱功能框图

4.1 实验系统的硬件资源

☆ CPU单元:内核ARM920T,芯片三星的S3C2410,工作频率最高202MHz; ☆ 动态存储器:64MB,芯片HY57V561620; ☆ 海量存储器:64MB,芯片K9F1208; ☆ USB单元: 1个主接口,1个设备接口; ☆ 网络单元: 10/100M以太网,芯片AX88796;

1

☆ UART单元: 2个,最高通信波特率115200bps;

语音单元: IIS格式,芯片UDA1341TS,采样频率最高48KHz; LCD单元:8.4吋,65536色,640X480像素; 触摸屏单元: 四线电阻屏,640X480,8.4吋;

SD卡单元: 通信频率最高25MHz,芯片W86L388D,兼容MMC卡; 键盘单元: 4X4键盘,带8位LED数码管;芯片HD7279A; 数字输入输出单元:8个拔码开关及8个LED发光管;

A/D(Analog/Digital)转换单元:芯片自带的8路10位A/D,满量程2.5V; 信号源单元: 方波输出; 标准键盘及PS2鼠标接口; 达盛公司的E_Lab总线接口:2个; 1个设备接口,芯片PDIUSBD12; CPLD单元; 电源模块单元。

注:带☆的功能集成在ARM9的S3c2410 CPU板上。

4.2 核心板的资源介绍

1.核心板的硬件资源(ARM920T核)

在核心CPU(Center Processing Unit)板上包括下列单元和芯片,32位ARM(Advanced RISC Machine)处理器,即三星的S3C2410芯片,两片SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器),每片32M字节;一片64M字节的NAND_flash存储器,一个USB主接口,一个USB从接口,一个10/100M的以太网控制芯片,完成网络访问功能,一个UART(universal asynchronous receiver/transmitter,通用异步接收/发送装置)接口,一个RTC(Real Time Clock,实时时钟),一个5V转3.3V和1.8V的电源管理模块,一个20针的JTAG(Joint Test Action Group,联合测试行动小组)调试接口。具体元器件见表1-1。

表1-1 具体元器件 芯片名称 S3C2410 K9F1208 AX88796 AS1117-3.3 AS1117-1.8 MAX3232 IMP811-S 数量 1 1 1 1 1 1 1 功能 ARM920T,中央处理器 海量存储器,64MB 10/100M以太网控制器 5V转3.3V 5V转1.8V RS232转换 复位 板上标号 S3C2410X K9F1208U AX88796 AS1117-3.3 AS1117-1.8 IMP811 HY57V561620 2 动态存储器(SDRAM),32MB/片 HY57V561620 2

2.核心板资源的具体介绍 1)电源模块

在S3C2410 CPU板上由于其内核采用1.8V,I/O接口采用3.3V供电,因此需要将通用的5V转换成1.8V和3.3V。

2)NAND_FLASH海量存储器单元

该存储单元在板卡上标号为K9F1208U,选用4MB字节的K9F1208U,8位数据总线,该芯片由S3C2410的相关引脚直接控制, Nand_Flash可以存放数据和程序,但需要特定的指令进行读写。

3)同步动态存储器单元

该存储单元在板卡上标号为HY57V561620。选用两片8MB字节的 HY57V561620,32位数据总线。

4)RS232串口单元

该存储单元在板卡上标号为UART0(CROSS/F),选用了MAX3232电压转换芯片,进行PC机与CPU板的串口通讯。

5)主/从USB单元

该单元在板卡上标号为USB-HOST和USB-DEVICE,通过S3C2410内部的USB主控制器和USB设备控制器进行控制。

6)网络单元

该存储单元在板卡上标号为AX88796,选用了ASIX公司的AX88796网络芯片,传输速率为10/100M自适应,16位数据总线传输。

7)JTAG单元

JTAG是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。通过JTAG接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的手段。目前JTAG接口的连接有两种标准,即14针接口和20针接口,EL-ARM-860核心板上使用的是20针接口。接口定义见表1-2。

表1-2 接口定义 引 脚 1 2 3 4、6、8、10、12、 14、16、18、20 5

名 称 VTref VCC nTRST GND TDI 描 述 目标板参考电压,接电源 接电源 测试系统复位信号 接地 测试数据串行输入 3

7 9 11 13 15 17、19 TMS TCK RTCK TDO nRESET NC 测试模式选择 测试时钟 测试时钟返回信号 测试数据串行输出 目标系统复位信号 未连接 4.3 实验箱底板的资源介绍

1. 概述

实验箱底板上的资源丰富,具体的实验单元有:LCD模块,触摸屏模块,语音单元模块,串口2模块,USB设备模块,电源模块,数字输入输出模块,键盘模块,CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)模块,键盘数码管模块,SD(MMC)卡模块,A/D转换模块,信号源发生器模块。以及PS2鼠标键盘接口, Tech_V总线接口,E_LAB总线接口等等。

实验箱上的底板详细具体资源见表1-3。

表1-3 底板具体资源 单元名称 LCD模块 触摸屏模块 语音模块 串口1模块 关键控制芯片 S3C2410内置LCD控制器 ADS7843 UDA1341TS MAX3232CPE 功能 液晶显示 完成触摸响应 语音模拟信号采集 完成与PC机的串行数据的转换 完成PC机与实验箱的USB通信控制 中断请求,数码管显示 完成数据锁存,数据发送 SD(MMC)卡命令的发送,数据的读取 采集模拟信号 自动产生信号源 备注 640x480,8.4吋,65536色 采样率最高48KHz; 最高串行通信率为115200 bps. USB1.1 USB设备模块 PDIUSBD12 键盘数码管模块 数字输入输出模块 SD(MMC)卡模块 HD7279A 4X4键,8位数码管 74LS273,244 8位数据 W86L388D S3C2410内置A/D转换器 最高时钟25MHz A/D转换模块 E_LAB总线接口 信号源模块 电源模块 10位8路 留有扩展接口 100Hz的方波和正弦波 5V,+12V,-12V 4

PS2鼠标键盘接口 PS2键盘鼠标控制模块 硬件扩展口(有扩展板) 扩展出标准的键盘鼠标插孔 AT89C2051

2. 底板资源的具体介绍

1)模拟输入输出接口单元

8bit的数字量输入(由八个拔码开关产生或插孔),通过SI0---SI7跳线位控制连接至74LS244缓冲;8bit的数字量输出通过74LS273锁存输出(八个LED灯显示及插孔)。输入开关拔至L处,表示输入一个2进制的“0”值,至H处,表示输入一个2进制的“1”值, I0—I7为244输入口,O0—O7为273输出口。 2)键盘数码管模块

键盘接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同时驱动8位LED(Light-Emitting Diode,发光二极管)数码管或(64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。在该实验系统中,仅提供了16个键。 3)USB设备模块

USB(Universal Serial Bus,通用串行总线)设备模块,采用了飞利浦的USB设备控制芯片PDIUSBD12,该芯片遵从USB1.1规范,最高通信率12Mbps,该单元位于实验箱的左下角。D3为通信状态指示灯。使用外部中断4来响应中断请求。 4)串口1模块

串口1模块,采用了美信的MAX3232CPE芯片,通过它可以把PC的电信号转换成实验箱可以使用的信号,它的最高串行通信波特率为115200bps. 5)音频模块

语音的模拟信号的编解码采用了UDA1341TS芯片。该芯片有两个串行同步变换通

道、D/A转换前的差补滤波器和A/D变换后的滤波器,最大采样速率48kb/s。 6)LCD模块

本实验系统仅选用了LCD(Liquid Crystal Display,液晶显示器)屏,LCD的控制器

使用S3C2410的内部集成的控制器,LCD屏选用的是8.4吋,6400X480像素,65536色的彩屏。 “LCD_ON/OFF”按键,控制着LCD屏的电源,是电源的开关。

5

7)触摸屏模块

S3C2410内部具有触摸屏控制器,在底板跳线是ARM9的时候,触摸屏直接与S3C2410连接,由CPU直接控制。

8)SD(MMC)卡单元

SD(secure digital memory card,安全数码卡)卡单元或MMC(multi-media card,多媒体卡)卡单元采用了华邦公司的W86L388D的SD(MMC)卡的控制器,它的最高时钟率为25MHz,能够使用1线或4线传输数据及指令,它通过初始化配置能够使用MMC卡。D12,通信状态指示灯,D13卡识别指示灯。 9)A/D转换单元

A/D转换单元,采用S3C2410内置的A/D转换器,它包含一个8路模拟输入混合器,模数转换。最大转换速率:100KSPS,输入电压范围:0-2.5V。

10)信号源单元

信号源单元使用TI公司的TLC2272,是双通道运算放大器,可以产生方波。 11)PS2单元

PS2单元中S5为复位键,KEYBOARD接口为键盘接口,MOUSE为鼠标接口。D1为数据传输指示灯。控制芯片为AT2051。

五、实验步骤

1. 在ADS1.2下建立工程 1. 双击

图标,运行 ADS1.2集成开发环境(CodeWarrior for ARM Developer

Suite)。弹出画面如图1-2 所示。

图1-2 ADS1.2集成开发环境

2.选择File|New 菜单,在打开的New对话框中,选择Project 选项卡,其中共有7项,ARM Executable Image是ARM的通用模板。选中它即可生成ARM的ELF格式的执行文件,

6

新建工程选项卡如图1-3所示。

图1-3 新建工程

然后在 Project name栏中输入项目的名称,以及在 Location 栏中点击 Set ,选 桌面 为其存放的位置(也可选其他位置)。按 保存 回到图1-3 。按 确定 保存项目。弹出如图1-4 所示的对话框。

图1-4 Debug版本选项框

3.点击下拉按钮,在弹出的下拉菜单中,选择 Debug 版本,如图1-5所示。用 Debug 生成的目标文件能包含所有的调试信息。

图1-5 调试版本菜单

4.为了对Debug版本进行参数设置,点击 Edit|Debug Settings ,弹出的图1-6 。选中Target Setting项。

7

图1-6 Debug Settings选项卡

在Post-linker栏中选中ARM fromELF项。这是为生成可执行的代码的初始开关。 5. 在图1-6中,点击ARM Assembler ,弹出图1-7。在Architecture or Processer栏中选ARM920T。这是要编译的CPU核。

图1-7 ARM Assembler 选项卡

6.在图1-7中,点击ARM C Compliler ,弹出与图1-7 类似的画面。在Architecture or Processer栏中选ARM920T。这是要编译的CPU核。

7.在如图1-7中,点击ARM linker ,弹出的图1-8。在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址0x30000000,RW Base栏中填写程序数据存放的起始地址0x30000000。该地址是属于SDRAM的地址。

8

图1-8

点击options 按钮,弹出图1-9。在Image entry point框里填写程序代码的入口地址,通常入口点Image entry point 为0x30000000,ro_base也为0x30000000。

图1-9

点击Layout 按钮,弹出图1-10 。在Place at beginning of image框内,需要填写项目的入口程序的目标文件名。如果整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。它的作用是通知编译器,整个项目是从该段开始运行的。

9

图1-10

8. 在图1-10中,点击ARM fromELF项,弹出图1-11。在Output file name栏中设置输出文件名 .bin 。在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件。图1-11中使用的是test.bin 。点击 OK 保存文件。

图1-11

9. 到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装的目录下的Stationary 目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。这样,就能在图1-2中看到该模板。

10.新建项目工程后,就可以执行菜单Project|Add Files ,把和工程所有相关的文

10

件加入。ADS1.2不能自动进行文件分类,用户必须通过Project|Create Group来创建文件夹,然后把加入的文件选中,移入文件夹。或者鼠标放在文件填加区,右键点击即出菜单,如图1-12所示。

图1-12

先选Add Files,加入文件;再选Create Group,创建文件夹,然后把文件移入文件夹内。可以根据自己习惯,点击 Edit|Preference,对文本的颜色、字体大小、形状,变量、函数的颜色等进行设置,如图1-13所示。

图1-13

2. 在ADS1.2下的仿真、调试

①连上调试电缆;将CPU板上的串口和PC机的串口相连;接上电源线。 ②双击快捷方式图标

。屏幕显示图1-14。

11

图1-14

③双击Quick Connect按钮(即图1-14中画圈处)。弹出图1-15。在图1-15中,选择Serial。

图1-15

④按照图1-16进行设置。然后单击Connect。

图1-16

⑤下一步是进入VIVI状态。方法是:按住PC机的“空格”键不放,给实验箱通电。如果实验箱已经处于通电状态,则按住PC机的“空格”键不放,按下CPU板上的复位按钮。屏幕显示图1-17。

12

图1-17

⑥双击调试软件AXD Debugger快捷方式图标

,屏幕显示图1-18。

图1-18

⑦点击Option|Configure target 选项。屏幕显示图1-19。点击 OK ,屏幕回到图1-18。

图1-19

13

⑧在图1-18中,点击File | Load Image ,加载文件Interrupt.axf (C:\\ADS\\实验六\\Interrupt_Data\\Debug\\Interrupt目录下)。

⑨点击go,即

中的第一个按钮,全速运行程序。实验箱左下方

的两个绿色指示灯LED1和LED2灯会一秒钟一次交替闪烁。

⑩点击stop,即

中的第二个按钮,程序停止运行。

实验二 基于ARM系统资源的实验

当今在ARM领域,被多数嵌入式开发人员使用的集成开发环境(IDE)为ADS, ADS是ARM公司推出的新一代ARM集成开发工具,最新版本为ADS1.2。

在本章中主要是针对ARM的实验开发环境、ARM的汇编、高级语言的使用,以及针对三星的S3C2410的硬件资源进行一系列的实验。这其中包括基于ARM汇编语言程序设计、基于ARM的C语言程序设计、ARM的I/O接口实验、ARM的中断实验、ARM的A/D接口实验、七段数码管和键盘的控制实验、LCD的显示实验、触摸屏实验、音频录放实验、SD卡检测实验和PS2键盘鼠标实验。

(一)基于ARM的汇编语言程序设计简介

一、实验目的

1. 了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程。

二、实验内容

1. 用汇编语言编写一个简单的应用程序。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口直连电缆。

2. PC操作系统WIN2000或WINXP, ADS1.2集成开发环境,仿真调试驱动程序。

四、汇编语言简介

1. ARM汇编的一些简要的书写规范

ARM汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。ARM汇编对标识符的大小写敏感,书写标号及指令时字母大小写要一致。在ARM汇编中,ARM指令、伪指令、寄存器名等可以全部大写或者全部小写,但不要大小写混合使用。注释使用“;”号,注释的内容由“;”号起到此行结束,注释可以在一行的顶格书写。

2. ARM汇编语言程序的基本结构

在ARM汇编语言程序中,是以程序段为单位来组织代码。段是相对独立的指令或数据序

14

列,具有特定的名称。段可以分为代码段的和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。一个汇编程序至少应该有一个代码段,当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行文件。可执行映像文件通常由以下几部分构成:

◆ 一个或多个代码段,代码段为只读属性。

◆ 零个或多个包含初始化数据的数据段,数据段的属性为可读写。 ◆ 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。

链接器根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位置。源程序中段之间的相邻关系与执行的映象文件中的段之间的相邻关系不一定相同。

3. 简单的例子

下面是一个代码段的例子

AREA Init,CODE,READONLY ENTRY

LDR R0, =0x3FF5000 LDR R1, 0x0f STR R1, [R0]

LDR R0, =0x3F50008 LDR R1, 0x1 STR R1, [R0] „ „ END

在汇编程序中,用AREA指令定义一个段,并说明定义段的相关属性,本例中定义了一个名为Init的代码段,属性为只读。ENTRY伪指令标识程序的入口,程序的末尾为END指令,该伪指令告诉编译器源文件的结束,每一个汇编文件都要以END结束。

下面是一个数据段的例子

AREA DataArea, DATA, NOINIT, ALIGN=2 DISPBUF SPACE 200 RCVBUF SPACE 200 „ „

DATA为数据段的标识。

五、实验步骤

1. 本实验仅使用实验教学系统的CPU板,串口。在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。

2.与14页“实验一”中:“2. 在ADS1.2下的仿真、调试”的①至⑦项相同。 3.进入ADS1.2调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验二\\asm_Data\\Debug中

15

的映象文件程序asm.axf。

4.点击go,即2-1界面。

中的第一个按钮,全速运行程序,应出现图

图2-1

5.本程序的功能是连续发送128个字节的ASCII字符。 6.程序源码的分析。

UART后的程序为主程序。 „ „

;//呼叫主应用程序 b UART UART

ldr r0, =GPHCON ;//设置GPIO(RxD0,TxD0引脚) ldr r1, =0x2afaaa str r1, [r0]

ldr r0, =GPHUP ldr r1, =0x7ff

str r1, [r0] ; //GPH[10:0]禁止上拉

ldr r0, =UFCON0 ;//禁用FIFO ldr r1, =0x0 str r1, [r0]

ldr r0, =UMCON0 ;//禁用AFC ldr r1, =0x0 str r1, [r0]

ldr r0, =ULCON0 ;//设置线寄存器 ldr r1, =0x3 ; //正常模式,无奇偶校验,一个停止位,8个数据位 str r1, [r0]

16

ldr r0, =UCON0 ;//设置Uart0控制器

ldr r1, =0x245;//RX边沿触发,TX电平触发,禁用延时中断,使用RX 错误中断,正常操作模式,中断请求或表决模式

str r1, [r0]

ldr r0, =UBRDIV0 ;//设置波特率为115200

ldr r1, =0x1a ;//int(50700000 / 16 / 115200) - 1 = 26 str r1, [r0] mov r1, #100 Delay

sub r1, r1, #0x1 bne Delay

;//开中断

ldr r0, =INTMSK ldr r1, [r0]

and r1, r1, #0xefffffff str r1, [r0]

MOV R5 , #127 ; //设置要打印的字符的个数 MOV R1 , #0x0 ; //设置要打印的字符 LOOP

LDR R3 , =UTRSTAT0 LDR R2 , [R3]

TST R2 ,#0x04 ; //判断发送缓冲区是否为空 BEQ LOOP ;//为空则执行下边的语句,不为空则跳转到LOOP LDR R0 , =UTXH0

STR R1 ,[R0] ;//向数据缓冲区放置要发送的数据 ADD R1, R1, #1

SUB R5 ,R5, #0x01 ;//计数器减一 CMP R5 ,#0x0 BNE LOOP

LOOP2 B LOOP2

(二) 基于ARM的C语言程序设计简介

一、实验目的

1.了解ARM C语言的基本框架,学会使用ARM的C语言编程。

二、实验内容

1. 用C语言编写一个简单的应用程序。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口直连电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序

17

四、ARM C语言简介与使用规则

1. ARM使用C语言编程的意义

在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,并且不易移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。因此,C语言的在ARM编程中具有重要地位。

2. ARM C语言程序的基本规则

在ARM程序的开发中,需要大量读写硬件寄存器,并且尽量缩短程序的执行时间的代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。

C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件紧密相关。

在使用C语言时,要用到和汇编语言的混合编程。当汇编代码较为简洁,则可使用直接内嵌汇编的方法,否则,使用将汇编文件以文件的形式加入项目当中,通过ATPCS的规定与C程序相互调用与访问。

ATPCS,就是ARM、Thumb的过程调用标准(ARM/Thumb Procedure Call Standard),它规定了一些子程序间调用的基本规则。如寄存器的使用规则,堆栈的使用规则,参数的传递规则等。

在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规则。但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规则。具体来说,汇编语言的子程序应满足下面3个条件:

● 在子程序编写时,必须遵守相应的ATPCS规则; ● 堆栈的使用要遵守相应的ATPCS规则; ● 在汇编编译器中使用-atpcs选项。

基本的ATPCS规定,请详见提供的相关PDF文档。

汇编程序调用C程序

汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。 在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。 在调用C程序时,要正确设置入口参数,然后使用BL调用。

C程序调用汇编程序 汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。

18

在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。 在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。

在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410/INC目录下都有一个2410addr.h的头文件,那里面定义了所有关于2410的硬件寄存器的宏,对宏的读写,就能操作2410的硬件。

具体的编程规则同标准C语言。

3. 简单的例子

下面是一个简单的例子 IMPORT Main

AREA Init ,CODE, READONLY; ENTRY

LDR R0, =0x01d00000 LDR R1, =0x245

STR R1 , [R0] ;把0x245放到地址0X01D00000 BL Main ;跳转到Main()函数处的C/C++程序 END ;标识汇编程序结束

以上是一个简单的程序,先寄存器初始化,然后跳转到Main()函数标识的C/C++代码处,执行主要任务,此处的 Main是声明的C语言中的Main()函数。 对宏的预定义,在2410addr.h中已定义,如:

#define rGPGCON (*(volatile unsigned *)0x56000060) //Port G control #define rGPGDAT (*(volatile unsigned *)0x56000064) //Port G data

#define rGPGUP (*(volatile unsigned *)0x56000068) //Pull-up control G 在程序中实现, for(;;){

if(flag==0) {

for(i=0;i<100000;i++); //延时

rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000; rGPGDAT = rGPGDAT & 0xeff | 0x200; for(i=0;i<100000;i++); //延时 flag = 1; } else {

for(i=0;i<100000;i++); //延时

rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000; rGPGDAT = rGPGDAT & 0xdff | 0x100; for(i=0;i<100000;i++); //延时 flag = 0; } }

19

完成对GPIO的G口的操作,该程序可以交替点亮CPU板左下角的两个LED灯。

五、实验步骤

1.进入ADS1.2调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验三\\C_Data\\Debug中的映象文件程序映像C.axf。

2.在ADS调试环境下全速运行映象文件。应出现图2-2 界面。本程序的功能是连续发送55。

图2-2

3.主程序源码分析。

#include \"..\\inc\\config.h\" //嵌入包括硬件的头文件 unsigned char data; //定义全局变量

void Main(void) {

Target_Init(); //目标板初始化,定义串口的硬件初始化在

//target.c中定义

Delay(10); //延时

data = 0x55; //给全局变量赋值 while(1) {

Uart_Printf(\"%x \串口0输出

Delay(10); } }

20

(三) ARM的I/O接口实验

一、实验目的

1. 了解S3C2410的通用I/O接口。

2. 掌握I/0功能的复用并熟练的配置,进行编程实验。

二、实验内容

1. 在实验箱的CPU板上点亮LED灯LED1、LED2,并轮流闪烁。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境。

四、实验原理

S3C2410 CPU 共有117个多功能复用输入输出口,分为8组端口:  4个16位的I/O端口 (PORT C、PORT D、PORT E、PORT G)  2个11位的I/O端口 (PORT B 和PORT H)  1个8位的I/O端口(PORT F)  1个23位的I/O端口(PORT A)

这些通用的GPI/O接口,是可配置的, PORTA除功能口外,它们仅用作输出使用,

剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。 配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。往该地址中写入相应的数据,即可实现功能及数据配置。

五、实验步骤

1.进入ADS1.2调试界面,加载实验程序\\HARDWARE\\ADS\\实验五\\IO_Data\\Debug中的映象文件程序映像IO.axf。

2.在ADS调试环境下全速运行映象文件。观察CPU板左下角的LED1、LED2灯轮流的的闪烁。

(四) ARM的中断实验

一、实验目的

1. 掌握ARM9的中断原理,能够对S3C2410的中断资源及其相关中断寄存器的进行合

理配置。

2. 掌握对S3C2410的中断的编程的方法。

21

二、实验内容

1. 学习响应外部中断请求的配置方法,并通过响应定时器中断,执行中断服务子程序

使CPU板上的LED指示灯LED1、LED2闪烁。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境。

四、ARM的中断原理

在ARM中,有两类中断,一类是IRQ普通中断,另一类是FIQ快速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。FIQ的优先级高于IRQ。同时,它们都属于ARM的异常模式,当一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下,PC指针进而跳入异常向量的地址处,若是IRQ中断,则PC指针跳到0x18处,若是FIQ中断,则跳到0x1C处。异常向量地址处,一般存有中断服务子程序的地址,所以,接下来PC指针跳入中断服务子程序中。当完成中断服务子程序后,PC指针会返回到被打断的程序的下一条地址处,继续执行程序。这就是ARM中断操作的基本原理。

五、三星的2410 ARM处理器的中断的使用

首先,ARM920T CPU 的PSR寄存器中的F位为1,则CPU不会响应中断控制器的FIQ中断,同样,ARM920T CPU 的PSR寄存器中的I位为1,则CPU也不会响应中断控制器的IRQ中断,为使CPU响应中断,须在启动代码中将其设为0,以及使INTMSK寄存器中的相应位置0。

S3C2410共有56个中断源,有26个中断控制器,外部中断EXTIN8~23共用一个中断控制器,外部中断EXTIN4~7共用一个中断控制器,9个UART中断分成3组,共用3个中断控制器,ADC和触摸屏共用一个中断控制器。

中断的优先级是由主组号和从ID号的级别控制的。

中断挂起寄存器主要是提供哪个中断有请求的标志寄存器,相应位置1,则说明有该中断请求产生。若相应位为0,则无该中断请求产生。

中断模式寄存器主要是配置该中断是IRQ型中断,还是FIQ型中断。

中断屏蔽寄存器的主要功能是屏蔽相应中断的请求,即使中断挂起寄存器的相应位已经置1,若中断屏蔽寄存器相应位置1,则中断控制器屏蔽该中断请求,也无法让CPU响应该中断。

INTPND为向量IRQ中断服务挂起状态寄存器,当向量IRQ中断发生时,该寄存器内只有一位被设置,即只有当前要服务的中断标志位置位。通过读它的值,就能判断出哪个中断发生了。在INTPND中相应位写入数据,就能清除掉中断挂起寄存器中的中断请求标志位,

22

以使CPU不再响应中断,其实,CPU响应中断是看中断挂起寄存器中的请求标志位有没有置位,若置位,又屏蔽位打开,ARM920T的PSR的F或I为也打开,那么,CPU就响应中断,否则,有一个条件不成立,则CPU无法响应中断。

六、实验步骤

1进入ADS1.2调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验六\\Interrupt_Data\\Debug中的映象文件程序映像Interrupt.axf。

2.在ADS调试环境下全速运行映象文件。LED1和LED2灯会由于1秒钟发生一次定时中断,而一秒钟闪烁一次。

(五) ARM的DMA实验

一、实验目的

1. 了解并熟悉DMA的概念及其工作原理。 2. 掌握ARM相应的寄存器配置。

二、实验内容

1. 在实验箱的CPU板上运行程序,在串口助手上显示DMA发送的数据!

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口直连电缆。 2. PC操作系统WIN2000或WINXP;ADS1.2集成开发环境;仿真调试驱动程序。

四、实验原理

中断方式是在CPU的控制下进行的,中断方式尽管可以实时的响应外部中断源的请求,但由于它需要额外的开销时间,以及中断处理服务时间,使得的中断的响应频率受到限制。当高速外设与计算机系统进行信息交换时,若采用中断方式, CPU将会频繁的出现中断而不能完成主要任务或者根本来不及响应中断而造成数据的丢失现象,因而传输速率受CPU运行指令速度的限制。采取DMA方式,即(Direct Memory Acess),可以确保外设和计算机系统进行高速信息交换。这种方式是存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。它为高速I/O设备和存储器之间的批量数据交换提供了直接的传输通道。这里,‘直接’的含义是在DMA传输过程中,DMA控制器负责管理整个操作,CPU不参与管理。

S3C2410有4个通道控制器。本节的程序是用DMA方法实现串口数据的发送,故使用BDMA。

五、实验步骤

23

1.进入ADS1.2调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验七\\DMA_Data\\Debug中的映象文件程序映像DMA.axf。

2.在串口助手的接收栏中,将接收50个字符,在串口助手的最下栏可以看到接收的字符数,而此时CPU已经停止,但是串口仍然在发送数据,这些数据的传送就是通过DMA控制器发送的,它没有通过CPU,这说明了DMA的直接存储器访问的功能得以实现。

(六) ARM的A/D接口实验

一、实验目的

1. 学习A/D 接口原理。

2. 掌握S3C2410的AD相关寄存器的配置及编程应用方法。

二、实验内容

1. 在实验箱的CPU板上运行程序,在超级终端及LCD上显示采集到的数据值。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆,串口直连电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。

四、实验原理

A/D 转换器是模拟信号和CPU 之间联系的接口,它是将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D 转换是不可缺少的。

按照转换速度、精度、功能以及接口等因素,常用的A/D转换器有以下两种: a. 双积分型的A/D转换器 b. 逐次逼近型的A/D转换器

五、三星2410的A/D的工作介绍

S3C2410的A/D 转换器包含一个8路模拟输入混合器,可以将模拟输入信号转换成10位数字编码。在AD转换时钟为2.5MHz时,其最大转换率为500KSPS。AD转换操作支持片上采样保持功能和掉电模式。

六、实验步骤

1.拨码开关SW5为选中的A/D转换的通道,值得注意的是本实验系统八个通道可以同时采集一个信号源。实验时要选中采集的通道号,即对应的SW5开关拨到ON状态。如果,8个通道全部选择为ON,则表示用8个通道采集。本实验程序使用通道1采集数据,所以,SW5的1应该拨到ON状态。要给ADIN一个输入信号,可以是底板上的SQUARE信号和SINE信号,也可是外部信号,但是必须注意,接外部电压信号时,要共地,以及信号的电压范围为

24

0—2.5V,切记!!!

2.进入ADS1.2调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验九\\AD_Data\\Debug中的映象文件程序映像AD.axf。

3.在ADS调试环境下,全速运行映象文件。打开LCD电源开关, 检查SW3上选择的是通道几。确认后,观察LCD上1通道当前采集的情况。由于液晶的显示速度比波型慢许多,所以要暂停程序才会看到比较清楚的波形。由于信号源输出后,电压经过缩放和偏置处理。使得的ARM CPU板所采集到的电压值的变化范围不足0—2.5V,故而采集到的数字值,不能满程。

(七) 模拟输入输出接口的实验

一、实验目的

1. 学习模拟输入输出接口的原理。 2. 掌握接口程序实现的基本方法。

二、实验内容

1. 在实验箱的CPU板上运行程序,按下相应的输入带锁键,与它对应的LED灯显

示电平的高低,同时,LCD上显示相应的数据值。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。

四、实验原理及程序分析

本实验为模拟输入输出接口的实验,其基本原理就是使用一片缓冲芯片74LS244来把CPU外面的输入数据写入CPU的并行总线上,之后,并行总线上的数据被一片数据锁存芯片74LS273保留,CPU通过选中锁存芯片,并读取预先设给锁存器地址内的内容,就可以把数据读出,来确定外面的数据的高低。本实验的输入是用8个带锁的按键的按下和未按下两种工作状态来表示输入接口的高低状态,然后,再通过8个LED灯亮和灭两种工作状态,以及LCD上用数据值来清楚的反映各状态的输出显示,从而完成模拟的输入输出接口的实现。

五、实验步骤

1.进入ADS1.2调试界面,加载实验程序\\HARDWARE\\ADS\\实验十\\IO_SIM_Data\\Debug中的映象文件程序映像IO_SIM.axf。

2.在ADS调试环境下全速运行映象文件。LCD上有图形显示后,按下实验箱下部一排中的任一模拟输入的带锁键值,观察8位数码管上方的8个LED灯的亮灭情况,以及LCD

25

上的显示情况。每个按键代表1个数字位,按键均不按下,代表数字量为255,全按下为0,每个按键的都是2的权值,在不按下时,最靠近键盘的按键代表1,之后依次是2;4;8;16;32;64;128。按下时均代表0。该实验是从数据总线上把检测到的数据变化,锁存到锁存器中,然后又从总线上读出数据,显示到LCD上,来模拟I/O实现。

(八) 键盘接口和七段数码管的控制实验

一、实验目的

1. 学习4X4键盘的与CPU的接口原理。

2. 掌握键盘芯片HD7279的使用,及8位数码管的显示方法。

二、实验内容

1. 通过4X4按键完成在数码管上的各种显示功能,以及LCD上显示。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。

四、实验原理

键盘和7段数码管的控制实验,是通过键盘的控制芯片HD7279A来完成的。它的信号线及控制线连接到S3C2410上,驱动线直接连到8位共阴的7段数码管上。由于其芯片的接口电压是5V的,而S3C2410的接口电压是3.3V,所以,HD7279A的信号、控制线经过CPLD把电压转换到3.3V,然后送入CPU中。

HD7279是一片具有串行接口的可同时驱动8位共阴式数码管或独立的LED的智能显示驱动芯片。该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。内部含有译码器可直接接受BCD码或16进制码并同时具有两种译码方式。此外还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等,具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。

五、实验步骤

1.进入ADS1.2调试界面,加载实验程序\\HARDWARE\\ADS\\实验十一\\Key_Led_Data\\Debug中的映象文件程序映像Key_Led.axf。

2.在ADS调试环境下全速运行映象文件。按下任意键值,观察数码管的显示。 3.按键说明: “0”键表示数码管测试,8个数码管闪烁,“4”键表示数码管复位,“1” 键表示数码管右移8位,“2” 键表示数码管循环右移,“9” 键表示数码管左移8位,“A” 键表示数码管循环左移。其他按键在最右两个数码管上显示键值。

26

(九)音频录放实验

一、实验目的

1. 掌握DMA的数据传输方式。 2. 掌握IIS音频接口的使用方法。

二、实验内容

1. 通过使用音频接口的IIS格式,采集音频的模拟信号,然后用DMA的方式循环播 放以及实时播放。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆,音频线。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。

四、实验原理

音频的录放是通过一片A/D,D/A芯片,作为音源的控制器,它把采集到的音频模拟信号通过配置其寄存器,转换成IIS格式的数字信号送给S3X2410的IIS控制器,此时,CPU用DMA控制器把得到的数字信号存放到一块内存空间上,当存完之后,DMA控制器把已存的数字数据通过IIS格式发送给A/D,D/A芯片,由该芯片转换成音频模拟信号送出。该DMA控制器能实现循环播放,也能实现实时播放。

五、实验步骤

1.打开超级终端,接入电源线,系统上电,同时按住“空格”键,进入VIVI状态。打开音频的左右声道开关。如果喇叭声音过大,顺时针调小LCD旁边的音量旋钮到合适音量。 2.进入ADS1.2调试界面,加载\\实验程序\\HARDWARE\\ADS\\实验十四\\IIS_Data\\Debug中的映象文件程序映像IIS.axf。

3.在ADS调试环境下全速运行映象文件。

4.把音频线插入实验箱的语音单元中的绿色的音频(LINE_IN)输入插孔中。 5.此时,在喇叭中应有音乐实时播出。停止运行ADS调试软件,音乐停止播放;运行ADS调试软件,音乐继续播放。适当调整左右声道的音量。实验完毕,关闭ADS开发环境,再关闭电源。

(十二) SD卡测试实验

一、实验目的

1. 了解SD卡的基本构成。

27

2. 理解SD卡工作原理。 3. 通过编程实现对SD卡的控制。

二、实验内容

1. 插拔SD卡的检测实验。 2. 读取SD卡的ID号的实验。

三、实验设备

1. EL-ARM-860教学实验箱,PentiumII以上的PC机,仿真调试电缆。 2. PC操作系统WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。

四、实验原理

SD存储卡是近来推出的一种满足音频、视频的消费电子类的产品,它具有安全性、兼容性以及良好的适应环境需求等特性。它的SDMI标准使得它存储速度更快,容量更大。同时,它也兼容MMC卡。

SD卡的接口是9针接口,其中,电源线3根,数据线4根,一根时钟线CLK,一根命令线CMD,工作频率最高25MHz。通信协议属于其标准规范中的一部分。图2-3为SD卡的结构组成图。

图2-3 SD卡的结构组成图

在本实验中,S3C2410通过几根控制线和一条中断请求线与一片SD卡(MMC卡)的桥接控制芯片W86L388D相连,利用W86L388D控制芯片完成对SD卡的命令的发送和数据的传输功能。也就是说,给SD卡送命令,之后,从SD卡上读取数据,把数据送到数

28

据总线上。写数据也是先送到数据总线上,经W86L388D送给SD卡存储。SD卡的协议命令,均由CPU给W86L388D编程实现。

五、实验步骤

1.进入ADS1.2调试界面,加载实验程序\\HARDWARE\\ADS\\实验十六\\SD_Data\\Debug中的映象文件程序映像SD_check.axf。插入SD卡,打开LCD的电源开关。

2.在ADS调试环境下全速运行映象文件。则LCD屏上会显示出SD卡的ID卡号。这是通过给SD卡发送读卡命令后,SD卡把其ID号送回给CPU处理,ARM把得到的ID卡号显示在屏上。

29

因篇幅问题不能全部显示,请点此查看更多更全内容