嵌入式软件开发基础实验报告 存储器及IO接口.docx
- 文档编号:4272592
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:11
- 大小:182.89KB
嵌入式软件开发基础实验报告 存储器及IO接口.docx
《嵌入式软件开发基础实验报告 存储器及IO接口.docx》由会员分享,可在线阅读,更多相关《嵌入式软件开发基础实验报告 存储器及IO接口.docx(11页珍藏版)》请在冰豆网上搜索。
嵌入式软件开发基础实验报告存储器及IO接口
上海电力学院
嵌入式软件开发基础实验报告
题目:
【ARM】存储器实验4.1及I/O接口实验4.2
专业:
电子科学与技术
年级:
姓名:
学号:
4.1存储器实验
一、实验目的
(1)通过实验熟悉ARM的内部存储空间分配;
(2)掌握对存储区域进行访问的方法。
(3)熟悉用寄存器配置存储空间的方法。
二、实验设备
硬件:
EmbestEduKit-III实验平台,EmbestARM标准/增强型仿真器套件,PC机。
软件:
EmbestIDEProARM集成开发环境,Windows98/2000/NT/XP。
三、实验内容
掌握S3C44B0X处理器对存储空间的配置和读写访问的方法,
熟练使用命令脚本文件对ARM存储控制寄存器进行正确配置;
使用汇编编程,对RAM按字、半字和字节读写;
C语言编程,对RAM按字、半字和字节读写。
四、实验原理
1.存储控制器
S3C44B0X处理器的存储控制器可以为片外存储器访问提供必要的控制信号,它主要包括以下特点:
支持大、小端模式(通过外部引脚来选择)地址空间。
包含8个地址空间,每个地址空间的大小为32M字节,总共有256M字节的地址空间。
所有地址空间都可以通过编程设置为8位、16位或32位对准访问。
8个地址空间中,6个地址空间可以用于ROM、SRAM等存储器,2个用于ROM、SRAM、FP/EDO/SDRAM等存储器。
7个地址空间的起始地址及空间大小是固定的。
1个地址空间的起始地址和空间大小是可变的。
所有存储器空间的访问周期都可以通过编程配置。
提供外部扩展总线的等待周期。
支持DRAM/SDARM自动刷新。
支持地址对称或非地址对称的DRAM。
2.电路设计
EmbestEduKit-III实验板上的存储系统包括一片1M×16bit的Flash(SST39VF160)和一片4M×16bit的SDRAM(HY57V65160B)。
如图4-2Flash连接电路所示,处理器是通过片选nGCS0与片外Flash芯片连接。
由于是16bit的Flash,所以用CPU的地址线A1-A20来分别和Flash的地址线A0-A19连接。
Flash的地址空间是从0x00000000~0x00200000
五、实验操作步骤
1.准备实验环境
使用Embest仿真器连接目标板,使用EmbestEduKit-III实验板附带的串口线,连接实验板上的UART0和PC机的串口。
2.串口接收设置
在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。
3.打开实验例程
1)拷贝光盘CD1\Software\EduKit44b0文件夹到EmbestIDE\Examples\Samsung\目录下;
2)使用EmbestIDE通过EmbestJTAG仿真器连接实验板,打开实验例程目录4.1_memory_test子目录下的memory_test.pjf例程,编译链接工程;
3)点击IDE的Debug菜单,选择RemoteConnect项或F8键,远程连接目标板;
4)点击IDE的Debug菜单,选择Download下载调试代码到目标系统的RAM中;
5)打开Memory窗口,点击Memory1在地址输入栏中输入0x0c010000,点击Memory2在地址输入栏中输入0x0c020000;
6)在工程管理窗口中双击main.c就会打开该文件,分别在s_ram_test();以及c_ram_test();设置断点后,点击Debug菜单Go或F5键运行程序;
7)当程序停留到断点后点击Debug菜单下的Stepinto或F11键,进入函数体程序,再点击Stepover或F10键执行程序,并在Memory窗口观察地址单元0x0c010000和0x0c020000内容的变化;
六、实验参考程序
/*******************************************************************
*名称:
sRWramtest
*功能:
使用汇编语言读/写已初始化的ARM区
********************************************************************/
sRWramtest:
LDRr2,=0x0C010000/*字长读*/
LDRr3,=0x55AA55AA
STRr3,[r2]/*字长写*/
LDRr2,=0x0C010004
LDRHr3,[r2]/*半字读*/
LDRr3,=0x55AA
STRHr3,[r2],#2/*半字写*/
STRHr3,[r2],#2
LDRr2,=0x0C010008
LDRBr3,=0xAA/*字节读*/
STRBr3,[r2],#1/*字节读*/
LDRBr3,=0x55
STRBr3,[r2],#1
LDRBr3,=0xAA
STRBr3,[r2],#1
LDRBr3,=0x55
STRBr3,[r2]
/*********************************************************************************************
*名称:
cRWramtest
*功能:
使用高级语言读/写已初始化的ARM区
*********************************************************************************************/
//RAM访问示例
#defineRWram(*(unsignedlong*)0x0C010200)
voidcRWramtest(void)
{
unsignedlong*ptr=0x0C010200;//R/WRAM
unsignedshort*ptrh=0x0C010200;//R/WRAM
unsignedchar*ptrb=0x0C010200;//R/WRAM
chari
unsignedlongtmpb;
unsignedshorttmph;
unsignedchartmpw;
*ptr=0x55AA55AA;
tmpw=*ptr;//字长读
*ptr=tmpw+1;//字长写
tmph=*ptrh;//半字读
*ptrh=tmph+1;//半字写
tmpb=*ptrb;//字节读
*ptrb=tmpb+1;//字节写
}
七、实验小结
这是第一次在ARM实验课上运用到试验箱的操作,第一次接触这个软件,但通过前几次实验有初步的了解,而如今又是第一次接触试验箱,对其上的每个模块也都有了新的认识。
通过摸索与了解,本次实验也较为简单,通过实验熟悉了ARM的内部存储空间分配,也较为肤浅地掌握对存储区域进行访问的方法。
熟悉用寄存器配置存储空间的方法。
I/O接口实验4.2
一、实验目的
(1)掌握S3C44B0X芯片的I/O口控制寄存器的配置。
(2)通过实验掌握ARM芯片使用I/O口控制LED显示。
(3)了解ARM芯片中复用I/O口的使用方法。
二、实验设备
硬件:
EmbestEduKit-III实验平台,EmbestARM标准/增强型仿真器套件,PC机。
软件:
EmbestIDEProARM集成开发环境,Windows98/2000/NT/XP。
三、实验内容
编写程序,控制实验平台的发光二极管LED1206和LED1207,使它们有规律地点亮和熄灭:
LED1206亮->LED1206关闭->LED1207亮->LED1206和LED1207全亮->LED1207关闭->LED1206关闭
四、实验原理
S3C44B0X芯片上共有71个多功能的输入输出管脚,它们分为7组I/O端口
两个9位的输入/输出端口(端口E和F)
两个8位的输入/输出端口(端口D和G)
一个16位的输入/输出端口(端口C)
一个10位的输出端口(端口A)
一个11位的输出端口(端口B)
每组端口都可以通过软件配置寄存器来满足不同系统和设计的需要。
在运行主程序之前,必须对每一个用到的管脚的功能进行设置,如果某些管脚的复用功能没有使用,可以先将该管脚设置为I/O口。
1.S3C44B0XI/O控制寄存器
端口控制寄存器(PCONA-G)
在S3C44B0X芯片中,大部分管脚是多路复用的,所以在使用前要确定每个管脚的功能。
对复用I/O管脚功能的配置,可以通过配置寄存器PCONn(端口控制寄存器)来定义。
如果PG0-PG7作为掉电模式下的唤醒信号,则这些端口必须配置成中断模式。
端口数据寄存器(PDATA-G)
如果端口定义为输出口,则输出数据可以写入PDATn中相应的位;如果端口定义为输入口,则输入的数据可以从PDATn相应的位中读入。
端口上拉寄存器(PUPC-G)应的位配置0时,
该管脚接上拉电阻;当寄存器中相应的位配置1时,该管脚不接上拉电阻。
外部中断控制寄存器(EXTINT)
通过不同的信号方式可以使8个外部中断被请求,EXTINT寄存器可以根据外部中断的需要将中
断触发信号配置为低电平触发、高电平触发、下降沿触发、上升沿触发和边沿触发几种方式。
以下为EmbestEduKit-III实验板上各个端口的管脚定义。
在端口B的表中可以看到,管脚PB9和PB10被设置为输出口,并且分别和LED1206、LED1207连接。
五、实验操作步骤
1.准备实验环境
使用Embest仿真器连接目标板,使用EmbestEduKit-III实验板附带的串口线,连接实验板上的UART0和PC机的串口。
2.串口接收设置
在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。
3.打开实验例程
1)拷贝光盘CD1\Software\EduKit44b0文件夹到EmbestIDE\Examples\Samsung\目录下;
2)使用EmbestIDE通过EmbestJTAG仿真器连接实验板,打开实验例程目录4.2_led_test子目录下的led_test.pjf例程,编译链接工程
3)点击IDE的Debug菜单,选择RemoteConnect项或F8键,远程连接目标板;
4)点击IDE的Debug菜单,选择Download下载调试代码到目标系统RAM中;
5)在工程管理窗口中双击led.c就会打开该文件,在“leds_off();”设置断点后,点击Debug菜单Go或F5键运行程序;
6)当程序停留到断点后,观察当前led1206、led1207的状态,点击Debug菜单下的Stepover或F10键执行程序,观察led1206、led1207的变化;
7)结合实验内容和实验原理部分,掌握ARM芯片中复用I/O口的使用。
4.观察实验结果
在PC机上观察超级终端程序主窗口,可以看到如下界面:
程序正确运行后,可以看到实验系统上LED1206和LED1207进行以下循环:
LED1206亮->LED1206关闭->LED1207亮->LED1206和LED1207全亮->LED1207关闭->LED1206关闭
六、实验参考程序
/*定义全局变量led_state*/
intled_srate;/*--LED的状态-*/
/*---定义函数名----*/
voidLed_Test();/*LED测试-*/
voidleds_on();/*两个LED一起亮*/
voidleds_off();/*两个LED一起灭*/
voidled1_on();/*LED1点亮*/
voidled1_off();/*LED1熄灭*/
voidled2_on();/*LED2点亮*/
voidled2_off();/*LED2熄灭*/
voidLed_Display(intLedStatus);/*LED显示控制*/
/*********************************************************************************************
*名称:
Led_Test
*功能:
循环点亮发光二级管LED1和LED2
*********************************************************************************************/
voidLed_Test()
{
/*1on->2on->allon->2off->1off*/
leds_off();
Delay(1000);
led1_on();
Delay(1000);
led1_off();
led2_on()
Delay(1000);
leds_on();
Delay(1000);
Led2_off();
Delay(1000);
led1_off();
}
/*********************************************************************************************
*名称:
leds_on
*功能:
LED1和LED2同时点亮
*********************************************************************************************/
voidleds_on()
{
Led_Display(0x3);
}
/*********************************************************************************************
*名称:
leds_off
*功能:
LED1和LED2同时熄灭
*********************************************************************************************/
voidleds_off)
{
Led_Display(0x0);
}
/*********************************************************************************************
*名称:
led1_on
*功能:
LED1点亮
*********************************************************************************************/
voidled1_on()
{
Led_state=led_state|0x1;
Led_Display(led_state);
}
/*********************************************************************************************
*名称:
led1_off
*功能:
LED1熄灭
*********************************************************************************************/
voidled1_off()
{
Led_state=led_state&0xfe;
Led_Display(led_state);
}
/*********************************************************************************************
*名称:
led2_off
*功能:
LED2点亮
*********************************************************************************************/
voidled2_on()
{
Led_state=led_state|0x2;
Led_Display(led_state);
}
/*********************************************************************************************
*名称:
led2_off
*功能:
LED2熄灭
*********************************************************************************************/
voidled2_off()
{
Led_state=led_state&0xfd;
Led_Display(led_state);
}
/*********************************************************************************************
*名称:
Led_Display
*功能:
LED的显示控制
*参数:
LedStatus——输入,LED的当前状态
*********************************************************************************************/
voidLed_Display(intLedStatus)
{
if((LedStatus&0x01)==0x01)
rPDATB=rPDATB&0x5ff;
else
rPDATB=rPDATB|0x200;
if((LedStatus&0x02)==0x02
rPDATB=rPDATB&0x3ff;
else
rPDATB=rPDATB|0x400;
}
七、实验小结
通过这次实验我掌握S3C44B0X芯片的I/O口控制寄存器的配置。
掌握ARM芯片使用I/O口控制LED显示。
了解ARM芯片中复用I/O口的使用方法。
,本次实验也较为简单,通过实验熟悉了ARM的内部存储空间分配,也较为肤浅地掌握对存储区域进行访问的方法。
熟悉用寄存器配置存储空间的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式软件开发基础实验报告 存储器及IO接口 嵌入式 软件 开发 基础 实验 报告 存储器 IO 接口