程序为什么加载到内存中
程序为什么加载到内存中
1.把代码从存储器拷贝到RAM中,变成了bootloader的工作之一。
2.一般的,嵌入式系统的存储器以Flash应用最广,Flash分为两种:norFlash和nandFlash,打个不恰当的比方,norFlash相当于ROM,程序可以直接在其上运行,nandFlash相当于硬盘,只负责存储程序。
3.一般的bootloader代码都存储在norFlash中,上电后芯片可直接读取其上的代码来运行。
4.硬盘、光驱、软盘等外存设备,由于接口的不同,CPU是不能直接访问的,而CPU 能访问的只有和它共享地址、数据总线的内存因此,程序无法在硬盘、光驱、软盘等外存设备上直接运行,必须读入内存运行,这就是程序加载的原因。也是BOOTLOAD 存在的原因。 BIOS等都是norFlash,程序可以直接在上面运行。
5.内存与外存的区别 ROM 、 norflash 、nandflash 的区别主要是接口、存储器单元组织的不同: 程序ROM、norflash 是 总线型可以随机按字节读取,容量小;nandflash 是特殊接口,只能页读,容量大 程序ROM 是字节读写单位;norflash 、nandflash 是FLASH 有页、块的概念特别是擦除,必须块擦除。
6.硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理 这就是为什么程序都是由 硬盘、光盘等外存读入内存再执行的原因。
知识点
1.冯诺依曼结构:代码和数据存放在一起
哈弗结构:代码和数据分开存放。代码存储在flash中,数据存储在RAM中
2.单片机使用的是静态内存,大部分单片机中常量存放在flash中(代码段),变量存放在DRAM中。