开箱体验
主要配件包括: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 : 5Hardware : 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 -mtotal 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 : okCompare XOR : okCompare SUB : okCompare MUL : okCompare DIV : okCompare OR : okCompare AND : okSequential Increment: okSolid 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 : okCompare XOR : okCompare SUB : okCompare MUL : okCompare DIV : okCompare OR : okCompare AND : okSequential Increment: okSolid 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 : okCompare XOR : okCompare SUB : okCompare MUL : okCompare DIV : okCompare OR : okCompare AND : okSequential Increment: okSolid 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 : okCompare XOR : okCompare SUB : okCompare MUL : okCompare DIV : okCompare OR : okCompare AND : okSequential Increment: okSolid 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 : okCompare XOR : okCompare SUB : okCompare MUL : okCompare DIV : okCompare OR : okCompare AND : okSequential Increment: okSolid 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 name1 0 65536 ram01 1 65536 ram11 2 65536 ram21 3 65536 ram31 4 65536 ram41 5 65536 ram51 6 65536 ram61 7 65536 ram71 8 65536 ram81 9 65536 ram91 10 65536 ram101 11 65536 ram111 12 65536 ram121 13 65536 ram131 14 65536 ram141 15 65536 ram15179 0 7634944 mmcblk1179 1 512000 mmcblk1p1179 2 7020544 mmcblk1p2179 24 4096 mmcblk1rpmb179 16 4096 mmcblk1boot1179 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.0UP BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions: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 TeamPlaying 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: isomminor_version: 512compatible_brands: isomiso2mp41encoder: 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 TeamPlaying 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: isomminor_version: 512compatible_brands: isomiso2mp41encoder: 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.jar11 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界面的。
最后上一个完整的靓图吧:)