飞凌OK-iMX9352-C测评三


一、连接测试

在上一章测试了飞凌OKMX93的linux环境配置功能。我主要是通过TF烧录程序然后通过TF卡启动。

1.串口登录

串口登录,文件给出了是通过putty进行串口登录,按照手册给的指示登录连接开发板。需要注意的是串口登录要安装串口驱动,不然无法识别串口。我举得串口登录还是很不方便,我还是习惯通过网络登录。

2.网络登录

该开发板支持SSH网络登录,支持FTP文件传输。通过网线把电脑和开发板连接起来。开发板连接的口是边上的口。开发板上电,这时注意蓝色的灯心跳闪烁。然后电脑进入cmd界面,输入ping指令查看电脑和开发板的网络连接状态。
在这里插入图片描述
上面是飞凌资料中的图片,我没截图。可以看到有数据返回,表示网络连接正常。
下面通过putty软件通过SSH与开发板的网络进行连接。安装资料连接后就可以正常测试了。关于一系列问题在资料中也有解决办法我就不赘述了。

二、界面功能测试

在这里插入图片描述
为了方便提高逼格,我把我之前买的飞凌套件中的屏幕拿来用了。这样更方便测试飞凌资料提供的录音和播放音乐等。插入耳机,然后安装资料提示,测试录音和播放音乐都正常。下面介绍一些命令行工具的使用。

1.点灯测试

无论哪一款开发板到手的第一件事就是点灯(点灯大师属实了)。因为核心板子上有一个蓝色的LED位可控的灯(底板也有一个,我用核心板作为演示即可),前面也提到过这也是心跳灯,我们要想控制这个灯就得把心跳这个功能取消。
修改源码中的设备树文件即可,即OKMX93-linux-sdk/OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/OK-MX9352-C.dts打开。将将 led-0 节点属性 state=”on”改为”off”, linux,default-trigger = "heartbeat"改为”none”。至此修改完成,下面点灯,
程序如下:

leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio_led>;
		led-0 {
				label = "heartbeat";
				linux,default-trigger = "heartbeat";
				gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
				default-state = "off";
		};
		led-1 {
				label = "led1";
				linux,default-trigger = "timer";
				gpios = <&gpio4 28 GPIO_ACIVE_HIGH>;
				default-state = "on";
		};
};

如此实现了灯的闪烁。
还有一种方法就是手动修改LED状态,这也是飞凌资料给的方法。
进入命令行查看出发条件

root@ok-mx93:/# cat /sys/class/leds/heartbeat/trigger
none bluetooth-power rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock
kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock
kbd-ctrlrlock timer disk-activity disk-read disk-write ide-disk [heartbeat] cpu cpu0 cpu1 mmc0
default-on panic mmc1 hci0-power rfkill0 rfkill1

其中[heartbeat]表示当前的触发条件为系统心跳灯,往 trigger 中写上述字符串,可以修改触发条件。
下面就是我们进行控制了,
将led的出发条件设置位none,我们就可以通过命令来控制led的亮灭了。

root@ok-mx93:/# echo none > /sys/class/leds/heartbeat/trigger //设置触发条件
root@ok-mx93:/# echo 1 > /sys/class/leds/heartbeat/brightness //点亮 led 灯
root@ok-mx93:/# echo 0 > /sys/class/leds/heartbeat/brightness //熄灭 led 灯

控制完成后,我们需要把这个灯改为心跳灯。即

root@ok-mx93:/# echo heartbeat > /sys/class/leds/heartbeat/trigger //设置触发条件为 heartbeat

2.串口测试

按照飞凌的资料,目前进行USB串口的测试
在测试前,关闭电源,短接 P19 的第 5 脚和第 8 脚,使 ttyUSB1 的接收引脚和 ttyUSB2 的发送引脚相连。
进入命令窗口,设置ttyUSB1 为接收模式

root@ok-mx93:~# fltest_uarttest -d /dev/ttyUSB1 r &
[1] 499
Welcome to uart test

设置 ttyUSB2 为发送模式

root@ok-mx93:~# fltest_uarttest -d /dev/ttyUSB2 w
Welcome to uart test
recv data:F2JgWJfEWGOvSOjY5uulRQzDbJ7wG
send data:F2JgWJfEWGOvSOjY5uulRQzDbJ7wG
recv data:zeYc5YNZh3pb7Ubf9O6QjVAXW8FFA
send data:zeYc5YNZh3pb7Ubf9O6QjVAXW8FFA
recv data:G9c4xfHFFbk7hyiJeGLrj2rwMtdQU
send data:G9c4xfHFFbk7hyiJeGLrj2rwMtdQU
recv data:SwQ1wGSMwhvOQ6znGjvI8iERqIroV
send data:SwQ1wGSMwhvOQ6znGjvI8iERqIroV
recv data:coHL6O8e6uCM9BEyhF9flnQUb3lYs
^C //停止发送
root@ok-mx93:~#

