没志青年
发布于 2026-01-28 / 76 阅读
0

i.MX6ULL Linux开发学习 环境准备

  • uboot 来源:"08、系统镜像\02、教程系统镜像\02、阿尔法V2.4版本及以后和miniV2.2及以后的底板\01、u-boot镜像\emmc\u-boot.bin",烧写到 TF 卡

  • kernel 来源:"\01、例程源码\03、正点原子Uboot和Linux出厂源码",使用配置文件"imx_alientek_emmc_defconfig",使用设备树文件"imx6ull-alientek-emmc.dts",使用 tftp 从网络获取

  • rootfs 来源:使用 busybox1.37.0 生成的基础根文件系统:rootfs_busybox1.37.0_basic.tar.xz,使用 nfs 从网络获取

开发板使用串口波特率 115200

用的网口是靠近串口的,不是靠近 3 个USB 的。

1、uboot 烧录到 TF 卡

直接使用正点原子出厂的 uboot 镜像,然后使用 imxdownload 工具烧写到 TF 卡。

1、看一下磁盘

ls /dev/sd*

输出:
hltj@vmpc:~/桌面$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2

2、插入读卡器

读卡器如果连接在了 Windows上,点击虚拟机右下角的 Super Top Mass Storage Device,点击“连接(断开与 主机 的连接)(C)”

再看一下磁盘:

hltj@vmpc:~/桌面$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1

说明这个U盘设备是/dev/sdb,分区为/dev/sdb1

sudo chmod 777 imxdownload
sudo ./imxdownload u-boot.bin /dev/sdb

注意:不能烧写到/dev/sda* 设备里面,那是系统磁盘!!!

烧录输出:

I.MX6ULL bin download software
Edit by:zuozhongkai
Date:2019/6/10
Version:V1.1
log:V1.0 initial version,just support 512MB DDR3
    V1.1 and support 256MB DDR3
file u-boot.bin size = 358732Bytes
Board DDR SIZE: 512MB
Delete Old load.imx
Create New load.imx
Download load.imx to /dev/sdc  ......
706+1 records in
706+1 records out
361804 bytes (362 kB, 353 KiB) copied, 2.11101 s, 171 kB/s

如果这个烧写速度KB/s级别,并且耗时是秒单位,那基本上就成功了。

如果速度MB/s级别,那就是烧写失败了,可能设备输入错了。

2、配置 NFS

安装 NFS:

(1)查看是已否安装 nfs 服务器

dpkg -s nfs-kernel-server

如果显示 not installed 则表示没有安装

(2)安装 NFS

sudo apt-get install -y nfs-kernel-server

(3)修改配置文件

sudo vim /etc/exports

在配置文件未尾添加:

/Dev-Tools/nfs_root *(rw,sync,no_subtree_check,no_root_squash)

前面是工作目录

(4)创建工作目录并设置为最高的权限

sudo mkdir -p /opt/nfsboot
sudo chmod -R 777 /opt

(5)开启 nfs 服务

sudo service nfs-kernel-server restart
systemctl status nfs-kernel-server

sudo systemctl enable nfs-kernel-server
systemctl is-enabled nfs-server

3、配置 TFTP

(1)查看是否已安装 tftp 服务器,显示 package 'tftpd-hpa' is not installed and no information is available 就是没安装。

dpkg -s tftpd-hpa

(2)安装 tftp

sudo apt-get install -y tftpd-hpa tftp-hpa

(3)修改 tftp 服务器的配置文件

sudo vim /etc/default/tftpd-hpa

内容如下

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/opt/Linux_Workspace/i.MX6ULL/zImage_dtb_tftp_workspace"
TFTP_ADDRESS="192.168.5.5:69"
TFTP_OPTIONS="-c -s -l"
  • TFTP_DIRECTORY:工作目录,要传输的文件都放在这里

  • TFTP_ADDRESS:端口号,保持默认就好

这个IP地址很重要

(4)创建工作目录并设置为最高的权限

sudo mkdir /tftpboot
sudo chmod 777 /tftpboot

(5)开启 tftp 服务

sudo systemctl enable tftpd-hpa
systemctl is-enabled tftpd-hpa

sudo systemctl restart tftpd-hpa
systemctl status tftpd-hpa

(6)测试服务是否正常

# 使用 tftp 命令登录本机,前面提示 tftp> 说明服务正常
hltj@ubuntu:/Dev-Tools$ tftp localhost
tftp> q
# 退出客户端
q + <Enter>

# 使用 get 命令获取tftp目录下的文件,进一步测试
get test.txt

4、虚拟机网络设置

123

轻薄本

单网卡是不可能的,轻薄本只有wifi网卡,要连接开发板,只能外接,那就是两个了。

平常使用 ubuntu,直接桥接模式,IPv4 自动就行了。

开发环境下,windows 连接 wifi,。需手动设置 IPv4

此时虚拟机上不了网。

