0

    嵌入式Linux-IMX6ULL开发环境配置

    2023.04.11 | admin | 292次围观

    嵌入式Linux-IMX6ULL开发环境配置

    前言

    正点原子的驱动开发指南所使用的是纯净的Ubuntu16.04平台,用户可以按照驱动开发指南的学习路线,一步一步地亲手把Ubuntu平台搭建完成。

    但是学习正点原子Linux开发板,个人还是强烈推荐大家安装正点原子提供的虚拟机平台!!!!

    可以快速进行体验或者开发,避免学习周期过长,导致学习没有兴趣,无法建立正反馈。

    平台内容

    Ubuntu 系统:Ubuntu16.04

    GCC 版本:5.4

    教程通用交叉编译器:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf

    出厂系统专用交叉编译器:fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neontoolchain-4.1.15-2.1

    QT 环境:开源版本 QT5.12.9、开源版本 QT Creator4.12.2

    编辑器软件:Visual Studio Code、vim、gedit

    网络工具:TFTP、NFS、Samba

    以上软件都是开源版本,仅提供给有需要的用户学习使用,如有需要请自行购买商业版本软件。

    开发环境

    ​ 软件:VMware Workstation Pro15.5 版本

    ​ 主机操作系统:WIN10。

    ​ 虚拟机系统:Ubuntu16.04 版本

    虚拟机安装 虚拟机下载

    ​ 网盘地址链接提取码:atkq

    ​ 在网盘里有四个 alientek_Qt.iso.xzp文件,分别以001、002、003、004为后缀,这里要下载这四个文件。

    ​ 如果链接失效了,可以在正点原子下载中心下载

    镜像解压

    ​ 因为打包出来的虚拟机太大,百度云限制单个文件最大为4G,因此这里拆成了四个文件上 传到百度云。下载完成后,确保这四个文件都在同一文件夹下,选中这四个文件解压就可以了。下载解压软件7-Zip来进行解压,软件下载地址。将四个压缩文件全部选中右键,使用7-Zip提取到当前位置。

    ​ 最终得到了一个alientek_Qt.iso镜像文件(大约13G),这个就是我们后面要导入到虚拟机的镜像文件。iso文件可以不用和安装的ubuntu在同一个硬盘分区,也不建议放在移动磁盘或者U盘。

    安装alientek虚拟机

    ​ 这一步请大家参考正点原子提供的文档手册:I.MX6U虚拟机使用参考手册V1.3

    编译开发板出厂镜像

    ​ 在alientek进行中包含alientek-alpha和alientek-zzk分别是出厂镜像和教程镜像,需要说明的是,出厂镜像是驱动配置完善的,可以学习Qt和应用。教程镜像是还没怎么添加驱动的,可以用于学习驱动开发,这里以出厂镜像为例哈~

    ​ 进入到alientek-alpha文件中,请注意:虚拟机自带的Uboot和内核源码版本比较低,如果有需要,请大家更新到最新的版本,前往正点原子下载中心,下载这个->【正点原子】阿尔法Linux开发板(A盘)-基础资料\01、例程源码\03、正点原子Uboot和Linux出厂源码,下载完成以后直接将文件拖入虚拟机对应文件夹就完成了版本更新

    ​ 如果有朋友不知道自己是不是最新的版本,请打开正点原子提供的*【正点原子】阿尔法Linux开发板(A盘)-基础资料\10、用户手册\01【正点原子】I.MX6U用户快速体验V2.6.pdf*,第1.2章节有对uboot、内核的历史版本进行说明。

    编译出厂uboot

    ​ 首先去到出厂 uboot 源码路径下,这里以虚拟机自带的为例子。

    cd ~/alpha/alientek-alpha/uboot-alientek 
    

    ​ 使能出厂交叉编译工具,并查看版本号。

    source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi arm-poky-linux-gnueabi-gcc --version 
    

    ​ 如果出现下图的arm-poky-linux-gnueabi-gcc(GCC)5.3.0,即表示当前终端已经使能出厂交叉编译工具,可以进行编译操作(注意:如果打开了新终端进行编译,也需要先使能。即使能后只有此终端下才生效,新终端无效,需要重新使能)。

    ​ 此时执行build.sh脚本即可开始编译出厂uboot源码。

    ./build.sh
    

    ​ 最终编译完成

    编译出厂内核源码以及设备树

    ​ 首先去到出厂内核源码路径下,这里以虚拟机自带的为例子。

    cd ~/alpha/alientek-alpha/kernel-alientek
    

    ​ 使能出厂交叉编译工具,并查看版本号。

    source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi arm-poky-linux-gnueabi-gcc --version
    

    ​ 如果出现下图的 arm-poky-linux-gnueabi-gcc (GCC) 5.3.0,即表示当前终端已经使能出厂交叉编译工具,可以进行编译操作(注意:如果打开了新终端进行编译,也需要先使能。即使能后只有此终端下才生效,新终端无效,需要重新使能)。

    此时执行 build.sh 脚本即可开始编译出厂内核源码。

    ./build.sh
    

    ​ 最终编译完成。

    uboot烧写与启动

    ​ 将uboot烧写到SD卡中,然后通过SD卡来启动来运行uboot。使用imxdownload软件烧写,命令如下:

    chmod 777 imxdownload 		//给予 imxdownload 可执行权限,一次即可
    ./imxdownload u-boot-imx6ull-14x14-ddr512-emmc.bin /dev/sdb  //烧写到 SD 卡,不能烧写到/dev/sda 或 sda1 设备里面!
    

    ​ 等待烧写完成,完成以后将SD卡插到I.MX6U-ALPHA开发板上,BOOT设置从SD卡启动,使用USB线将USB_TTL和电脑连接虚拟机不能托文件出来,也就是将开发板的串口1连接到电脑上。打开MobaXterm,设置好串口参数并打开,最后复位开发板。在 MobaXterm上出现“Hit any key to stop autoboot: ”倒计时的时候按下键盘上的回车键虚拟机不能托文件出来,默认是3秒倒计时,在3秒倒计时结束以后如果没有按下回车键的话uboot就会使用默认参数来启动Linux内核了。如果在3秒倒计时结束之前按下回车键,那么就会进入uboot的命令行模式

    网络挂载出厂镜像

    ​ 在正点原子提供的alientek虚拟机中,TFTP和NFS是已经搭载好的!所以可以直接使用,我们要做的就是配置虚拟机和开发板的网络,以及将重新编译的uboot、内核和设备树、文件系统重新添加到对应路径下。

    虚拟机网络配置

    1、如图所示,单击桌面右上角的网络设置图标(若没有该图标是因为上一步的配置还未生 效,重启一下 ubuntu 即可),然后选择“Edit Connections…”

    2、在弹出的对话框中单击“Add”添加一个新的连接

    3、这里使用默认的“Ethernet”,然后单击“Create…” 、

    4、如图所示,在弹出的对话框中先为新建的连接填写名字(随意),然后单击“IPv4 settings” 设置 IP 信息,将“Method”栏选为“Manual”,然后单击“Add”填写 IP 信息 因为我们使用的是桥接模式,所以 IP 信息需要参考 windows 下的设置,当前窗口先不 要关闭,切换到 windows 下查看 IP 信息

    5、在 windows 下打开一个命令行终端,然后输入“ipconfig”查看 windows 下使用的网络 及 IP 信息(根据个人电脑情况,找到 windows 正在使用的网络连接的信息)

    6、回到ubuntu下,如下图所示,根据windows下的IP信息填写ubuntu的IP信息

    Address 设置成与 windows 下的“IPV4 地址”在同一个网段下的不同地址

    ​ 比如 windows 下的 IP 为“192.168.1.102”

    ​ 则将 ubuntu 下的 IP 设为“192.168.1.100”

    Netmask 设置成与 windows 下的“子网掩码”一致

    Gateway 设置成与 windows 下的“默认网关”一致

    DNS servers 设置成与 windows 下的“默认网关”

    ​ 设置完成后单击“Save”保存,关闭对话框即可

    7、刚刚添加的网络连接可能还没有生效,这里先断开原有连接,然后再选择刚刚建立的新的连接即可

    开发板网络配置

    ​ 前提:开发板ENET2网线直连电脑。开机进入uboot命令行,设置开发板的网络信息,设置信息如下,用户请根据自己实际情况来设置:

    setenv ipaddr 192.168.1.120 
    setenv ethaddr 00:04:9f:04:d2:35 
    setenv gatewayip 192.168.1.1 
    setenv netmask 255.255.255.0 
    setenv serverip 192.168.1.29 
    saveenv ipaddr:
    

    ​ 开发板IP地址,根据实际情况填写,要和虚拟机在同一网段,且不发生 IP 冲突。

    ​ ethaddr:开发板网络设备地址,填写 00:04:9f:04:d2:35 即可。

    ​ gatewayip:开发板和 Ubuntu 局域网的网关,根据实际情况填写。

    ​ netmask:子网掩码。一般为 255.255.255.0。

    ​ serverip:虚拟机 IP 地址,根据实际情况填写。

    ​ 最后开发板能 ping 通虚拟机 IP 地址即可。

    ping 192.168.1.29
    

    总结一下就是:

    电脑IP查看为:192.168.1.50

    则虚拟机IP设置为:192.168.1.100

    则开发板IP设置为:192.168.1.200

    必须确保他们在同一个网段

    TFTP 加载zImage和设备树

    ​ 正点原子虚拟机镜像中已经搭建好TFTP环境,TFTP 工作目录为~/linux/tftp/。如果想加载自己的镜像文件,只要将镜像文件和设备树拷贝到此目录下,赋予文件可执行权限即可,bootcmd 中设置对应的文件名。

    ​ 示例:在开发板 uboot 命令行中,设置 bootcmd 信息,用于引导网络挂载虚拟机里的文件。

    setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000' 
    saveenv
    

    如果要加载自己的镜像文件和设备树

    ​ 拷贝出厂内核到TFTP目录。

     cd ~/alpha/alientek-alpha/kernel-alientek/arch/arm/boot/  
     cp zImage ~/linux/tftp/
    

    ​ 根据自己开发板和屏幕的型号,拷贝对应出厂设备树到 TFTP 目录,这里本人使用的开发板为emmc版本,屏幕为7寸 1024x600分辨率的屏幕。如果没有屏幕,也选择这个设备树来启动。

    cp dts/imx6ull-14x14-emmc-7-1024x600-c.dtb ~/linux/tftp
    

    ​ 启动开发板,在uboot界面设置bootcmd来引导启动挂载的出厂系统镜像。注意bootz中的-符号是英文的,两边各有一个空格。

    setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;bootz 80800000 - 83000000'
    saveenv
    

    NFS 挂载出厂文件系统

    ​ 正点原子虚拟机镜像中已经搭建好NFS环境,NFS共享目录为~/linux/nfs/。如果想挂载自己的文件系统,只要将文件系统拷贝到此目录下,bootargs中设置对应的路径和文件名。

    ​ 示例:在开发板uboot命令行中设置bootargs信息,用于引导网络挂载虚拟机的文件系统。

    setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs \
     nfsroot=192.168.1.29:/home/alientek/linux/nfs/rootfs,proto=tcp rw \
     ip=192.168.1.120:192.168.1.29:192.168.1.1:255.255.255.0::eth0:off'
    saveenv
    

    设置完成后,执行boot指令可以启动挂载。

    boot
    

    如果要加载自己的出厂文件系统

    拷贝出厂文件系统到NFS目录。

    cd ~/alpha/alientek-alpha/ 
    cp rootfs-alientek/ ~/linux/nfs/ -vr
    

    拷贝完在NFS共享目录下有这个文件系统。

    在uboot界面设置bootargs来引导启动挂载的出厂系统。

    setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs \ nfsroot=192.168.1.29:/home/alientek/linux/nfs/rootfs-alientek,proto=tcp rw \ ip=192.168.1.120:192.168.1.29:192.168.1.1:255.255.255.0::eth0:off' 
    saveenv 
    boot
    

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论