Linux内核及文件系统移植
嵌入式系统包含硬件子系统与软件子系统,其中软件子系统大致可分为:bootloader、Linux内核、文件系统与应用开发,这四个组成部分中前三者构建成嵌入式应用功能的基础运行环境,是进行嵌入式产品项目开发前期就需要敲定的配置环境,非常重要与关键。本课程主要对第三部分嵌入式文件系统的构建与移植进行介绍,讲解如何选择、配置、移植与制作一个可用的文件系统及其镜像,以及怎样配合Linux内核的配置调整来应用生成的文件系统,进而掌握构建完整的嵌入式软件子系统应用开发环境。
开发移植环境:虚拟机Ubuntu 12.04 + FriendlyARM Smart210SDK + Windows 7 Ultimate
Lesson 1. Linux内核启动参数介绍与设置
引导:
软件子系统各组成部分之间的层次与关联,怎样相互识别、配置与加载?
一、系统启动流程
bootloader(uboot) ———— Linux Kernel(uImage) ———— Rootfs(Init) ———— Applications
二、启动环境配置
uboot环境变量: printenv setenv saveenv tftpboot nand read/write …
baudrate 115200
bootdelay
bootcmd boot bootd运行bootcmd变量指定的命令进行启动
ipaddr, serverip, ethaddr,gatewayip
bootargs
内核启动参数:bootargs '<name>=<value> ...'
bootargs=root=/dev/nfs nfsroot=192.168.10.7:/home/hong/nfsroot ip=192.168.10.11 init=/linuxrc console=ttySAC0,115200
root, rootfstype, nfsroot
root=/dev/nfs nfsroot=nfsserver:path
root=/dev/mtdblock2
rootfstype=jffs2/yaffs2/squashfs/ubifs/...
mtdparts: mtdparts=mtd-id:<size1>@<offset1>(<name1>),<size2>@<offset2>(<name2>)
mtdparts=s5pv210-nand:1M(boot),5M(kernel),80M(rootfs),426M(usrfs)
要想这个参数起作用,内核中的mtd驱动必须要支持,即内核配置时需要选上
Device Drivers ---> Memory Technology Device (MTD) support ---> Command line partition table parsing
ip: nfs必须进行设置
ip=ip addr
ip=ip addr:server ip addr:gateway:netmask::which netcard:off
init, console
mem 限制linux内核的使用内存 mem=128M
三、启动参数设置
setenv bootargs ‘root=/dev/nfs nfsroot=192.168.10.7:/home/hong/nfsroot ip=192.168.10.11 init=/linuxrc console=ttySAC0,115200’
setenv bootcmd ‘tftpboot 20008000 tiny_uImage;bootm 20008000’
总结:
1. 收集信息:flash类型与分区(nand/nor/spi.etc), 内存大小, 根文件系统类型,网络参数等(参考SDK开发手册)
2. 配置参数:setenv bootargs ‘…’;saveenv;
3. 测试参数:确保内核镜像可以成功加载,必不可少的步骤