嵌入式Linux之Linux内核的装载

2019-07-12 19:58发布

嵌入式Linux之Linux内核的装载


上一篇文档中,讲述了嵌入式Linux开发过程中宿主机的配置过程。宿主机配置完成后,就可以对目标板进行操作。本文档记录Linux内核装载流程。
在PC机的Linux下,有两个很著名的Bootloader:LILO和GRUB,它们的作用是引导Linux操作系统。在嵌入式操作系统中,同样也有bootloader,其被固化在CPU上电后能够引导启动的ROM中,系统上电后Bootloader开始运行,对系统硬件进行必要的初始化,同时为Linux系统运行建立合适的软件环境,引导Linux启动。
在系统的Boot ROM中,通常应该装有Bootloader,内核启动参数,Linux内核映象和根文件系统,典型的空间分布如下所示:
Linux空间分布
由于嵌入式系统的差异性,嵌入式Linux不可能像PC的Linux那样具有统一的,标准的Bootloader。常见的嵌入式Linux的Bootloader包括ARMboot,U-Boot,Bootldr和vivi。不论哪种bootloader,都必须具有以下功能:
  • 对系统硬件进行必要的初始化
  • 为Linux操作系统的运行进行环境的准备
  • 向Linux内核传递启动参数
  • 引导Linux启动
在开发板SMART3250上安装Linux操作系统,分为4个步骤,依次为固化Kickstart和S1L,固化U-Boot,固化Linux内核以及固化Linux文件系统。
Smart3250板载256M的NAND FLASH,扇区大小为128KB,bootloader、linux内核以及文件系统都安装在其中,NAND FLASH 的分区情况如下表所示:
NAND FLASH 的分区

1.固化Kickstart和S1L

Kickstart和S1L是用于初始化并引导LPC3250的Loder,可以采用串口的方式进行下载。
将Smart3250的UART5口与PC机相连,给开发板上电。在随开发板附赠的CDROM中,拷贝UpdateBootloader文件夹,确认其中有bootloader.bin,kickstart.bin,stage1.bin这三个二进制文件,运行Updatebootloader.exe程序,得到下图界面:
程序运行画面
根据软件的提示,先更新bootloader.bin,之后再将kickstart.bin写入扇区0,将stage1.bin写入扇区1。复位开发板即可。

2.固化U-boot

固化Uboot需要使用Tera Term软件,使用window环境下的超级终端或者Linux环境下
的minicom亦可。打开软件后,设置正确的串口参数:115200-8N1,无流控制,系统即进入S1L的命令提示符界面:如下所示:
命令提示符界面
在其命令行中输入指令:
erase 2 10 1 //擦除分配给Uboot的NAND FLASH
load term raw 0x93fc0000
接着,打开Tera term的file->send file,选择U-boot.bin,即可开始烧写。烧写完成之后,通过指令固化,重启。
nsave
aboot flash raw 0x83fc0000

固化Linux内核

固化文件系统

这两个部分尚未有文档记录,后期补上。