1:s3c2440是32位的,所以可以寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里。
2:开发板上一般都用SDRAM做内存flash(nor、nand)来当做ROM。其中nand flash没有地址线,一次至少要读一页(512B).其他两个有地址线 (飞凌2440开发板使用大页nandflash,每页2Kb)。飞凌的全线2440开发板采用的是2片SDRAM(单片为32M,最大可扩展到单片为64M)。
3:nandflash不能用来运行代码,只用来存储代码,NORflash,SDRAM可以直接运行代码。
4:s3c2440总共有8个内存banks,6个内存bank可以当作ROM或者SRAM来使用,留下的2个bank除了当作ROM 或者SRAM,还可以用SDRAM(各种内存的读写方式不一样),7个bank的起始地址是固定的。还有一个灵活的bank的内存地址,并且bank大小也可以改变。
5:s3c2440支持两种启动模式:NAND和非NAND(这里是nor flash)。
具体采用的方式取决于s3c2440的OM0、OM1两个引脚
OM[1:0]所决定的启动方式:
OM[1:0]=00时,处理器从NAND Flash启动;
OM[1:0]=01时,处理器从16位宽度的ROM启动;
OM[1:0]=10时,处理器从32位宽度的ROM启动;
OM[1:0]=11时,处理器从Test Mode启动。
当从NAND启动时,cpu会自动从NAND flash中读取前4KB的数据放置在片内SRAM里(s3c2440是soc),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000)。cpu是从0x00000000开始执行,也就是NAND flash里的前4KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行。
当从非NAND flash启动时,nor flash被映射到0x00000000地址(就是nGCS0,这里就不需要片内SRAM来辅助了,所以片内SRAM的起始地址还是0x40000000). 然后cpu从0x00000000开始执行(也就是在Norfalsh中执行)。
总结:
Arm的启动都是从0地址开始,所不同的是地址的映射不一样。在arm上电的时候,要想让arm知道以某种方式(地址映射方式)运行,不可能通过你写的某段程序控制,因为这时候你的程序还没启动,这时候arm会通过引脚的电平来判断。
1.当引脚OM0跟OM1有一个是高电平时,这时地址0会映射到外部nGCS0片选的空间,也就是Norflash,程序就会从Norflash中启动,arm直接取Norflash中的指令运行。
2.当OM0跟OM1都为低电平,则0地址内部bootbuf(一段4k的SRAM)开始。系统上电,arm会自动把NANDflash中的前4K内容考到bootbuf(也就是0地址),然后从0地址运行。这时NANDFlash中的前4K就是启动代码(他的功能就是初始化硬件然后在把NANDFlash中的代码复制到RAM中,再把相应的指针指向该运行的地方) 。
为什么会有这两种启动方式,关键还是两种flash的不同特点造成,NOR FLASH容量小,速度快,稳定性好,输入地址,然后给出读写信号即可从数据口得到数据,适合做程序存储器。NAND FLASH 总容量大,但是读写都需要复杂的时序,更适合做数据存储器。这种不同就造成了NORflash可以直接连接到arm的总线并且可以运行程序,而NANDflash必须搬移到内存(SDRAM)中运行。
上一篇:【ARM裸机】 - GCC编译流程&Makefile&动静态库
下一篇:入门 | S3C2440启动过程分析
推荐阅读最新更新时间:2024-11-10 10:17
推荐帖子
- stm32 rtc(转)
- 1:32768HZ晶体,选一般6pF--12.5pF的都可以(本身品质有问题例外),并非传说中的猛兽2(重要):在STM32的VBAT脚与GND必须接至少一个陶瓷电容(100nFX7R介质材料)退藕,线要短/粗3:32768HZ晶体的负载电容焊盘与晶体焊盘之间线要短/粗,实际安装的电容须为NPO介质材料4:STM32RTC起振到稳定需要时间(1--3秒,和温度有关)建议写代码先开启STM32RTC,然后去初始化其他外设,最后来判断RTC状态分2个函数代码如下:=======
- fuqing5542 stm32/stm8
- 基于max038的函数发生器的问题
- 用max038产生的高频信号有很大的干扰如何滤除??产生的波形很粗!!!仔细看像扭得麻花?????这如何解决???为什么4051不能换挡??这也是个麻烦事!!希望哪个专家高手给点意见和经验!!!谢谢!!基于max038的函数发生器的问题这个我也遇到了,好难解决啊4051内阻大和带宽也窄,用结型FET过继电器做切换比较好,并且开关接在电容切换的公共地端,控制频率的Iin端一定要屏蔽新做的MAX038模块:支持方波、三角波、正弦波产生,频率可达20MHz,频率可调,占空比可调。作为一个测试
- 蠡降睿 测试/测量
- 如何调用别的驱动中的未导出函数?
- 我现在要写一个驱动,中间要调用别的驱动中的未导出函数是否可以像ring3下那样,找到地址再call?如何可以,请帮看看这段代码有问题吗如果不行,那又要怎么样才能实现这样的目的呢?//得到KeyboardClassServiceCallback函数在内核内的地址ULONGGetKbdServiceCallBackAddr(PUCHARBase,ULONGSize,ULONGDriverEntry,ULONGuIATAddr,ULONGImageBase){
- fifthspace 嵌入式系统
- 用CEDIT显示读出的文本,能够显示出来,但是拖动滚动条时,出现文字重叠,当选择这些文字时,又刷新了,重叠消失,该如何解决呢?
- 用CEDIT显示读出的文本,能够显示出来,但是拖动滚动条时,出现文字重叠,当选择这些文字时,又刷新了,重叠消失,该如何解决呢?用CEDIT显示读出的文本,能够显示出来,但是拖动滚动条时,出现文字重叠,当选择这些文字时,又刷新了,重叠消失,该如何解决呢?读入文件后当下拉后当选择出现重叠的文本之后读入文件后当下拉后当选择出现重叠的文本之后读入文件后当下拉后当选择出现重叠的文本之后你的cedit控件在onctrlcolor中,也就是控件绘制的时候,不
- miaoer 嵌入式系统
- ISIS中数码管不显示
- 请高人指点一下,纠结一天了,原理图什么都不显示,谢谢了!ISIS中数码管不显示首先你的数码管公共端的三极管没有接电源,神仙也显不出来。再一个你18B20复位的程序一直跳不出来,跟本就没有执行显示部分,当然也不能显示了。没时间给你改了,给你一个现成的吧,自己根据需要改改吧 很感谢你给的程序,可是为什么按键它没起到作用呢,闭合以后调节不了温度显示啊按键不起作用很感谢你给的程序,可是为什么按键它没起到作用呢,闭合以后调节不了温度显示啊回复沙发jishuaihu的帖子我弄懂程序了
- hyp73 单片机
- 求2410的cs8900的vxworks的驱动,有重谢。
- 求2410的cs8900的vxworks的驱动,有重谢。cumedl@gmail.com,请联系。求2410的cs8900的vxworks的驱动,有重谢。amine有个好用的东西,到网上搜索“基于VxWorks的网络接口设计”即可得。网络是个好东东啊。关注接分
- jiangshuai2003 实时操作系统RTOS
设计资源 培训 开发板 精华推荐
- LT1108CS8-5掌上电脑逻辑电源微功率DC/DC转换器典型应用电路
- si4735
- MIC5232 的典型应用:10mA 超低静态电流电容 LDO
- AM2S-0518SZ 18V 2瓦直流转直流转换器的典型应用
- AM1D-4809S-RZ 9V 1W DC-DC 转换器的典型应用
- 机顶盒40W、-5V、3.3V、5V、12V交流转直流多路输出电源
- 5串21700电池保护板
- FC-135_MSP430,MSP430和F6xx系列SOC应用处理器的振荡电路和晶体单元选型指南
- 使用 ROHM Semiconductor 的 BD5240 的参考设计
- LT6118 的典型应用 - 具有 POR 的电流检测放大器、基准和比较器