刚开始的时候看了英文的关于S3C2440启动方式的Datasheet,一头雾水啊,然后再通过网上不断的搜索和学习慢慢的领悟了2440两种启动方式的真正的本质。针对mini2440的开发板总结了下个人的经验。
所有程序的启动指针都是从0x000000开始的,2440的启动方式也肯定是这样的,那么两种启动方式区别在哪里了:关键是启动时候的系统存储空间的映射不同。
启动方式一 直接启动,就是系统从一上电开始,程序的指令从0x000000000开始,存储空间的映射bank0的初始地址为0x0000000。在开发板上bank0所连接的Nor Flash,所以程序启动时候就从NorFlash的0地址开始。
启动方式二 NandFlash启动,就是系统从一上电开始,程序的指令也从0x000000000开始,但此时的Bank0已经不存在了(姑且这么认为),系统空间的首地址为S3C2440的片上SRAM,大小为4K,其内容是为做BootFalsh的NANDFLASH中的前4K内容(上电瞬间系统自动复制)。然后片上SRAM的首地址为系统的首地址启动程序。而启动用的NANDFALSH的地址不在系统地址中了。
对资深的人来说是很简单,但是对刚接触不久的人来说,可能会被这个问题困扰很久啊。