操作系统移植学习
前景了解操作系统的作用?
资源管理,程序控制和人机交互等
Linux操作系统移植的概念
嵌入式操作系统与通用操作系统的最明显的区别之一就是它的可移植性。一款嵌入式操作系统一般可以运行在不同体系结构的处理器和开发板上。为了使嵌入式操作系统可以在某款具体的目标设备上运行,嵌入式操作系统的编撰者一般难以一次性完成整个操作系统的代码,而必须把一部份与具体硬件设备相关的代码作为具象的插口保留下来,让提供硬件的OEM厂商来完成。
为何要进行操作系统的移植?
不同架构的处理器指令集不兼容,即便是相同的处理器架构,板卡不同驱动代码也是不兼容的。
Linux是一个通用的内核并不是为某一个特定的处理器构架或则板卡设计的,所以从官方获取的Linux源码后我们要先经过相应的配置使其与我们当前的硬件平台相匹配后才会进行编译和安装。
将已有的软件,按照硬件平台的差别,进行少量的代码更改,致使该软件可以在新的硬件平台上运行上去的过程,就是将linux系统经过剪裁,移植到arm开发板上。
Linux系统?
linux系统=linux内核+根文件系统;
根文件系统=库(/lib和/usr/lib)+命令(/bin和/usr/bin)+配置文件(/etc)+GUI(图形化界面,如:QT)
移植的三大部份?1.移植uboot:
我们这个板子本身有uboot程序(每位开发板自带),不须要配置linux rar,假如须要请了解如下:
bootloader是哪些?
BootLoader是在一系列引导加载系统启动的程序的合称,是一个概念并不是具体的代码,只要满足在设备启动早期启动内核功能的代码都可以称作BootLoader。
u-boot是哪些?
是一个主要用于嵌入式系统的引导加载程序。
1.是一个开源的软件
2.支持多种构架的硬件平台
3.的主要作用是引导加载linux内核或则应用程序启动。一旦内核或应用程序启动,uboot的使命就结束了。
4.源码本质就是一个裸机程序,ARM构架的CPU基本都是使用uboot
5.启动时,主要完成部份硬件的初始化;诸如:显存,EMMC,时钟,并口等
6.主要用于引导linux内核启动,并给内核传递必要的启动参数。
2.移植Linux内核
内核是哪些:
内核是操作系统最基本的部份。它是为诸多应用程序提供对计算机硬件的安全访问的一部份软件,这些访问是有限的,但是内核决定一个程序在哪些时侯对某部份硬件操作多长时间。
CPU与内核之间的关系:
“内核是CPU的核心,一个CPU可以有多个内核(也就是多核处理器),而一个内核只能属于一个CPU。
linux内核必须由BootLoader加载和启动,内核本质上也是一个大程序,从上而下执行,最后会步入到一个while(1)。内核一旦启动,BootLoader生命结束,内核永驻显存,直至系统复位重启才衰落。
内核会依照BootLoader传递的参数去某个地方去找根文件系统rootfs,一旦找到rootfs以后的话,内核会将控制权交给根文件系统rootfs。
3.移植根文件系统镜像
linux内核按照BootLoader提供的参数找到了根文件系统rootfs,内核都会运行根文件系统rootfs下/sbin目录下的init一号进程制作linux系统,而且将控制权交给init第一号进程linux设置环境变量,init进程创建子进程运行/bin/sh程序,就是shell程序,shell终端,shell运行->终端->等待用户输入命令(ls/pwd/……)。
移植内核和移植根文件系统通常是一起执行。
采用EMMC加载内核和根文件系统:
优势:不须要通过网路去服务器下载镜像,我们将镜像安装到开发版上的EMMC中,之后从EMMC启动内核(交互模式下)
步骤:给开发板重新上电,在uboot交互模式下,去下载并安装这种镜像。
1.将内核镜像写入到EMMC手指定的磁道。
2.下载根文件系统镜像到显存中。
3.将根文件系统镜像写入到EMMC手指定的磁道。
由于要从EMMC驱动,所以还要更改uboot的启动参数,并保存。
给开发板重新上电制作linux系统,上电以后观察内核是否能通过EMMC加载和启动内核,启动完成后是否能挂载根文件系统(ext4),在终端上输入linux下的shell命令测试是否正常。
EMMC是哪些?
eMMC在封装中集成了一个控制器,提供标准插口并管理闪存,致使手机厂商能够专注于产品开发的其它部份,并减短向市场推出产品的时间。