
所以把代码从存储器拷贝到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
有页、块的概念特别是擦除,必须块擦除。硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理
这就是为什么程序都是由
硬盘、光盘等外存读入内存再执行的原因。
flash是存储芯片的一种,通过特定的程序可以修改里面的数据。FLASH在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”,全名叫Flash EEPROM Memory。
Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失。U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及 *** 作系统或者程序代码,或者直接当硬盘使用(U盘)。
目前Flash主要有两种NORFlash和NANDFlash。NORFlash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NORFLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NANDFlash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NANDFlash上的代码,因此好多使用NANDFlash的开发板除了使用NANDFlash以外,还加上了一块小的NORFlash来运行启动代码。
一般小容量的用NORFlash,因为其读取速度快,多用来存储 *** 作系统等重要信息,而大容量的用NANDFLASH,最常见的NANDFLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH主要来自Intel,AMD,Fujitsu和Mxic,而生产NANDFlash的主要厂家有Samsung,Toshiba,Micron和Hynix。
片内flash还是片外flash,spi接口还是其他的接口。ARM片子不一样,答案就不一样。根据flash手册,按照手册写驱动。
所以把代码从存储器拷贝到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 有页、块的概念特别是擦除,必须块擦除。硬盘更是有扇区、簇的概念,便于文件管理,但是也必须有专门的控制器管理 这就是为什么程序都是由 硬盘、光盘等外存读入内存再执行的原因。
片内的ram用来存储启动代码,在2440初始化sdram之前,代码就在片内ram中运行。片内ram装载的是norflash中的内容,即u-boot。
uboot放在norflash里,nandflash就存放的 *** 作系统。所以norflash相当于电脑的bios,nanflash才是硬盘。sdram就是内存了
uboot是一级启动代码,即bootloader,用来加载 *** 作系统(nandflash)到sdram并且执行,当然uboot还能格式化nandflash和安装新系统的功能。
以上就是关于程序为什么要加载到内存运行全部的内容,包括:程序为什么要加载到内存运行、c语言中怎么读取flash内容、如何将Flash里的程序拷贝到内部RAM里运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)