ttyUSB1 收到了 ttyUSB2 发送的数据,测试成功。
接下来测试RS485串口
ttyUSB0 和 ttyUSB3 被设计为 485 串口。连接两个 485 串口,需要 A 引脚和 A 引脚相连, B 引脚和 B 引脚相连,即: P27 的 8 脚连接 11 脚, 9 脚连接 12 脚。原理图如下所示:
在这里插入图片描述
进入命令行串口,设置 ttyUSB0 为接收模式

root@ok-mx93:~# fltest_uarttest -d /dev/ttyUSB0 r &
[1] 493
Welcome to uart test

设置 ttyUSB3 为发送模式

root@ok-mx93:~# fltest_uarttest -d /dev/ttyUSB3 w
Welcome to uart test
recv data:bbLolQiCfhrTq02H3JY9ia0cJYzhx
send data:bbLolQiCfhrTq02H3JY9ia0cJYzhx
recv data:FJHEZWgtQ7tHKBcWT1TIG1FV5L38z
send data:FJHEZWgtQ7tHKBcWT1TIG1FV5L38z
recv data:CPzKsWvmr1fLLyRNdECsws7TxzMdH
send data:CPzKsWvmr1fLLyRNdECsws7TxzMdH
recv data:DSkpCnMVEN7A3ZXbBYpODqkZvDMKq
send data:DSkpCnMVEN7A3ZXbBYpODqkZvDMKq
recv data:W9kQgO9ldb7lFNcrYN1CyBu7Ei6js
send data:W9kQgO9ldb7lFNcrYN1CyBu7Ei6js
recv data:rAFYIuN73PennZAZ75UCf6amRvHcY
send data:rAFYIuN73PennZAZ75UCf6amRvHcY
recv data:MB1x8106kVIz3Ep3D6hjzicQ24jQR
send data:MB1x8106kVIz3Ep3D6hjzicQ24jQR
recv data:IO1XPPs9O5XQ2n7GbPXDckXBnKkJH
send data:IO1XPPs9O5XQ2n7GbPXDckXBnKkJH
^C //停止发送
root@ok-mx93:~#

可以看到ttyUSB0 收到了 ttyUSB3 发送的数据,测试成功。

3.摄像头测试

OV5645 MIPI 摄像头, 同时也支持 UVC 摄像头。首先来测试一下 UVC 摄像头,将 USB 摄像头插入开发板,将自动安装 uvc 添加设备节点。
我们查看是否能够识别UVC Camera设备节点,进入命令行

root@ok-mx93:~# v4l2-ctl --list-devices
[ 22.100156] usb 2-1.2: reset high-speed USB device number 4 using ci_hdrc
UVC Camera (046d:0825) (usb-ci_hdrc.1-1.2):
/dev/video0
/dev/video1
/dev/media0

可以看到,识别成功。接下来进行摄像头预览

root@ok-mx93:~# gst-launch-1.0 v4l2src device=/dev/video0 io-mode=2 ! \
video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! \
autovideosink
[ 183.497378] usb 1-1.1: reset high-speed USB device number 5 using xhci-hcd
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

通过屏幕就可以看到摄像头的画面了。下面是拍照功能

root@ok-mx93:~# gst-launch-1.0 v4l2src device=/dev/video0 io-mode=2 num-buffers=1 ! \
video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! jpegenc ! filesink \
location=pic.jpeg
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:00:01.183575708
Setting pipeline to NULL ...
Freeing pipeline ...
root@ok-mx93:~# ls
pic.jpeg

这个并不能直接预览,而是需要将pic.jpeg这个文件拷贝的电脑上,打开就能够看到。

4.GPIO测试

需要注意的是飞凌的GPIO是底板的P6引出的,和RGB屏冲突了。所以智能不用屏幕了。因为刚开始,我们就是用的RGB显示屏,即P6的GPIO已经被RGB的显示驱动占用了,所以需要将 OK-MX9352-C.dts 中 board_gpio 的 status 改为status = “okay”,再编译替换设备树。
查看所有的GPIO设备

root@ok-mx93:~# gpiodetect
gpiochip0 [43810080.gpio] (32 lines)
gpiochip1 [43820080.gpio] (32 lines)
gpiochip2 [43830080.gpio] (32 lines)
gpiochip3 [47400080.gpio] (32 lines)

P6对应的GPIO为设备树中的gpio@43810080,即gpiochip0。
GPIO0为p6的第28脚,其他可以参考原理图。设置高电平

root@ok-mx93:~# gpioset gpiochip0 0=1

可以拿万用表测量该引脚是否为高电平,也可以直接获取改引脚的状态。

root@ok-mx93:~# gpioget gpiochip0
1

设置引脚为低电平

root@ok-mx93:~# gpioset gpiochip0 0=0

5.按键测试

图中的K1即为用户按键
首先我们需要查看,当按键按下去时,系统识别的事件是什么

