S3C2410A实验指导书.docx

上传人:b****3 文档编号:27496705 上传时间:2023-07-02 格式:DOCX 页数:66 大小:2.11MB
下载 相关 举报
S3C2410A实验指导书.docx_第1页
第1页 / 共66页
S3C2410A实验指导书.docx_第2页
第2页 / 共66页
S3C2410A实验指导书.docx_第3页
第3页 / 共66页
S3C2410A实验指导书.docx_第4页
第4页 / 共66页
S3C2410A实验指导书.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

S3C2410A实验指导书.docx

《S3C2410A实验指导书.docx》由会员分享,可在线阅读,更多相关《S3C2410A实验指导书.docx(66页珍藏版)》请在冰豆网上搜索。

S3C2410A实验指导书.docx

S3C2410A实验指导书

第1章实验要求

ARM实验室是电子信息科学与技术的专业实验室。

旨在培养学生对嵌入式系统设计和开发的能力,使学生加深对嵌入式系统设计思想的理解,掌握ARM实验平台进行程序设计、开发的技巧和方法,进而增强学生的实践能力和动手能力,提高其创新意识。

实验室还为大学生电子设计大赛,电子类学生的毕业设计、课程设计以及科研训练提供实验环境。

利用嵌入式实验开发系统。

实验要求

在实验过程中,要求学生做到:

(1)预习实验指导书有关部分,认真做好实验容的准备,就实验可能出现的情况提前作出思考和分析。

(2)仔细观察上机编程时出现的各种现象,记录主要情况,作出必要说明和分析。

(3)认真书写实验报告。

实验报告包括实验目的和要求,实验情况及其分析,写出程序设计说明,给出源程序框图和清单。

(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。

(5)实验课程不迟到,如有事不能出席,所缺实验一般不补。

实验的验收将分为两个部分。

第一部分是上机操作,包括检查程序运行和即时提问。

第二部分是提交书面的实验报告。

第2章预备知识

一、ADS1.2安装

1.打开安装光盘的ads1.2文件夹,双击SETUP.EXE,进行安装,按默认设置,也可适当更改安装路径。

2.

安装完成后,出现一个添加licence的界面,

3.选中ADS1.2目录下的crack文件夹中的licence.dat文件,点下一步,直至结束。

至此,完成软件的安装。

二、ADS1.2下使用Wiggler电缆调试

1.安装Rdi.dll

将文件夹下的Rdi.dll、dev.ini、dev文件夹一同拷贝到xx:

\ProgramFiles\ARM\ADSv1_2\Bin目录下(推荐目录);

2.安装并口驱动

1)运行GiveIOInstaller.exe

2)选择InstallService

三、配置ads1.2软件

打开AXD,选择菜单”options”中的”configuertarget…”,如下图:

点击”ADD”,再弹出的列表框中找到开始拷贝的RDI.dll,如下图:

打开后再点击Configure进行配置,点击”OK”,如果此时连接了Wiggler电缆和实验箱,即可进入正确的调试模式,如下图:

四、H-JTAG驱动程序的使用

1.安装操作说明

首先,将H-JTAGv2.0.exe应用程序双击,安装。

2.安装到你的C盘或D盘的programfiles下,安装成功后,在桌面上会出现图1左下方的图标H-JTAG。

连上wiggler电缆,双击图标H-JTAG,弹出图1的右面的对话框。

3.若检测,连接成功,最小化H-JTAG。

到开始/程序/ARMDeveloperSuite1.2目录下打开ADS1.2的调试器AXD。

将弹出图8。

点击,深色处,之后点击OK。

(注意,这步前,应该正确安装H-JTAGV2.0.exe程序)

 

第3章S3C2410A实验

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

一、实验目的

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

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

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

二、实验容

1.学习ADS1.2开发环境2.用汇编语言编写一个简单的应用程序3.用C语言编写一个简单的应用程序

三、实验设备

1.EL-ARM-830+教学实验箱,PC机,仿真调试电缆。

2.ADS1.2集成开发环境,仿真调试电缆驱动程序

四、实验步骤

1.ADS1.2下建立工程

