单片机、桌面电脑/PC、嵌入式系统的启动思路对比。

一、理解SRAM和DRAM。

1、程序员角度中的SRAM?

答:我们平时都说内存分为SRAM和DRAM,那到底什么是SRAM呢?中文名静态内存,它的一大特点是不需要我们程序员写初始化代码初始化它,直接上电即可工作,但是一大缺点是内存一般比较小而且非常贵。单片机内部一般就使用这个,所以写完单片机代码烧录后直接上电,程序就可以跑起来了,并不需要写初始化内存的代码。

2、程序员角度中的DRAM?

答:DRAM在我们平时生活中最经常被提到,平时说所电脑的内存条例如:DDR3、DDR4、LPDDR等等。都属于DRAM,它的特点是内存容量大,动不动就几个G,对程序员来说,缺点就是需要使用代码初始化才可工作,也就是说直接上电不可工作。

二、理解NandFlash和NorFlash。

1、程序员眼中的NorFlash?

答:Flash一般也分为NorFlash和NandFlash,而类似于SRAM的特点,NorFlash不需要代码的初始化即可用于存储东西,上电即可存储内容(一般是代码),缺点也是容量小,价格昂贵,所以一般是用来作为启动介质。单片机内部就是使用这个,玩过单片机的朋友都知道,编辑器上写好代码以后,直接可以烧录到芯片内部的NorFlash里面即可把代码存储到里面去,并不需要写初始化代码初始化NorFlash。

2、程序员眼中的NandFlash?

答:NandFlash类似于DRAM,有着很大的容量,相比之下便宜的价格,但是却需要程序员写初始化代码初始化这个硬件才可使用,直接上电什么东西也存储不了。

三、几种设备的启动思路对比。

1、单片机。
启动介质:NorFlash(储存器)+SRAM(内存)。

答:NorFlash存储代码,SRAM运行代码,所以单片机是不需要人为地写初始化代码去初始化这两个硬件,直接烧录代码,直接上电即可让代码运行。

2、桌面电脑/PC。
启动介质:NorFlash+SRAM 运行BIOS
系统运行介质:DDR+硬盘 运行操作系统。

答:我们知道电脑有个东西叫BIOS,它的工作就是用来启动操作系统的,而BIOS是放在电脑里面的IROM(NorFlash)中的,所以一般的电脑一启动,CPU就可以读取NorFlash(NorFlash不需要初始化)里面的BIOS,BIOS代码就开始运行在内部的SRAM(SRAM不需要初始化),因为SRAM确实太小了,不能运行操作系统这么庞大的东西,所以这小小的代码就初始化硬盘、DDR内存等,然后代码从SRAM重定位到DDR这块大内存里面,再读取硬盘里面的操作系统到DDR里面,开始启动操作系统。

3、嵌入式系统。
启动介质:NorFlash+SRAM 运行uboot的前一部分代码
系统运行介质:DDR+NandFlash/SD卡等 运行uboot+操作系统。

答:上电以后,CPU读取内部IROM(实质是NorFlash,所以不需要初始化)的一小段代码,叫BL0,这段代码运行在内部的SRAM(不需要初始化),作用是判断当前设备的需要用什么启动(SD卡、USB、NandFlash……),假如判断到是使用NandFlash启动,就会直接读取NandFlash中的uboot的前一部分代码叫BL1,BL1的作用是初始化DDR(只有初始化DDR才可获得更大的内存去运行操作系统),初始化完了以后就把整个uboot的代码读取到DDR中,然后重定位到DDR中去运行uboot剩下的代码,然后uboot读取NandFlash中的操作系统到DDR中去运行操作系统。

注意1:IROM里面的BL0代码在判断了启动的方式以后,假如是NandFlash,就会执行一段内部初始化NandFlash的代码。所以一开始直接就可以使用NandFlash了。
注意2:uboot就是一段加载引导操作系统启动的代码。

发布了24 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/gyyu32g/article/details/78543918