IMX6ULL Qt 项目(控制led灯和蜂鸣器)全流程
一、网络搭建(我是连接网线的)
打开虚拟机设置,采用双适配器(一个选用桥接,一个选用NAT):
然后主机就打开控制面板的网络连接(我们需要的就是以太网2下面的这个NXUSB2.0):
然后打开虚拟机的虚拟网络编辑器(桥接选择这个NX USB2.0,不要选自动,不然会连到wifi等,如果找不到这个内容,重新插拔网线,记住连接主机):
接下来下载putty(轻量简单,我们老师力荐):
这个时候要插数据线,一端连接开发板USB_TTL,另一端连接主机,打开设备管理器,查看端口:
然后打开putty,
这个Serial line to connect to 取决于你自己的设备(例如我的就是上图中的端口:COM3)
点击open,会进入倒计时界面(随便按一个键进入u-boot,不然就是正常的启动starting kernel......):
还有一个很重要的地方就是拨码开关(我是连网线的,现在是EMMC启动,即拨码1367):
如果电脑没有网口,就买个转接口:
nfs要提前配置好,这里有一个易错点:
打开/etc/exports 以后在后面添加如下所示内容(这个很重要,以我的为例):
/home/szc/nfs_rootfs *(rw,sync,no_root_squash)
tftp也要配置好,直接询问AI即可
u-boot界面ping一下虚拟机(ping通即可):
二、一些必备资源的准备
1.下载交叉编译器:
Linaro GCC 编译器下载地址如下: https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/,打开以后下载界面如图所示(下载完传到虚拟机里):
安装相关库:
sudo apt-get install lsb-core lib32stdc++6
交叉编译器验证:
arm-linux-gnueabihf-gcc -v
如果交叉编译器安装正确,会显示版本号:
2.准备好这些(我的是老师给的):
三、进行操作
1.拷贝编译好的镜像和设备树到根文件系统
cp arch/arm/boot/zImage /home/szc/nfs_rootfs/
# 7寸屏设备树(这个大小要看你自己的板子,我的是到官网查了一下,是7寸的)
cp arch/arm/boot/dts/imx6ull-14x14-emmc-7-1024x600-c.dtb /home/szc/nfs_rootfs/
2.编译部署自己的qt项目
写一个qt项目,然后自己编译部署:
cd /home/szc/Desktop/szcheng rm -rf build_szcheng mkdir build_szcheng && cd build_szcheng unset CC CXX CXXFLAGS CFLAGS QMAKE source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi qmake ../szcheng.pro make -j4 sudo cp ./szcheng /home/szc/nfs_rootfs/usr/bin/ sudo chmod 777 /home/szc/nfs_rootfs/usr/bin/szcheng3.开发板上电,进入u-boot模式,然后启动项目:
我的代码是这个样子的:
setenv ipaddr 192.168.1.101 setenv serverip 192.168.1.100 tftp 80800000 zImage tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb setenv bootargs root=/dev/nfs nfsroot=${serverip}:/home/szc/nfs_rootfs,v3 ip=${ipaddr}:${serverip}:192.168.1.1:255.255.255.0::eth0:off console=ttymxc0,115200 bootz 80800000 - 83000000运行效果图:
这个步骤的相关易错点:
1.网络不稳定,网线明明连着,连接却突然断开了,这时候重新插拔网线,ping完发现 is not alive,这是因为虚拟机的连接断开了,
解决办法:找到虚拟机的网络连接处(一般在右上角),重新连接,ens33和ens37都重新连,然后Ubuntu终端 命令行输入 ip a,
发现连接正确即可。
2.运行qt项目发现led灯和蜂鸣器控制不了
这个时候进入系统输入(输出如下图):
发现这个蜂鸣器是和led灯放一起的,根据自己的实际情况来写qt项目里面的代码:
编写代码前现在putty里面运行一下下面的代码(以我的为例),试成功了再修改自己的项目代码
# 关闭自动心跳闪烁,切换手动控制 echo none > /sys/class/leds/sys-led/trigger # 点亮LED echo 1 > /sys/class/leds/sys-led/brightness # 熄灭LED echo 0 > /sys/class/leds/sys-led/brightness # 开启蜂鸣器 echo 1 > /sys/class/leds/beep/brightness # 关闭蜂鸣器 echo 0 > /sys/class/leds/beep/brightness四、成果展示
五、烧写进系统,让项目能够开机自启动
现在的项目只是连接网线来暂时实现的,想要开机自启动,我们还要把它烧写进系统,ubuntu进行如下操作:
将这个mfgtool拖到window主机里,
然后烧写文件(选择和自己的板子一样的我的就是eMMC-ddr512-eMMC.vbs):
点击start开始烧写:
烧写成功示例图:
这里还有一个易错点:
此时的拨码开关只开一个2就行了,然后这个数据线要连接USB_OTG(烧写必备)
过程大概需要几分钟,我的是5分钟左右,期间不要进行任何多余操作,否则会失败,导致系统重启不了。
烧写后成果展示(开发板自启动):