2)运行ADS1.2集成开发环境(CodeWarriorforARMDeveloperSuite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARMExecutableImage是ARM的通用模板。

选中它即可生成ARM的执行文件。

同时,如图2-1-1

图2-1-1

还要在,Projectname栏中输入项目的名称,以及在Location中输入其存放的位置。

按确定保存项目。

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

图2-1-2

4)在如图2-1-3中,点击DebugSetting按钮,弹出2-1-4图,选中TargetSetting

图2-1-3

图2-1-4

项,在Post-linker栏中选中ARMfromELF项。

按OK确定。

这是为生成可执行的代码的初始开关。

5)在如图2-1-5中,点击ARMAssembler,在ArchitectureorProcesser

图2-1-5

栏中选ARM920T。

这是要编译的CPU核。

6)在如图2-1-6中,点击ARMCCompliler,在ArchitectureorProcesser栏中选ARM920T。

这是要编译的CPU核。

图2-1-6

7)在如图2-1-7中,点击ARMlinker,在outpur栏中设定程序的代码段地址,以及数据使用的地址。

图中的ROBase栏中填写程序代码存放的起始地址,RWBase栏中填写程序数据存放的起始地址。

该地址是属于SDRAM的地址。

图2-1-7

图2-1-8

在options栏中,如图2-1-8,Imageentrypoint要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0x30000000—0x33ffffff中选值,这是64MSDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字节对齐的地址(ARM状态)。

通常入口点Imageentrypoint为0x30000000,ro_base也为0x30000000。

在Layout栏中,如图2-1-9,在Placeatbeginningofimage框,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。

它的作用是通知编译器,整个项目的开始运行,是从该段开始的。

图2-1-9

8)在如图2-1-10中,即在DebugSetting对话框中点击左栏的ARMfromELF项,在Outputfilename栏中设置输出文件名*.bin,前缀名可以自己取,在Outputformat栏中选择Plainbinary,这是设置要下载到flash中的二进制文件。

图2-1-10中使用的是test.bin.

图2-1-10

9)到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。

首先,要将该项目工程文件改一个合适的名字,如S3C2410ARM.mcp等,然后,在ADS1.2软件安装的目录下的Stationary目录下新建一个合适的模板目录名,如,S3C2410ARMExecutableImage,再将刚刚设置完的S3c2410ARM.mcp项目文件存放到该目录下即可。

这样,就能在图2-1-10中看到该模板。

10)新建项目工程后,就可以执行菜单Project|AddFiles把和工程所有相关的文件加入,ADS1.2不能自动进行文件分类,用户必须通过Project|CreateGroup来创建文件夹,然后把加入的文件选中,移入文件夹。

或者鼠标放在文件填加区,右键点击,即出!

如图2-1-11

图2-1-11

先选AddFiles,加入文件,再选CreateGroup,创建文件夹,然后把文件移入文件夹。

读者可根据自己习惯,更改Edit|Preference窗口关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。

如图2-1-12。

图2-1-12

2.ADS1.2下仿真、调试

在ADS1.2下进行仿真调试,首先需要一根仿真调试电缆。

其驱动程序的安装和使用在光盘中的\实验软件\ARM9_RDI中,里面有相关的文档。

在连上调试电缆后,给实验箱上电,

打开调试软件AXDDebugger。

点击File|loadimage加载文件ADS.axf(\实验程序\HARDWARE\ADS\实验三\ADS\ADS_data目录下)。

打开超级终端,设置其参数为:

波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。

点击全速运行,出现图2-1-13的界面:

图2-1-13

在最后介绍调试按钮,

上图,左起第一个是全速运行,第二个是停止运行,第三个跳入函数部,第四个单步执行,第五个跳出函数。

到此,开发环境就全部介绍完了,这是ARM的开发基础。

1.ARM使用C语言编程是大势所趋

在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,并且不易移植。

由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。

因此,C语言的在ARM编程中具有重要地位。

2.ARMC语言程序的基本规则

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

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

在使用C语言时,要用到和汇编语言的混合编程。

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

ATPCS,就是ARM、Thumb的过程调用标准(ARM/ThumbProcedureCallStandard),它规定了一些子程序间调用的基本规则。

