分类: LINUX
2010-11-03 13:02:47
1,板上的存储资源
两个
一个
一个
以上这些资源看原理图便知.
2,板上的I/O资源
这块板子上(准确的说是S
3,NOR FLASH 启动与NAND FLASH 启动
开发板上有一个S2开关,当它打在NOR一端是就是NOR启动.相反,打在另一端就是NAND FLASH启动了.先说这两种启动的不同,再说说硬件上是如何启动的,空间又是如何分配的。
当S2打在NAND FLASH启动,那么程序就是在NAND FLASH上跑起来。其实,在内部还有一个4K字节的steppingstone的缓冲器(其实这是一个SRAM),当选择NAND FALSH 启动时,这个缓冲器映射在地址0x0000_0000上,而它负责将NAND FLASH上的代码复制到4K字节的steppingstone的缓冲器中(硬件自动完成),只是4KB,这4KB的代码中需要自己写nandflash的初始化代码(代码的搬运实际上是对nandflash的读写操作,所以要初始化后才能读写操作)和搬运代码(将nandflash中剩余代码搬运到SDRAM中),所以nandflash的初始化代码和搬运代码必须放在nandflash的开头(4KB之内),否则steppingstone没意义了,代码搬运完成之后,使用一条跳转指令到SDRAM的地址处运行。这是uboot的启动机制。nandflash的程序就这样跑起来了。
SDRAM上(大家都知道,程序运行时都是在RAM上运行的,怎么可能是在FLASH上运行呢,其实就是将FLASH上的代码复制了而已)而负责复制这段代码的东西就是传说中的BIOS啦.
当S2打在NOR FLASH一端时,又有什么区别呢?当选择用NOR FLASH启动时,
4,S
大家都知道,32位可以寻址
(途中只显示最低的
0~0x4000_0000(只有
还有
OM[1:0]=01或者是10 时(NOR FLASH):
0x4000_0000-0x4000_0fff
-----这4K字节的就是前面说的stepingstone的啦。0x4000_0fff_0x4800_0000是没用到的。
0x4800_0000-0x6000_0000
-----这空间是特殊功能寄存器的.你发现,所有的寄存器都是在这个范围内的。
0x6000_0000—0Xffff_ffff
-----还是未用到的。
OM[1:0]=00时(NAND FLASH):
这个时候如上图所示。刚刚说的steppingstone映射到0x000_0000那里,也即是图中的BOOT INTERNAL SRAM。其他的一样.
其实,S
刚刚说S
2440为什么只有27根地址线引出来?
理论上可以寻址的空间为(2的32次方,32根地址线)4GB,但其中有3GB的空间都预留给处理器内部的寄存器和其他设备了,留给外部可寻址的空间只有1GB,也就是0X00000000~0X3FFFFFFF,总共应该有30根地址线。这1GB的空间,2440处理器又根据所支持的设备的特点将它分为了8份,每份空间有128MB,这每一份的空间又称为一个BANK。为方便操作,2440独立地给了每个BANK一个片选信号(nGCS7~nGCS0)。其实这8个片选信号可以看作是2440处理器内部30根地址线的最高三位所做的地址译码的结果。正因为这3根地址线所代表的地址信息已经由8个片选信号来传递了,因此2410处理器最后输出的实际地址线就只有A26~A0