正点原子imx6ull开发板实战:从源码编译到烧录,搞定OpenWrt 19.07.2全流程(含避坑指南)

正点原子imx6ull开发板实战:从源码编译到烧录,搞定OpenWrt 19.07.2全流程(含避坑指南) 正点原子i.MX6ULL开发板OpenWrt移植全流程实战指南1. 环境准备与源码获取在开始移植OpenWrt之前确保你的开发环境已经准备就绪。正点原子i.MX6ULL开发板是一款基于ARM Cortex-A7架构的嵌入式开发平台移植OpenWrt需要特定的工具链和依赖库。首先在Ubuntu系统中安装必要的依赖包sudo apt-get update sudo apt-get install -y subversion g zlib1g-dev build-essential git python3 \ libncurses5-dev gawk gettext unzip file libssl-dev wget libelf-dev \ ecj fastjar java-propose-classpath asciidoc bzip2 libz-dev libtool接下来下载OpenWrt 19.07.2源码wget https://github.com/openwrt/openwrt/archive/v19.07.2.tar.gz tar -xzvf v19.07.2.tar.gz cd openwrt-19.07.2提示建议使用Ubuntu 18.04或20.04 LTS版本作为开发环境避免因系统版本差异导致的兼容性问题。2. 配置OpenWrt编译选项进入源码目录后首先更新并安装feeds./scripts/feeds update -a ./scripts/feeds install -a make defconfig然后运行menuconfig进行配置make menuconfig在配置界面中需要特别注意以下几个关键选项Target System→ 选择(Freescale i.MX 6)Subtarget→ 选择(i.MX6ULL)Target Profile→ 选择(Default)Advanced configuration options→ 启用Toolchain Options→ 选择glibc作为C库注意i.MX6ULL虽然是Cortex-A7架构但在OpenWrt中仍归类于i.MX6系列这是移植过程中容易混淆的地方。3. 内核与平台适配修改由于i.MX6ULL与标准i.MX6在架构上有差异需要进行以下修改修改target/linux/imx6/Makefile将CPU_TYPE从cortex-a9改为cortex-a7vfpv4启用浮点支持CPU_CFLAGS -mfloat-abihard -mfpuneon-vfpv4将内核版本从4.14改为4.1准备内核配置文件从你的Linux内核源码目录(arch/arm/configs)复制开发板对应的defconfig文件重命名为config-4.1并放置到target/linux/imx6/目录下删除原有的config-4.14文件修改设备树支持确保target/linux/imx6/files/arch/arm/boot/dts/包含你的开发板设备树文件对于正点原子开发板通常需要imx6ull-alientek-emmc.dts文件4. 编译过程与问题解决在开始编译前必须先编译外部内核cd /path/to/your/linux-kernel make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- imx6ull_alientek_emmc_defconfig make V1 ARCHarm CROSS_COMPILEarm-linux-gnueabihf- zImage dtbs然后返回OpenWrt目录开始编译make V1 -j$(nproc)常见编译问题及解决方案问题现象可能原因解决方案缺少头文件内核版本不匹配检查内核路径和版本配置链接错误工具链不兼容确认使用glibc而非uclibc设备树编译失败DTS文件缺失确保设备树文件在正确位置5. 固件打包与烧录编译完成后生成的固件位于以下路径根文件系统bin/targets/imx6/generic-glibc/openwrt-imx6-default-rootfs.tar.gz内核镜像build_dir/target-arm_cortex-a7vfpv3-d16_glibc_eabi/linux-imx6/zImage设备树build_dir/target-arm_cortex-a7neon-vfpv4_glibc_eabi/linux-imx6/linux-4.1/arch/arm/boot/dts/imx6ul-alientek-emmc.dtb使用正点原子提供的MFG_TOOL工具烧录到SD卡下载正点原子MFG_TOOL工具包替换files目录中的以下文件boot/zImage→ 替换为编译生成的zImageboot/imx6ull-14x14-emmc-4.3-800x480-c.dtb→ 替换为你的设备树文件filesystem/rootfs.tar.bz2→ 使用OpenWrt根文件系统重新打包打包根文件系统的命令tar -xzf openwrt-imx6-default-rootfs.tar.gz sudo tar -cjf rootfs.tar.bz2 ./*执行烧录脚本sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512重要确保SD卡设备路径(/dev/sdb)正确错误的设备路径可能导致数据丢失。6. 系统启动与网络配置将拨码开关设置为SD卡启动模式(10000010)上电启动后可能会遇到以下问题网络接口不工作默认情况下eth0可能未启用尝试连接ENET1接口(eth1)Luci网页界面缺失重新配置编译选项添加Luci支持make menuconfig选择LuCI→Collections→luci重新编译并烧录设置IP地址ifconfig eth1 192.168.10.24完成上述配置后通过浏览器访问http://192.168.10.24即可进入OpenWrt的网页管理界面默认用户名root密码admin。7. 性能优化与功能扩展成功启动基础系统后可以考虑以下优化措施启用硬件加速在make menuconfig中启用Kernel modules → Video Support → kmod-imx-gpu-viv增加存储空间对于EMMC版本开发板可以扩展根文件系统分区opkg install e2fsprogs resize2fs /dev/mmcblk1p2常用软件包安装opkg update opkg install luci-app-upnp luci-app-sqm luci-app-watchcat无线网络支持如果使用USB无线网卡安装相应驱动opkg install kmod-rtl8192cu通过以上步骤你已经在正点原子i.MX6ULL开发板上成功移植了OpenWrt系统并具备了进一步定制和开发的基础。