嵌入式系统分层分为应用软件层、操作系统层和硬件层。在这里我们说的是第二层,也就是操作系统层。
硬件开发环境:搭载三星Exynos4412芯片,华清FS4412开发板。
移植的目的
不同架构的处理器指令集不兼容,即便是相同的处理器架构,板卡不同驱动代码也不兼容。 Linux是一个通用的内核并不是为某一个特定的处理器架构或板卡设计的,所以从官方获取Linux源码后我们要先经过相应的配置使其与我们当前的硬件平台相匹配后才能进行编译和安装。
我们的目标是在Exynos4412开发板安装Linux系统。
系统移植过程
一、Windows装机
1.准备Windows系统镜像、U盘启动盘
2.进入BIOS选择启动方式(U盘启动)
BIOS(Basic Input Output System)是Windows厂家在计算机出厂之前就会固化在电脑的主板上,咱们买回家的电脑可能会没有操作系统,但一定会有BIOS。BIOS是个人计算机启动时加载的第一个软件,主要功能是控制硬件,控制电脑的启动方式。
3.通过U盘中的引导程序安装系统
4.安装Windows驱动程序
5.安装Windows应用程序
二、Linux系统移植
1.准备Linux内核镜像、SD卡启动盘
2.通过拨码开关选择启动方式(SD启动)
类似于BIOS,Linux也会在CPU主板中固化一段代码,名为BL(bootloader)。uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核。同Windows不同的是,Linux的bootloader需要在关机时,手动调动拨码开关来启动。两者功能是一样的但方式不一样。
3.通过SD卡中的引导程序安装系统
4.安装Linux驱动程序
5.安装Linux应用程序
我们需要在互联网上下载Linux系统开源的源码,然后进行各种的配置和修改工作,要让源码和开发板的硬件环境配套,然后编译,最后安装。
开发板启动过程
系统安装在EMMC(硬盘)中,将来执行系统(或程序)时,CPU将系统从EMMC(硬盘)中写到RAM(内存)中去执行。EMMC相当于计算机中的硬盘,数据断电不丢失。
开发板上电后首先运行SOC内部iROM中固化的代码(BL0),这段代码先对基本的软硬件环境(时钟等...)进行初始化,然后再检测拨码开关位置获取启动方式,然后再将对应存储器中的uboot搬移到RAM内存,然后跳转到uboot运行。
uboot开始运行后首先对开发板上的软硬件环境做进一步初始化,然后将linux内核、设备树(dtb)、根文件系统(rootfs)从外部存储器(或网络)搬移到内存,然后跳转到linux运行。
linux开始运行后先对系统环境做初始化,当系统启动完成后,Linux再从内存中(或网络)挂载根文件系统。