ARM之S3C2440启动流程

S3C2440的框架:内置CPU,GPIO控制器,4K的SRAM,还有NAND控制器控制256M的NAND flash,CPU控制Nor flash。 NOR闪存是随机存储介质,用于数据量较小的场合;NAND闪存是连续存储介质,适合存放大的数据
NAND Flash一般地址线和数据线共用,对读写速度有一定影响;而NOR Flash闪存数据线和地址线分开,所以相对而言读写速度快一些。 
一般的原则是:在大容量的多媒体应用中选用NAND型闪存,而在数据/程序存贮应用中选用NOR型闪存。根据这一原则,设计人员也可以把两种闪存芯片结合起来使用,用NOR芯片存储程序,用NAND芯片存储数据,使两种闪存的优势互补。事实上,这种聪明的设计早已普遍应用于手机、PocketPC、PDA及电子词典等设备中了。 

启动流程:
NOR启动->B=NOR启动时基地址为0- >CPU读出NOR上第一个指令,就是前四字节,然后执行,之后继续读出其他指令并执行
(片内RAM地址为0x4000,0000)

NAND启动- >片内4KRAM基地址为0(大多数ARM芯片,从0地址开始启动)- >2440硬件把NAND前4K的内容复制到片内内存,然后CPU从0地址,取出第一条指令执行。(设为NADN启动时,NORflash就不可访问)

NAND启动是写入RAM,NOR启动写入NORflash。RAM可被读写,NOR只可以被读,所以利用这点,可以用程序自动选择NAND启动还是NOR启动。我们可以尝试往地址0处写入0,然后读出0地址的结果,如果读出的是0,说明内容是修改,则为NAND启动。
mov r1 #0
ldr r0 [r1]//把r1地址的一个字节读入r0,备份r1的数据
str r1 [r1]//0写入[0]地址
ldr r2 [r1] //把r1地址的内容读给r2
cmp r1 r2//比较r1 和 r2 ,看是否r2为0 r1==r2,则表明为NAND启动
ldr sp, =0x40000000+4096
moveq sp,#4096

猜你喜欢

转载自blog.csdn.net/weixin_40288381/article/details/81041542