一步一步写嵌入式操作系统-与内存起始地址相关的有关问题
发布时间:2010-06-13 22:29:00 文章来源:www.iduyao.cn 采编人员:星星草
一步一步写嵌入式操作系统--与内存起始地址相关的问题
最近在看这本书,书中提到的与内存起始地址相关的几个地方,我没搞明白,请教一下:
page 20提到:"ARM体系统结构中,程序必须从内存零地址开始运行",
同时,里面对skyeye的配置为:
cpu:arm920t
mach:s3c2410x
mem_bank:map=m,type=rw,address=0x00000000, size=0x00800000,file="helloworld.bin"
但是page 53说,根据2410的芯片手册,外部sdram可以接在起始地址为:0x30000000,
同时,里面对skyeye的配置为:
cpu:arm920t
mach:s3c2410x
mem_bank:map=m,type=rw,address=0x30000000, size=0x00800000,file="leeos.bin"
我不明白:
1:相同的cpu,为什么前者配置address=0x00000000,后者配置为:0x30000000 ?
2:为什么后者不配置成address=0x00000000,不是必须从内存零地址开始运行吗?
分很少,我没多少分,求教了。
------解决方案--------------------
楼主,我没看过你说的那本书,根据自己的理解说一下,如果有误请谅解。
“但是page 53说,根据2410的芯片手册,外部sdram可以接在起始地址为:0x30000000。”
楼主可以去实际看一下S3C2410的芯片手册,在S3C2410的内部有有一个内存控制器。
该内存控制器一共有8个Bank,每个Bank有128MB的物理地址空间。
其中Bank0 - Bank5只支持ROM存储类型,而只有Bank6和Bank7同时支持RAM和ROM存储类型。
所以对于S3C2410来说,SDRAM必须要接在Bank6和Bank7上。
Bank6和Bank7上接的RAM内存的容量大小可以是2MB/4MB/8MB/16MB/32MB/64/MB/128MB
但是这两个Bank的存储容量必须大小相等。
Bank6的物理地址空间是0x30000000 - 0x37ffffff
Bank7的物理地址空间是0x38000000 - 0x3fffffff
这就是为什么你那本书说道:“根据2410的芯片手册,外部sdram可以接在起始地址为:0x30000000。”
“page 20提到:"ARM体系统结构中,程序必须从内存零地址开始运行",”
对于这句话,我觉得作者说的不是十分准确(我自己的理解)。嵌入式操作系统在启动的时候,
是从0物理地址开始执行程序,但是处于0x00000000物理地址的并不一定是RAM。也有可能是NorFlash。
因为NorFlash也是线性存储设备,可以随机访问。
不知道楼主了解不了解微软的Windows CE嵌入式系统,它里面有一个模拟器,是基于一个微软设想的虚拟硬件来开发的。叫做DeviceEmulator。在这个虚拟的硬件板上,就是以S3C2410为CPU的。
在这个电路板上,在0物理地址上就是接的NorFlash存储器,那么板子一上电,程序就会从0物理地址,
也就是NorFlash上开始执行。这个貌似叫做程序的XIP执行方式。所以说书中作者说道必须从“内存零地址开始执行”,我觉得会误导读者。
如果楼主仔细看S3C2410手册,会发现这颗CPU,还有一种启动方式叫做“阶石”技术。就是说在使用NandFlash作为启动ROM的时候,在物理地址的最低4KB,是一块叫做Boot intermal的SRAM,只有4KB大小,是用来引导启动程序的。不过这4KB大小的SRAM可不是Bank6/7上接的那块SDRAM。
------解决方案--------------------
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
管道的另一端上无任何进程
我写了一个程序,运行正常。
后来,用上了sqlite数据库,然后编译部署都正常,但在WINCE 6模拟器上不能自动运...
-
Power键点亮屏幕的问题
我在程序里面成队使用了:
PowerPolicyNotify(PPN_UNATTENDEDMODE,TRUE);
PowerPolicyNotify(PPN_UNATTEND...
-
求助一个问题:windowsmobile ipl读分区的问题
ipl通过 BP_ReadData读 ramimage 分区信息 读取的时候发现必须要偏移0xc800才能读正...
-
vs2005+DevEmul_SDK.msi后仍旧没有“armv4”选项
OS:win7
IDE:先前有装vs2010做winForm,后装了vs2005(完全安装)
装完后安装了DevEmu...
-
Win7 64位操作系统如何安装arm9开发板的usb下载驱动啊
按照教程操作,超级终端打开也连上了,但是系统貌似对SECBULK.sys SECBULK.inf...
-
嵌入式开发工具
谁用过 LAZARUS 开发过嵌入式系统 ?
------解决方案--------------------
Lazarus 做 PC 上的程序,做嵌入式可能...
-
请推荐几个wince游戏软件下载的地方
最近开始玩wince,请推荐几个好的地方,可以下载游戏,软件的.多谢拉!
------解决方案--------...
-
FAT32 与单片机
根目录下文件与目录项数从那里得
还有根目录的下一簇从哪得
不是说根目录也是一个文件吗 它的目录项在哪里
---...
-
谁可以推荐一个WinCE下的视频播放器,最好可以播放AVI、RMVB、MP3等格式,谢谢。
如题,
麻烦大家推荐一个WinCE5.0下的视频播放器,
-...
-
WinCE6的BinFS问题,100分求解
1、BinFS能不能做在IDE硬盘上?
2、要支持BinFS,bootloader要做甚?
3、BinFS能不能作为一个普通文件放到...