当前位置: 代码迷 >> WinCE >> 关于nand nor启动的有关问题
  详细解决方案

关于nand nor启动的有关问题

热度:355   发布时间:2016-04-28 13:55:29.0
关于nand nor启动的问题
新手学习arm硬件,请教一个问题。
三星2440上面可以nand nor flash启动。
nand 启动的时候就是自动复制nand 前4K的到内部4K的SRAM上,并且SRAM的地址为0x00开始,nor flash启动的时候,就是片选nor flash到0x00,直接从0x00开始运行即可。现在有个问题,我nand 启动的时候,能不能访问nor flash,这个nor flash此时的地址是什么。

------解决方案--------------------
看你把它放在那片上面
------解决方案--------------------
我也没完全弄懂这两个问题,谁知道指点下。
------解决方案--------------------
NOR flash 挂在bank 0上的,在数据手册有说明。

我觉得是可以访问的。

------解决方案--------------------
既然有nor,何必要nand启动??这不是自己给自己找麻烦吗。

我认为是不行的,如果接nor,就要接到0x0地址,那就不能从nand启动。
------解决方案--------------------
学习。。。。
------解决方案--------------------
汗,你要在加载4K代码的时候操作NOR,那明显不行了。我以为是后期呢。


------解决方案--------------------
探讨
引用:
既然有nor,何必要nand启动??这不是自己给自己找麻烦吗。

我认为是不行的,如果接nor,就要接到0x0地址,那就不能从nand启动。


那现在又有一个问题,如果我想在Uboot中擦出nor flash,或者把程序拷贝到nor flash,就必须是nor启动了,
因为nand 启动是看不到nor的。
nor启动就开始从nor的0x00开始,这样自己擦出自己好像不是很对,只有在nor启动的时候把uboot载入到
SDRAM中,然后在…

------解决方案--------------------
#define ROM_BASE 0x4000000 //地址重定向到0x04000000
#define CMD_ADDR0 *((volatile U16 *)(0x555*2+ROM_BASE))
#define _WR(addr,data) *((volatile U16 *)((addr<<1)+ROM_BASE))=(U16)data
#define _RD(addr) ( *((volatile U16 *)((addr<<1)+ROM_BASE)) )#define CMD_ADDR1 *((volatile U16 *)(0x2aa*2+ROM_BASE))

从代码看出,芯片从NandFlash启动时,nGS0的其实地址实际上映射到了0x0400_0000
所以在NandFlash启动的过程中,访问NorFlash要从0x0400_0000地址开始访问。

  相关解决方案