嵌入式软件开发基础实验报告 存储器及IO接口Word格式文档下载.docx
- 文档编号:17189660
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:11
- 大小:182.89KB
嵌入式软件开发基础实验报告 存储器及IO接口Word格式文档下载.docx
《嵌入式软件开发基础实验报告 存储器及IO接口Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《嵌入式软件开发基础实验报告 存储器及IO接口Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
掌握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]
/*********************************************************************************************
cRWramtest
使用高级语言读/写已初始化的ARM区
*********************************************************************************************/
//RAM访问示例
#defineRWram(*(unsignedlong*)0x0C010200)
voidcRWramtest(void)
{
unsignedlong*ptr=0x0C010200;
//R/WRAM
unsignedshort*ptrh=0x0C010200;
unsignedchar*ptrb=0x0C010200;
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口的使用方法。
硬件:
编写程序,控制实验平台的发光二极管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连接。
使用Embest仿真器连接目标板,使用EmbestEduKit-III实验板附带的串口线,连接实验板上的UART0和PC机的串口。
2.串口接收设置
在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);
1)拷贝光盘CD1\Software\EduKit44b0文件夹到EmbestIDE\Examples\Samsung\目录下;
2)使用EmbestIDE通过EmbestJTAG仿真器连接实验板,打开实验例程目录4.2_led_test子目录下的led_test.pjf例程,编译链接工程
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进行以下循环:
/*定义全局变量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();
led1_off();
led2_on()
leds_on();
Led2_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;
led2_off
LED2点亮
voidled2_on()
Led_state=led_state|0x2;
LED2熄灭
voidled2_off()
0xfd;
Led_Display
LED的显示控制
*参数:
LedStatus——输入,LED的当前状态
voidLed_Display(intLedStatus)
if((LedStatus&
0x01)==0x01)
rPDATB=rPDATB&
0x5ff;
else
rPDATB=rPDATB|0x200;
0x02)==0x02
0x3ff;
rPDATB=rPDATB|0x400;
通过这次实验我掌握S3C44B0X芯片的I/O口控制寄存器的配置。
掌握ARM芯片使用I/O口控制LED显示。
了解ARM芯片中复用I/O口的使用方法。
,本次实验也较为简单,通过实验熟悉了ARM的内部存储空间分配,也较为肤浅地掌握对存储区域进行访问的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式软件开发基础实验报告 存储器及IO接口 嵌入式 软件 开发 基础 实验 报告 存储器 IO 接口