加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

程序为什么要加载到内存运行

(2009-10-11 00:18:01)
标签:

杂谈

分类: 计算机

http://wxqxq520.blog.sohu.com/117605984.html

1、程序为什么要加载到内存运行

  和PC一样,嵌入式系统的OS,同样要在RAM上运行,这有别于一般的单片机编程:程序直接在ROM中运行,只将变量、堆栈等放在RAM中。所以把代码从存储器拷贝到RAM中,变成了bootloader的工作之一。一般的,嵌入式系统的存储器以Flash应用最广,Flash分为两种:norFlash和nandFlash,打个不恰当的比方,norFlash相当于ROM,程序可以直接在其上运行,nandFlash相当于硬盘,只负责存储程序。所以一般的bootloader代码都存储在norFlash中,上电后芯片可直接读取其上的代码来运行,而S3C2410芯片比较特别,以它为平台构建的系统可以用nandFlash来储存bootloader。因为它自带了4K的RAM,上电后通过硬件机制将存储器中的前4K代码拷贝到芯片自身的RAM里。

  总结一下,硬盘、光驱、软盘等外存设备,由于接口的不同,CPU是不能直接访问的,而CPU 能访问的只有和它共享地址、数据总线的内存

因此,程序无法在硬盘、光驱、软盘等外存设备上直接运行,必须读入内存运行,这就是程序加载的原因。也是BOOTLOAD 存在的原因。

  BIOS等都是norFlash,程序可以直接在上面运行。

  内存与外存的区别

 ROM 、 norflash 、nandflash 的区别 主要是接口、存储器单元组织的不同:

        程序ROM、norflash 是 总线型可以随机按字节读取,容量小;nandflash  是特殊接口,只能页读,容量大

        程序ROM 是字节读写单位;norflash 、nandflash 是FLASH 有页、块的概念特别是擦除,必须块擦除。

硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理

    这就是为什么程序都是由 硬盘、光盘等外存读入内存再执行的原因。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有