当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 学习笔记 > linux系统移植的详细步骤

linux系统移植的详细步骤 时间:2018-08-30      来源:未知

系统移植在学习中是比较难的,对于系统移植来说可以从4个方面来了解:环境搭建,u-boot,kernel,rootfs,今天华清远见的美女学霸总结出来系统移植的相关知识及系统移植的过程,比较详细

启动过程:

BL0 --> BL1 --> BL2 --> u-boot --> kernel --> rootfs iROM iRAM iRAM DRAM DRAM DRAM

Sams Sams

上图中的u-boot指的是 u-boot.bin

BL1,BL2,u-boot.bin共同组成 u-boot-fs4412.bin

BL1跟CPU相关

BL2跟板子配置相关,BL2初始化内存一、环境搭建

交叉编译工具链网络配置

tftp服务器配置

nfs服务器配置

binutils工具集,addr2line, strip, ... 二、u-boot

u-boot常用命令:

1. help

2. 环境变量相关,print,set,save

3. emmc相关的,movi,mmcinfo

4. 数据传输,tftp,loadb

5. 运行相关,run,go,bootm,boot;环境变量:bootcmd, bootargs

配置 make fs4412_config

指定交叉编译,指定平台,可以通过修改Makefile来实现编译 make -j2

移植:方法参看README中的U-Boot Porting Guide 三、kernel

配置 make menuconfig

指定交叉编译,指定平台,可以通过修改Makefile来实现编译 make uImage -j2

移植:见招拆招

四、rootfs busybox

配置 make menuconfig

指定交叉编译,指定平台,可以通过修改Makefile来实现编译 make -j2

安装 make install,默认安装到 _install目录五、固化

farsight@ubuntu:$表示在虚拟机中的操作FS4412 #表示在板子上的u-boot中的操作[root@farsight ]#表示板子上shell中的操作

1. 固化u-boot

1. 做一个SD卡启动盘

farsight@ubuntu:$ sudo ./sdfuse.sh /dev/sdb u-boot- fs4412.bin

或 者 直 接 用 命 令 :sudo dd iflag=dsync oflag=dsync if=/home/farsight/u-boot-fs4412.bin of=/dev/sdb seek=1

2. 从SD卡启动,通过tftp下载 u-boot-fs4412.bin

FS4412 # tftp 40008000 u-boot-fs4412.bin(要提前把网络配置好,tftp服务器配置好,环境变量serverip,ipaddr设置好)

3. 烧写

FS4412 # movi write u-boot 40008000 (此地址要与第2 步中tftp下载的地址一致)

4. 测试一下:从emmc启动,看u-boot能否启动起来

2. 固化kernel和设备树

1. 通过tftp下载 uImage 并烧写FS4412 # tftp 40008000 uImage

FS4412 # movi write kernel 40008000

2. 通过tftp下载 exynos4412-fs4412.dtb 并烧写FS4412 # tftp 40008000 exynos4412-fs4412.dtb FS4412 # movi write dtb 40008000

3. 固化rootfs(通过文件复制的方式来实现)

1. 对eMMC进行分区(两种方法) 方法1. 在u-boot里分区

FS4412 # fdisk -c 0 方法2. 系统起来之后分区

[root@farsight ]# fdisk -u /dev/mmcblk0

...... 通过fdisk实现自己需要的分区

2. 通过NFS挂载根文件系统来启动系统

设置bootargs从NFS挂载根文件系统FS4412 # set bootargs root=/dev/nfs

nfsroot=192.168.123.123:/home/farsight/busybox-1.22.1/_install rw console=ttySAC2,115200 init=/linuxrc ip=192.168.123.111 clk_ignore_unused=true

设置bootcmd从emmc读取kernel和设备树,然后启动FS4412 # set bootcmd movi read kernel 41000000\;

movi read dtb 42000000\; bootm 41000000 - 42000000

FS4412 # save

3. 格式化

[root@farsight ]# mkfs.ext2 /dev/mmcblk0p1

4. 挂载格式化好的磁盘

[root@farsight ]# mount -t ext2 /dev/mmcblk0p1 /mnt

5. 通过NFS挂载做好的根文件系统[root@farsight ]# mount -t nfs -o nolock

192.168.123.123:/home/farsight/busybox-1.22.1/_install /tmp

6. 烧写(复制)根文件系统

[root@farsight ]# cp -a /tmp/* /mnt 启动配置:

FS4412 # set bootargs root=/dev/mmcblk0p1 rw console=ttySAC2,115200 init=/linuxrc ip=192.168.123.111 clk_ignore_unused=true

root=/dev/mmcblk0p1是指定从mmc的第一个分区去挂载根文件系统

FS4412 # save

上一篇:c多态的作用,让你快速学会c多态

下一篇:C语言中数据的输入输出详解

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部