如寄存器的使用规则,堆栈的使用规则,参数的传递规则等。

在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。

而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规则。

但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规则。

具体来说,汇编语言的子程序应满足下面3个条件:

●在子程序编写时,必须遵守相应的ATPCS规则;

●堆栈的使用要遵守相应的ATPCS规则;

●在汇编编译器中使用-atpcs选项。

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

汇编程序调用C程序

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

在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。

在调用C程序时,要正确设置入口参数,然后使用BL调用。

3.C程序调用汇编程序

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

在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。

在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。

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

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

4.简单的小例子

下面是一个简单的小例子

IMPORTMain

AREAa,CODE,READONLY;

ENTRY

LDRR0,=0x01d00000

LDRR1,=0x245

STRR1,[R0];把0x245放到地址0X01D00000

BLMain;跳转到Main()函数处的C/C++程序

END;标识汇编程序结束

以上是一个简单的程序,先寄存器初始化,然后跳转到Main()函数标识的C/C++代码处,执行主要任务,此处的Main是声明的C语言中的Main()函数。

五、实验步骤

1.本实验仅使用实验教学系统的CPU板,串口。

在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。

2.在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。

3.检查连接是否可靠,可靠后,接入电源线,系统上电。

4.打开ADS1.2开发环境,从里面打开C.mcp项目文件,进行编译。

5.编译通过后,进入ADS1.2调试界面,加载C_Data\Debug中的映象文件程序映像C.axf。

6.打开/实验软件/tools/目录下的串口调试助手工具,配置为波特率为115200,校验位无,数据位为8,停止位为1。

不要选十六进制显示。

之后,在ADS调试环境下全速运行映象文件,应出现图2-3-1界面。

本程序连续发送55。

图2-3-1

下边分析一下主程序的源码。

在C程序前的部分为系统的初始化,这在后边BOOTLOADER的章节里,要详细介绍。

#include"..\inc\config.h"//嵌入包括硬件的头文件

unsignedchardata;//定义全局变量

voidMain(void)

{

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

//target.c中定义

Delay(10);//延时

data=0x55;//给全局变量赋值

while

(1)

{

Uart_Printf("%x",data);//串口0输出

Delay(10);

}

}

把data=0x55;语句中的0x55,换成其他8位数,重新编译,下载,看看串口工具上输出是什么容。

实验二ARM的I/O接口实验

一、实验目的

1.了解S3C2410的通用I/O接口2.掌握I/0功能的复用并熟练的配置,进行编程实验

二、实验容

1.利用ADS1.2编译,在实验箱的CPU板上点亮LED灯LED1、LED2,并轮流闪烁!

2.keil(mdk4.12)点亮LED灯LED1、LED2,并轮流闪烁!

三、实验设备

1.EL-ARM-830+教学实验箱,仿真调试电缆。

2.ADS1.2集成开发环境,仿真调试驱动程序。

3.kiel+Proteus软件。

四、实验原理

S3C2410CPU共有117个多功能复用输入输出口,分为8组端口:

●4个16位的I/O端口(PORTC、PORTD、PORTE、PORTG)

●2个11位的I/O端口(PORTB和PORTH)

●1个8位的I/O端口(PORTF)

●1个23位的I/O端口(PORTA)

这些通用的GPI/O接口,是可配置的,PORTA除功能口外,它们仅用作输出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。

配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。

往该地址中写入相应的数据,即可实现功能及数据配置。

现用G口举例说明。

对于G口如表2-1、表2-2、表2-3,

表2-1

Register

Address

R/W

Description

ResetValue

GPGCON

0x56000060

R/W

ConfigurethepinsofportG

0x0

GPGDAT

0x56000064

R/W

ThedataregisterforportG

Undefined

GPGUP

0x56000068

R/W

Pull-updisableregisterforportG

0xF800

Reserved

0x5600006C

Reserved

表2-2

PortG

SelectablePinFunctions

GPG15

Input/output

EINT23

nYPON

GPG14

Input/output

EINT22

YMON

GPG13

Input/output

EINT21

