S3C2410是32位处理器(指令一次能够操作32位数据(运算器一次可以处理32位数据);通用寄存器多是32位寄存器;处理器内部数据通道也是32位的;处理器外部数据总线宽度通常是32位的,地址总线宽度只是代表CPU寻址范围大小,与CPU是多少位的无关,也即32位CPU的地址总线不一定是32根的,例如对于s3c2410,每一个Bank对应27根地址线,寻址能力为128MB,全部8个Bank总的寻址能力为1GB),所以为了最大限度的发挥其性能,内存最好也是32位(指数据宽度)的,(当然,在s3c2410的8个bank中,除了Bank0只能选择16/32数据位宽外,其余的7个Bank均可以单独选择8/16/32位宽的存储系统)然而市面上很少有32位宽度的单片SDRAM,所以一般都采取两片16位的SDRAM进行位扩展得到32位的SDRAM
2.设计电路图
2410与K4S561632D相连
本系统扩展后的内存系统为16M×32Bit的(此处32Bit是指数据位宽度,而非地址位,可以理解SDRAM数据位宽度与地址线的条数无关,明白数据线和地址线的区别,对于下面地址线的连接方式的理解非常重要
1:
@*****************************************************************
子函数说明:复制代码到SDRAM,将SRAM中的4K数据全部复制到SDRAM,
copy_steppingstone_to_sdram:
.align
@******************************************************
2.扩展为64MB的NAND Flash用作启动ROM和大容量存储
* 数据宽度只有8Bit,没有地址总线。地址和数据总线复用,串行读取
* NandFlash设备的存储容量是以页(Page)和块(Block)为单位的。
* Page=528Byte (512Byte用于存放数据,其余16Byte用于存放其他信息,如块好坏的标记、块的逻辑地址、页内数据的ECC校验和等)。
* Block=32Page
* 容量为64MB的NandFlash存储结构为:512Byte×32Page×4096Block
* NandFlash以页为单位进行读和编程(写)操作,一页为512Byte;以块为单位进行擦除操作,一块为512Byte*32page=16KB
* 对于64MB的NAND设备,需要26根地址线,由于NAND设备数据总线宽度是8位的,因此必须经过4个时钟周期才能把全部地址信息接收下来
* 由于一个页内有512Byte,需要9bit的地址寻址,而第一个时钟周期只给出了低8bit,最高位A8由不同的读命令(Read Mode2)来区分的。
NandFlash的命令
2.电路图设计
扩展芯片:HY57561620
3.NAND
MemCfgInit();
该函数原型:
void
{
}
使能nand
1<<15,NFCONF寄存器是NAND
第15位置1,是使能nand
此位在芯片开始工作,自动导入的时候将被自动清零,
如果想访问nand
14,13位为保留位
1<<12,第12位置1,初始化ECC,S3C2410仅仅支持512个字节的ECC校验,
所以每512个字节,需要设置一次ECC初始化。
ECC是Error
1<<11,第11位置1,NAND
7<<8,即10,9,8位设置为111,
这3位是CLE
TACLS即111(b)=7;
7位为保留位
7<<4,即6,5,4位设置为111,为TWRPH0
(TWRPH0+1)
3位为保留位
7
上一篇:ARM9开发板Qt环境的搭建
下一篇:ARM 向量中断和非向量中断
推荐阅读最新更新时间:2024-03-16 14:51