由于Norflash相对较高的价格,一般MCU厂商都会通过其他方法在硬件上实现支持Nandflash启动模式。
S3C2410X就是在MCU内部集成4KB被叫作Steppingstone的SRAM,当系统启动时Nandflash前4KB数据就被自动地拷贝到Steppingstone中,然后从Steppingstone开始执行,所以必须要在这4KB代码中实现内存控制器和Nandflash控制器等的初始化,以便把其他代码从Nandflash拷贝到外接的内存中并在其中执行。
S3C2410X Nandflash启动模式的工作机制如下图所示:
注意:这是S3C2410X这个微控制器硬件上的实现机制,并不须要应用工程师去控制,当然,Nandflash 4KB以后的空间需要应用工程师通过Nandflash控制器去读写。
S3C2410X Nandflash启动模式的地址映射如下图右侧:
S3C2410X也支持从Norflash启动,由于Norflash支持XIP特性,所以存储在Norflash上的代码可以被直接执行,与Nandflash启动模式有很大不同。当从Norflash启动时,Steppingstone被映射到地址0x40000000至0x40000FFF,从Nandflash启动时,Steppingstone被映射到地址0x0至0xFFF,挂接在BANK0的Norflash对CPU来说是不可见的。
优龙FS2410的2MB Norfalsh接在BANK0,地址范围从0x0到0x200000(Nroflash启动模式下),SDRAM接在BANK6,地址范围从0x30000000 到0x34000000,功能寄存器的地址范围从0x48000000到0x60000000,这些都是CPU可直接操作的地址,也就是通常所说的物理地址。