开箱体验
主要配件包括:USB Type-C调试线、电源线、主板。
资源下载
开发环境
飞凌提供了制作好的ubuntu18.04的镜像,直接到网盘下载解压即可,VMWare的安装可以参考网上教程,这里不赘述。安装好VMWare后直接打开解压出来的ubuntu18.04镜像,登录账户forlinx,密码forlinx
硬件资料
硬件资料包括用户手册、数据手册、PDF版的原理图以及更新记录
软件资料
软件方面提供了linux4.1.15+QT5.6的镜像、原厂资料包、丰富的应用笔记、数据手册、烧录工具以及Linux源码
系统介绍
OKMX6ULL-C开发板使用的是NXP的imx6-ul处理器,主要特性如下
CPU
- Cortex-A7内核,运行频率900 MHz,128 KB L2缓存
显示
- 并行LCD显示,分辨率高达WXGA (1366x768)
- 8/10/16/24位并行摄像头传感器接口
- 电泳显示屏控制器支持直接驱动E-Ink EPD面板,分辨率高达2048x1536,工作频率106 Hz
存储
- 16位LP-DDR2, DDR3/DDR3L
- 8/16位并行NOR FLASH / PSRAM
- 双通道Quad-SPI NOR FLASH
- 8位原始NAND FLASH与40位ECC
连接
- 2个MMC 4.5/SD 3.0/SDIO端口
- 2个USB 2.0 OTG,HS/FS,器件或主机,带PHY接口
- 音频接口包括3个I2S/SAI, S/PDIF Tx/Rx
- 2个10/100以太网,支持IEEE 1588协议
- 2个12位ADC,高达10个输入通道,以及电阻式触摸控制器(4线/5线)
安全性
- 安全模块:TRNG,加密引擎(带DPA的AES,TDES/SHA/RSA),安全引导
系统测试
查看 CPU 信息命令
取系统中的 CPU 的提供商和参数信息,则可以通过/proc/cpuinfo 文件得到。
- processor:系统中逻辑处理核的编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
- BogoMIPS :在系统内核启动时粗略测算的 CPU 每秒运行百万条指令数(MillionInstructions Per Second)
root@fl-imx6ull:~# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 3.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : Freescale i.MX6 Ultralite (Device Tree)
Revision : 0000
Serial : 471669d75d5b2ac2
CPU使用情况
Top命令查看CPU使用情况
Tasks: 92 total, 1 running, 88 sleeping, 3 stopped, 0 zombie
%Cpu(s): 1.5 us, 2.0 sy, 0.0 ni, 96.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 489380 total, 373512 free, 35020 used, 80848 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 371988 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
883 root 20 0 3236 1920 1612 R 3.2 0.4 0:03.34 top
624 avahi 20 0 3692 2120 1948 S 0.6 0.4 0:00.50 avahi-daemon
1 root 20 0 1708 1096 1028 S 0.0 0.2 0:02.09 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.15 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 0:00.34 rcu_preempt
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_sched
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
12 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs
13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cfg80211
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 rpciod
22 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kswapd0
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 nfsiod
61 root 20 0 0 0 0 S 0.0 0.0 0:00.00 spi0
62 root 20 0 0 0 0 S 0.0 0.0 0:00.00 spi1
63 root 20 0 0 0 0 S 0.0 0.0 0:00.14 kworker/u2:1
68 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ci_otg
69 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 goodix_wq
70 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 gtp_esd_check
- %us:表示用户空间程序的 cpu 使用率(没有通过 nice 调度)
- %sy:表示系统空间的 cpu 使用率,主要是内核程序
- %ni:表示用户空间且通过 nice 调度过的程序的 cpu 使用率
- %id:空闲 cpu
- %wa: 等待输入输出的 CPU 时间百分比
- %hi:cpu 处理硬中断的数量
- %si:cpu 处理软中断的数量
CPU支持的频率
查看当前CPU支持的频率档位
root@fl-imx6ull:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
198000 396000 528000 792000
root@fl-imx6ull:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000
获取 CPU 温度信息
root@fl-imx6ull:~# cat /sys/class/thermal/thermal_zone0/temp
55025
上面显示的数字为千分之一度,处以1000就是当前温度
CPU压力测试
通过 bc 命令来计算圆周率方法来测试 CPU 在运算过程中的稳定性。基本上保持在98.5%左右
过一会儿计算出了圆周率
查看内存信息
可以通过/proc/meminfo 文件读取系统中的内存的参数信息
root@fl-imx6ull:~# cat /proc/meminfo
MemTotal: 489380 kB
MemFree: 399972 kB
MemAvailable: 387244 kB
Buffers: 6788 kB
Cached: 40912 kB
SwapCached: 0 kB
Active: 40896 kB
Inactive: 28524 kB
Active(anon): 21932 kB
Inactive(anon): 860 kB
Active(file): 18964 kB
Inactive(file): 27664 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 489380 kB
LowFree: 399972 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 20 kB
Writeback: 0 kB
AnonPages: 21720 kB
Mapped: 22508 kB
Shmem: 1072 kB
Slab: 10640 kB
SReclaimable: 3420 kB
SUnreclaim: 7220 kB
KernelStack: 728 kB
PageTables: 972 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 244688 kB
Committed_AS: 75644 kB
VmallocTotal: 1548288 kB
VmallocUsed: 37188 kB
VmallocChunk: 1329932 kB
CmaTotal: 327680 kB
CmaFree: 326632 kB
root@fl-imx6ull:~#
获取内存使用率
使用 free 命令来读取内存的使用情况,-m 参数代表单位为 MByte。
root@fl-imx6ull:~# free -m
total used free shared buff/cache available
Mem: 477 30 392 1 55 378
Swap: 0 0 0
- total :内存总量 (我拿到的是512M的内存版本)
- used :被使用的内存量
root@fl-imx6ull:~# memsize
384MB OK
384
内存压力测试
通过给定测试内存的大小和次数, 可以对系统现有的内存进行压力上的测试。可使用系统工具 memtester 进行测试,如指定内存大小 50MB,测试次数为 5,测试命令为“memtester 50M 5"。
root@fl-imx6ull:~# memtester 50M 5
memtester version 4.3.0 (32-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffff000
want 50MB (52428800 bytes)
got 50MB (52428800 bytes), trying mlock ...locked.
Loop 1/5:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Loop 2/5:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Loop 3/5:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Loop 4/5:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Loop 5/5:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Done.
查看分区信息
root@fl-imx6ull:~# cat /proc/partitions
major minor #blocks name
1 0 65536 ram0
1 1 65536 ram1
1 2 65536 ram2
1 3 65536 ram3
1 4 65536 ram4
1 5 65536 ram5
1 6 65536 ram6
1 7 65536 ram7
1 8 65536 ram8
1 9 65536 ram9
1 10 65536 ram10
1 11 65536 ram11
1 12 65536 ram12
1 13 65536 ram13
1 14 65536 ram14
1 15 65536 ram15
179 0 7634944 mmcblk1
179 1 512000 mmcblk1p1
179 2 7020544 mmcblk1p2
179 24 4096 mmcblk1rpmb
179 16 4096 mmcblk1boot1
179 8 4096 mmcblk1boot0
root@fl-imx6ull:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 6.5G 750M 5.4G 12% /
devtmpfs 79M 4.0K 79M 1% /dev
tmpfs 40K 0 40K 0% /mnt/.psplash
tmpfs 239M 172K 239M 1% /run
tmpfs 239M 172K 239M 1% /var/volatile
/dev/mmcblk1p1 500M 15M 486M 3% /run/media/mmcblk1p1
网络
设置网卡0的IP地址,ifconfig命令可以查看当前系统的网卡
root@fl-imx6ull:~# ifconfig eth0 192.168.1.1
root@fl-imx6ull:~# ifconfig
eth0 Link encap:Ethernet HWaddr 3a:63:34:0f:71:84
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 62:38:63:34:0f:71
UP BROADCAST MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
uname查看内核版本
root@fl-imx6ull:~# uname -a
Linux fl-imx6ull 4.1.15-00050-ge85def2 #1 SMP PREEMPT Mon Apr 18 17:42:50 CST 2022 armv7l armv7l armv7l GNU/Linux
mplayer播放MP4
root@fl-imx6ull:~# mplayer -vo fbdev test.mp4
Creating config file: /home/root/.mplayer/config
MPlayer 1.3.0-5.3.0 (C) 2000-2016 MPlayer Team
Playing test.mp4.
libavformat version 57.25.100 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x887550]Protocol name not provided, cannot determine if input is local or a network protocol, l
[lavf] stream 0: video (mpeg4), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang und
VIDEO: [MP4V] 480x272 24bpp 23.976 fps 1077.9 kbps (131.6 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 57.24.102 (internal)
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
Clip info:
major_brand: isom
minor_version: 512
compatible_brands: isomiso2mp41
encoder: Lavf55.19.104
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
top - 04:06:00 up 21 min, 2 users, load average: 0.08, 0.05, 0.05
Tasks: 92 total, 1 running, 89 sleeping, 2 stopped, 0 zombie
%Cpu(s): 0.3 us, 2.3 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 489380 total, 370476 free, 34204 used, 84700 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 370888 avail Mem
root@fl-imx6ull:~# mplayer -vo fbdev test.mp4
MPlayer 1.3.0-5.3.0 (C) 2000-2016 MPlayer Team
Playing test.mp4.
libavformat version 57.25.100 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x887550]Protocol name not provided, cannot determine if input is local or a network protocol, l
[lavf] stream 0: video (mpeg4), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang und
VIDEO: [MP4V] 480x272 24bpp 23.976 fps 1077.9 kbps (131.6 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 57.24.102 (internal)
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
Clip info:
major_brand: isom
minor_version: 512
compatible_brands: isomiso2mp41
encoder: Lavf55.19.104
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, floatle, 126.2 kbit/4.47% (ratio: 15775->352800)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
AO: [alsa] 44100Hz 2ch floatle (4 bytes per sample)
Starting playback...
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
[swscaler @ 0xab8380]bicubic scaler, from yuv420p to bgra using C
[swscaler @ 0xab8380]No accelerated colorspace conversion found from yuv420p to bgra.
[swscaler @ 0xab8380]using unscaled yuv420p -> bgra special converter
VO: [fbdev] 480x272 => 484x272 BGRA
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
[swscaler @ 0xab8380]No accelerated colorspace conversion found from yuv420p to bgra.
VO: [fbdev] 480x272 => 484x272 BGRA
A: 0.1 V: 0.0 A-V: 0.102 ct: 0.004 0/ 0 ??% ??% ??,?% 0 0
[VD_FFMPEG] DRI failure.
A: 20.0 V: 20.0 A-V: 0.005 ct: 0.065 0/ 0 24% 3% 3.8% 0 0
Exiting... (End of file)
应用开发(VNC显示QT界面)
本次飞凌嵌入式提供的OKMX6ULL-C开发板,么有配LCD屏幕,想看一下系统的QT显示,只能尝试搞一下VNC,通过远程桌面来看QT的HMI界面。
OKMX6ULL-C(VNC Server)<-----------网线----------->PC (VNC Client)
下载x11vnc
下载链接:https://x11vnc.sourceforge.net/dev/x11vnc-0.9.14-dev.tar.gz
解压x11vnc
切换到x11vnc解压出来的目录
cd /home/forlinx/work/x11vnc-0.9.14-dev/x11vnc-0.9.14
配置交叉编译环境
设置交叉编译环境
source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
确认一下交叉编译命令CC是否Okay
$ echo $CC
arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi
配置x11vnc
查看configure文件中的编译变量指定:
这里直接使用的是$CC,所以上一步要source一下ToolChian,
source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
--host参数指定交叉编译
--prefix指定最终的安装目录
./configure --host=arm-poky-linux --prefix=/home/forlinx/opt/vnc
编译及安装
make &&make install
最终编译出来的x11vnc如下:
$ tree
.
└── vnc
├── bin
│ └── x11vnc
├── include
│ └── rfb
│ ├── keysym.h
│ ├── rfbclient.h
│ ├── rfbconfig.h
│ ├── rfb.h
│ ├── rfbint.h
│ ├── rfbproto.h
│ └── rfbregion.h
├── man
│ └── man1
│ └── x11vnc.1
└── share
├── applications
│ └── x11vnc.desktop
└── x11vnc
└── classes
├── index.vnc
├── ssl
│ ├── index.vnc
│ ├── proxy.vnc
│ ├── README
│ ├── SignedUltraViewerSSL.jar
│ ├── SignedVncViewer.jar
│ ├── ss_vncviewer
│ ├── ultrasigned.vnc
│ ├── UltraViewerSSL.jar
│ ├── ultra.vnc
│ └── VncViewer.jar
└── VncViewer.jar
11 directories, 22 files
运行x11vnc
OKMX6ULL-C板端作为VNC Server,PC作为VNC Viewer
通过网线连接PC和OMX6ULL-C板
板端
- 将上述编译出来的~/opt/vnc整个目录通过scp传输到板端
- 配置板子的IP地址为192.168.1.1
- 直接运行
root@fl-imx6ull:~/vnc# ls
bin include man share
root@fl-imx6ull:~/vnc# ./bin/x11vnc
PC端
- PC端安装好VNC viewer工具(下载链接 Download VNC Server | VNC® Connect)
- 配置PC的IP地址为192.168.1.2
- 设置好需要连接的远端桌面的IP(OKMX6ULL-C板端)192.168.1.1
打开VNC Viewer设置连接:
连接成功后就可以看到QT的界面了,x11vnc支持事件捕获,所以是支持鼠标操控QT界面的。
最后上一个完整的靓图吧:)