嵌入式系统设计与实例开发(第四讲).ppt
上传人:sy****28 上传时间:2024-09-14 格式:PPT 页数:99 大小:1.9MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

嵌入式系统设计与实例开发(第四讲).ppt

嵌入式系统设计与实例开发(第四讲).ppt

预览

免费试读已结束,剩余 89 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

嵌入式系统设计与实例开发——ARM与C/OS-Ⅱ第四讲基于ARM的嵌入式硬件结构设计本节提要基于ARM的硬件设计SamsungS3C44B0X基于ARM的嵌入式硬件平台体系结构芯片体系结构S3C44B0X存储系统的特征复位后的S3C44B0X的存储器映射表系统的存储空间分配Bank6:SDRAM,起始地址为0xC000000。在SDRAM中,前512Kbyte的空间划分出来,作为系统的LCD显示缓冲区使用(更新其中的数据,就可以更新LCD的显示)。系统的程序存储空间从0xC080000开始。也就是,引导系统的时候,需要把system.bin文件复制到0xC080000开始的地址空间,把PC指针指向0xC080000。Bank7:未使用。可以扩展另一片SDRAM,或者其他的外设。系统的同步串行口(SIO),连接着触摸屏控制芯片FM7843(与ADS7843完全兼容)。在同步串行口上,还可以扩展其他的芯片。靠IO口控制设备的片选信号(CS)来防止设备的冲突。注:系统的扩展接口上,A0的标号,连接在S3C44B0X的ADDR1上,后面的地址依次向后错位。本节提要S3C44B0X与FLASH的连接(HalfWord方式)使用Bank0上的两片512Kb×2来放置系统BIOS,系统上电以后,PC指针自动指向Bank0的第一个单元,开始进行系统自举。系统自举完成以后,便从硬盘中将系统文件和用户应用程序复制到SDRAM内存中执行。Bank1上接16M非线性Flash,当做系统硬盘使用,可以构造文件系统,存放海量数据。用SDRAM当作系统内存,只有Bank6/Bank7能支持SDRAM,所以将SDRAM接在Bank6上。如果同时使用Bank6/Bank7,则要求连接相同容量的存储器,而且其地址空间在物理上是连续的。关于BOOTROM2、初始化硬件平台,配置其他的BankS3C44B0X的Bank0是通过外部的一个管脚提供的上拉、下拉电阻来配置的。主要包括:数据位数(8位、16位、32位),数据格式(大端、小端)。而其他的Bank的配置,以及读写周期等信息是靠Bank0内部的代码配置相应的寄存器来实现的。同时,系统的引导Rom也负责配置系统的其他的一些寄存器,比如,系统的PLL(锁频环)配置,系统的IO口等一些端口功能的配置等等。3、系统自动检测引导Rom负责检测系统的启动所必须的外设是否正常。主要是系统的SDRAM的检测。4、系统的软件设置,更新系统(system.bin)用户可以在系统启动的时候,按任意键,进入系统的软件设置状态。通过引导Rom设置或者查看系统的一些软件信息。包括:通过开启USB端口;更新系统文件system.bin;LCD显示测试;演示程序的装载测试;键盘测试;触摸屏的坐标校准;触摸屏测试;以太网地址的设置等本节提要嵌入式开发板与PC机的串行通讯I/O接口设计I/O接口的编址方式两种编址方式有各自的优缺点S3C44B0X的I/O接口本节提要键盘接口设计一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。键盘扫描过程就是让微处理器按有规律的时间间隔查看键盘矩阵,以确定是否有键被按下。每个键被分配一个称为扫描码的唯一标识符。应用程序利用该扫描码,根据按下的键来判定应该采取什么行动。消抖算法:组合键处理//得到按键的扫描码,格式为0xXYZWU16GetScanKey(){U16key;U8i,temp;for(i=1;i<0x10;i<<=1){//I/O口送出数据rPDATD|=0xf;rPDATD&=~i;key<<=4;OSTimeDly(1);//操作系统延时temp=rPDATD;key|=(temp>>4);}returnkey;}编写键盘扫描函数,//得到按键的扫描码,格式为0xXYZWunsignedshortMyGetScanKey(){unsignedshortkey;unsignedinti,temp;for(i=1;i<0x10;i<<=1){rPDATE|=0xf0;初始化端口rPDATE&=~(i<<4);//向列所在端口分别发送1110,1101,1011,0111key<<=4;//左移四位Delay(10);//延时,等待响应temp=rPDATC;//读各行状态值key|=(tem