ARM9存储控制(个人愚见,不对地方请高手指教)
2010-12-24 21:35
267 查看
(1)Nand Boot:
用户可以将引导代码(我们通常说的bootloder)和操作系统镜像文件放在外部的Nand Flash中,并且从Nash Flash启动。当处理器在这种模式下上电复位时,内置的Nand Flash控制器将访问控制接口,并将引导代码(bootloder)自动加载到内部的SRAM中(此时SRAM定位于其实地址空间0x00000000,容量为4kb,处理器自带的),然后,SRAM中的引导程序(bootloder)将操作系统镜像文件加载到SDRAM中,操作系统就能够在SDRAM中运行了。这也是bootloder的作用,如果仅仅是小容量的裸机程序的话完全没有必要编写bootloder,直接放在NASH FLASH中就可以运行了(实验验证通过),但是由于SRAM容量比较小并且昂贵,所以必须用bootloder把容量大的操作系统加载到相对容量较大的SDRAM中运行。如果是从nor flash或者SDRAM中运行,
(2)两种启动方式
记住一点,所以的处理器复位都是从0x00000000处开始执行
a:在Nand Flash 启动模式下,处理器内部的4kb boot SRAM(处理器内部拥有并不是我们的外部存储空间)被映射到nGCS0(bank0)片选空间中。此时SRAM的地址为0x00000000(暂时可以这么认为),至于Nash Flash 的地址我们不用管它,反正从Nand Flash 启动我们总会把里面前4kb的代码复制到0x00000000中执行。这个理解也合乎代码从0X00000000处执行。
b:在Nor Flash启动模式下(非Nand Flash启动模式下),与nGCS0(bank0)相连的外部存储器Nor Flash被映射到Bank0片选空间上,也就说此时Nor Flash起始地址为0x00000000这样程序依然从0x00000000处执行。
(3) SRAM、SDRAM、Nand Fash和 Nor Flash
SRAM:处理器内部ram,只有4kb的容量,一般作为缓存或者中转站。
SDRAM:cpu外部芯片,作为RAM
Nand Flash和nor Flash:其实就是Rom,至于他两的区别好多书上都有介绍,这不多说了。
(4)地址分配
以S3C2440为例,0x00000000~0x40000000:作为SRAM、SDRAM、Nor Flash、Nand Flash和其他外部设备地址,至于如何让分配这时bootloder的事了!0x48000000~0x60000000:特殊功能寄存器。0x60000000~0xFFFFFFFF:NOT USED
以上问题纠结了好几天了,这下算是比较明白了!个人理解,有不对的地方望牛人指点!
用户可以将引导代码(我们通常说的bootloder)和操作系统镜像文件放在外部的Nand Flash中,并且从Nash Flash启动。当处理器在这种模式下上电复位时,内置的Nand Flash控制器将访问控制接口,并将引导代码(bootloder)自动加载到内部的SRAM中(此时SRAM定位于其实地址空间0x00000000,容量为4kb,处理器自带的),然后,SRAM中的引导程序(bootloder)将操作系统镜像文件加载到SDRAM中,操作系统就能够在SDRAM中运行了。这也是bootloder的作用,如果仅仅是小容量的裸机程序的话完全没有必要编写bootloder,直接放在NASH FLASH中就可以运行了(实验验证通过),但是由于SRAM容量比较小并且昂贵,所以必须用bootloder把容量大的操作系统加载到相对容量较大的SDRAM中运行。如果是从nor flash或者SDRAM中运行,
(2)两种启动方式
记住一点,所以的处理器复位都是从0x00000000处开始执行
a:在Nand Flash 启动模式下,处理器内部的4kb boot SRAM(处理器内部拥有并不是我们的外部存储空间)被映射到nGCS0(bank0)片选空间中。此时SRAM的地址为0x00000000(暂时可以这么认为),至于Nash Flash 的地址我们不用管它,反正从Nand Flash 启动我们总会把里面前4kb的代码复制到0x00000000中执行。这个理解也合乎代码从0X00000000处执行。
b:在Nor Flash启动模式下(非Nand Flash启动模式下),与nGCS0(bank0)相连的外部存储器Nor Flash被映射到Bank0片选空间上,也就说此时Nor Flash起始地址为0x00000000这样程序依然从0x00000000处执行。
(3) SRAM、SDRAM、Nand Fash和 Nor Flash
SRAM:处理器内部ram,只有4kb的容量,一般作为缓存或者中转站。
SDRAM:cpu外部芯片,作为RAM
Nand Flash和nor Flash:其实就是Rom,至于他两的区别好多书上都有介绍,这不多说了。
(4)地址分配
以S3C2440为例,0x00000000~0x40000000:作为SRAM、SDRAM、Nor Flash、Nand Flash和其他外部设备地址,至于如何让分配这时bootloder的事了!0x48000000~0x60000000:特殊功能寄存器。0x60000000~0xFFFFFFFF:NOT USED
以上问题纠结了好几天了,这下算是比较明白了!个人理解,有不对的地方望牛人指点!
相关文章推荐
- 个人对VHDL和C++以及C#.NET的一些体会(完全个人感受,不对的地方请高手指正)
- 这个当单片机程序怎么会不停的通过串口发数据,设置波特率为9600,但是串口软件接受数据不对(初学者,请高手指教)
- Syncthing免费开源的文件同步工具-带版本控制可用于构建个人云存储
- 用Verilog编写的4位数值比较器,输出端波形不对,请高手指教一二,多谢!!!
- 个人汇总的SEO知识,高手指教
- 初级java学习小结----不对的地方还请指教
- Tomcat学习总结(有不对的地方请指教,多谢)
- 第一个MVC3做的企业空间项目总结(本人新手,如果有高手进,请多多指教,我不会不对的地方请指正)
- 谈谈我对那些所谓的情场高手的一些看法(个人愚见)
- MySql存储过程及MySql常用流程控制语法
- Android数据库高手秘籍(五)——LitePal的存储操作
- SpringMVC与Mybatis集合实现调用存储过程、事务控制
- 存储过程的个人理解
- 阿里巴巴关闭酷盘个人云存储服务
- MySql存储过程之逻辑判断和条件控制
- linux学习笔记之(三)---安装mysql5.5 (安装成功,但用不了,请高手指教)
- Android数据库高手秘籍(五)——LitePal的存储操作
- 某高手写了Android数据存储秘籍,这里边看边写笔记吧(虽然大部分文字不是自己写的)——第一篇压缩版
- ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据
- [js高手之路]使用原型对象(prototype)需要注意的地方