存储管理器单元课堂笔记(未完待续,本章问题:对存储管理器理解有偏差,暂时未能理清整个思路)
2440包括CPU,存储管理器,外部有SDRAM,网卡等等,例如,CPU想读0X300000,读四字节,
mov r1,#0x30000000
ldr r0,[r1]
根据配置信息决定怎么访问外部设备,想访问一个芯片,需要哪些事情?首先,必须要有地址线,数据线(8/16/32,即数据宽度),第三,时钟频率,另外还有芯片相关的特性(行地址(多少位),列地址(多少位),BANK),只有配置好了存储管理器,才知道怎么访问外部设备
SDRAM需要知道列地址,行地址,刷新周期,BANK,
首先配置存储管理器,然后进行使用,对应书籍开发手册第六章
13位行地址,9位列地址,刷新周期为64M/8192
2440对外可以接8个外设(诸如SDRAM,网卡,NOR),为啥是八个,因为有8 BANK,八条片选信号,SRAM非常快,但是很贵,SDRAM相对便宜,但跟复杂,分为bank,列行,还需要不断刷新,网卡,NOR与SRAM比较相似,
2440的启动方式:1,用NOR FLASH启动 2,NAND flash启动
NOR启动的时候0地址(BANK0)指向0地址,NAND启动,0地址指向片内SRAM,上电后会将前4K内容拷贝到片内内存里面,然后从0地址开始运行,
程序上电后,代码先是在NAND里,NAND前4K被拷贝到片内SDRAM,从0地址开始执行。关看门狗,初始化设置存储管理器,再将代码拷贝到SDRAM(非片内)里面去,继续执行
(补充4.28)总结:之前老是将存储管理器与前面的SDRAM,NAND划等号,导致概念混淆,其实二者并不相等,S3C2440是一个基于ARM的32位处理器,而其中1GB地址空间就是存储管理器,这个管理器分为8个模块,即8个BANK,每个部分再对应连接相应外设例如网卡,扩展串口等等,每个不同的外部设备又对应不同的起始地址,jz2440用了ban0到bank6
代码思路:使用汇编语言设置好存储控制器,让外接的SDRAM可用,之后将程序本身从steppingstone复制到SDRAM中,最后跳到SDRAM中执行,而steppingstone是一个4KB大小的内部RAM,上电后,NAND中的4KB数据会复制到steppingstone中,而这个实验的意义在于通过存储控制器调用外接的SDRAM,在外接SDRAM中执行之前的LED程序,通过程序执行速度证明了程序的确是在速度更慢的SDRAM中执行。同理,我们也可以通过控制存储控制器去调用其他外部设备比如网卡之类(未完待续)