对s3c2440、s3c2410的存储控制及启动代码的理解
对于s3c2440、s3c2410这样的片子,并不是想51那样简单的内存和启动操作
1、这两种芯片的地址线为addr0~addr26共有27条地址线即为128MB的寻址范围,为了更广的范围芯片厂家就多加了nGCS0~nGCS7(有了所谓的bank0~bank7),8个引脚作为外部的扩展即128*8MB=1GB的寻址范围。理论上这芯片有4GB(2的23次方)的寻址范围和采用统一编址的方式。但并不是全都用到的一般只用到其中的一部分。即可分为:外部地址空间bank0~bank7(0x00000000~0x40000000)、内部寄存器地址(0x48000000~0x5FFFFFFF)主要用于特殊功能寄存器 、未用地址段,这三个大部分组成。如图:
|————————————| 0x5FFFFFFF
| |
| 特殊功能寄存器 |
|————————————| 0x48000000
| 未使用地址 |
|————————————| 0x40000000
| |
| |
| |
| bank0~bank7 |
| |
| |
|————————————| 0x00000000
2、对于arm9这种芯片一般都有多种启动方式,但一般nor flash和nand flash较为普遍。以nand flash为例:
从nand flash 启动:①、cpu自动将nand flash开始的4kB数据复制到称为“steppingstone”的4KB内部ram(sram)中。
②、指针自动跳转到0x00000000地址处开始执行代码。
这都由cpu内部硬件自动完成
因此,我们可以在nand flash前4kb中储存相应的启动代码,即可实现外部SDRAM等外设的初始化。