root@ok-mx93:~# cat /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0000 Version=0000
N: Name="44440000.bbnsm:pwrkey"
P: Phys=bbnsm-pwrkey/input0
S:
Sysfs=/devices/platform/soc@0/44000000.bus/44440000.bbnsm/44440000.bbnsm:pwrkey/input/input0
U: Uniq=
H: Handlers=kbd event0
B: PROP=0
B: EV=3
B: KEY=10000000000000 0
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="keys"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/platform/keys/input/input1
U: Uniq=
H: Handlers=kbd event1
B: PROP=0
B: EV=3
B: KEY=8000000000 0

事件为event1
接下来可以进行测试了

root@ok-mx93:~# evtest /dev/input/event1
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "keys"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 103 (KEY_UP)
Properties:
Testing ... (interrupt to exit)
Event: time 1664183390.337706, type 1 (EV_KEY), code 103 (KEY_UP), value 1
Event: time 1664183390.337706, -------------- SYN_REPORT ------------
Event: time 1664183390.511901, type 1 (EV_KEY), code 103 (KEY_UP), value 0
Event: time 1664183390.511901, -------------- SYN_REPORT ------------

当按键按下去和抬起来时,不同的信息如上所示。测试成功

三、网上其他大佬的测试

这一部分我主要是看到网上有一位大佬的测试,我感觉很牛逼,就借鉴了。这个大佬在CSDN有一个账号名字为码农爱学习,在B站也有一个账号叫作码农爱学习-B站
这个大佬实现了通过web界面进行电灯的,我看了感觉很牛逼。
这里使用html语言设计一个LED的控制界面。

OK-MX9352开发板上有两个可以控制的LED,一个位于核心板上,另一个位于底板上,在设置html时,可以使用select功能实现一个下拉选项,选择要控制的LED。

另外,LED也有多种控制模式,如基础的开关模式(设置开,或关),心跳灯模式,定时器模式(设置亮的时间和灭的时间),也使用下拉选项的方式。

选择不同的控制模式后,为了能动态展示不同模式下的操作功能,比如开关模式下需要显示开和关的按钮,心跳灯模式则不需要额外的配置,定时器模式则需要两个输入框来设置亮的时间和灭的时间。这里使用script功能,来实现此功能,通过读取网页中当前LED模式的值,来进行对应控件的显示或隐藏。

完整的html代码如下,led.html:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
    <title>led control</title>
    </head>
 
    <body background="background.png"       
        style="background-repeat:no-repeat;       
        background-size:100% 100%;                     
        background-attachment: fixed;">  
    
    <center><br><br><br><br>
    <h1 align="center">基于飞凌OK-MX9352的web控制LED灯</h1>
    <!--新建一个表单,动作链接到开发板的/cgi-bin/led.cgi,采用的方法为GET--> 
    <form action="led.cgi" method="get">  
        <p align="center">LED选择:
        <select name="led_id">
            <option value="LED0" selected>核心板LED</option>
            <option value="LED1">底板LED</option>
        </select></p>
        <p align="center">模式选择:
        <select name="led_mode" onclick="select_event(this.options[this.selectedIndex].value);">
            <option value="ONOFF" selected>开关模式</option>
            <option value="HEARTBEAT">心跳灯模式</option>
            <option value="TIMER">定时器灯模式</option>
        </select></p>
        <p align="center" id = "id_led_time_on" >亮时间:<input type="text" value=500 name="led_time_on"/></p>
        <p align="center" id = "id_led_time_off" >灭时间:<input type="text" value=500 name="led_time_off"/></p>
        <p align="center" id = "id_led_onoff">LED开关:
            <input type="radio" name="led_val" value="ON" checked><input type="radio" name="led_val" value="OFF"></p><br><br>
        <p align="center">
            <input type="submit" value="确认"/>        
            <input type="reset" value="返回"/>
        </p>
    </form>
    </center>

    <script>
        document.getElementById("id_led_time_on").style.display = "none";
        document.getElementById("id_led_time_off").style.display = "none";
    </script>
    <script>
        function select_event(value) 
        {
            document.getElementById("id_led_onoff").style.display = "none";
            document.getElementById("id_led_time_on").style.display = "none";
            document.getElementById("id_led_time_off").style.display = "none";
            if (value === "ONOFF") 
            {
                document.getElementById("id_led_onoff").style.display = "";
            } 
            else if (value === "TIMER") 
            {
                document.getElementById("id_led_time_on").style.display = "";
                document.getElementById("id_led_time_off").style.display = "";
            }
        }
    </script>
    
    </body>
</html>

————————————————
版权声明:本文为CSDN博主「码农爱学习」的原创文章,遵循CC 4.0 BY-SA版权协议,原文链接:https://blog.csdn.net/hbsyaaa/article/details/130118278
上面时他的一部分web页面设计。我就不多抄了。

总结

到这里,对于飞凌OK-iMX9352-C测评到此结束。开发板很强大,提供的学习资料我也走了一遍(个别在我的电脑上有问题的,我也给出了相应的解决办法)。我个人认为,飞凌系列的产品有一定的入学门槛,初学者需要做好准备。当然学会了飞凌开发,也很牛逼。因为飞凌还可以web等一系列开发真的很有前景。

  • 37
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值