IMX6Q sabre lite 移植 linux

本文详细记录了IMX6Q sabre lite 移植Linux系统的步骤,包括准备SD卡分区、U-BOOT的下载与编译、内核的获取与编译,以及文件系统的制作和烧录到SD卡的过程。最后成功启动Linux系统。

IMX6Q sabre lite 移植 linux

笔者刚刚接触imx6q sabre lite ,通过查阅其他人的经验,经过亲测并总结出本文:

  • 本文启动方式为SD卡启动(TFTP、NFS后面会学习一下)

一、准备SD卡

使用SD卡作为系统启动盘,将SD进行分区(默认你手里已经有了SD卡和读卡器)。
具体分区操作可以参考http://blog.csdn.net/decisiveness/article/details/49834445

for: DISK=/dev/sdX (X可能为b,c, 下面以sdb为例)
sudo mkfs.ext2 sdb1 -L boot
sudo mkfs.ext4 sdb2 -L rootfs

这样SD卡这里就差不多了

二、U-BOOT(下载任何东西前,请确定自己的文件夹)

1、下载U-BOOT

git clone https://github.com/MrVan/uboot.git
git checkout 4f016adae573aaadd7bf6a37f8c58a882b391ae6

2、编译U-BOOT
切换到uboot目录下

export CROSS_COMPILE=/home/...编译器所在路径.../toolchains/aarch32/bin/arm-linux-gnueabihf-
make ARCH=arm imx6q-sabrelite_defconfig
make ARCH=arm

3、然后将U-BOOT烧写到SD卡

sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 conv=sync conv=notrunc
注意:要是用sudo ,dd为烧写命令,烧写到/dev/sdb (因为SD卡的前面有2M的位置,需要在这里boot)

这时候把SD卡插进板子,应该可以进入U-BOOT模式

三、Kernel

下载及编译

git clone http://github.com/RobertCNelson/armv7-multiplatform.git
cd armv7-multiplatform
git checkout origin/v3.14.x -b tmp
./build_kernel.sh

这一步时间可能有点长,请耐心等待。。。。

四、文件系统(这里以ubuntu为例)

下载以及解压缩

wget -c https://rcn-ee.net/rootfs/eewiki/minfs/ubuntu-14.04.3-minimal-armhf-2016-01-25.tar.xz
tar xf ubuntu-14.04.3-minimal-armhf-2016-01-25.tar.xz

五、将文件系统和Kernel 都CP到SD卡

文件系统

sudo tar xfvp ~/*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/ (注意是你解压缩后文件夹中的.tar 文件)

Kernel Image:

sudo cp -v ~/armv7-multiplatform/deploy/${kernel_version}.zImage /media/boot/zImage(最后的的zImage必须要有)

Kernel Device Tree Binaries:

sudo mkdir -p /media/boot/dtbs/
sudo tar xfv ~/armv7-multiplatform/deploy/${kernel_version}-dtbs.tar.gz -C /media/boot/dtbs/

Kernel Modules:

sudo tar xfv ~/armv7-multiplatform/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

六、其他(也要做啊)

16x_bootscript (自己建一个"6x_bootscript.txt",把下面内容写在里面)
echo "6x_bootscript -> uEnv.txt wrapper..."
if test -n $disk; then
setenv mmcdev $disk
setenv mmcpart 1
fi
load mmc ${mmcdev}:${mmcpart} ${loadaddr} uEnv.txt
env import -t ${loadaddr} ${filesize}
run uenvcmd

  2、然后使用mkimage生成脚本
 (关于mkimage使用请参考http://blog.51cto.com/buaadallas/107808)

  mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "wrapper" -d ./6x_bootscript.txt    ./6x_bootscript

  3、创建"uEnv.txt" (复制以下内容)

initrd_high=0xffffffff
fdt_high=0xffffffff

fdtfile=imx6q-sabrelite.dtb

console=ttymxc1,115200n8
optargs=console=tty0
video=

mmcroot=/dev/mmcblk0p2 ro

mmcrootfstype=ext4 rootwait fixrtc 


loadkernel=load mmc ${mmcdev}: $ {mmcpart} ${loadaddr} zImage
loadinitrd=load mmc ${mmcdev}:${mmcpart} 0x12A00000 initrd.img; setenv initrd_size ${filesize}
loadfdt=load mmc ${mmcdev}:${mmcpart} 0x11000000 /dtbs/${fdtfile}

boot_fdt=run loadkernel; run loadfdt

mmcargs=setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype} video=${video}

uenvcmd=run boot_fdt; run mmcargs; bootz ${loadaddr} - 0x11000000

4、Copy 6x_bootscript/uEnv.txt to the boot partition:(不用改)
sudo cp -v ./6x_bootscript /media/boot/
sudo cp -v ./uEnv.txt /media/boot/

5、File Systems Table (/etc/fstab)(不用改)

sudo nano /media/rootfs/etc/fstab
Edit: /etc/fstab
/dev/mmcblk0p2   /           auto   errors=remount-ro   0   1
/dev/mmcblk0p1   /boot/uboot auto   defaults            0   2

6、编辑: /etc/network/interfaces
sudo nano /media/rootfs/etc/network/interfaces

添加下面内容:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

7、Serial Login
对于Ubuntu:创建文件 /etc/init/serial.conf
sudo nano /media/rootfs/etc/init/serial.conf

内容:/etc/init/serial.conf

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty 115200 ttymxc1

七、好了,把SD卡插到板子上就可以启动了

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值