Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532680
  • 博文数量: 101
  • 博客积分: 1889
  • 博客等级: 上尉
  • 技术积分: 906
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-14 16:22
文章分类

全部博文(101)

文章存档

2012年(11)

2011年(19)

2010年(59)

2009年(12)

我的朋友

分类: LINUX

2010-05-21 17:25:38

 
 
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来做事情了~

阅读(1309) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~