nXPON

GPG12

Input/output

EINT20

XMON

GPG11

Input/output

EINT19

TCLK1

GPG10

Input/output

EINT18

GPG9

Input/output

EINT17

GPG8

Input/output

EINT16

GPG7

Input/output

EINT15

SPICLK1

GPG6

Input/output

EINT14

SPIMOSI1

GPG5

Input/output

EINT13

SPIMISO1

GPG4

Input/output

EINT12

LCD_PWREN

GPG3

Input/output

EINT11

nSS1

GPG2

Input/output

EINT10

nSS0

GPG1

Input/output

EINT9

GPG0

Input/output

EINT8

表2-3

GPGDAT

Bit

Description

GPG[15:

0]

[15:

0]

Whentheportisconfiguredasinputport,datafromexternalsourcescanbereadtothecorrespondingpin.Whentheportisconfiguredasoutputport,datawritteninthisregistercanbesenttothecorrespondingpin.Whentheportisconfiguredasfunctionalpin,undefinedvaluewillberead.

表2-4

GPGUP

Bit

Description

GPG[15:

0]

[15:

0]

0:

Thepull-upfunctionattachedtotothecorrespondingportpinisenabled.

1:

Thepull-upfunctionisdisabled.

(GPG[15:

11]are"pull-updisabled"stateattheinitialcondition.)

也就是说,在地址0x56000060中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。

当G口某管脚配置成输出端口,则在GPDAT对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。

若配置为功能管脚,则该管脚变成具体的功能脚。

其他端口配置请参见PDF文挡。

在程序中对GPI/O各寄存器的读写实现,是通过给宏赋值实现的。

这些宏在2410addr.h中定义;具体如:

#definerGPGCON(*(volatileunsigned*)0x56000060)//Gcontrol

#definerGPGDAT(*(volatileunsigned*)0x56000064)//Gdata

#definerGPGUP(*(volatileunsigned*)0x56000068)

//Pull-upcontrolG

因此,配置端口G,在程序中也就是用如下语句即可:

rGPGCON=rGPGCON&0xFFFF0FFF|0x00050000;

//配置第8、第9位为输出管脚

rGPGDAT=rGPGDAT&0xFCFF|0x0100;

//配置第8位输出为高电平,第9位输出低电平。

rGPGDAT=rGPGDAT&0xFCFF|0x0200;

//配置第8位输出为低电平,第9位输出高电平。

#definerGPGCON(*(volatileunsigned*)0x56000060)//PortGcontrol

#definerGPGDAT(*(volatileunsigned*)0x56000064)//PortGdata

#definerGPGUP(*(volatileunsigned*)0x56000068)//Pull-upcontrolG

inti;

intmain(void){

rGPGCON=rGPGCON&0xfff0ffff|0x00050000;

for(;;){

rGPGDAT=rGPGDAT&0xfcff|0x200;

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

rGPGDAT=rGPGDAT&0xfcff|0x100;

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

}

}

其他的各功能寄存器在2410addr.h中也都有相应的定义,参照该做法,即可把GPI/O管脚配置成输入输出端口,也可把管脚配置成所需的功能管脚。

五、实验步骤

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

2.在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆。

3.检查连接是否可靠,可靠后,接入电源线,系统上电。

4.打开ADS1.2开发环境,从里面打开IO.mcp项目文件,进行编译。

5.编译通过后,进入ADS1.2调试界面,加载实验程序IO_Data\Debug中的映象文件程序映像IO.axf。

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

观察CPU板左下角的LED1、LED2灯轮流的的闪烁!

这是对GPGIO口操作的结果。

具体实现见程序。

六、参考程序

voidMain(void){

inti;

Target_Init();

rGPGCON=rGPGCON&0xfff0ffff|0x00050000;

while

(1){

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

rGPGDAT=rGPGDAT&0xfcff|0x0200;

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

rGPGDAT=rGPGDAT&0xfcff|0x100;

}

}

实验三ARM的中断实验

一、实验目的

1.掌握ARM9的中断原理,能够对S3C2410的中断资

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

当前位置:首页 > 表格模板 > 调查报告

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

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