这章开始学习存储管理器,一提到存储脑海里就会联想到很多存储相关的东西,
NAND FLASH:容量大,掉电不丢失,相当于硬盘。不能直接寻址。
NOR FLASH:CPU可以直接寻址,掉电不丢失。容量小
SDRAM:也相当于内存它是片外扩展的,主要是执行程序
SRAM:可读可写寄存器,相当于内存,掉电会丢失,但是运行速度快(片内空间只有4K)
上面这些概念学习了很多次了,但是还是容易混淆
1.CPU->存储管理器->SDRAM
->DM9000等
CPU不管外设是什么,都由存储管理器来做。存储管理器根据配置信息来区分。
例如:想访问一个芯片需要的条件(1)地址线
(2)数据宽度
(3)时钟、频率
(4)芯片相关
以上说的条件就是配置信息。
现在想访问SDRAM就要知道 1.列地址,行地址(内存芯片手册)
2.刷新周期(内存芯片手册)
3.位宽(原理图得到)
4.BANK(内存芯片手册)
以上说了这么多,看着迷迷糊糊的,其实就想说,存储器是给CPU大老板打工的,帮助CPU管理小弟们(外设)。然而存储管理器要想管小弟也得知道他们的一些信息。
2.那么从程序角度说:要想访问SDRAM,要先配置存储管理器,怎么配置呢,就是写寄存器呗。配置哪些呢,就是上面那些呗。
现在做一个例子首先启动流程是这样的:
(1)一上电,NAND FLASH自动将数据复制到片内的SRAM.
(2)然后开始执行启动代码,关看门狗,初始化存储管理器。
(3)然后把片内4K的数据移动到片外SDRAM,跳到SDRAM继续执行。
链接地址为运行时程序应该位于哪里。
3.存储管理器总共有8个BANK,bank0-5支持外部ROM,SRAM.6,7支持SDRAM。
4.存储管理器总共有13个寄存器,BANK0~BANK5只需要设置BWSCON(位宽和等待寄存器),和BANKCONX(BANK控制寄存器)两个寄存器。BANK6和BANK7外接SDRAM时,还要设置refresh(刷新控制寄存器),
Banksize,mrsrb6,mrsrb7(sdram模式设置寄存器)等四个寄存器。
要想理解2440的地址分配情况,下面这几个图很重要:
S3c2440理论可以寻址4G,用户可用1G,1G空间需要30根地址线,而实际只用了27根,其他3根用在了3-8译码器上,27根线控制具体的bank,其他3根用来选择处于哪个bank..
NAND FLASH:容量大,掉电不丢失,相当于硬盘。不能直接寻址。
NOR FLASH:CPU可以直接寻址,掉电不丢失。容量小
SDRAM:也相当于内存它是片外扩展的,主要是执行程序
SRAM:可读可写寄存器,相当于内存,掉电会丢失,但是运行速度快(片内空间只有4K)
上面这些概念学习了很多次了,但是还是容易混淆
1.CPU->存储管理器->SDRAM
->DM9000等
CPU不管外设是什么,都由存储管理器来做。存储管理器根据配置信息来区分。
例如:想访问一个芯片需要的条件(1)地址线
(2)数据宽度
(3)时钟、频率
(4)芯片相关
以上说的条件就是配置信息。
现在想访问SDRAM就要知道 1.列地址,行地址(内存芯片手册)
2.刷新周期(内存芯片手册)
3.位宽(原理图得到)
4.BANK(内存芯片手册)
以上说了这么多,看着迷迷糊糊的,其实就想说,存储器是给CPU大老板打工的,帮助CPU管理小弟们(外设)。然而存储管理器要想管小弟也得知道他们的一些信息。
2.那么从程序角度说:要想访问SDRAM,要先配置存储管理器,怎么配置呢,就是写寄存器呗。配置哪些呢,就是上面那些呗。
现在做一个例子首先启动流程是这样的:
(1)一上电,NAND FLASH自动将数据复制到片内的SRAM.
(2)然后开始执行启动代码,关看门狗,初始化存储管理器。
(3)然后把片内4K的数据移动到片外SDRAM,跳到SDRAM继续执行。
链接地址为运行时程序应该位于哪里。
3.存储管理器总共有8个BANK,bank0-5支持外部ROM,SRAM.6,7支持SDRAM。
4.存储管理器总共有13个寄存器,BANK0~BANK5只需要设置BWSCON(位宽和等待寄存器),和BANKCONX(BANK控制寄存器)两个寄存器。BANK6和BANK7外接SDRAM时,还要设置refresh(刷新控制寄存器),
Banksize,mrsrb6,mrsrb7(sdram模式设置寄存器)等四个寄存器。
要想理解2440的地址分配情况,下面这几个图很重要:
S3c2440理论可以寻址4G,用户可用1G,1G空间需要30根地址线,而实际只用了27根,其他3根用在了3-8译码器上,27根线控制具体的bank,其他3根用来选择处于哪个bank..
看了几遍虽然知道了大概是怎么回事,但是感觉用起来还是没那么容易,暂时先留一个印象,过一遍汇编调用的步骤,知道他是干什么的,然后再仔细研究这些地址。