tn-imx-linux
tn-imx-linux
Created
May 30, 2021 01:44 AM
Tags
Androiod Things
Published
May 30, 2021
Description
好像所有的版本都无法使用,可能是我的打开方式不对

tn-imx_4.14.98_2.0.0_ga-stable

会报 undefined instruction
notion image
 
用了 tn_imx_defconfig 和 mutil_v7_defconfig 都是如此

tn-imx_5.4.70_2.3.0-stable

可以用 tn_imx_defconfig 和 mutil_v7_defconfig 编译成功,但是 dtbs 没办法编译出 imx7d-pico-pi.dtb,看上去是 baseboard_pico_pi.dtsi 里面有一些问题,包括且不限于 PICO_PI_GPIO_DEFS 和 PICO_I2CA 缺少定义。

tn-imx_5.10.9_1.0.0-next

无法通过 tn_imx_defconfig 编译,可以用 mutil_v7_defconfig 编译。dtbs 同样是上面 5.4 发生的问题,但是这里,并不会跳过有问题的版本,而是直接报错了。上面的会导致理论上无法正常编译的 dtb 被跳过,但是最终还是能够走完编译流程。5.10 是编译到中途一半直接错误了。
 
都会发生 Kernel Panic

编译方式

配置交叉编译

wget https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/10.3.0/x86_64-gcc-10.3.0-nolibc-arm-linux-gnueabi.tar.xz
tar xf x86_64-gcc-10.3.0-nolibc-arm-linux-gnueabi.tar.xz
export CC=`pwd`/gcc-10.3.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-
export KERNEL_ARCH=arm
export CORES=12 # 设置为核数 * 1.5

Source

export kernel_version=5.4.70 # 设置一下 kernel 版本

menuconfig

make ARCH=${KERNEL_ARCH} CROSS_COMPILE="${CC}" tn_imx_defconfig # 或者 multi_v7_defconfig
make ARCH=${KERNEL_ARCH} CROSS_COMPILE="${CC}" menuconfig

Compile

make -j${CORES} ARCH=${KERNEL_ARCH} CROSS_COMPILE="${CC}" zImage modules dtbs

Copy output files

make -s ARCH=${KERNEL_ARCH} CROSS_COMPILE="${CC}" modules_install INSTALL_MOD_PATH="`pwd`/deploy/modules"
make -s ARCH=${KERNEL_ARCH} CROSS_COMPILE="${CC}" dtbs_install INSTALL_DTBS_PATH="`pwd`/deploy/dtbs"
pushd deploy/modules && tar czf ../${kernel_version}-modules.tar.gz ./* && popd
pushd deploy/dtbs && tar czf ../${kernel_version}-dtbs.tar.gz ./* && popd
cp -v arch/${KERNEL_ARCH}/boot/zImage "deploy/${kernel_version}.zImage"