9260的启动方式!一小段总结如下:
1.9260的存储器为32bit,这样总共的存储空间为4G,一共分成了16个每个256mb的bank,其中bank1-bank8的8个bank被映射到外部存储器,分别对应片选0到片选7;bank0被映射到内部存储器使用。内部只有两个存储器:ROM和SRAM。
2.因为9260总是从0地址启动,所以重点关注谁被映射到地址0。映射由两个参数决定,一个硬件参数,一个软件设置参数,硬件参数是BMS引脚,软件参数是REMAP参数。启动时候,(猜测)REMAP是reset为0的。所以,当检测到BMS引脚为1时,内部ROM被映射到地址0;检测到BMS为0时,上面说到的片选0,也就是bank1的被映射到地址0,这样,通过通过BMS的引脚设置,实现了2种启动方式。
3.先分析BMS为0的情况,我们知道bank1也就是片选0是EBI,就是外部总线接口,这里接的是外部存储器,我们知道通常情况下,我们一般从norflash启动或者nandflash启动,而处理器内部已经为nandflash预留了片选3.所以,这里我们如果把norflash接在片选0,我们就可以实现norflash启动。
4.现在分析BMS为1的情况,此时内部ROM被映射到地址0,此时启动过程在5中描述
5.ROM被映射到地址0时候,程序优先扫描两个SPI DataFlash,查找是否有相应的8个异常向量,即检测前28bytes的内容,如果是异常向量,表明能够引导系统,此时根据向量6的大小,确定要装载到sram的大小,之后REMAP下,这样sram就变成了地址0,之后程序跳转到0地址执行。如果两个SPI DataFlash没有相应的向量,则转向Nand Flash检测,如果检测到8个异常向量,表明Nand Flash能够引导,方法跟以上相同。
6.综上:
当我们需要从nor flash启动的话,BMS要设置0,即低,这样nor flash所在的存储器bank1,也就是EBI片选0,被映射到地址0,此时实现从nor flash启动;当我们需要从nand flash启动的话,BMS要设置成1,即高,这样当ROM被映射到地址0,ROM中的程序,检测过两个spi dataflash之后,当检测到nand flash有相应的向量的时候,就会把nand flash中向量6标记的大小的代码自动复制到sram中,之后重映射下REMAP,这样sram被映射到了地址0,跳到地址0,开始系统执行了;此处,之所以要REMAP,是因为方便程序的开发,从0地址开始就行了~
当我们从nor flash启动时候,没有特别需要说的,此时我们忽略bank0的内容,即sram和rom中的内容,我们可以利用容量更大的sdram来做事情。当我们从nand flash启动时候,nand flash启动代码中的一小部分被copy到了sram中(此时rom被映射到0,sram在其后),之后REMAP后,sram被映射到了地址0,cpu自动跳到0地址,即我们的小部分启动代码那执行,此时,启动代码也可以用容量更大的sdram来做事情了~
http://blog.chinaunix.net/u3/96790/showart_2238570.html