阅读提示:本文共计约5273个文字,预计阅读时间需要大约14分钟,由作者编程教程编辑整理创作于2023年11月05日23时30分25秒。
内容:
-
准备工具和环境
- 安装Ubuntu操作系统(建议使用18.04版本)
- 安装必要的软件包:sudo apt-get install build-essential cmake python3-dev git libssl-dev
- 安装Yocto Project构建环境:git clone https://github.com/YoctoProject/poky.git && cd poky; git checkout dunfell
- 安装Bitbake:git clone https://github.com/bitbake/bitbake.git
-
获取Ultra96V2的源代码和配置文件
- 从Ultralowpower官方仓库下载源码:https://github.com/ultralowpower/linux-ultralowpower.git
- 创建一个文件夹存放源码和配置文件,例如:mkdir ultra96v2_build && cd ultra96v2_build
- 将刚才下载的源码和配置文件复制到当前文件夹:cp -r ~/linux-ultralowpower/* .
-
修改配置文件
- 编辑Kconfig文件,找到“CONFIG_ARM64=y”这一行,将其改为“CONFIG_ARM64=m”,表示不启用AArch64支持。
- 编辑dts/overo-ux5-v2.dtsi文件,找到“regulator-core-supply = <®ulator_vdd_io ®ulator_vdd_io_name>, \”这一行,将其中的“regulator_vdd_io_name”替换为“vdd_io”。
- 编辑dts/overo-ux5-v2.dts文件,找到“regulator-core-supply = <®ulator_vdd_io ®ulator_vdd_io_name>, \”这一行,将其中的“regulator_vdd_io_name”替换为“vdd_io”。
-
编译内核
- 创建一个名为“local.conf”的文件,添加以下内容:
- IMAGE_FSTYPES = "ext4"
- MACHINE = "overo-ux5-v2"
- DISTRO = "poky"
- PACKAGE_CLASSES = "package_rpm"
- TARGET_ARCH = "arm"
- TARGET_CROSS_COMPILE = "arm-linux-gnueabihf-"
- TARGET_PREBUILT_KERNEL = "${HOME}/linux-ultralowpower/arch/arm64/boot/Image"
- TARGET_PREBUILT_DRIVERS = "${HOME}/linux-ultralowpower/drivers/staging/ti-tusb"
- TARGET_CFLAGS = "-march=armv7-a -mthumb -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb-interwork"
- TARGET_LDFLAGS = "-Wl,--fix-cortex-a8 -Wl,--no-wchar-size -Wl,--gc-sections"
- INSTALL_IMAGE_NAME = "overo-ux5-v2-image"
- INSTALL_DEVICETREE_NAME = "overo-ux5-v2-dtb"
- KERNEL_INITRAMFS_ROOT_UID = "0"
- KERNEL_INITRAMFS_ROOT_GID = "0"
- KERNEL_CMDLINE = "console=ttyAMA0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait"
- KERNEL_IMAGE_NAME = "zImage"
- KERNEL_DTB_NAME = "uImage"
- KERNEL_EXTRA_PARAMETERS = "bootargs"
- KERNEL_EXTRA_PARAMETERS = " console=ttyAMA0,115200"
- KERNEL_EXTRA_PARAMETERS = " earlyprintk"
- KERNEL_EXTRA_PARAMETERS = " root=/dev/mmcblk0p2"
- KERNEL_EXTRA_PARAMETERS = " rw"
- KERNEL_EXTRA_PARAMETERS = " rootwait"
- STAGING_DIR_TARGET_NAME = "usr/lib/staging"
- STAGING_DIR_HOST_HACK = "TRUE"
- DTC_SUPPORT = "y"
- UBUNTU_MENUPROGRAMS = "text"
- PACKAGE_INSTALL = "1"
- EXTRA_IMAGE_FEATURES = "debug-tweaks"
- EXTRA_IMAGE_FEATURES = " usb-modeswitch"
- EXTRA_IMAGE_FEATURES = " x11"
- EXTRA_IMAGE_FEATURES = " alsa-plugins"
- EXTRA_IMAGE_FEATURES = " pulseaudio"
- EXTRA_IMAGE_FEATURES = " wayland"
- EXTRA_IMAGE_FEATURES = " gstreamer1.0"
- EXTRA_IMAGE_FEATURES = " gstreamer-vaapi"
- EXTRA_IMAGE_FEATURES = " gstreamer-ffmpeg"
- EXTRA_IMAGE_FEATURES = " gstreamer-qt5"
- EXTRA_IMAGE_FEATURES = " qt5"
- EXTRA_IMAGE_FEATURES = " qtbase-private-headers"
- EXTRA_IMAGE_FEATURES = " qtchooser"
- EXTRA_IMAGE_FEATURES = " qt5-qml-plugin"
- EXTRA_IMAGE_FEATURES = " qt5-quick-plugin"
- EXTRA_IMAGE_FEATURES = " qtwebengine"
- EXTRA_IMAGE_FEATURES = " qtwebkit"
- EXTRA_IMAGE_FEATURES = " qtwayland"
- EXTRA_IMAGE_FEATURES = " qtdeclarative"
- EXTRA_IMAGE_FEATURES = " qtmultimedia"
- EXTRA_IMAGE_FEATURES = " qtmultimedia-libs"
- EXTRA_IMAGE_FEATURES = " qtnetworkauth"
- EXTRA_IMAGE_FEATURES = " qtpositioning"
- EXTRA_IMAGE_FEATURES = " qtprintsupport"
- EXTRA_IMAGE_FEATURES = " qtqml-model-plugins"
- EXTRA_IMAGE_FEATURES = " qtscript"
- EXTRA_IMAGE_FEATURES = " qtsensors"
- EXTRA_IMAGE_FEATURES = " qtserialport"
- EXTRA_IMAGE_FEATURES = " qtspeech"
- EXTRA_IMAGE_FEATURES = " qtstylus"
- EXTRA_IMAGE_FEATURES = " qttestlib"
- EXTRA_IMAGE_FEATURES = " qtwebview"
- EXTRA_IMAGE_FEATURES = " qtwebsockets"
- EXTRA_IMAGE_FEATURES = " qtxmlpatterns"
- EXTRA_IMAGE_FEATURES = " qtxslt"
- EXTRA_IMAGE_FEATURES = " qtx11extras"
- EXTRA_IMAGE_FEATURES = " qtxml"
- EXTRA_IMAGE_FEATURES = " qtzip"
- EXTRA_IMAGE_FEATURES = " qtcurve"
- EXTRA_IMAGE_FEATURES
- 创建一个名为“local.conf”的文件,添加以下内容: