uboot如何检测s3c2440是从Nand Flash还是Nor Flash启动
根据这两个特性,我们可以这样检测,代码如下
int check_flashboot_mode(void)
{
}
用volatile声明一个寄存器变量*pdw指向的是0地址。向0地址处写一串数据,比如0x12345678,*pdw = 0x12345678,接着再从0地址中把数据读回来。
因为nor启动时,0地址是norflash的起始址,而向norflash写数据需要特定的命令时序,所以直接给地址赋值是不起做用的,所以读回来的数据还是norflash中原有的数据,这样通过*pdw != 0x12345678判断,此时为nor启动。
而在nand启动时,0地址是内存的地址映射,可以用直接赋值的方法向内存中写入数据,接着从0地址读回来的数据变为0x12345678,和之前写入的数据相等,此时就为nand启动,在操作完后,要将数据还原 *pdw = dwVal
参考:
本文引用地址:https://www.eepw.com.cn/article/201611/322381.htmhttp://blog.chinaunix.net/uid-22030783-id-3347621.html
评论