这些小知识我感觉很受用,移植uboot 内核 文件系统 都会用到里面相关的知识,是一些很基础但是很实用的只是,在网上找到的,mark一下!
1、储存管理器
cpu要访问外部硬件,需要使用存储控制器,存储控制器提供访问外部器件的所有控制信号:26位地址信号、32位数据信号、8个片选信号以及读写控制信号。
2、BANK0到BANK7:它们对应s3c2440的存储空间。s3c2440将其存储空间分为8组,每组最大容量是1G(这是因为地址线是27位),由片选信号决定访问的是哪一个组。我们需要将外部存储器挂接到相应的组上,然后通过存储控制器来访问。
3、SDRAM
这就是内存,通过原理图我们知道,它的地址线是26位的,数据线是32位的,所以可以通过存储控制器来访问。那么怎么才能访问到呢?当然需要片选信号,SDRAM是挂接在BANK6这个地址空间的(
起始地址是:0x30000000),它的片选信号是NGCS6。也就是说,一旦通过NGCS6选通了SDRAM,就可以通过地址线和数据线来跟SDRAM通信。但其实这还是不够的,我们还需要根据SDRAM的芯片手册对其它一些条件进行设置,比如:
列地址位数:访问SDRAM要通过bank地址、行地址和列地址,它们加起来是26位的,fl2440用的是:
bank1、2、3、4可选,行地址13位,列地址可选8、9、10位
刷新时间:
64ms刷新8192次
等等
4、启动方式:nandflash启动和norflash启动
(1)norflash启动:norflash挂接在BANK0,cpu从0地址启动,就直接执行norflash里的程序了,比较简单方便。
(2)nandflash启动:0地址指向2440内部SRAM(4k),这4k的SRAM又叫steppingstone。当系统启动时,2440会自动把nandflash的开始4k的内容拷贝到SRAM中,并且开始从0地址执行,在这4k的程序里要关看门狗,初始化存储管理器,将nandflash的内容拷贝到内存里(SDRAM),并且从内存里继续执行。
要注意的是当从nandflash启动时,BANK0是失效的,如果此时BANK0上挂接了norflash,norflash是失效的。
5、MMU:内存管理单元,它负责物理地址到虚拟地址的映射。
cpu只管发出地址,如果启用了MMU就说明发出的是虚拟地址,需要通过MMU转化为物理地址,如果没有启用MMU说明发出的就是物理地址。
6、系统时钟:s3c2440提供3种时钟:
FCLK:用于cpu核
HCLK:用于AHB总线上设备,比如cpu核、存储控制器、中断控制器、lcd控制器、DMA控制器和USB主机模块
PCLK:用于APB总线上的设备,比如WATCHDOG、IIS、IIC、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI
其中AHB总线用于高性能模块的连接,APB总线主要用于低带宽的周边外设之间的连接
我们看到我们的2440上接的晶振是12MHZ的,这显然太低了,无法满足我们的需要,那怎么办呢?简单来说就是:
外部时钟通过PLL机制将频率增大,增大的时钟可以直接作为FCLK,FLCK的时钟经过分频得到HCLK、PCLK