双网卡

常见方案:

  • 轻薄本有线上网:外接 USB 网卡1 + 外接 USB 网卡2

  • 轻薄本wifi上网:内置 Wi-Fi 网卡 + 外接 USB 网卡

  • 游戏本有线上网:内置以太网卡 + 外接 USB 网卡(我现在的场景)

  • 游戏本wifi上网:内置 Wi-Fi 网卡 + 内置以太网卡

  • 台式机(一般都是有线上网):内置以太网卡 +PCIE 接口网卡(如果没卡槽了那只能使用外接 USB 网卡)

这么多网卡,其实配置是一样的,看你使用哪些网卡,配置它就行了。

虚拟机VMware配置双网卡_vmware 双网卡-CSDN博客

vmware 双网卡方案:

  • NAT 网卡: ubuntu 通过 windows 上网。

  • 桥接网卡: ubuntu 与 Linux 开发板连接。

ubuntu 上网不使用桥接是因为,如果 ubuntu 的 ip 频繁变化的话,uboot 还得经常设置。

由于笔记本只有一个网口,也就是一个物理网卡,所以 windows 无法通过网线上网,除非增加一个 RJ45 转 USB 的设备。

方案一: Windows 使用网线上网。

  • ubuntu 上网(NAT):路由器 <==> 笔记本网口 <==> vmware 虚拟网卡 NAT <==> ubuntu

  • ubuntu 连接开发板(桥接):ubuntu <==> RJ45转USB <==> vmware 虚拟网卡桥接 <==> Linux 开发板

方案二:Windows 使用 Wi-Fi 上网。

  • ubuntu 上网(NAT):路由器 <==> 笔记本wifi <==>vmware 虚拟网卡 NAT <==> ubuntu

  • ubuntu 连接开发板(桥接):ubuntu <==> 笔记本网口 <==> Linux 开发板

路由器、交换机的,正确设置好后,三者应该都能 ping 通。

使用方案一:

1、ubuntu 关机,编辑虚拟机设置

2、添加一个网络适配器

3、ubuntu 上网配置

1)修改网络适配器

2)

3)

4、ubuntu 连接开发板配置

1)修改网络适配器

弹出来这个不用管,选择是:

2)

3)

按照上面的所有设置,开发板 ping 不通 192.168.100 和 192.168.2 是正确的。

5、uboot 设置

192.168.5.10 是自定义的 IP 地址,不要和 USB 网卡的 IP 一样就行了。

setenv ethaddr b8:ae:1d:01:00:00
setenv ipaddr 192.168.5.10
setenv serverip 192.168.5.5
setenv gatewayip 192.168.5.1
setenv netmask 255.255.255.0
saveenv
setenv bootcmd tftp 0x80800000 zImage\;tftp 0x83000000 imx6ull.dtb\;bootz 0x80800000 - 0x83000000
setenv bootargs 'console=ttymxc0,115200 init=/linuxrc root=/dev/nfs nfsroot=192.168.5.5:/opt/Linux_Workspace/i.MX6ULL/rootfs_nfs_workspace,v3,tcp rw ip=192.168.5.10:192.168.5.5:192.168.5.1:255.255.255.0::eth0:off'
saveenv

nfsroot=ubuntu地址:NFS工作目录,v3,tcp rw ip=开发板地址:ubuntu地址:开发板网关:255.255.255.0::eth0:off'

注意这种方案下 tftp 的配置应该为192.168.5.5,而不是 192.168.100.5,否则连接不上。

TFTP_ADDRESS="192.168.5.5:69"

单网卡+交换机/路由器

1、ubuntu 上网配置,桥接 windows 的网卡

用的是路由器的网关,和 windows 一样:

2、开发板设置

192.168.2.10 是自定义的 IP 地址,不要和 路由器其他设备 IP 一样就行了。

setenv ethaddr b8:ae:1d:01:00:00
setenv ipaddr 192.168.2.10
setenv serverip 192.168.2.90
setenv gatewayip 192.168.2.1
setenv netmask 255.255.255.0
saveenv
setenv bootcmd tftp 0x80800000 zImage\;tftp 0x83000000 imx6ull.dtb\;bootz 0x80800000 - 0x83000000
setenv bootargs 'console=ttymxc0,115200 init=/linuxrc root=/dev/nfs nfsroot=192.168.2.90:/opt/Linux_Workspace/i.MX6ULL/rootfs_nfs_workspace,v3,tcp rw ip=192.168.2.10:192.168.2.90:192.168.2.1:255.255.255.0::eth0:off'
saveenv

nfsroot=ubuntu地址:NFS工作目录,v3,tcp rw ip=开发板地址:ubuntu地址:开发板网关:255.255.255.0::eth0:off'

注意 tftp 的配置需要修改为 192.168.2.90。

TFTP_ADDRESS="192.168.2.90:69"

此时这三个设备都能互 ping