从零到一:在IMX6ULL开发板上构建你的第一个Linux世界
很多朋友拿到像韦东山IMX6ULL这样的嵌入式开发板时,既兴奋又有点不知所措。兴奋的是终于可以动手实践了,不知所措的是面对全新的Linux环境、交叉编译、内核驱动这些概念,不知道从哪里开始。我刚开始接触嵌入式Linux时也有同样的感受,甚至花了好几天时间才让开发板正常启动。这篇文章就是为你准备的——无论你是刚毕业的学生,还是想从单片机转向Linux的工程师,我都会用最直白的方式,带你走完从开箱到运行第一个驱动程序的完整流程。
嵌入式Linux开发环境和我们平时在PC上写代码有很大不同。你需要同时和开发板、虚拟机、主机电脑打交道,中间涉及网络配置、文件传输、交叉编译等多个环节。任何一个环节出问题,都可能让你卡住很久。但别担心,这个过程虽然有点繁琐,但每一步都有明确的逻辑。一旦走通第一次,后面就会顺畅很多。
我会假设你完全是新手,从最基础的软件安装开始,一直到在开发板上运行自己编写的程序。过程中我会重点讲解那些容易踩坑的地方,比如为什么开发板ping不通虚拟机、文件传输后为什么没变化、编译出来的程序为什么在开发板上跑不起来等等。这些细节问题往往比主线步骤更耗费时间。
1. 开发环境搭建:打好地基
搭建开发环境就像盖房子前打地基,这一步做扎实了,后面的工作才能顺利进行。嵌入式Linux开发环境通常包含三个部分:主机电脑(我们日常用的Windows或Mac)、虚拟机(运行Ubuntu等Linux系统)、开发板(这里是IMX6ULL)。三者之间需要通过网络和USB连接起来,形成一个可以协同工作的环境。
1.1 软件准备与安装
首先需要在主机电脑上安装必要的软件。这些软件主要分为三类:虚拟机软件、开发工具和连接工具。
- 虚拟机软件:推荐使用VMware Workstation Player(个人使用免费)或VirtualBox。我更喜欢VMware,因为它的网络配置更直观,和主机文件共享也更方便。
- Ubuntu系统镜像:韦东山提供的资料里通常包含了专门配置好的Ubuntu镜像,这个镜像已经安装好了交叉编译工具链、NFS服务等开发必需组件。对于新手来说,强烈建议直接使用这个现成的镜像,而不是自己从头安装配置。这能避免大量环境配置问题。
- 连接与传输工具:
- 串口工具:用于通过串口连接开发板,查看启动信息、执行命令。MobaXterm、Putty、SecureCRT都可以,MobaXterm功能更全面些。
- 文件传输工具:FileZilla(支持FTP/SFTP)用于在主机和虚拟机之间传输文件。
- 代码编辑工具:Source Insight、VS Code、Sublime Text都可以。我个人习惯用VS Code,配合一些插件后对C语言和Makefile的支持很好。
安装这些软件没什么特别要注意的,基本都是“下一步”到底。唯一需要留意的是虚拟机软件的安装,如果系统提示要安装虚拟化驱动或重启电脑,按照提示操作即可。
1.2 虚拟机网络配置:让三者互通
网络配置是新手最容易卡住的地方。开发板、虚拟机、主机三者之间需要能互相访问,才能传输文件、挂载目录、远程登录。常见的配置方式有两种:桥接模式和NAT模式。
提示:如果你不确定该用哪种模式,可以先尝试桥接模式。大多数家庭路由器环境下,桥接模式配置起来更简单。
桥接模式下,虚拟机会获得一个和主机同网段的IP地址,就像一台真实的电脑接入了你的局域网。开发板也连接到同一个路由器,这样三者就在同一个网络里了。
配置步骤大致如下:
- 在VMware中打开虚拟机设置,找到网络适配器。
- 选择“桥接模式”,并勾选“复制物理网络连接状态”。
- 启动Ubuntu虚拟机,打开终端,用
ifconfig或ip addr命令查看网络接口和IP地址。通常你会看到类似ens33或ens36的接口名。 - 如果IP地址是
192.168.x.x这样的形式(x通常不是1),说明桥接成功了。
为了让IP地址固定不变,方便后续操作,最好设置为静态IP。编辑网络配置文件:
sudo vi /etc/netplan/01-network-manager-all.yaml
在文件中添加或修改为以下内容(注意根据你的实际接口名和网段修改):
network:
version: 2
renderer: networkd
ethernets:
ens36: # 你的网卡名
dhcp4: no
addresses: [192.168.31.100/24] # 静态IP和子网掩码
gateway4: 192.168.31.1 # 网关,通常是路由器地址
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
保存后应用配置:sudo netplan apply。然后用ping 192.168.31.1测试是否能通网关(路由器)。
NAT模式下,虚拟机通过主机的网络连接出去,但外部设备(如开发板)无法直接访问虚拟机。这时需要配置端口转发或使用其他方法,对新手来说稍复杂。所以初期建议先用桥接模式。
1.3 开发板初步连接与测试
给IMX6ULL开发板接上电源、串口线(USB转TTL)、网线。串口线连接主机的USB口,网线连接到同一个路由器。
打开串口工具(如MobaXterm),新建一个Serial会话:
- 端口号:在Windows设备管理器中查看串口对应的COM号(如COM3)
- 波特率:115200
- 数据位:8
- 停止位:1
- 校验位:None
- 流控:None
连接后,给开发板上电。你应该能在串口终端看到类似下面的启动信息:
U-Boot 2020.04 (Mar 15 2021 - 16:30:25 +0800)
CPU: Freescale i.MX6ULL rev1.1 528 MHz (running at 396 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 44C
Reset cause: POR
Model: Freescale i.MX6 ULL 14x14 EVK Board
Board: MX6ULL 14x14 EVK
DRAM: 512 MiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
Net: FEC0 [PRIME]
Hit any key to stop autoboot: 0
如果没看到任何输出,检查:串口线是否接对(开发板的UART_TX接USB转TTL的RX,UART_RX接TX,GND接GND)、串口工具参数是否正确、开发板电源是否正常。
启动完成后,你会进入Linux命令行。先测试一下网络,用ifconfig eth0查看开发板的IP地址,然后尝试ping虚拟机的IP:
ping 192.168.31.100
如果能看到回复,说明网络通了。如果ping不通,检查:
- 开发板和虚拟机是否在同一个网段(IP地址前三位相同)
- 虚拟机防火墙是否关闭(
sudo ufw disable) - 路由器是否允许设备间互相访问
2. 系统烧录与启动模式选择
IMX6ULL开发板支持多种启动方式,这通过板上的拨码开关来设置。理解这些启动方式,能帮你更好地理解开发板的工作原理,也能在系统出问题时进行恢复。
2.1 启动模式详解
IMX6ULL常见的启动模式有:
| 启动模式 | 拨码开关设置 | 启动介质 | 适用场景 |
|---|---|---|---|
| SD卡启动 | 1:OFF, 2:OFF | SD/TF卡 | 最常用的启动方式,适合开发和调试 |
| eMMC启动 | 1:ON, 2:OFF | 板载eMMC存储 | 产品量产时使用,系统存储在板载芯片中 |
| USB启动 | 1:OFF, 2:ON | USB OTG接口 | 用于通过USB烧录系统到eMMC或NAND |
| 串行下载 | 1:ON, 2:ON | USB OTG接口 |

&spm=1001.2101.3001.5002&articleId=152640065&d=1&t=3&u=98038e0a1a89440c94d6c611a3e72382)
432

被折叠的 条评论
为什么被折叠?



