通过本章节我们可以快速验证开发板的各个外设接口,在本节的所有功能测试中,我们使用的是Yocto的文件系统(在光盘资料的“i.MX6UL终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\03_Yocto文件系统\rootfs.tar.bz2”目录下)。
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 1.1所示:
然后我们改变用户LED的触发方式,在串口终端输入下面的命令:
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
修改触发方式,点亮用户led,关闭用户led,依次的操作如图1.2所示:
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 2.1所示:
如果我们需要使蜂鸣器鸣叫,在串口终端输入下面的命令:
echo 1 > /sys/class/leds/beep/brightness
如果我们需要关闭蜂鸣器,在串口终端输入下面的命令:
echo 0 > /sys/class/leds/beep/brightness
运行的结果如图 2.2所示:
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 3.1所示:
然后我们在串口终端输入下面的命令获取ADC电位器的数值:
cat /sys/bus/iio/devices/iio:device0/in_voltage5_raw
运行结果如图 3.2所示:
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 4.1所示:
然后我们准备一张FAT32分区的TF卡,插入开发板,可以看到串口终端打印出“检测到TF卡的”信息,如图 4.2所示:
然后我们可以输入“df -l”命令查看TF卡被挂载到哪个目录下了,运行结果如图 4.3所示:
从上图我们可以看到TF卡被挂载到了“/run/media/mmcblk0p1”目录下,我们使用“cd /run/media/mmcblk0p1”命令进入到该目录下,然后输入“ls”命令,可以查看TF卡里面都有哪些文件了,运行结果如图 4.4所示:
我们可以使用“mkdir topeet”命令在TF卡里面建立一个topeet的文件夹,运行结果如图 4.5所示:
我们可以像操作UBuntu系统的下的磁盘一样,对TF卡进行读写操作。
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 5.1所示:
然后我们准备一个FAT32分区的U盘,插入到开发板的USB HOST(i.MX6ULL终结者开发板有两个USB HOST接口,我们可以使用其中的任意一个),U盘连接到开发板以后,我们可以看到串口打印出识别到U盘的信息,如图 5.2所示:
然后我们可以输入“df -l”命令查看U盘被挂载到哪个目录下了,运行结果如图 5.3所示:
然后我们输入“cd /run/media/sda1/”命令,进入到U盘挂载的目录,然后输入“ls”命令,查看U盘里面都有哪些文件,运行结果如图 5.4所示:
我们可以使用“mkdir topeet”命令在U盘里面建立一个topeet的文件夹,运行结果如图 5.5所示:
我们可以像操作UBuntu系统的下的磁盘一样,对U盘进行读写操作。
I.MX6ULL终结者开发板板载了两路以太网接口,系统默认打开的是ETHERNET2,如图 6.1所示:
首先我们连接网线的一端到ETHERNET2接口,网线另一端连接到路由器,然后开发板上电启动,然后通过调试串口登录到开发板上,如图 6.2所示:
然后我们在串口终端输入“ifconfig”命令查看网卡的信息,如图 6.3所示:
从上图可以看到ETHERNET2通过DHCP自动获取到了IP地址“192.168.0.82”,然后我们在串口终端输入“ping www.qq.com”ping下腾讯的网址,可以看到联网成功,运行结果如图 6.4所示:
下面我们来测试一下ETHERNET1网口:
我们在串口终端输入“ifconfig eth0 down”命令,先关闭ETHERNET2网口,如图 6.5所示:
然后我们把网线连接到ETHERNET1接口上,如图 6.6所示:
然后在串口终端输入“udhcpc -i eth1”命令,使ETHERNET1通过DHCP自动获取IP地址,运行结果如图 6.7所示:
从上图我们可以看到ETHERNET1获取到了IP地址“192.168.0.85”,我们可以在串口终端输入“ifconfig”命令来看一下ETHERNET1获取到的IP地址,运行结果如图 6.8所示:
从上图我们可以看到ETHERNET1通过DHCP获取到了IP地址,然后我们输入“ping www.qq.com”ping腾讯的网址,验证下ETHERNET1网络是否是连通的,运行结果如图 6.9所示:
从上图我们可以看到ETHERNET1的网络也是通的。
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 7.1所示:
然后我们在串口终端输入“cat /proc/bus/input/devices”命令,查看Linux系统的输入设备,如图 7.2所示:
从上图我们可以看到用户按键的事件号是event3(如果我们有接触摸屏,用户按键的事件号有可能会是event4),然后我们在串口终端输入“od -x /dev/input/event3”命令,然后按下开发板上的KEY0按键,可以看到获取到的按键上报数据(十六进制方式),运行结果如图 7.3所示:
开发板默认安装的系统里面集成了内存测试命令“memtester”。该命令测试的内容包括异或、乘法,除法,减法,与或运算等等。可以指定测试内存的代销和次数。该命令的具体用法可以输入“memtester -h”来查看。
接下来我们使用50M内存做1次测试。首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 8.1所示:
然后我们在串口终端输入“memtester50M 1”命令,运行结果如图 8.2所示:
从上图我们看到校准完成,没有任何错误信息。
LInux系统下分为系统时钟和硬件时钟。分别使用date和hwclock命令查看。系统时钟在系统断电以后会丢失,硬件时钟在有纽扣电池的情况下,系统断电,时钟不会丢失。在系统每次启动的时候,系统时钟会和硬件时钟进行同步。
首先我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 9.1所示:
查看系统时钟我们在串口终端输入“date”命令,运行结果如图 9.2所示:
查看硬件时钟,我们在串口输入“hwclock”命令,运行结果如图 9.3所示:
我们也可以使用date命令来设置系统时间,例如我们在串口终端输入“date -s “2020-3-30 8:00:00””,设置系统时间是2020年3月30号8:00:00,运行结果如图 9.4所示:
我们可以使用“hwclock -w”命令把当前系统的时间同步到硬件时钟里面,运行结果如图 9.5所示:
I.MX6ULL终结者开发板引出了一路CSI的摄像头接口,支持迅为的OV5640摄像头模块。首先我们连接OV5640摄像头模块到开发板上,如图 10.1所示(大家在连接的时候一定要注意方向,摄像头朝向开发板的内侧,千万不要接反):
然后我们给开发板上电启动,然后通过调试串口登录到开发板上,如图 10.2所示:
系统起来以后,会在“/dev”目录下生成“video1”节点,然后我们在调试串口输入“v4l2-ctl --device=/dev/video1 --list-formats-ext”命令,我们可以看到摄像头支持的格式,分辨率以及帧率,如图 10.3所示:
然后我们在串口终端输入“gst-launch-1.0 -v imxv4l2src device=/dev/video1 ! “video/x-raw, format=(string)YUY2,width=(int)640, height=(int)480, framerate=(fraction)30/1” ! imxv4l2sink”命令,按照640x480 30fps摄像头开始进行视频采集,运行命令如图 10.4所示:
同时我们可以在LCD显示屏上看到摄像头采集到的实时图像,如图 10.5所示:
我们可以在串口终端按“Ctrl+c”停止摄像头采集程序的运行。
我们可以使用“gst-launch-1.0 -vvv -e imxv4l2src num-buffers=1000 device=/dev/video1 ! “video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, framerate=(fraction)30/1” ! filesink location=video.yuv”命令进行视频的录制。
我们可以使用:“gst-launch-1.0 imxv4l2src num-buffers=1 device=/dev/video1 !
‘video/x-raw,format=(string)YUY2,width=640,height=480’ ! filesink location=picture.yuv”命令,可以拍照yuv格式的图片。
我们可以使用:“gst-launch-1.0 imxv4l2src num-buffers=1 device=/dev/video1 ! jpegenc ! filesink location=picture.jpg”命令可以保存jpg格式的图片。
I.MX6ULL终结者开发板默认支持符合UVC协议的USB接口摄像头,我们准备一个UVC的摄像头接在开发板的USB HOST接口上,然后开发板上电启动,我们通过调试串口登录到开发板上,如图 11.1所示:
然后我们在串口终端输入“lsusb”命令,查看系统的所有USB外设,可以看到系统检测到了UVC摄像头,如图 11.2所示:
然后我们使用“ls /dev/video*”命令,可以看到UVC摄像头的设备节点是“/dev/video2”(有可能会是video3,或其他),如图 11.3所示:
然后我们在终端输入“v4l2-ctl --device=/dev/video2 --list-formats-ext”查看UVC摄像头支持的参数,运行结果如图 11.4所示:
从上图我们可以看到我所使用的UVC摄像头支持YUYV格式,然后我们在串口终端输入“gst-launch-1.0 -v imxv4l2src device=/dev/video2 ! “video/x-raw, format=(string)YUY2,width=(int)640, height=(int)480, framerate=(fraction)30/1” ! imxv4l2sink”命令,开始采集摄像头数据,如图 11.5所示:
同时我们可以在LCD屏幕是哪个看到UVC摄像头采集到的图像,如图 11.6所示:
我们可以使用“gst-launch-1.0 -vvv -e v4l2src num-buffers=1000 device=/dev/video2 ! image/jpeg,width=640,height=480,framerate=30/1,rate=30 ! matroskamux ! filesink location=video.mkv”命令,保存UVC录制的视频。命令运行后会在当前目录下生成video.mkv的视频文件。
I.MX6ULL终结者开发板板载了一个三合一的光环境传感器AP3216C,内核里面我们默认已经移植了AP3216C的驱动,现在我们来验证下AP3216C。
首先开发板上电启动,我们通过调试串口登录到开发板上,如图 12.1所示:
然后我们在调试串口输入“cat /sys/class/misc/ap3216c/als”命令,读取环境光强度,运行结果如图 12.2所示:
我们在调试串口输入“cat /sys/class/misc/ap3216c/ps”命令,读取接近距离,运行结果如图 12.3所示:
我们在调试串口输入“cat /sys/class/misc/ap3216c/ir”命令,读取红外线强度,运行结果如图 12.4所示:
I.MX6ULL终结者开发板板载了一个WIFI/蓝牙二合一模块,通过WIFI我们可以使用无线网络,下面我们来看一下如何设置WIFI链接到互联网。
首先开发板上电启动,我们通过调试串口登录到开发板上,如图 13.1所示:
然后我们在调试串口分别输入“ifconfig eth0 down”和“ifconfig eth1 down”命令,关闭有线网络,如图 13.2所示:
然后我们在串口输入“wpa_passphrase XW “aaaaaaaa” >/etc/wpa_supplicant.conf”,生成wpa_supplicant.conf配置文件,命令中的“XW”是无线网络的名字,“aaaaaaaa”是无线网络的密码,运行结果如图 13.3所示:
然后我们在调试串口输入“wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf -dd >/var/wifi_log &”命令,使用wpa_supplicant命令链接wifi网络,运行结果如图 13.4所示:
然后我们输入“udhcpc -i wlan0 &”命令,通过dhcp给wlan0分配ip地址,运行结果如图 13.5所示:
从上图我们可以看到wlan0通过dhcp获取到了ip地址“192.168.0.119”,我们可以在调试串口终端输入“ifconfig”命令看一下wlan0的网络信息,运行结果如图 13.6所示:
从上图我们可以看到wlan0的ip地址是“192.168.0.119”以及MAC地址“00:0f:00:f5:46:02”。然后我们在调试串口输入“ping www.qq.com”命令,ping下腾讯网址,运行结果如图 13.7所示:
从上图可以看到通过wifi可以连接到互联网了。
i.MX6ULL终结者开发板上预留了一个Mini PCIE的4G接口,可以连接迅为提供的EC20模块。下面我们来演示下如何使用EC20 4G模块。
首先我们准备一个EC20 4G模块连接到i.MX6ULL终结者开发板的Mini PCIE接口上,然后准备一个4G天线,接到EC20模块的天线座上面,然后插入一张能联网的SIM卡,如图 14.1所示:
然后我们给开发板上电启动,我们通过调试串口登录到开发板上,如图 14.2所示:
接着我们在调试串口输入“ls /dev/ttyUSB*”命令,可以看到EC20模块虚拟出来的5个串口设备节点,运行结果如图 14.3所示:
然后我们在调试串口终端分别输入“ifconfig eth0”和“ifconfig eth1”两个命令,确保关闭所有的网络设备,运行结果如图 14.4所示:
然后在调试串口终端输入“vi /etc/resolv.conf”打开etc目录下的resolv.conf文件,然后在里面输入下面的三条命令,设置下DNS:
nameserver 202.99.160.68
nameserver 221.130.33.52
nameserver 221.130.33.60
如图 14.5所示:
然后保存退出。接着我们在调试串口输入“/etc/ppp/pppd call wcdma &”命令,开始ppp拨号联网,运行结果如图 14.6所示:
然后我们在调试串口终端输入“ifconfig”命令查看下网络设备信息状态,运行结果如图 14.7所示:
从上图可以看到EC20模块已经联网成功。接着我们在调试串口终端输入“ping www.qq.com”命令,ping下腾讯的网址,运行结果如图 14.8所示:
从上图我们可以看到通过EC20模块可以联网成功了。
I.MX6ULL终结者开发板板载了两路CAN接口,我们可以使用这两路CAN接口验证CAN的数据收发。
首先我们使用电缆线连接CAN1和CAN2(can连接的时候:H接H、L接L),如图 15.1所示:
然后我们给开发板上电启动,我们通过调试串口登录到开发板上,如图 15.2所示:
开发板上的两路CAN默认是关闭的,我们在调试串口终端输入“ip link set can0 up type can bitrate 125000 triple-sampling on”命令,设置CAN0的波特率是125000,并打开CAN0,运行结果如图 15.3所示:
然后我们在调试串口终端输入“ip link set can1 up type can bitrate 125000 triple-sampling on”命令,设置CAN1的波特率是125000(CAN总线在进行数据收发的时候,通信双方的波特率要设置成一致),并打开CAN1,运行结果如图 15.4所示:
现在我们打开了两个CAN设备,我们可以在调试串口终端输入“ifconfig”命令查看下,运行结果如图 15.5所示:
从上图我们可以看到两路CAN设备已经打开了。
接下来我们使用CAN0作为数据接收端,我们需要在调试串口终端输入“candump can0 &”命令,运行结果如图 15.6所示:
然后我们使用CAN1作为数据发送端,我们在调试串口终端输入“cansend can1 6A0#11.22.33.44.55.66.77.88”命令,发送数据,其中的6A0是帧ID,#后面的是数据,共8个字节。运行结果如图 15.7所示:
从上图我们可以看到CAN1发送数据以后,后台运行的CAN0接收程序收到了CAN0的数据,并显示出来,接收到的数据和发送的数据内容一致。
数据接收端和发送端也可以互换,可以参考上面的命令(主要是解释和发送程序的CAN接口设置对)。
I.MX6ULL终结者开发板板载了一路RS485接口,我们在使用前需要设置下板子上的跳线,设置方式如图 16.1所示:
按照上图的跳线设置,就把i.MX6ULL的UART3和485接口连接起来了。我这里使用了两块i.MX6ULL终结者开发板来验证485数据收发功能(如果大家有其他的485设备,可以使用i.MX6ULL终结者开发板连接自己的485设备),485设备在连接的时候需要直连(A接A、B接B),我这里的接线如图 16.2所示:
然后我们分别给两块i.MX6ULL终结者开发板上电启动,然后分别登录到两个开发板的调试串口终端,如图 16.3所示:
然后我们在开发板A的调试串口终端输入“485_test /dev/ttymxc2 0”命令,其中的“/dev/ttymxc2”是485对应的串口设备节点,“0”是指接收数据,运行结果如图 16.4所示:
然后我们在开发板B的调试串口终端输入“485_test /dev/ttymxc2 1”命令,其中的“/dev/ttymxc2”是485对应的串口设备节点,“1”是指发送数据,运行结果如图 16.5所示:
从上图我们可以看到开发板B的程序运行后,自动进入数据发送功能。然后我们切换到开发板A的调试串口终端,可以看到开发板A的485接收程序接收到的数据,如图 16.6所示:
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便,产品如图 17.1所示:
i.MX6ULL终结者开发板已板载了DHT11传感器,且提供的Linux镜像和设备树已配置好了dht11接口,dht11驱动程序使用高版本Linux内核自带的稳定驱动程序,根文件系统使用网盘资料里的Yocto镜像,开发板要保证iio接口正常,输入以下命令:
cd /sys/bus/iio/devices/iio:device1
如图 17.2所示:
输入命令,查看温度。出现00为结尾的数字为正常,可以多cat几次,从端口获取的数值为32000,32000 /1000 = 32,32就是dht11采集的温度值。
cat in_temp_input 如图 17.3所示:
输入命令,查看湿度。出现00为结尾的数字为正常,可以多cat几次,从端口获取的数值为39000,39000 /1000 = 39,39就是dht11采集的湿度值。
cat in_humidityrelative_input
如图 17.4所示。