正点原子IMX6ULL ARM开发板实战(一)——从零搭建嵌入式Linux开发环境

张开发
2026/4/20 1:01:15 15 分钟阅读

分享文章

正点原子IMX6ULL ARM开发板实战(一)——从零搭建嵌入式Linux开发环境
1. 开箱与开发板初体验刚拿到正点原子IMX6ULL开发板时我第一感觉是这个板子做工相当扎实。铝合金底壳加上亚克力保护板拿在手里沉甸甸的很有分量。板载资源非常丰富包括千兆网口、USB OTG、TF卡槽、RGB LCD接口等完全能满足大多数嵌入式开发需求。开发板包装内附赠的资料让我印象深刻除了常规的USB数据线和电源适配器还有一张32GB的TF卡里面已经预装了完整的开发环境镜像。这点对新手特别友好省去了自己配置系统的麻烦。不过作为学习过程我还是决定从零开始搭建环境这样才能真正理解每个环节的作用。提示建议先检查配件是否齐全特别是串口转USB线后续调试会频繁使用开发板的核心是NXP的i.MX6ULL处理器这是一颗Cortex-A7架构的ARM芯片主频可达900MHz。相比常见的STM32系列它的性能足够运行完整的Linux系统这让它成为学习嵌入式Linux的理想平台。我特别喜欢板载的RGB接口可以直接驱动7寸电容屏做GUI开发会方便很多。2. 搭建Ubuntu开发环境2.1 虚拟机安装与配置我选择在Windows 10上通过VMware Workstation搭建Ubuntu 20.04开发环境。这里有个小技巧创建虚拟机时建议分配至少4GB内存和80GB硬盘空间因为后续编译内核和文件系统会占用大量资源。安装完基础系统后有几项必须的配置更换国内软件源阿里云或清华源都行安装VMware Tools实现主机-虚拟机文件共享设置静态IP方便后续网络调试# 更换阿里云源示例 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update sudo apt upgrade -y2.2 开发工具全家桶安装嵌入式开发需要一整套工具链支持我习惯用下面这个命令一次性安装所有依赖sudo apt install -y build-essential git flex bison libssl-dev libncurses5-dev \ u-boot-tools lzop tftpd-hpa nfs-kernel-server minicom这里特别要提一下minicom它是Linux下最常用的串口调试工具。配置时需要注意设备通常为/dev/ttyUSB0波特率设为115200关闭硬件流控3. 交叉编译工具链配置3.1 工具链的选择与安装正点原子官方提供了两个版本的工具链gcc-linaro-4.9.4稳定性好适合初学者gcc-linaro-7.5.0支持C14等新特性我测试后发现4.9.4版本对官方例程兼容性更好建议新手先用这个版本。安装步骤很简单tar -vxf gcc-linaro-4.9.4.tar.xz sudo mv gcc-linaro-4.9.4 /opt/ echo export PATH$PATH:/opt/gcc-linaro-4.9.4/bin ~/.bashrc source ~/.bashrc验证安装是否成功arm-linux-gnueabihf-gcc -v应该能看到类似这样的输出gcc version 4.9.4 (Linaro GCC 4.9-2017.01)3.2 第一个交叉编译程序让我们用经典的Hello World测试工具链// hello.c #include stdio.h int main() { printf(Hello IMX6ULL!\n); return 0; }编译命令arm-linux-gnueabihf-gcc hello.c -o hello用file命令查看生成的可执行文件file hello输出应该显示为ARM架构可执行文件hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked...4. 网络服务环境搭建4.1 TFTP服务器配置TFTP用于快速传输内核镜像和设备树文件配置步骤如下修改配置文件/etc/default/tftpd-hpaTFTP_DIRECTORY/tftpboot TFTP_OPTIONS-l -c -s创建共享目录并设置权限sudo mkdir /tftpboot sudo chmod 777 /tftpboot sudo systemctl restart tftpd-hpa测试时可以在/tftpboot放个测试文件在开发板上执行tftp -g -r testfile 192.168.1.1004.2 NFS服务器配置NFS用于共享根文件系统开发阶段特别实用编辑/etc/exports添加/nfsroot *(rw,sync,no_root_squash,no_subtree_check)创建并导出根文件系统sudo mkdir /nfsroot sudo cp -a /path/to/rootfs/* /nfsroot/ sudo exportfs -a在开发板启动参数中添加root/dev/nfs nfsroot192.168.1.100:/nfsroot ip192.168.1.200:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off5. 开发板与主机联调5.1 串口终端设置我推荐使用picocom替代minicom它更轻量且配置简单sudo apt install picocom picocom -b 115200 /dev/ttyUSB0常用快捷键CtrlA CtrlX退出CtrlA CtrlQ退出不重置串口CtrlA CtrlC清屏5.2 网络连接测试确保开发板能ping通主机ping 192.168.1.100如果遇到网络不通的情况可以检查开发板与主机是否在同一网段防火墙是否关闭网线连接是否正常6. 开发环境验证6.1 编译并烧写Uboot从正点原子提供的源码包编译Ubootmake ARCHarm CROSS_COMPILEarm-linux-gnueabihf- mx6ull_14x14_evk_defconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- -j8生成的u-boot.imx可以通过mfgtool工具烧写到SD卡sudo dd ifu-boot.imx of/dev/sdX bs512 seek2 convfsync6.2 编译Linux内核内核编译过程类似make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- imx_v7_defconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- menuconfig make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- -j8编译完成后会生成zImage和.dtb文件可以通过TFTP加载测试setenv bootargs consolettymxc0,115200 root/dev/mmcblk1p2 rootwait rw setenv bootcmd tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk.dtb; bootz 80800000 - 83000000 saveenv boot7. 常见问题排查在实际搭建环境时我遇到过几个典型问题串口无输出检查USB转串口线驱动是否安装确认波特率设置正确115200 8N1尝试更换USB口TFTP传输失败检查服务器防火墙状态确认文件权限设置为777测试本地tftp客户端能否获取文件NFS挂载失败查看服务器日志/var/log/syslog确认exports配置正确尝试手动挂载定位问题交叉编译报错检查工具链路径是否加入PATH确认使用正确的交叉编译前缀查看头文件和库路径是否正确经过这些步骤你应该已经搭建好完整的嵌入式Linux开发环境。接下来就可以开始开发自己的应用程序了比如通过GPIO控制LED或者开发基于QT的图形界面应用。

更多文章