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

这篇具有很好参考价值的文章主要介绍了嵌入式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提取到当前位置。
imx6 linux 开发,linux,驱动开发,运维

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

安装alientek虚拟机

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

编译开发板出厂镜像

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

imx6 linux 开发,linux,驱动开发,运维

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

imx6 linux 开发,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

​ 最终编译完成
imx6 linux 开发,linux,驱动开发,运维

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

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

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

​ 最终编译完成。
imx6 linux 开发,linux,驱动开发,运维

uboot烧写与启动

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

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

imx6 linux 开发,linux,驱动开发,运维

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

网络挂载出厂镜像

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

虚拟机网络配置

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

2、在弹出的对话框中单击“Add”添加一个新的连接
imx6 linux 开发,linux,驱动开发,运维

3、这里使用默认的“Ethernet”,然后单击“Create…” 、
imx6 linux 开发,linux,驱动开发,运维

4、如图所示,在弹出的对话框中先为新建的连接填写名字(随意),然后单击“IPv4 settings” 设置 IP 信息,将“Method”栏选为“Manual”,然后单击“Add”填写 IP 信息 因为我们使用的是桥接模式,所以 IP 信息需要参考 windows 下的设置,当前窗口先不 要关闭,切换到 windows 下查看 IP 信息
imx6 linux 开发,linux,驱动开发,运维
5、在 windows 下打开一个命令行终端,然后输入“ipconfig”查看 windows 下使用的网络 及 IP 信息(根据个人电脑情况,找到 windows 正在使用的网络连接的信息)
imx6 linux 开发,linux,驱动开发,运维
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 下的“默认网关”

imx6 linux 开发,linux,驱动开发,运维
​ 设置完成后单击“Save”保存,关闭对话框即可

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

开发板网络配置

​ 前提:开发板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

imx6 linux 开发,linux,驱动开发,运维

总结一下就是:

电脑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

imx6 linux 开发,linux,驱动开发,运维

​ 启动开发板,在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共享目录下有这个文件系统。
imx6 linux 开发,linux,驱动开发,运维
在uboot界面设置bootargs来引导启动挂载的出厂系统。文章来源地址https://www.toymoban.com/news/detail-776158.html

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

到了这里,关于嵌入式Linux-IMX6ULL开发环境配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【IMX6ULL驱动开发学习】02.IMX6ULL烧写Linux系统

    由于我买的是正点原子的IMX6ULL阿尔法开发板,但是我是看韦东山老师视频学习的驱动 所以这里我烧录的方法是按照韦东山老师的课程来的 这里给出烧写Linux系统用到的工具 链接:https://pan.baidu.com/s/1bD-xxn3K8xQAVkJSaJmTzQ 提取码:af6w 下载解压后,可以看到烧写工具 烧写Linux系统

    2024年02月13日
    浏览(54)
  • [Linux_IMX6ULL驱动开发]-基础驱动

    如何理解嵌入式的驱动呢,我个人认为,驱动就是嵌入式上层应用操控底层硬件的桥梁。因为上层应用是在用户态,是无法直接操控底层的硬件的。我们需要利用系统调用(open、read、write等),进入内核态,通过打开对应的设备节点,通过read、write等通过编写的驱动函数来操

    2024年04月09日
    浏览(45)
  • [Linux_IMX6ULL驱动开发]-LED驱动

    其实在本人的理解看来,在驱动上面操控LED,和使用STM32在操控LED是大同小异的,因为本质都是控制引脚的输出电平,来达到点亮或者熄灭LED的作用,在这里,我们想要操控LED,我们首先要先清除它的原理图是什么样的。 如上图所示可知,想要点亮LED,那么我们需要控制引脚

    2024年04月14日
    浏览(33)
  • 【IMX6ULL驱动开发学习】11.Linux之SPI驱动

    参考:驱动程序开发:SPI设备驱动_spi驱动_邓家文007的博客-CSDN博客 目录 一、SPI驱动简介 1.1 SPI架构概述 1.2 SPI适配器(控制器)数据结构 1.2 SPI设备数据结构 1.3 SIP设备驱动 1.4 接口函数  二、SPI驱动模板 SPI驱动框架和I2C驱动框架是十分相似的,不同的是因为SPI是通过片选引

    2024年02月11日
    浏览(48)
  • 【IMX6ULL驱动开发学习】12.Linux驱动之设备树

    承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分) 代码获取: https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了(实际上只有前两层),合并成一个dev_drv.c了,暂时没有加GPIO操作,只是个框架 合并前的代码在 11.butt

    2024年02月13日
    浏览(43)
  • 【IMX6ULL驱动开发学习】12.Linux SPI驱动实战:DAC驱动设计流程

    基础回顾: 【IMX6ULL驱动开发学习】10.Linux I2C驱动实战:AT24C02驱动设计流程_阿龙还在写代码的博客-CSDN博客 【IMX6ULL驱动开发学习】11.Linux之SPI驱动_阿龙还在写代码的博客-CSDN博客 查看芯片手册,有两种DAC数据格式,12位和16位,这里选用16位数据(2字节)编写驱动。  重点在

    2024年02月11日
    浏览(52)
  • Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)

    前言: 万事开头难,如果我们在开发板上开发出第一个应用程序,第一个驱动程序,那么后续的开发就会稍微简单点,下面让我们来进行第一个应用程序和第一驱动程序的开发吧。 目录 一、开发板的第1个APP实验 1.通过Git仓库 2.通过windows上传  二、开发板的第1个驱动实验

    2024年02月08日
    浏览(37)
  • 【IMX6ULL驱动开发学习】14.Linux驱动开发 - GPIO中断(设备树 + GPIO子系统)

    代码自取 【14.key_tree_pinctrl_gpios_interrupt】: https://gitee.com/chenshao777/imx6-ull_-drivers 主要接口函数: 1. of_gpio_count (获得GPIO的数量) 2. kzalloc (向内核申请空间) 3. of_get_gpio (获取GPIO子系统标号) 4. gpio_to_irq (根据GPIO子系统标号得到软件中断号) 5. request_irq (根据软件中断号

    2024年02月12日
    浏览(49)
  • iMX6ULL驱动开发 | 让imx6ull开发板支持usb接口FC游戏手柄

    手边有一闲置的linux开发板iMX6ULL一直在吃灰,不用来搞点事情,总觉得对不住它。业余打发时间就玩起来吧,总比刷某音强。从某多多上买来一个usb接口的游戏手柄,让开发板支持以下它,后续就可以接着在上面玩童年经典游戏啦。  我使用的是正点原子的I.MX6U-ALPHA 开发板,

    2024年02月14日
    浏览(51)
  • 【IMX6ULL驱动开发学习】22.IMX6ULL开发板读取ADC(以MQ-135为例)

    IMX6ULL一共有两个ADC,每个ADC都有八个通道,但他们共用一个ADC控制器 在imx6ull.dtsi文件中已经帮我们定义好了adc1的节点部分信息 注意 num-channels = 2; ,这个表示指定使用ADC1的两个通道,即通道1和通道2 如果你要使用多个ADC通道,修改这个值即可 配置ADC引脚的 pinctrl ,在自己的

    2024年02月12日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包