您的位置 首页 芯闻

嵌入式规划经历共享:存储器以及BootLoader的一些

在大学的时候很少关心单片机内部存储器的结构及应用,只是大概的知道RAM和ROM的区别,甚至只是知道程序下载到ROM中就能运行了。其他的如何工作程

在大学的时分很少关怀单片机内部存储器的结构及运用,仅仅大约的知道RAM和ROM的差异,乃至仅仅知道程序下载到ROM中就能运转了。其他的怎么作业程序怎么发动的就不了了知了。因而在触摸嵌入式的时分就会呈现许多盲区。在此自己将作业三个多月以来触摸到的一些关于嵌入式新的了解共享给咱们,有什么过错的当地在所难免,期望咱们给予纠正。

RAM和ROM在单片机中的相关运用

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在体系中止供电的时分依然能够坚持数据,而RAM一般都是在掉电之后就丢掉数据,典型的RAM便是计算机的内存。

RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度十分快,是现在读写最快的存储设备了,可是它也十分贵重,所以只在要求很严苛的当地运用,比方CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保存数据的时刻很短,速度也比SRAM慢,不过它仍是比任何的ROM都要快,但从价格上来说DRAM比较SRAM要廉价许多,计算机内存便是DRAM的。

DRAM分为许多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等。所谓内存便是用来寄存当时正在运用的(即履行中)的数据和程序,咱们往常所说到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当咱们将数据写入DRAM后,经过一段时刻,数据会丢掉,因而需求一个额外设电路进行内存改写操作。

ROM也有许多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者差异是,PROM是一次性的,也便是软件灌入后,就无法修改了,这种是前期的产品,现在现已不行能运用了,而EPROM是经过紫外光的照耀擦出原先的程序,是一种通用的存储器。别的一种 EEPROM是经过电子擦出,价格很高,写入时刻很长,写入很慢。

简略来说,最原始的单片机比方at89c51,内部集成了 ROM,RAM。ROM用来存储编好的程序、常数、表格等,当单片机掉电ROM中的数据不会丢掉,因而单片机掉电再上电还会持续运转;RAM能够寄存用户的暂时变量、还有单片机内部的特别寄存器等,单片机掉电后数据会丢掉,当在上电后程序履行,从头初始化寄存器和变量的值。

在这里简略说一下MCS-51的程序履行流程,MCS-51单片机的存储器安排结构,选用典型的哈佛结构,即程序存储器和数据存储器彻底独立,具有各自的寻址体系,包含片内数据存储器与片外数据存储器都具有自己独立的寻址体系。所以,在地址空间上答应堆叠。如:程序存储器的地址空间中有0000H这个单元,片内数据存储器也有0000H这个单元,片外数据存储器中还有0000H这个单元。

89S51片内有4kB的程序存储单元,其地址为0000H— 0FFFH,单片机发动复位后,程序计数器的内容为0000H,所以体系将从0000H单元开端履行程序。在这里会跳转到main函数,可是据说在跳转到 main函数之前,还会做一些判别的处理,详细没有研究过。

Flash在嵌入式体系中的运用

现在许多的芯片内部都是用flash,或许是外挂Flash来存储程序。现在的Flash主要有两种NOR Flash和NADN Flash。

NOR Flash的读取和咱们常见的SDRAM的读取是相同,用户能够直接运转装载在NOR FLASH里边的代码,这样能够削减SRAM的容量然后节省了本钱。

NAND Flash没有采纳内存的随机读取技能,它的读取是以一次读取一块的方法来进行的,一般是一次读取512个字节,选用这种技能的Flash比较廉价。用户不能直接运转NAND Flash上的代码,因而许多运用NAND Flash的开发板除了运用NAND Flah以外,还作上了一块小的NOR Flash来运转发动代码。

一般小容量的用NOR Flash,由于其读取速度快,多用来存储操作体系等重要信息,而大容量的用NAND FLASH。NOR Flash能够具有 SDRAM的接口,具有更多的地址线来便利读取内存中的每一个字节;NAND flash AND结构能供给极高的单元密度,能够到达高存储密度,而且写入和擦除的速度也很快。运用NAND的困难在于flash的办理和需求特别的体系接口。

Serial Flash 具有spi的接口能够页读、恣意地址读。而且它能够有四线SPI,双线SPI的DDR接口。它能够运用spi的外部地址总线的方法来直接在外部flash中运转程序,不过运转速度是个有待考虑的问题。

嵌入式Boot Loader

在嵌入式中一些产品中,选用的发动方法中,依据不同的芯片结构而不同。拿计算机的发动来说,计算机引导加载程序由BIOS和坐落硬盘MBR中的OS Boot Loader组成,其实BIOS便是一段固化程序,现在许多嵌入式的芯片内部都会有一段相似的程序来,这段程序的用处浅显的讲便是来加载Boot Loader的。计算机也相同,BIOS在完结体系硬件检测和资源分配后,将硬盘MBR中的Boot Loader读到体系的RAM中,然后将控制权交给OS Boot Loader,Boot Loader的主要任务便是将内核映像从硬盘读到RAM中,然后跳转到内核的进口点运转,即敞开操作体系。

咱们常说的嵌入式的Boot Loader其实便是和上面说到的OS Boot Loader差不多,只不过许多嵌入式的CPU没有BIOS那样的固化程序,他们上电复位到0x0000000地址后一般是Boot Loader的开端地址。有些嵌入式的CPU会有片内的ROM,会有一段固化的程序,去加载Boot Loader。

简略来说Boot Loader有两种形式,一种叫做Down Loader,一种叫做loader;DownLoader这种形式中主要是程序员开发阶段需求一种形式,这种形式主要是经过调试器将程序代码下载到内部 RAM中去,然后经过Boot Loader 写到方针机的Flash或许其他存储设备中去。这种形式仅仅在开发人员在项目开发阶段运用的一种形式。在项目完结后的制品中,Boot Loader会一向作业在loader 形式中。其大约做的作业便是硬件设备初始化,为Boot Loader今后的作业设定先决条件;设置仓库、检测体系内存映射,将体系映像或许程序代码段从Flash上读取到内部RAM中,有的体系会加载到 SDRAM中,还有的会直接在外部FLASH上运转。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/301201.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部