嵌入式技术
linux内核启动的原理
大家对单片机编程并不陌生,其程序的启动流程是将内部flash地址为0x8000000开始的代码拷贝到内存RAM中,然后从RAM启动并运行,那对于linux这个庞大的操作系统是怎么启动的呢?它也不例外,也是先将代码加载到内存中,然后从RAM启动,不过它需要U-boot,也就是我们常说的bootloader来引导,将外挂存储介质中的代码拷贝内存RAM中,然后再开始运行,linux启动过程如图1。
Linux内核启动过程
图1
linux项目的存储方案
我们在做实际项目时,通常会选用EMMC或SPI NOR FLASH存储方案,EMMC可以选用主控的NAND FLASH+THGBMHG8C2LBALL,SPI NOR FLASH可以选择主控的SPI+W25Q256来设计方案,两种方案如图2:
EMMC和SPI NOR FLASH方案原理图
图2
EMMC在LINUX内核中的配置
EMMC在linux内核中的配置过程,进入内核目录,输入make menuconfig命令,回车,进入图3:
EMMC内核配置
图3
然后选择Device Drivers,回车进入图4
EMMC内核配置
图4
选中MMC/SD/SDIO card support,回车进入图5:
EMMC内核配置
图5
这样EMMC配置就完成了。
SPI NOR FLASH在LINUX内核中的配置
SPI NOR FLASH的配置方法和EMMC类似,返回到Device drivers界面如图6:
SPI NOR FLASH内核配置
图6
SPI nor flash属于MTD存储技术,选择MTD回车进入图7:
SPI NOR FLASH 内核配置
图7
选择SPI NOR 回车进入图8:
SPI NOR FLASH 内核配置
图8
由于我们项目用的freescale ,所以选择freescale, 可以根据实际情况选择,这样SPI nor flash就配置好了。
linux存储方案的选择
SPI nor flash的容量一般就只有几M,而且价格较贵,适合做一些文件系统较小,代码不多的项目,EMMC的容量比较大,可达1G,价格也比较便宜,适合做代码升级,大数据存储的项目,根据自己的项目需求来选择。
Linux内核启动环境变量设置
在uboot/include/configs目录下有一个与板子相关的头文件,通过命令行设置环境变量,选择内核以那种方式启动,如图9:
linux内核启动方式选择
图9
红色框里表示,如果按键按下就从SPI nor flash启动,否则从EMMC启动。
全部0条评论
快来发表一下你的评论吧 !