手上有个闲置的PicoPI-I.MX7D,使用的是NXP的MCIMX7D7DVM10SC芯片,看了一下是ARM v7架构的,拥有512M内存和1G主频。虽然很鸡肋,但是好歹是个板子,不用又觉得浪费,于是想装一个Debian Linux上去跑跑小脚本用。
查阅了一圈资料发现,想用这货跑起debian需要自己编译内核外加使用u-boot来启动。
说干就干
¶1. BootLoader的写入
安装一些交叉编译的依赖库和软件
ARM Cross Compiler: GCC
1 | wget -c https://releases.linaro.org/components/toolchain/binaries/6.5-2018.12/arm-linux-gnueabihf/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz |
1 | ${CC}gcc --version |
接下来编译U-boot
1 | git clone -b v2019.07-rc4 https://github.com/u-boot/u-boot --depth=1 |
这样我们就拥有了一个适用于imx7d的U-boot。
想把BootLoader下载到板子上,需要用官方的 imx_usb_loader
连接板子的Console串口和type-c数据接口,从Github下载 imx_usb_loader。设置跳线到Download模式
1 | git clone https://github.com/boundarydevices/imx_usb_loader |
1 | lsusb | grep Freescale |
使用imx_usb_loader加载SPL和uboot进系统
1 | sudo ~/imx_usb_loader/imx_usb u-boot/SPL |
这样系统就能从U-boot启动了。
1 | Loading Environment from MMC... OK |
在U-boot里设置一些参数以便启动dfu-agent
1 | => env default -f -a |
这样就可以使用dfu-util写入u-boot到板子的eMMC存储了
1 | sudo dfu-util -D u-boot/SPL -a spl |
接下来就可以把板子从Download模式恢复为eMMC启动模式
重启以后板子会自动启动到U-boot,这时候在串口可以捕捉到u-boot,并且启用挂载外置存储模式,以便往eMMC里写入系统。
1 | Loading Environment from MMC... OK |
此时电脑上应该已经可以看到USB外接存储
1 | lsusb | grep Netchip |
¶2. 系统的内核编译和写入
¶Linux Kernel
1 | git clone https://github.com/RobertCNelson/armv7-lpae-multiplatform |
这里要耗费大量时间来编译内核,以及缺少各种依赖库需要安装,大概三四个小时的时间。
¶RootFS
首先选择系统,这里我选择的是Debian 10,当然也可以使用Ubuntu 20
Debian 10
1 | wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-10.4-minimal-armhf-2020-05-10.tar.xz |
Ubuntu 20.04 LTS
1 | wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz |
使用lsblk找到外置存储,我的是/dev/sdb1,并且进行清零
1 | export DISK=/dev/sdb |
再次安装BootLoader
1 | sudo dd if=./u-boot/SPL of=${DISK} seek=1 bs=1k |
创建分区
1 | sudo sfdisk ${DISK} <<-__EOF__ |
格式化并挂载分区
1 | sudo mkfs.ext4 -L rootfs ${DISK}1 |
首先写入rootfs
1 | sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/ |
然后找到编译完成的内核版本,如kernel_version=5.X.Y-Z
1 | export kernel_version=5.X.Y-Z |
最后写入完成重启即可。
1 | sync |
串口Console端
1 | Loading Environment from MMC... OK |
重启后就会自动进入Debian了
参考资料:
https://developer.android.com/things/hardware/imx7d
https://www.nxp.com/part/MCIMX7D7DVM10SC#/
https://www.digikey.com/eewiki/display/linuxonarm/PICO-PI-IMX7