一、原理介绍
1、实现目标
测试Nand Flash读取功能。s3c2440启动会自动拷贝前4K到片内SRAM,前4K程序(程序功能)将Nand Flash的4096~(4096+2048)的2K程序读取到片外SDRAM中,引导执行;当被读取、引导的程序正常执行,即可证明Nand Flash读取成功。
2、Nand Flash手册指令
(1)K9F2G08R0A(256M)
操作指令
地址
(2)K9K8G08U0E(1G)
操作指令
地址
二、实现分析
1、s3c2440配置
(1)配置时序(寄存器)
(2)使能Nand Flash控制器,初始化ECC,禁止片选
(3)复位Nand Flash
2、操作Nand Flash(根据Flash手册的指令)
三、实现过程
1、伪代码
1、设置栈针(片内SRAM)
2、关闭看门狗(c语言)
3、初始化SDRAM(c语言)
4、初始化Nand Flash(c语言)
5、调用nand_read函数(函数参数:r0,r1,r2;分别表示第一、二、三个参数)(c语言)
6、初始化栈针(片外SDRAM)
7、引导main函数(从Nand Flash的4096~(4096+2048)的程序)
2、链接脚本(nand.lds)
SECTIONS {
//引导程序存储在0地址(上电被拷贝至片内SRAM执行),运行地址设置为0
firtst 0x00000000 : { start.o init.o nand.o}
//将main函数存储地址设置为4096,运行地址设置为30000000(片外SDRAM)
second 0x30000000 : AT(4096) { main.o }
}
3、程序参考
参考程序:https://download.youkuaiyun.com/download/liutit/86763300