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/
六、其他(也要做啊)
1、6x_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
本文详细记录了IMX6Q sabre lite 移植Linux系统的步骤,包括准备SD卡分区、U-BOOT的下载与编译、内核的获取与编译,以及文件系统的制作和烧录到SD卡的过程。最后成功启动Linux系统。

2073

被折叠的 条评论
为什么被折叠?



