Uploaded by huzhiping001

OK1046A-C2 ubuntu使用手册 V2.0 2022.02.10

advertisement
用户使用手册
FET1046A-C、OK1046A-C2
ARM Cortex-A72
Embedded Development Platform
Ubuntu Manual
Rev.2.0
2022/02/10
Forlinx Embedded Technology Co. Ltd.
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
更新记录
注意:V2.x 版本核心板与 V1.x 版本核心板相比,主要是发挥 FET1046A-C 核心板内存的全部性能,
将 V1.x 版本核心板的 32 位总线改为 64 位数据总线。
硬件版本
日期
手册版本
2021.04.19
V1.0
适用于 V1.x 和 V2.x 版本核心板, 用户手册第一版
V1.1 及其以上版本底板
2021.10.23
V1.1
适用于 V1.x 和 V2.x 版本核心板,
V1.1 及其以上版本底板
手册结构调整,增加命令说明
2022.02.10
V2.0
适用于 V1.x 和 V2.x 版本核心板,
V1.1 及其以上版本底板
1. 手册结构调整;
2. 修改网口对应说明;
3. 添加对 RTL8822CE 模块的支持
- 2 -
更新内容
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
目
录
更新记录 .................................................................. - 2
目 录 .................................................................... - 3
概 述 ..................................................................... - 5
资料说明 .................................................................. - 6
第一章 OK1046A-C2 开发板介绍 ............................................ - 7
1.1 OK1046A-C2 开发板简介 ........................................... - 7
1.2 OK1046A-C2 平台概况 ............................................. - 7
1.3 Linux 4.14.47 系统软件资源特性 ..................................... - 8
1.4 拨码开关功能介绍 .................................................. - 8
1.5 网络配置以及接口对应关系 .......................................... - 9
第二章 快速开机启动 ..................................................... - 10
2.1 开机前的准备 ..................................................... - 10
2.2 串口登录方法 ..................................................... - 11
2.2.1 串口登录 .................................................... - 11
2.2.2 串口登录常见问题 ............................................ - 13
2.3 网络登录方式 ..................................................... - 13
2.3.1 SSH ....................................................... - 13
2.3.2 Telnet ........................................................ - 15
2.4 系统分区 ......................................................... - 17
2.5 系统关闭 ......................................................... - 18
第三章 OK1046A-C2 平台功能测试 ......................................... - 19
3.1 硬件资源测试 ...................................................... - 19
3.1.1 A72 调频测试................................................ - 19
3.1.2 A72 CoreMark 测试 .......................................... - 20
3.1.3 A72 Dhrystone 测试 .......................................... - 20
3.1.4 TMU 测试 ................................................... - 21
3.1.5 Memory 测试 ................................................ - 21
3.1.6 QSPI 读写测试 .............................................. - 22
3.1.7 EMMC 读写测试 ............................................. - 23
3.1.8 USB3.0 测试 ................................................ - 23
3.1.9 mSATA 接口测试 ............................................. - 24
3.1.10 m.2 Type 2230 接口测试 ..................................... - 26
3.1.11 网络测试 ................................................... - 26
3.1.12 FTP 测试 .................................................. - 29
3.1.13 RTC 测试 .................................................. - 32
3.1.14 看门狗测试................................................. - 33
3.1.15 UART 测试 ................................................. - 33
3.1.16 WIFI 测试 .................................................. - 34
3.1.17 5G 模块上网测试 ........................................... - 41
3.1.18 USER_LED 和 USER 按键测试 ............................... - 45
3.2 软件资源测试 ..................................................... - 46
3.2.1 动态/静态 IP 配置测试 ........................................ - 46
- 3 -
-
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
3.2.2 时区配置测试 ................................................
3.2.3 Samba 测试 .................................................
3.2.4 Lighttpd 测试 ................................................
3.2.5 虚拟化测试 ..................................................
3.2.6 OP-TEE 基本环境测试 ........................................
3.2.7 OpenSSL 基本环境测试 ......................................
3.2.8 IPSEC 基本环境测试 .........................................
3.2.9 DPDK 基本环境测试 ..........................................
3.2.10 OVS-DPDK 基本环境测试 ....................................
第四章 烧写系统 ..........................................................
4.1 U 盘烧写 ..........................................................
4.2 制作烧写 TF 卡 ....................................................
4.3 TFTP 烧写 QSPI ...................................................
4.3.1 TFTP 环境搭建 ................................................
4.3.2 TFTP 烧写 QSPI ..............................................
4.4 单步更新内核 ......................................................
声 明 ....................................................................
更多帮助 .................................................................
- 4 -
-
47
49
51
56
70
73
74
76
80
83
83
85
88
88
89
92
93
94
-
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
概 述





本手册以使用户快速熟悉产品,了解接口功能和测试方法为目的,主要讲述了开发板接口功能的测试,
烧写镜像方法,以及使用过程中出现的一些问题如何排查。在测试过程中,对一些命令进行了注释,方便
用户理解,以实用够用为主。涉及到内核编译、相关应用编译方法,开发环境搭建等请参考飞凌提供的
《OK1046A-C2_ubuntu 编译手册_V1.0》
本手册一共分为 4 部分:
第一部分产品的整体概述,简单介绍了开发板在接口资源、内核源码中相关驱动路径、开发板支持的烧写
和启动方式,以及资料中重点部分的说明;
第二部分产品的快速开机启动,可采用串口登录和网络登录两种方式;
第三部分产品硬件、软件资源的测试,分多个章节对 OK1046A-C2 的硬件接口资源和软件功能的测试过
程和结果进行了描述;
第四部分产品的镜像更新,主要描述更新镜像到存储设备的方法,客户可根据实际情况选择对应的烧录方
式。
 本手册中一些符号及格式的相关说明:
表现形式
含义
注意或者是需要特别关注的信息,一定要仔细阅读

对测试章节做的相关说明

表示相关路径
灰底蓝色字体
指在命令行输入的命令,需要手动输入
灰底黑色字体
输入命令后的串口输出信息
灰底黑色加粗
串口输出信息中的关键信息
//
用户名@主机名



对输入指令或输出信息的解释内容
forlinx@localhost:~# :开发板网口登录账户信息,
root@localhost:~#:开发板串口登录账户信息
forlinx@ubuntu:~$ 开发环境 ubuntu 账户信息
用户可通过该信息确定功能操作的环境
例:读取 sensor 3 的温度:
root@localhost:~# cat /sys/class/thermal/thermal_zone0/temp
//查看 sensor3 的当前温度
41000
//当前温度传感器实测数值为 41 摄氏度
root@localhost:~#:用户名为,主机名为 ubuntu,表示在串口工具中登录系统。
// :对操作指令的解释说明内容,不需要输入
cat /sys/class/thermal/thermal_zone0/temp:灰底蓝色字体,表示需要手动输入的相关命令
41000:灰底黑色字体为输入命令后的输出信息,加粗字体为关键信息
- 5 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
资料说明
OK1046A-C2 的用户可以通过本公司提供的网盘链接获取软件和硬件的文档及源码。资料下载网站
为:http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=75231&extra=page%3D1,客户可通过销
售获取下载权限后自行下载。



注意:
OK1046A-C2 平台系统默认烧写 Ubuntu 系统,除了支持 ubuntu 系统外同时支持 OpenWRT 系统。本
手册以 Ubuntu 系统展开介绍,OpenWRT 系统烧写及介绍详《OK1046A-C2_OpenWRT-编译开发手册》。
详细资料参看 OK1046A-C2_Linux 用户资料。本文中提到的所有目录都以 OK1046A-C2_Linux 用户资料
为根目录
OK1046A-C2 开发板有两款核心板,分别为:V1.X 版本和 V2.X 版本,二者主要区别在于 V1.X 版本核
心板 DDR 大小为 2GB,V2.X 版本核心板 DDR 大小为 4GB。本手册 V1.X 版本和 V2.X 版本核心板都适
用。
- 6 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
第一章 OK1046A-C2 开发板介绍
1.1 OK1046A-C2 开发板简介
 说明:
 本软件手册中不再对硬件参数进行叙述,在参考本手册进行软件开发前请阅读“硬件资料\用户手册”路径
下的“OK1046A-C2 硬件手册”,以了解产品命名规则和您所使用产品的硬件配置信息,这样有助于您对
本产品的使用。
OK1046A-C2 开发板采用核心板+底板结构,基于 NXP 公司的 LS1046A 四核处理器设计,主频
1.8GHz,
ARM Cortex-A72 架构。
CPU 原生支持 7 个 Ethernet:2 个 SFP+接口
(10Gb)
和 5 个 1000Mbps。
支持 PCIe 3.0、SATA3.0、USB3.0、UART 、IIC 等功能接口,以及 Ubuntu、OpenWrt 操作系统。
1.2 OK1046A-C2 平台概况
Board
OK1046A-C2
Kernel/User space
Linux 4.14.47 64bit / 64bit user space
Core
4xARMv8-a72@ 1800MHz
Operations frequency
Core/Bus/DDR: 1800MHz/700MHz/2100MT/s
Memory
Single DDR controller with 2GB or 4GB DDR at 1600 MT/s
U-Boot
U-boot 2018.03
SEC
Sec5.4
SerDes
1133-5a59:xfi.m9+xfi.m10+s.m6,5,2+pcie.1(x1)+pcie.3(x1)+SATA
FileSystem
Ubuntu
Compiler
Ubuntu/Linaro7.3.0-16ubuntu3~18.04,glibc-2.27,binutils-2.30-0,
gdb-8.1
- 7 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
1.3 Linux 4.14.47 系统软件资源特性
设备
驱动程序源代码在内核中的位置
设备名
USB3.0
drivers/usb/dwc3/core.c
RTC 实时时钟驱动
drivers/rtc/rtc-rx8010.c
/dev/rtc0
QSPI
drivers/mtd/spi-nor/fsl-quadspi.c
/dev/mtd*
ESDHC
drivers/mmc/host/sdhci-of-esdhc.c
/dev/mmcblk*
TMU
drivers/thermal/qoriq_thermal.c
/sys/class/thermal/the
rmal_zone*
SPI
drivers/spi/spi-fsl-dspi.c
/sys/class/spi_master
I2C
drivers/i2c/busses/i2c-imx.c
/dev/i2c_*
DUART
drivers/tty/serial/8250/8250_of.c
/dev/ttyS*
LPUART
drivers/tty/serial/fsl_lpuart.c
/dev/ttySX
FlexTimer
drivers/soc/fsl/layerscape/ftm_alarm.c
看门狗
drivers/watchdog/imx2_wdt.c
/dev/watchdog
SATA
drivers/ata/ahci_qoriq.c
/dev/sda*
PCIE
drivers/pci/dwc/pci-layerscape.c
/sys/class/ pci_bus
UCC_HDLC
drivers/net/wan/fsl_ucc_hdlc.c
IFC
drivers/memory/fsl_ifc.c
FMAN
drivers/net/ethernet/freescale/*
GPIO
drivers/gpio/gpio-mpc8xxx.c
CRYPTO
drivers/crypto/caam/*
DPAA1
drivers/staging/fsl_qbman/fsl_usdpaa.c
USB 4G
drivers/net/usb/
/dev/ttyUSB*
USB 移远 5G
drivers/net/usb/Gobinet
/dev/ttyUSB2
/dev/ gpiochip*
1.4 拨码开关功能介绍
注意:OK1046A-C2 软件配置上 SerDes PLL1 给 XFI 提供时钟,必须为 156.25MHz,拨码 B 请勿修改。
OK1046A-C2 支持 TF 卡和 QSPI 两种启动方式,支持 U 盘烧写。拨码开关 A 用于选择启动方式,拨
码开关 B 用于选择 SerDes PLL1 的参考时钟,不建议客户修改。(如下图所示为 QSPI 启动)
拨码开关 A 默认状态为 OFF,表示 uboot 是从 QSPI NOR Flash 启动,可以通过 U 盘进行烧写;如
果 QSPI Flash 里面的 uboot 镜像损坏不能正常启动的话,就需要制作 TF 卡来引导 uboot 启动,同时配合
U 盘进行烧写,具体操作详见第四章烧写系统章节。
S2 拨码开关 A 说明:
- 8 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
模式
拨码开关
A
QSPI启动
TF卡启动
OFF(默认状态)
ON
S2 拨码开关 B 说明:
模式
拨码开关
B
SerDes PLL1 时
钟156.25MHz
SerDes PLL1
时钟 100MHz
OFF(默认状态)
ON
1.5 网络配置以及接口对应关系
OK1046A-C2 软件上网络部分存在一种配置,配置 1133_5a59 支持的网络资源有两路 SFP
(fm1-mac9、fm1-mac10),两路 RGMII(fm1-mac3、fm1-mac4)和三路 SGMII (fm1-mac2、fm1-mac5、
fm1-mac6)共计 7 个网口。
下图是 Linux 系统中 fm1-macN 与 RJ45 的对应关系。
对于 V1.x 底板
- 9 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
第二章 快速开机启动
2.1 开机前的准备
OK1046A-C2 开发板有串口登录和网络登录两种系统登录方式,系统开机前硬件准备:
 12V3A DC 电源线
 调试串口线(串口登录使用)
开发板上的调试串口为 DB9 公头,用户可使用双母头交叉串口线或者 USB 转 RS232 串口线连接开
发板和 PC 机,以查看开发板状态信息。
 网线(网络登录使用)
 检查启动方式拨码开关
请检查您开发板上的拨码开关,确认已经拨到想要的启动方式,启动方式设置请参考“拨码开关功能
介绍”章节。
调试串口
拨码开关
12V 电源
电源开关
- 10 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
2.2 串口登录方法
2.2.1
串口登录
 说明:
 串口设置:波特率 115200、数据位 8、停止位 1、无校验位、无流控制;
 串口终端登陆使用 root 用户登录,账号:root,无密码
 软件需求:PC 端 Windows 系统需要安装超级终端软件,超级终端软件有多种,可自行使用自己熟悉
的串口终端软件。
以下以 putty 为例介绍终端的设置方式:
步骤一:使用串口线连接开发板和 PC 机,确认连接电脑的串口端口号,从“设备管理器”中查看串口端
口号,以电脑实际识别的端口号为准。
步骤二:打开 putty 并设置,serial line 根据使用的电脑 COM 口设置,波特率 115200,设置完成后点击
“Open”进入串口
- 11 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
步骤三:登录账户名为 root,无密码直接敲回车即可。
Ubuntu 18.04.1 LTS localhost ttyS0
localhost login: root
Last login: Wed Oct 24 07:14:28 UTC 2018 on ttyS0
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.14.47 aarch64)
* Documentation: https://help.ubuntu.com
* Management:
https://landscape.canonical.com
- 12 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
* Support:
https://ubuntu.com/advantage
root@localhost:~#
步骤四:查看内核版本信息
root@localhost:~# cat /proc/version
//查看内核信息
Linux version 4.14.47 (zyh@1ffe9f7b637e) (gcc version 7.5.0
7.5.0-3ubuntu1~18.04)) #1 SMP PREEMPT Thu Oct 14 09:17:03 CST 2021
从打印信息中可以看出,核心板内烧录的为 linux4.14.47 相关镜像
(Ubuntu/Linaro
2.2.2 串口登录常见问题
电脑端口没有串口的可以通过 USB 转串口线与开发板连接,使用 USB 转串口线接需要安装对应的驱
动程序。
建议使用质量好串口线以避免出现乱码情况。
2.3 网络登录方式
 说明:
 开发板默认打开 fm1-mac3 网口(P13 上),默认 IP 为 192.168.0.232,网口如下所示:



使用网路登录前请注意:使用网络登录的前提条件是 PC 机和开发板同时处在同一个局域网内;
默认出厂使用登录的账户:forlinx,密码:forlinx
测试环境:Putty 串口工具
2.3.1 SSH
 说明:
 开发板网卡默认 IP 为 192.168.0.232;
 用户名:forlinx,密码:forlinx;
OK1046A-C2 开发板支持 SSH 服务并启动时已自动开启,开发板设置好 IP 地址后就可以作为一台
SSH 服务器,可以利用 SSH 登录开发板进行开发调试,也可用 scp 进行文件传输。开发板网卡默认 IP
为 192.168.0.232,以测试电脑 IP 为 192.168.0.12 为例。
在保证开发板跟电脑能 ping 通的前提下,通过 putty SSH 登录访问开发板。
在 windows 系统上,点击“windows+R 组合键”打开命令运行框,在弹出的文本框中输入“cmd”,
可进入 windows 下的命令行终端。
- 13 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
在终端输入一下命令,通过 ping 命令测试开发板与电脑的网络状态:
C:\Users\Administrator>ping 192.168.0.232
如上图所示能够 ping 通,说明开发板与电脑网络状态连接正常;
由 Windows 主机通过 putty 访问开发板,如下所示:
点击“Open”,出现以下对话框,点击“是”进入登录页面。
- 14 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
打开串口后,输入账号:forlinx,密码:forlinx
login as: forlinx
root@192.168.0.232's password:
//输入forlinx,无回显,按回车即可进入系统
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.14.47 aarch64)
* Documentation: https://help.ubuntu.com
* Management:
https://landscape.canonical.com
* Support:
https://ubuntu.com/advantage
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Sun Jan 28 16:11:55 2018
forlinx@localhost:~$
如上所示表明 SSH 登录成功。
2.3.2 Telnet
- 15 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
 说明:
 开发板网卡默认 IP 为 192.168.0.232;
 用户名:forlinx,密码:forlinx;
OK1046A-C2 开发板支持 telnet 服务,默认自动开启,设置好 IP 地址后就可以作为一台 telnet 服 务
器。开发板网卡默认 IP 为 192.168.0.232,以测试电脑 IP 为 192.168.0.12 为例。
在保证开发板跟电脑能 ping 通的前提下,通过 putty Telnet 登录访问开发板。,Putty 串口设置如下
所示:
点击“Open”,打开串口后输入账号:forlinx,密码:forlinx
Ubuntu 18.04.1 LTS
localhost login: forlinx
Password:
//输入密码:forlinx,无回显,按回车即可进入系统
Last login: Sun Jan 28 15:58:34 UTC 2018 on ttyS0
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.14.47 aarch64)
* Documentation: https://help.ubuntu.com
* Management:
https://landscape.canonical.com
* Support:
https://ubuntu.com/advantage
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
- 16 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
forlinx@localhost:~$
如上所示表明 Telnet 登录成功。
2.4 系统分区
OK1046A-C2 平台板载一颗 16M 的 QSPI Flash 和一颗 8GB 的 EMMC,
OK1046A-C2 平台支持 QSPI
启动和 SD/EMMC 启动,QSPI Flash 或 SD/EMMC 中需要烧入 16M Firmware 镜像,Firmware 各部分在
Flash 中的偏移地址如下表所示:
Maximum
size
QSPI flash
offset
SD/eMMC start block
(512byte)
RCW+PBI
1 MB
0x00000000
0x00008
Boot firmware
(U-Boot, UEFI, PPA)
2 MB
0x00100000
0x00800
Boot firmware environment
1 MB
0x00300000
0x01800
PPA firmware
2 MB
0x00400000
0x02000
Secure boot headers
3 MB
0x00600000
0x03000
DPAA1 FMan microcode
256 KB
0x00900000
0x04800
QE/microQE firmware
256 KB
0x00940000
0x04A00
Ethernet PHY firmware
256 KB
0x00980000
0x04C00
Scripts
256 KB
0x009C0000
0x04E00
DPAA2 MC / PFE firmware
3 MB
0x00A00000
0x05000
DPAA2 DPL
1 MB
0x00D00000
0x06800
DPAA2 DPC
1 MB
0x00E00000
0x07000
File
EMMC 中文件系统的分区信息如下表所示:
分区
名称
文件系统类型
偏移(512 byte)
Size
FAT32
2048
20M
/dev/mmc
blk0p2
内核(启动内
核)
FAT32
43008
100M
/dev/mmc
blk0p3
文件系统分区
EXT4
247808
≈7G
使用 df 命令查看系统上磁盘使用情况,df -h 以方便人阅读的方式显示文件系统磁盘空间使用情况。
如下所示为出厂默认磁盘使用情况,仅供参考,具体参数请以实际为准。
root@localhost:~# df -h
Filesystem
Size Used Avail Use% Mounted on
- 17 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
/dev/root
6.8G 2.7G 4.2G
devtmpfs
928M
0 928M
tmpfs
937M 4.0K 937M
tmpfs
937M 568K 936M
tmpfs
5.0M
0 5.0M
tmpfs
937M
0 937M
/dev/mmcblk0p2 99M
21M 78M
tmpfs
188M
0 188M
39%
0%
1%
1%
0%
0%
22%
0%
/
/dev
/dev/shm
/run
/run/lock
/sys/fs/cgroup
/run/media/mmcblk0p2
/run/user/1000
使用 free -h 命令以方便阅读的方式查看内存使用情况,如下所示为不接任何外设情况下的内存使用情
况,仅供参考,具体参数请以实际为准。
root@localhost:~# free -h
total
used
free
shared
buff/cache available
Mem:
1.8G
107M
1.5G
7.4M
224M
1.6G
Swap:
0B
0B
0B
2.5 系统关闭
注意:用户依据核心板设计的产品,若在使用中存在意外掉电导致系统异常的情景,可在设计中加入掉电
保护等措施。
一般情况下直接关闭电源即可,如果有数据存储、功能使用等操作,操作过程中不要随意断电,以防
出现文件不可逆损坏,只能重新烧写固件。未确保数据完全写入,可输入 sync 命令完成数据同步后再关
闭电源。
- 18 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
第三章 OK1046A-C2 平台功能测试
注意:该产品核心板支持的功能不局限手册中的提到的功能,飞凌仅对手册中的功能项目做测试验证,手
册中未说明的功能不予以保证,用户可自行测试验证。
此章节主要说明开发板外设接口的使用方法。
3.1 硬件资源测试
 命令行测试程序源码路径:OK10xx-linux-fs/flexbuild/packages/apps/forlinx
 开发板文件系统中测试程序路径:/usr/bin
本节测试所用到的测试程序在飞凌提供的 Demo 中已有集成,故不做文件来源说明,直接进行命令操
作。
3.1.1 A72 调频测试





注意:此过程以 cpu0 为例操作,实际操作过程中 cpu1、cpu2、cpu3 会同时改变。
OK1046A-C2 核心板的 CPU 是动态调频的,启动后 CPU 调频策略为 ondemand,ondemand 模式按
需快速动态调整 CPU 频率,一有 cpu 计算量的任务,会随计算量的大小动态调频,等执行完毕就立即回
到最低频率。有时 CPU 的频率不能满足用户的需求,需要调整 CPU 的模式。下面以将 CPU 设置为
performance 模式为例,操作如下:
列出当前的管理模式,查看 CPU 当前的频率:
root@localhost:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
//当前管理模式为系统默认的动态调频模式
root@localhost:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
800000
//当前 CPU 频率为 0.8GHz
列出所有的管理模式
root@localhost:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
列出 cpu 支持的频率,
root@localhost:~#cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1800000 1600000 900000 800000
//显示当前 CPU 支持的四种频率
改变 CPU 管理模式,设置为高性能模式
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
列出 cpu 当前的管理模式,查看当前的 CPU 频率
root@localhost:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
//当前管理模式为 performance 模式
root@localhost:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1800000
//当前 CPU 频率为 1.8GHz
如果想默认使用其它策略,以高性能模式为例,可以进行如下设置
root@localhost:~# systemctl disable ondemand.service
//关闭当前模式服务
root@localhost:~#apt-get install cpufrequtils
//下载工具变频包
root@localhost:~# vi /etc/default/cpufrequtils
//添加内容
GOVERNOR="performance"
重启开发板,查看当前模式修改成功
- 19 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
root@localhost:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
3.1.2 A72 CoreMark 测试
在嵌入式处理器领域最为知名和常见的 Benchmarks 为 Dhrystone 和 CoreMark,CoreMark 是一个
综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在 2009 由 eembc 的 shay gal-on
开发的,旨在成为一个行业标准,取代过时的 dehrystone 基准。
OK1046A-C2 平台默认已经移植好了 CoreMark 测试程序,您可以使用以下命令进行测试:
1、将 CPU 设置为高性能模式
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2、CoreMark 测试
root@localhost:~# coremark.exe
//运行 CoreMark 测试测试程序
//运行结果打印信息如下:
2K performance run parameters for coremark.
CoreMark Size
: 666
Total ticks
: 17460
Total time (secs): 17.460000
Iterations/Sec
: 11454.753723
Iterations
: 200000
Compiler version : GCC7.3.0
Compiler flags : -O3 -funroll-all-loops --param max-inline-insns-auto=550
-DPERFORMANCE_RUN=1 -lrt
Memory location : Please put data memory location here
(e.g. code in flash, data on heap etc)
seedcrc
: 0xe9f5
[0]crclist
: 0xe714
[0]crcmatrix
: 0x1fd7
[0]crcstate
: 0x8e3a
[0]crcfinal
: 0x4983
Correct operation validated. See readme.txt for run and reporting rules.
CoreMark 1.0 : 11454.753723 / GCC7.3.0 -O3 -funroll-all-loops --param
max-inline-insns-auto=550 -DPERFORMANCE_RUN=1 -lrt / Heap
CoreMark测试结果:
Core/Bus/DDR
OK1046A-C2
(Core/Bus/DDR:1800MHz/7
00MHz/2100MT/s)
Coremark Thread #
Coremark/MHz
Coremark
1
6.36
11454.7
3.1.3 A72 Dhrystone 测试
Dhrystone 是于 1984 年由 Reinhold P. Weicker 设计的一套综合的基准程序,该程序用来测试 CPU
(整数)计算性能。Dhrystone 并不包括浮点运算,其输出结果为每秒钟运行 Dhrystone 的次数,即每秒
钟迭代主循环的次数。
OK1046A-C2 平台已经移植好了 Dhrystone 测试程序,您可以使用以下命令进行测试:
- 20 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
1、将 CPU 设置为高性能模式
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2、Dhrystone 测试
root@localhost:~# echo 50000000 | dhrystone
//测试程序部分运行结果部分打印信息如下:
Enum_Loc:
1
should be: 1
Str_1_Loc:
DHRYSTONE PROGRAM, 1'ST STRING
should be: DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc:
DHRYSTONE PROGRAM, 2'ND STRING
should be: DHRYSTONE PROGRAM, 2'ND STRING
Register option selected? YES
Microseconds for one run through Dhrystone:
Dhrystones per Second:
VAX MIPS rating =
9483.960
Dhrystone 测试结果:
0.1
16663317.3
Core/Bus/DDR
Dhrystone Process #
DMIPS/MHz
DMIPS
OK1046A-C2
(Core/Bus/DDR:1800MHz/70
0MHz/2100MT/s)
1
5.27
9843.9
3.1.4 TMU 测试
OK1046A-C2 平台 SOC 内部带有 5 颗温度传感器,
软件上使用 sensor3 作为 Thermal 的温度传感器。
Temperature sensor ID
Placement
0
Near DDR controller
1
Near SerDes
2
Near Frame manager
3
Near ARM A53 core
4
SEC
读取 sensor 3 的温度:
root@localhost:~# cat /sys/class/thermal/thermal_zone0/temp
//查看 sensor3 的当前温度
41000
//当前温度传感器实测数值为 41 摄氏度
3.1.5
Memory 测试
Lmbench 是一套简易可移植的,符合 ANSI/C 标准为 UNIX/POSIX 而制定的微型测评工具。一般来
说,它衡量两个关键特征:反应时间和带宽。我们使用 LmBench 来测试 OK1046A-C2 平台 cache 以及
DDR 的带宽。
OK1046A-C2 平台已经移植好了 Lmbench,您可以使用以下命令进行测试:
1、将 CPU 设置为高性能模式
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2、Lmbench 测试,此处测试 V1.X 版本核心板为例
root@localhost:~# memory_bandwidth.sh
//执行脚本测试程序
//运行结果部分打印信息如下:
- 21 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
L1 cache bandwidth bcopy test with # process
0.008192 14001.93
0.008192 14089.03
0.008192 14085.15
0.008192 14091.68
0.008192 13988.12
L2 cache bandwidth bcopy test
0.131072 10076.98
0.131072 10075.15
0.131072 10075.15
0.131072 10135.54
0.131072 10073.19
Main mem bandwidth bcopy test
52.43 2824.52
52.43 2825.13
52.43 2824.83
52.43 2825.28
52.43 2824.83
V1.X 版本核心板 Lmbench 测试结果:
Cache/Memory
rd
wr
rdwr
cp
frd
fwr
fcp
bzero
bcopy
L1(MB/s)
28556
20928
19188
19760
7180
7178
6121
17892
14090
L2(MB/s)
15767
17624
11256
9119
6780
7142
6522
11999
10075
DDR(MB/s)
6440
2349
2387
1624
6431
6478
2726
6562
2824
V2.X 版本核心板 Lmbench 测试结果:
Cache/Memory
rd
wr
rdwr
cp
frd
fwr
fcp
bzero
bcopy
L1(MB/s)
28552
20931
19191
19392
7181
7176
5666
17345
14051
L2(MB/s)
15767
17671
11255
9059
6757
7142
6515
13693
10067
DDR(MB/s)
9858
3649
3771
2740
6432
7191
5307
11026
5306
3.1.6 QSPI 读写测试
OK1046A-C2 平台板载一颗 16MB 的 QSPI Flash,默认情况下 QSPI Flash 中存放启动 Firmware,
本节仅用来测试 QSPI 接口的速度,并不建议您在 QSPI Flash 中存放数据(会导致无法使用 QSPI 启动)。
测试方法:使用 dd 命令测试接口速度
读:
root@localhost:~# time dd if=/dev/mtdblock0 of=/dev/null bs=1024K count=16
16+0 records in
16+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 1.40143 s, 12.0 MB/s
real
0m1.409s
user
0m0.000s
sys
0m0.022s
测试结果:
- 22 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
模式
文件系统
文件大小
耗时
速度
读
RAW
16MB
1.4s
12MB/s
time 命令:用于测量特定指令执行时所需消耗的时间及系统资源等资讯
dd 命令:可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准
输出。
dd 命令部分参数说明:
参数
说明
if
输入文件名,即指定源文件
of
输出文件名,即指定目的文件
bs
同时设置读入/输出的块大小,单位为 bytes
count
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
3.1.7 EMMC 读写测试
注意:带文件系统的测试结果在不同的环境下测试结果略有不同,不建议直接 dd eMMC 的设备节点进行
测试,因为这样会导致文件系统的数据被破坏,需要重新烧写文件系统。
OK1046A-C2 平台板载一颗 8GB 的 eMMC,运行在 HS200 高速模式。
测试方法:使用 dd 命令测试接口速度
写测试:
root@localhost:~# time dd if=/dev/zero of=/test.bin bs=1M count=512 conv=fsync
打印信息如下:
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 25.8264 s, 20.8 MB/s
real
0m25.833s
user
0m0.000s
sys
0m1.647s
读测试:
root@localhost:~# time dd if=/test.bin of=/dev/null bs=1M
打印信息如下:
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 7.36896s,72.9MB/s
real
0m7.376s
user
0m0.001s
sys
0m0.600s
测试结果:
模式
文件系统
文件大小
耗时
速度
写
EXT4
512M
25.8s
20.8MB/s
读
EXT4
512M
7.37s
72.9MB/s
3.1.8 USB3.0 测试
注意:测试结果会受 USB3.0 设备实际速度影响
- 23 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
 说明:
 支持 U 盘设备的热插拔。
 不支持 NTFS 格式的文件系统,若不清楚 U 盘格式,建议使用前将其格式化为 FAT32 格式。
 U 盘挂载目录为/run/media。
OK1046A-C2 平台板载两个 USB3.0 接口,可以接移动硬盘等含有 USB3.0 的高速设备,当然 USB1.0
USB2.0 的设备也可以正常使用。本节采用一个 mSATA 转 USB3.0 接口的固态硬盘进行测试。
测试方法:
插入 USB3.0 固态硬盘,查看默认的挂载目录
root@localhost:~# mount | grep sda
/dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007.dmask=0007,
allow_utime=0020,codepage=437.iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sda2 on /run/media/sda2 type ext4(rw,relatiome,date=ordered)
root@localhost:~#
如果您的硬盘没有分区,请使用 fdisk 命令进行分区。这里我们读写 ext4 分区的文件来测试 USB3.0
接口。
读写速度测试
 写测试:
root@localhost:~# time dd if=/dev/zero of=/run/media/sda2/test.bin bs=1024K count=4096
\conv=fsync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3GB, 4.0GB) copied, 23.8942s, 180MB/s

real
0m23.941s
user
0m0.019s
sys
0m3.028s
读测试:
root@localhost:~# time dd if=/run/media/sda2/test.bin of=/dev/null bs=1024K
4096+0 records in
4096+0 records out
4294967296 bytes (4.3GB, 4.0GB) copied,11.532 s, 372MB/s
real
user
sys
0m11.539s
0m0.012s
0m5.022s
测试结果:
模式
文件系统
文件大小
耗时
速度
写
EXT4
982MB
23.894S
180MB/S
读
EXT4
982MB
11.53s
372MB/s
3.1.9 mSATA 接口测试
OK1046A-C2 平台支持一个 mSATA 接口 SATA 协议的固态硬盘,系统上电前将 mSATA 固态硬盘(这
里以 KingBank 固态硬盘为例)插入底板 mSATA 硬盘卡槽,接口如下所示:
- 24 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2


上电后启动 linux,通过 lspci 可以看到对应设备枚举成功。
root@localhost:~# lsblk
//显示 Linux 系统上的所有块设备
NAME
MAJ:MIN RM
SIZE RO TYPE MOUNTPOINT
sda
8:0
0 111.8G 0 disk
└─sda1
8:1
0 111.8G 0 part
mtdblock0
31:0
0
16M 0 disk
mmcblk0
179:0
0 7.3G 0 disk
├─mmcblk0p1 179:1
0
20M 0 part
├─mmcblk0p2 179:2
0 100M 0 part /run/media/mmcblk0p2
└─mmcblk0p3 179:3
0 7.2G 0 part /
mmcblk0boot0 179:32 0
4M 1 disk
mmcblk0boot1 179:64 0
4M 1 disk
mmcblk0rpmb 179:96 0
4M 0 disk
查看硬盘的默认挂载位置。
root@localhost:~# df -Th
//显示目前在 Linux 系统上的文件系统磁盘使用情况统计
Filesystem
Type
Size Used Avail Use% Mounted on
/dev/root
ext4
6.8G 2.5G 4.3G 37% /
devtmpfs
devtmpfs 928M
0 928M 0% /dev
tmpfs
tmpfs
937M 4.0K 937M
1% /dev/shm
tmpfs
tmpfs
937M 2.3M 935M 1% /run
tmpfs
tmpfs
5.0M
0 5.0M
0% /run/lock
tmpfs
tmpfs
937M
0 937M 0% /sys/fs/cgroup
/dev/mmcblk0p2 vfat
99M
21M
78M 22% /run/media/mmcblk0p2
/dev/sda1
114854492 61464 108915656
1% /run/media/sda1
tmpfs
tmpfs
188M
0 188M 0% /run/user/0
可以看到mSATA固态硬盘挂载位置为/run/media/sda1。
读写速度测试:
写测试:
root@localhost:~# dd if=/dev/zero of=/run/media/sda1/test.img bs=1024K count=4096 \
conv=fsync
//使用 dd 命令测试接口速度
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 9.91619 s, 433 MB/s
读测试:
root@localhost:~# dd if=/run/media/sda1/test.img of=/dev/null bs=1024K count=4096
- 25 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 9.77738 s, 439 MB/s
测试结果:
模式
文件系统
文件大小
耗时
速度
写
EXT4
4G
9.91619 s
433 MB/s
读
EXT4
4G
9.77738 s
439 MB/s
3.1.10 m.2 Type 2230 接口测试
OK1046A-C2 平台默认支持 INTEL 3168NGW、INTEL 9260NGW、RTL8822CE 双频 WiFi 模块,系
统上电前将模块插入底板 m.2 Type 2230 卡槽,这里以 INTEL 3168NGW 模块为例,如下图所示:
上电后启动系统后,通过 lspci 可以看到对应设备枚举成功。
INTEL 3168NGW 模块:
root@localhost:~# lspci
//显示所有 pci 总线设备
0000:00:00.0 PCI bridge:Freescale Semiconductor Inc Device 8082 (rev 11)
0001:00:00.0 PCI bridge:Freescale Semiconductor Inc Device 8082 (rev 11)
0001:01:00.0 Network controller :Intel Corporation Device 24fb (rev 10)
双频 WiFi 模块的网络节点为:wlP1p1s0
双频 WiFi 模块的测试方法请参考 WIFI 测试章节。
3.1.11 网络测试
OK1046A-C2 软件上网络部分存在一种配置,配置 1133_5a59 支持的网络资源有两路 SFP
(fm1-mac9、fm1-mac10),两路 RGMII(fm1-mac3、fm1-mac4)和三路 SGMII (fm1-mac2、fm1-mac5、
fm1-mac6)共计 7 个网口。
系统默认将 fm1-mac3(P13 上)设置为静态 IP:192.168.0.232
下图是 Linux 系统中 fm1-macN 与 RJ45 的对应关系。
- 26 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
两个 SFP 接口
三个 SGMII 接口
两个 RGMII 接口
测试之前,首先使用 fmc 配置 ls1046 的 frame manager 以获得更好的网络性能。
注:开机默认已经自动配置完成,用户无需再次配置
1133_5a59:
root@localhost:~# fmc -c /etc/fmc/config/private/ls1046ardb/FORLINX/config_1133.xml \
-p /etc/fmc/config/private/ls1046ardb/FORLINX/policy_ipv4.xml -a
3.1.11.1 SFP+网络测试(P30)
本节采用 SFP+电口模块测试 SFP+接口,测试环境对端为安装有万兆网卡的 linux 主机(本测试中的
主机 eth1 为万兆网卡,其 IP 地址为 192.168.2.181)
若要测试 fm1-mac9,上电前将 SFP+电口模块插入 P28 接口,启动开发板连接网线至 linux 主机,观
察 OK1046A-C2 底板的 D3 D4 指示灯,D4 亮表示 CPU 信号输出正常,D3 亮表示 SFP+电口模块与 linux
主机连接正常。
若要测试 fm1-mac10,上电前将 SFP+电口模块插入 P30 接口,启动开发板连接网线至 linux 主机,
观察 OK1046A-C2 底板的 D5 D6 指示灯,D6 亮表示 CPU 信号输出正常,
D5 亮表示 SFP+电口模块与 linux
主机连接正常。
以测试 fm1-mac10 为例:
测试环境参数如下(这里为举例,IP 地址以实际为准):
主机
IP 地址
Linux Host
192.168.2.181
OK1046A-C2
192.168.2.182
使用 iperf 进行打流测试,在同一局域网内的 Linux 主机上输入:
forlinx@ubuntu~$ifconfig eth1 192.168.2.181
//设置网口 eth1 的 IP 为 192.168.2.181
forlinx@ubuntu~$ iperf3 -s
//作为服务端启动 iperf3 测试程序
在 OK1046A-C2 终端上输入以下命令:
root@localhost:~# ifconfig fm1-mac10 up
//打开网口 fm1-mac9
root@localhost:~# ifconfig fm1-mac10 192.168.2.182
//设置网口 fm1-mac9 的 ip 为 192.168.2.182
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
//改变 CPU 管理模式,设置为高性能模式
root@localhost:~# iperf3 -c 192.168.2.181 -i 5 -t 60
Connecting to host 192.168.1.181, port 5201
[ 4] local 192.168.1.106 port 39656 connected to 192.168.1.181 port 5201
[ ID]
Interval
Transfer
Bandwidth
Retr Cwnd
[ 4] 0.00-5.01 sec 4.18 GBytes 7.18 Gbits/sec
0 332 KBytes
- 27 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
[ 4] 5.01-10.01 sec 4.18 GBytes
[ 4] 10.01-15.00 sec 4.23 GBytes
[ 4] 15.00-20.00 sec 4.23 GBytes
…省略
如上所示,打流测试成功。
7.20 Gbits/sec
7.26 Gbits/sec
7.26 G bits/sec
0
0
0
414 KBytes
414 KBytes
414 KBytes
3.1.11.2 RGMII 接口网络测试(以 P13 下网口为例)
OK1046A-C2 有两路千兆 RGMII 网口,这里以 fm1-mac4(P13 下)网口打流测试网速为例。
测试环境参数如下(这里为举例,IP 地址以实际为准):
主机
IP 地址
Linux Host
192.168.1.181
OK1046A-C2
192.168.1.106
使用 iperf3 作为打流工具,进行网速测试,在同一局域网内的 Linux 主机上输入:
forlinx@ubuntu~$ifconfig eth0 192.168.1.181
//设置网口 eth0 的 ip 为 192.168.1.181
forlinx@ubuntu~$iperf3 -s
//作为服务端启动 iperf3 测试程序
将网线插入 fm1-mac4(P13 下)口,在终端上输入以下命令,进行测试:
root@localhost:~# ifconfig fm1-mac9 down
//关闭网口 fm1-mac9
root@localhost:~# ifconfig fm1-mac4 up
//打开网口 fm1-mac4
root@localhost:~# ifconfig fm1-mac4 192.168.1.106
//设置网口 fm1-mac4 的 IP 为 192.168.1.106
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
//改变 CPU 管理模式,设置为高性能模式
root@localhost:~# iperf3 -c 192.168.1.181 -i 5 -t 60
//设置客户端、报告输出间隔、传输时间
Connecting to host 192.168.1.181, port 5201
[ 4] local 192.168.1.106 port 39656 connected to 192.168.1.181 port 5201
[ ID] Interval
Transfer
Bandwidth
Retr Cwnd
[ 4] 0.00-5.01 sec
538 MBytes 901 Mbits/sec
0 1.59 MBytes
[ 4] 5.01-10.01 sec
551 MBytes 925 Mbits/sec
0 1.80 MBytes
[ 4] 10.01-15.00 sec
549 MBytes 921 Mbits/sec
0 1.80 MBytes
[ 4] 15.00-20.00 sec
552 MBytes 927 Mbits/sec
0 1.80 MBytes
[ 4] 20.00-25.00 sec
561 MBytes 941 Mbits/sec
0 1.80 MBytes
[ 4] 25.00-30.00 sec
555 MBytes 932 Mbits/sec
0 2.71 MBytes
[…]
------------------------[ ID] Interval
Transfer
Bandwidth
Retr
[ 4] 0.00-60.01 sec 6.51 GBytes 932 Mbits/sec
0
sender
[ 4] 0.00-60.01 sec 6.51 GBytes 932 Mbits/sec
receiver
iperf Done.
如上所示打流测试成功。
3.1.11.3 SGMII 接口网络测试(以 P27 下网口为例)
OK1046A-C2 有四路千兆 QSGMII 网口,这里以 fm1-mac6(P27 下)网口打流测试网速为例。
测试环境参数如下(这里为举例,IP 地址以实际为准):
- 28 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
主机
IP
Linux Host
192.168.1.181
OK1046A-C2
192.168.1.106
在同一局域网内的 Linux 主机上输入:
forlinx@ubuntu~$ ifconfig eth0 192.168.1.181
//设置网口 eth0 的 ip 为 192.168.1.181
forlinx@ubuntu~$iperf3 -s
//作为服务端启动 iperf3 测试程序
将网线插入 fm1-mac6 接口(P27 下),在终端上输入以下命令,进行测试:
root@localhost:~# ifconfig fm1-mac4 down
//关闭 fm1-mac4 网口
root@localhost:~# ifconfig fm1-mac6 192.168.1.106
// 设置网口 fm1-mac6 的 ip 地址
root@localhost:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
//改变 CPU 管理模式,设置为高性能模式
root@localhost:~# iperf3 -c 192.168.1.181 -i 5 -t 60
//设置客户端、报告输出间隔、传输时间
Connecting to host 192.168.1.181, port 5201
[ 4] local 192.168.1.106 port 39656 connected to 192.168.1.181 port 5201
[ ID] Interval
Transfer
Bandwidth
Retr Cwnd
[ 4] 0.00-5.01 sec
538 MBytes 901 Mbits/sec
0 1.59 MBytes
[ 4] 5.01-10.01 sec
551 MBytes 925 Mbits/sec
0 1.80 MBytes
[ 4] 10.01-15.00 sec
549 MBytes 921 Mbits/sec
0 1.80 MBytes
[ 4] 15.00-20.00 sec
552 MBytes 927 Mbits/sec
0 1.80 MBytes
[ 4] 20.00-25.00 sec
561 MBytes 941 Mbits/sec
0 1.80 MBytes
[ 4] 25.00-30.00 sec
555 MBytes 932 Mbits/sec
0 2.71 MBytes
[…]
------------------------[ ID] Interval
Transfer
Bandwidth
Retr
[ 4] 0.00-60.01 sec 565 MBytes 932 Mbits/sec
0
sender
[ 4] 0.00-60.01 sec 561 MBytes 932 Mbits/sec
receiver
iperf Done.
如上所示打流测试成功。
3.1.12
FTP 测试
 说明:
 账户:forlinx,密码:forlinx;
 默认网卡 fm1-mac3(P13 上)IP:192.168.0.232;
 若在上传的过程中出现 553 Could not create file.报错的情况,考虑一下用户权限问题,以上传文件到
/home/forlinx 路径为例,用 chmod 777 /home/forlinx 命令赋一下最高权限;
OK1046A-C2 开发板支持 FTP 服务并启动时已自动开启,设置好 IP 地址后就可以作为一台 FTP
服务器。下面介绍如何利用 FTP 工具进行文件传输。

路径:OK10XX-C(LINUX)用户资料\工具\FileZilla*
在 windows 上安装好 filezilla 工具,并按照下图所示步骤进行设置。
- 29 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
登录成功后便可以进行上传下载操作。
上传测试,在本地站点中选择将要上传的文件右键点击“上传”。
- 30 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
下载测试,在远程站点中选择将要下载的文件,右键点击“下载”。
- 31 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
如果本地站点中已经存在同名文件,默认会“覆盖”本地文件,点击确定开始下载。
3.1.13
RTC 测试
注意:确保板子上已经安装了纽扣电池,并且电池电压正常
OK1046A-C2平台默认使用 RTC 时钟。本节测试主要通过使用 date 和 hwclock 工具设置软、硬
件时间,测试当开发板断电再上电的时候,软件时钟读取 RTC 时钟是否同步。
设置时间如下命令:
root@localhost:~# date -s "2021-10-29 14:41:00"
//设置系统时间
Fri Oct 29 14:41:00 CST 2021
//设置系统时间成功回显
 说明:date 设置的格式:MMDDhhmm[[YY]YY][.ss], MM 是月份,DD 是日期,hh 是小时,mm 是分钟,
年份可以写 2 位的 YY 或 4 位 YYYY, 秒可以用.ss 表示。
- 32 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
读取当前时间:
root@localhost:~# date
//查看当前的系统时间
Fri Oct 29 14:41:03 CST 2021
root@localhost:~# hwclock -w
//将时间写入RTC硬件
root@localhost:~# hwclock -r
//查看当前RTC的硬件时间
2021-10-29 14:41:23.072830+0800
然后给板子断电再上电,进入系统后读取系统时间,可以看到时间已经同步。
root@localhost:~# date
Fri Oct 29 14:45:30 CST 2021
说明:默认 RTC 中没有保存时间信息,启动时 hwclock.service 会失败,请手动按照上述流程设置
RTC 时间。如果需要使用网络对时,请执行命令:
root@localhost:~# systemctl enable systemd-timesyncd.service
//网络对时服务使能
3.1.14


看门狗测试
看门狗是嵌入式系统中经常用到的功能,OK1046A-C2中看门狗的设备结点为dev/watchdog 设备文
件,启动watchdog后,如果不喂狗,10秒后系统复位。
启动watchdog并定时喂狗
root@localhost:~# watchdog
此命令会打开看门狗并执行喂狗操作,因此系统不会重启。
注意:使用ctrl+c结束测试程序时,10s后系统会复位,如不想复位请在ctrl+c之后10s内输入watchdog -d
关闭看门狗。
root@localhost:~# watchdog -d
Watchdog card disabled.
启动看门狗但不执行喂狗,系统会在10秒后重启
root@localhost:~# watchdogrestart
Restart after 10 seconds
3.1.15
UART 测试
在进行串口回环测试前,请先将需要测试的串口短接。OK1046A-C2 平台底板原理图中标示引出的
UART1、UART2、UART3、UART4 共 4 路串口,其中 UART1 为调试串口,在开发板中的默认设备名称
分别为 ttyS0、ttyS1、ttyS2、ttyS3,在此以测试 UART2 串口为例,按照开发板原理图短接 UART2 的收
发引脚 PIN 针(3、8)。
- 33 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
Pin8
Pin3
在开发板终端使用 uart 测试程序测试 UART2,执行以下指令:
root@localhost:~# uarttest -d /dev/ttyS1
//执行后串口打印如下,说明串口通信基本正常:
Welcome to uart test
Send test data:
forlinx_uart_test.1234567890...
Read Test Data finished,Read:
forlinx_uart_test.1234567890...
3.1.16 WIFI 测试
OK1046A-C2 目前支持 INTEL 3168NGW 双频 WiFi 模块或者 INTEL 9260NGW 双频 WiFi 模块。这
里以 INTEL 3168NGW 模块为例。
将 INTEL 3168NGW 模块连接到开发板,并接好天线。
上电后启动 linux 后,通过 lspci 可以查看设备是否枚举成功。
root@localhost:~# lspci
//罗列所有 pci 设备
0000:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 81c0 (rev 10)
0001:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 81c0 (rev 10)
0002:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 81c0 (rev 10)
0002:01:00.0 Network controller: Intel Corporation Device 24fb (rev 10)
// INTEL 3168NGW 模块
查看设备节点:
root@localhost:~# ifconfig -a
…此处省略无关节点
virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:ef:a1:22 txqueuelen 1000 (Ethernet)
- 34 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlP1p1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 04:f0:21:46:25:75 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ubuntu18 中 wifi 的名称不再是 wlan0 类似的命名方式,而是采用固件版本的形式,如上所示 INTEL
3168NGW 模块的名称为 wlP1p1s0。
3.1.16.1 STA 模式测试
使用 wifi_wpa.sh 脚本生成 wpa_supplicant 配置文件,首先查看 wifi_wpa.sh 的使用说明
wifi_wpa.sh 参数说明:
参数
说明
-s
准备连接的 WIFI 的名称
-p
准备连接的 WIFI 的密码,如果没有加密请使用-p NONE
这里以 WIFI 名称:bjfl,WIFI 密码:123456785.为例(用户在测试时根据实际情况修改 WIFI 名称和
密码):
root@localhost:~# /root/Net_Tools/wifi_wpa.sh -s bjfl -p 123456785.
//执行 WIFI 配置脚本
执行完命令,自动生成配置文件/etc/wpa_supplicant.conf
查看生成的配置文件:
root@localhost:~# cat /etc/wpa_supplicant.conf
//查看配置文件的内容,打印信息如下
#PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
p2p_disabled=1
network={
ssid="bjfl"
scan_ssid=1
psk="123456785."
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
group=CCMP TKIP WEP104 WEP40
}
连接测试:
root@localhost:~# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlP1p1s0 &
查看连接状态:
root@localhost:~# wpa_cli status -i wlP1p1s0
//打印信息如下:
freq=2412
//WIFI 频率 2.4Ghz
ssid=bjfl
//连接的 WIFI 名称
id=0
mode=station
//当前模式为 STA,以站点终端的形式连接到其他无线路由器上
- 35 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2

pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.2.1
//路由器的 IP 地址
address=04:f0:21:46:25:75
//WIFI 模块的 mac 地址
uuid=8411871d-0ffc-5208-9eef-0dd993f7a55e
//开发板 WiFi 模块的设备识别码
获取 IP:
root@localhost:~# dhclient -i wlP1p1s0
//通过 dhcp 获取 ip 地址
root@localhost:~# ifconfig wlP1p1s0
//查看获取的 ip 地址
wlP1p1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.39 netmask 255.255.254.0 broadcast 192.168.5.255
inet6 fe80::2a7f:cfff:feca:7d1c prefixlen 64 scopeid 0x20<link>
ether 28:7f:cf:ca:7d:1c txqueuelen 1000 (Ethernet)
RX packets 150 bytes 18734 (18.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13 bytes 2037 (2.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ping 外网测试,测试网络是否连通:
root@localhost:~# ping www.baidu.com
PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=50 time=23.6 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=50 time=14.2 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=50 time=14.6 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=4 ttl=50 time=22.4 ms
^C
//输入”Ctrl+C”中断网络测试
--- www.a.shifen.com ping statistics --4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 14.280/18.752/23.689/4.327 ms
设置启动自动连接 WIFI 热点并获取 IP:
首先根据实际情况修改/lib/systemd/system/wpa_supplicant.service 文件的 WIFI 名称这里以
wlP1p1s0 为例。
root@localhost:~# vi /lib/systemd/system/wpa_supplicant.service
[Unit]
Description=WPA supplicant
Before=network.target
After=dbus.service
Wants=network.target
IgnoreOnIsolate=true
[Service]
Type=dbus
RestartSec=15
- 36 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
Restart=on-failure
BusName=fi.w1.wpa_supplicant1
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant -c /etc/wpa_supplicant.conf -i
wlP1p1s0
[Install]
WantedBy=multi-user.target
Alias=dbus-fi.w1.wpa_supplicant1.service
使能 wpa_supplicant.service 服务:
root@localhost:~# systemctl enable wpa_supplicant.service
Created symlink /etc/systemd/system/dbus-fi.w1.wpa_supplicant1.service →
/lib/systemd/system/wpa_supplicant.service.
Created symlink /etc/systemd/system/multi-user.target.wants/wpa_supplicant.service →
/lib/systemd/system/wpa_supplicant.service.
设置自动获取 IP,创建 WIFI 模块的配置文件修改 WIFI 名称,根据实际情况修改 WIFI 名称这里以
wlP1p1s0 为例。
root@localhost:~# vi /etc/systemd/network/wlan0.network
[Match]
Name=wlP1p1s0
KernelCommandLine=!root=/dev/nfs
[Network]
DHCP=yes
重新启动开发板稍等几秒钟,查看 WIFI 模块动态获取的 IP 及其他的网络信息:
root@localhost:~# ifconfig wlP1p1s0
wlP1p1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.69 netmask 255.255.255.0 broadcast 192.168.195.255
inet6 2408:841c:5220:3dab:6f0:21ff:fe46:2575 prefixlen 64 scopeid 0x0<global>
inet6 fe80::6f0:21ff:fe46:2575 prefixlen 64 scopeid 0x20<link>
ether 04:f0:21:46:25:75 txqueuelen 1000 (Ethernet)
RX packets 1042 bytes 123004 (123.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 203 bytes 27323 (27.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看到 WIFI 模块动态获取到了 IP 地址,进行 ping 测试:
root@localhost:~# ping www.baidu.com
PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=50 time=14.5 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=50 time=15.2 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=50 time=15.2 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=4 ttl=50 time=24.1 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=5 ttl=50 time=14.7 ms
^C
//输入”Ctrl+C”中断网络测试
--- www.a.shifen.com ping statistics --- 37 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 14.522/16.790/24.148/3.693 ms
如果不想使用 WIFI 自动连接,可以关闭 WIFI 的自动连接,关闭 WIFI 自动连接的方法如下:
root@localhost:~# systemctl stop wpa_supplicant.service
//关闭 wpa_supplicant.service 服务
root@localhost:~# systemctl disable wpa_supplicant.service
//在开机时禁用 wpa_supplicant.service 服务
root@localhost:~# rm /etc/systemd/network/wlan0.network
//删除 WIFI 自动连接配置文件
3.1.16.2
AP 模式测试
测试环境说明:使用网线将开发板的 P3 下网络接口接入路由器的 LAN 口,
路由器位于 192.168.0.0/24
网段,使用 WIFI 建立热点,WIFI 使用 192.168.2.0/24 网段,两网段之间采用 NAT 转发上网。
首先需要配置 P3 下(fm1-mac4)网口可正常上网。将 fm1-mac4 和路由器的 LAN 口连接。设置
fm1-mac4 为动态获取 IP,创建配置文件如下所示:
root@localhost:~# vi /etc/systemd/network/fm1-mac4.network
[Match]
Name=fm1-mac4
KernelCommandLine=!root=/dev/nfs
[Network]
DHCP=yes
修改完成后保存退出,开机重启过几秒钟之后,查看 fm1-mac4 的网卡信息,可以看到 fm1-mac4 网
卡已动态获取到 IP。
root@localhost:~# ifconfig fm1-mac4
fm1-mac4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::7053:c7ff:fea5:7568 prefixlen 64 scopeid 0x20<link>
ether 72:53:c7:a5:75:68 txqueuelen 1000 (Ethernet)
RX packets 6 bytes 1336 (1.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 66 bytes 8695 (8.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x1ae6000-1ae6fff
获取 IP 后进行 ping 测试,保证转发的网络是正常的
root@localhost:~# ping www.baidu.com
PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=52 time=29.3 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=52 time=27.5 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=52 time=25.9 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=4 ttl=52 time=24.9 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=5 ttl=52 time=18.0 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=6 ttl=52 time=12.8 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=7 ttl=52 time=15.6 ms
^C
//输入”Ctrl+C”中断网络测试
--- www.a.shifen.com ping statistics --- 38 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
7 packets transmitted, 7 received, 0% packet loss, time 6008ms
rtt min/avg/max/mdev = 12.832/22.050/29.384/5.967 ms
打印信息如上所示,说明网络可以上网,下面进行 WIFI 模块 AP 模式配置
修改 hostapd 无线接入点程序配置文件
root@localhost:~# vi /etc/hostapd/hostapd.conf
interface=w1P2p1s0
//接入点设备名称
driver=nl80211
//设定无线驱动
ssid=wifi_test
//作为 WIFI-AP 无线接入点名称
channel=9
//设置无线频道
hw_mode=g
macaddr_acl=0
Ignore_broadcast_ssid=0
auth_algs=1
wpa_passphrase=12345678
//WIFI-AP 连接密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
将 hostapd 服务设置为开机启动:
root@localhost:~# systemctl enable hostapd.service
Synchronizing state of hostapd.service with SysV service script with
/lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable hostapd
设置自动 dhcpd,修改 dhcpd 的配置文件,添加 WIFI-AP 的路由范围(加粗位置为添加内容):
root@localhost:~# vi /etc/dhcp/dhcpd.conf
# pool {
#
deny members of "foo";
#
range 10.0.29.10 10.0.29.230;
# }
#}
subnet 192.168.2.0 netmask 255.255.255.0
{
range 192.168.2.100 192.168.2.250;
option domain-name-servers 8.8.8.8;
option routers 192.168.2.1;
}
设置 WIFI 模块的 IP 地址
root@localhost:~# ifconfig wlP1p1s0 192.168.2.1
也可直接修改 wifi 的配置文件 wlan0.network 设置 WIFI 模块的 IP 地址如下
root@localhost:~# vi /etc/systemd/network/wlan0.network
[Match]
Name= wlP1p1s0
KernelCommandLine=!root=/dev/nfs
- 39 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
[Network]
Address=192.168.2.1/24
使能 dhcpd 服务开机运行
root@localhost:~# systemctl enable isc-dhcp-server.service
设置 NAT 打开转发
root@localhost:~# vi /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#
…
# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1
//省略中间部分信息
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
//去掉注释,将其打开
设置转发:
root@localhost:~# iptables -t nat -A POSTROUTING -o fm1-mac4 -j MASQUERADE
root@localhost:~# netfilter-persistent save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
root@localhost:~# netfilter-persistent reload
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
重启发开发板,使用手机搜索 wifi 信号“wifi_test”并连接,密码“12345678”
- 40 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
可以使用浏览器打开网页测试,手机此时可以正常的访问互联网。
关闭 AP 模式:
root@localhost:~# rm /etc/iptables/*
root@localhost:~# rm /etc/systemd/network/wlan0.network
root@localhost:~# systemctl disable isc-dhcp-server.service
//开机时禁用 dhcp 服务
Synchronizing state of isc-dhcp-server.service with SysV service script with
/lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable isc-dhcp-server
root@localhost:~# systemctl disable hostapd.service
//开机时禁用 hostapd 服务
Synchronizing state of hostapd.service with SysV service script with
/lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable hostapd
root@localhost:~# reboot
//重启开发板
3.1.17
5G 模块上网测试
OK1046A-C2 支持两种 5G 模块,分别移远 RM500Q-GL 模块和移远 RM500U-CN 模块,请客户根
据自己选配的 5G 模块型号进行测试。
4G、5G 模块对应设备节点如下:
设备型号
节点名称
移远 RM500Q-GL 模块
usb0
移远 RM500U-CN 模块
usb0
3.1.17.1 移远 RM500Q-GL 模组

移远 RM500Q-GL 模组的识别
将移远 RM500Q-GL 5G 模块插入底板 M.2 B KEY 的 P4 接口上,接上天线,如图所示:
可以在 OK1046A-C2 的控制台输入 lsusb 命令看移远 RM500Q-GL 5G 模块是否识别成功。
root@localhost:~# lsusb
- 41 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2

Bus 006 Device 002: ID 2c7c:0800
//识别到的移远 RM500Q-GL 5G 模块
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
使用 ifconfig -a 命令可以看到移远 RM500Q-GL 5G 模块模块产生的节点名称为 usb0。
如果识别成功之后,接下来就进行拨号上网。
移远 RM500Q-GL 模组的拨号测试
以插入移动 SIM 卡测试 5G 上网为例,测试是否连接外网:
root@localhost:~# /root/Net_Tools/quectel-CM &
//执行移远 RM5000Q-GL 拨号上网脚本
[1] 4883
[01-28_23:59:01:070] Quectel_QConnectManager_Linux_V1.6.0.26
[01-28_23:59:01:072] Find /sys/bus/usb/devices/6-1 idVendor=0x2c7c idProduct=0x800,
bus=0x006, dev=0x002
[01-28_23:59:01:072] Auto find qmichannel = /dev/qcqmi0
[01-28_23:59:01:072] Auto find usbnet_adapter = usb0
[01-28_23:59:01:072] netcard driver = GobiNet, driver version = V1.6.2.9
[01-28_23:59:01:072] qmap_mode = 1, qmap_version = 9, qmap_size = 16384, muxid = 0x81,
qmap_netcard = usb0
[01-28_23:59:01:072] Modem works in QMI mode
[01-28_23:59:01:090] Get clientWDS = 7
root@localhost:~# [01-28_23:59:01:122] Get clientDMS = 8
[01-28_23:59:01:154] Get clientNAS = 9
[01-28_23:59:01:186] Get clientUIM = 10
[01-28_23:59:01:219] requestBaseBandVersion RM500QGLABR11A03M4G
[01-28_23:59:01:346] requestGetSIMStatus SIMStatus: SIM_READY
[01-28_23:59:01:379] requestGetProfile[1] ///0
[01-28_23:59:01:410] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap:
5G_SA
//5G 信号
[01-28_23:59:01:443] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[01-28_23:59:01:443] ifconfig usb0 0.0.0.0
[01-28_23:59:01:450] ifconfig usb0 down
[01-28_23:59:01:986] requestSetupDataCall WdsConnectionIPv4Handle: 0x87404c30
[01-28_23:59:02:114] ifconfig usb0 up
[01-28_23:59:02:120] dhclient -4 -d --no-pid usb0
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/usb0/02:50:f4:00:00:00
- 42 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
Sending on LPF/usb0/02:50:f4:00:00:00
Sending on Socket/fallback
DHCPREQUEST of 10.43.127.141 on usb0 to 255.255.255.255 port 67 (xid=0x54a2480c)
DHCPNAK from 10.35.148.17 (xid=0xc48a254)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 3 (xid=0xcacc5a70)
DHCPREQUEST of 10.35.148.18 on usb0 to 255.255.255.255 port 67 (xid=0x705accca)
DHCPOFFER of 10.35.148.18 from 10.35.148.17
DHCPACK of 10.35.148.18 from 10.35.148.17
bound to 10.35.148.18 -- renewal in 2900 seconds
查看网卡信息,可以看到设备成功获取到 IP
root@localhost:~# ifconfig usb0
//查看 5G 模块的网卡信息
usb0: flags=193<UP,RUNNING,NOARP> mtu 1500
inet 10.35.148.18 netmask 255.255.255.252
inet6 fe80::50:f4ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 02:50:f4:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 4 bytes 1241 (1.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 1664 (1.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
成功获取到 IP,可以进行 Ping 测试网络连通性。
root@localhost:~# ping www.baidu.com -I usb0 -c 5
//测试 ping 百度,发送接收 5 包数据
PING www.a.shifen.com (39.156.66.14) from 10.134.255.146 usb0: 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=51 time=27.9 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=51 time=25.4 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=3 ttl=51 time=27.8 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=4 ttl=51 time=26.9 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=5 ttl=51 time=27.9 ms
--- www.a.shifen.com ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 25.471/27.245/27.993/0.979 ms
//丢包率为 0,5G 可以上网
如上所示表明网络可以正常上网。
3.1.17.2 移远 RM500U-CN 模组

移远 RM500U-CN 模组的识别
将移远 RM500U-CN 5G 模块插入底板 M.2 B KEY 的 P4 接口上,接上天线,如图所示:
- 43 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2

可以在 OK1046A-C2 的控制台输入一下命令查看移远 RM500U-CN 模块是否识别成功
root@localhost:~# lsusb
Bus 006 Device 002: ID 2c7c:0900
//识别到的移远 RM500U-CN 5G 模块
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
使用 ifconfig -a 命令可以看到移远 RM500Q-GL 5G 模块模块产生的节点名称为 usb0。
移远 RM500U-CN 模块拨号测试
以插入移动 SIM 卡测试 5G 上网为例,测试是否连接外网:
root@localhost:~# /root/Net_Tools/quectel-CM >> /dev/null &
[1] 4867
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/usb0/b2:e2:ce:a0:7c:71
Sending on LPF/usb0/b2:e2:ce:a0:7c:71
Sending on Socket/fallback
DHCPREQUEST of 10.58.33.120 on usb0 to 255.255.255.255 port 67 (xid=0x3080cfcc)
DHCPREQUEST of 10.58.33.120 on usb0 to 255.255.255.255 port 67 (xid=0x3080cfcc)
DHCPNAK from 10.163.209.202 (xid=0xcccf8030)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 3 (xid=0x5790f876)
DHCPREQUEST of 10.163.209.201 on usb0 to 255.255.255.255 port 67 (xid=0x76f89057)
DHCPOFFER of 10.163.209.201 from 10.163.209.202
- 44 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
DHCPACK of 10.163.209.201 from 10.163.209.202
bound to 10.163.209.201 -- renewal in 41571 seconds.
拨号成功后,查看网卡信息可以看到设备成功获取 IP
root@localhost:~# ifconfig usb0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.163.209.201 netmask 255.255.255.255 broadcast 10.163.209.201
inet6 fe80::b0e2:ceff:fea0:7c71 prefixlen 64 scopeid 0x20<link>
ether b2:e2:ce:a0:7c:71 txqueuelen 1000 (Ethernet)
RX packets 5 bytes 1880 (1.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13 bytes 2150 (2.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions
成功获取到 IP 后,可以进行 Ping 测试网络连通性。
root@localhost:~# ping www.baidu.com -I usb0 -c 5
PING www.wshifen.com (103.235.46.39) from 10.163.209.201 usb0: 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=46 time=79.0 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=46 time=96.5 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=46 time=77.9 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=5 ttl=46 time=85.7 ms
--- www.wshifen.com ping statistics --5 packets transmitted, 4 received, 20% packet loss, time 4025ms
rtt min/avg/max/mdev = 77.933/84.820/96.536/7.401 ms
3.1.18
USER_LED 和 USER 按键测试
OK1046A-C2 支持一个用户自定义 USER_LED 灯(D1 中间为 USER_LED 灯),还有一个用户自定
义按键 USER(靠近 USB 接口的按键)。如下所示:
测试方法如下:
 USER_LED 灯的点亮与熄灭
root@localhost:~# echo 1 > /sys/class/leds/USER_LED/brightness
//向文件 brightness 中输入 1,控制 USER_LED 灯亮
root@localhost:~# echo 0 > /sys/class/leds/USER_LED/brightness
//向文件 brightness 中输入 0,控制 USER_LED 灯灭
 USER 按键测试
首先查看 USER 按键的状态:
root@localhost:~# cat /root/DI/USER_DI
//查看文件 USER_DI 内容
- 45 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
1
将 USER 按键按下不放,再次运行:
root@localhost:~# cat /root/DI/USER_DI
0
//可以看到 USER 按键为高电平,表示未按下
//查看文件 USER_DI 内容
//可以看到 USER 按键为低电平,表示已经按下
3.2 软件资源测试
3.2.1 动态/静态 IP 配置测试
 说明:
 其它网口的设置与此类似,创建对应的*.network 文件修改 Name 字段即可;
 网口插上网线才可以看到 IP 地址;
默认情况下 OK1046A-C2 开发板将 fm1-mac3(P13 上)网口设置为静态 IP:192.168.0.232。
root@localhost:~# cat /etc/systemd/network/fm1-mac3.network
[Match]
Name=fm1-mac3
KernelCommandLine=!root=/dev/nfs
[Network]
#DHCP=yes
Address=192.168.0.232/24
Gateway=192.168.0.1
若想将其他网口设置为静态IP,这里以设置fm1-mac4(P13 下)网口静态IP为 192.168.1.25 为
例,创建fm1-mac4 网口的配置文件,请参考以下设置:
root@localhost:~# vi /etc/systemd/network/fm1-mac4.network
[Match]
Name=fm1-mac4
KernelCommandLine=!root=/dev/nfs
[Network]
#DHCP=yes
Address=192.168.1.25/24
Gateway=192.168.1.1
如果想要设置为动态获取 IP,请参考如下设置:
root@localhost:~# cp /etc/systemd/network/fm1-mac3.network
/etc/systemd/network/fm1-mac3.network.bak
//备份网口
fm1-mac3 的配置文件
root@localhost:~# vi /etc/systemd/network/fm1-mac3.network
//修改网口fm1-mac3 的配置文件
[Match]
Name=fm1-mac3
KernelCommandLine=!root=/dev/nfs
- 46 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
[Network]
DHCP=yes
//设置为动态获取IP
#Address=192.168.0.232/24
//注释静态IP、子网掩码
#Gateway=192.168.0.1
//注释静态IP默认网关
设置DNS,将/etc/system/resolved.conf修改为:
root@localhost:~# vi /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8
//添加 DNS
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
修改完成后保存退出,将 fm1-mac3 网口通过网线与可动态分配 IP 的路由器连接,重启开发板
root@localhost:~# ifconfig fm1-mac3
//查看获取到的IP
fm1-mac3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::5860:46ff:feab:db46 prefixlen 64 scopeid 0x20<link>
ether 5a:60:46:ab:db:46 txqueuelen 1000 (Ethernet)
RX packets 4 bytes 1244 (1.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58 bytes 7646 (7.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x1ae4000-1ae4fff
ping测试,如下所示表明网络通畅,可以正常访问外网。
root@localhost:~# ping www.baidu.com
PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=52 time=24.8 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=52 time=16.7 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=52 time=14.8 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=4 ttl=52 time=17.1 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=5 ttl=52 time=17.5 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=6 ttl=52 time=20.1 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=7 ttl=52 time=18.8 ms
^C
//输入”crtl+c”终止测试
--- www.a.shifen.com ping statistics --7 packets transmitted, 7 received, 0% packet loss, time 6010ms
rtt min/avg/max/mdev = 14.830/18.610/24.873/2.990 ms
3.2.2 时区配置测试
注意:OK1046A-C2 平台默认已经将时间设置为北京时间,如果您不使用其它时区可以略过本节。
- 47 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
在终端命令行输入 tzselect 命令进行设置
root@localhost:~# tzselect
//tzselect 调整时区指令
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
1) Africa
2) Americas
3) Antarctica
4) Asia
5) Atlantic Ocean
6) Australia
7) Europe
8) Indian Ocean
9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.
#? 4
//根据提示选择 4,亚洲
Please select a country whose clocks agree with yours.
1) Afghanistan
18) Israel
35) Palestine
2) Armenia
19) Japan
36) Philippines
3) Azerbaijan
20) Jordan
37) Qatar
4) Bahrain
21) Kazakhstan
38) Russia
5) Bangladesh
22) Korea (North)
39) Saudi Arabia
6) Bhutan
23) Korea (South)
40) Singapore
7) Brunei
24) Kuwait
41) Sri Lanka
8) Cambodia
25) Kyrgyzstan
42) Syria
9) China
26) Laos
43) Taiwan
10) Cyprus
27) Lebanon
44) Tajikistan
11) East Timor
28) Macau
45) Thailand
12) Georgia
29) Malaysia
46) Turkmenistan
13) Hong Kong
30) Mongolia
47) United Arab Emirates
14) India
31) Myanmar (Burma)
48) Uzbekistan
15) Indonesia
32) Nepal
49) Vietnam
16) Iran
33) Oman
50) Yemen
17) Iraq
34) Pakistan
#? 9
//根据提示选择 9,中国
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1
//根据提示选择 1,北京时间
The following information has been given:
China
Beijing Time
- 48 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
Therefore TZ='Asia/Shanghai' will be used.
Selected time is now: Thu Feb 15 17:26:11 CST 2018.
Universal Time is now: Thu Feb 15 09:26:11 UTC 2018.
Is the above information OK?
1) Yes
2) No
#? yes
//根据提示输入 yes,确认将时区修改为中国北京时间,中国上海东八区时区
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
按照如上打印信息提示修改.profile 文件
root@localhost:~# vi ~/.profile
# ~/.profile: executed by Bourne-compatible login shells.
TZ='Asia/Shanghai';
export TZ
//此两行为添加的时区内容
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
mesg n || true
3.2.3 Samba 测试
Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB
(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局
域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户
机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”
使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
OK1046A-C2 平台默认安装 samba 服务,可以通过网络访问 OK1046A-C2 的 sata 硬盘等存储设备。
1. 查看配置文件:
root@localhost:~# cat /etc/samba/smb.conf
root@localhost:~# vi /etc/samba/smb.conf
//修改配置文件,文末增加如下内容
[share]
comment = Share Folder require password
browseable = yes
path = /boot
- 49 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
create mask = 0777
directory mask = 0777
valid users = share
force user = nobody
force group = nogroup
public = yes
writable = yes
available = yes
2. 如果您对配置文件有修改,请重启 samba:
root@localhost:~# systemctl restart smbd.service
3. Windows 访问测试:
查看开发板 IP:
root@localhost:~# ifconfig fm1-mac3
fm1-mac3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.232 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::5860:46ff:feab:db46 prefixlen 64 scopeid 0x20<link>
ether 5a:60:46:ab:db:46 txqueuelen 1000 (Ethernet)
RX packets 36 bytes 3760 (3.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 3429 (3.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x1ae4000-1ae4fff
在同一局域网内的 windows 使用快捷键
“windows+R
“”组合键打开运行命令框,
输入\\192.168.0.232,
点击“确定”,会弹出以下串口,输入访问用户名和密码,均为“share”。
- 50 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
点击“确定”进入共享文件夹,创建测试文件 test.txt
创建成功后,在开发板查看新添加的文件
root@localhost:~# ls -l /boot
total 0
-rwxr--r-- 1 root root 0 Feb 15 17:41 test.txt
可以看到开发板上新添加的文件 test.txt
//查看/boot 目录下的文件
//可以看到新添加的文件 test.txt
3.2.4 Lighttpd 测试
 说明:
 测试前建议将网口设置为动态获取 IP,具体配置详见动态/静态 IP 配置测试;
 以 fm1-mac3(P13 上)网口为例进行测试;
- 51 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
 KODExplorer 目前分为多个版本,本节采用的是免费版,下载链接如有更新请到可道云官网下载页面
获取,如有客户需要采用 KODExplorer 方案进行商用请联系可道云进行授权;
本节将详细介绍如何将 OK1046A-C2 平台打造成一个专属的家庭私有云平台,利用 lighttpd+php 作
为后台服务,PHP 页面采用 KODExplorer 可道云 (原名芒果云) 是一款基于 PHP 开发的开源 WEB 网
页版轻量级私有云网盘工具。而且 KODExplorer 还提供了手机版 (移动端) 的适配支持,即便出门在外
也能随时用手机远程访问和使用自己在网盘上的文件,这点值得一赞。
确保开发板正常访问网络,与 PC 机在同一个局域网,下载可道云:
oot@localhost:~# mkdir /var/www/html -p
//递归创建文件夹目录
root@localhost:~# cd /var/www/html/
//切换当前工作目录到html
root@localhost:/var/www/html# wget http://static.kodcloud.com/update/download/kodexplorer4.37.zip
//使用下载工具下载压缩包
--2021-10-15 13:49:02-- http://static.kodcloud.com/update/download/kodexplorer4.37.zip
Resolving static.kodcloud.com (static.kodcloud.com)... 124.236.20.206
Connecting to static.kodcloud.com (static.kodcloud.com)|124.236.20.206|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13845184 (13M) [application/octet-stream]
Saving to: ‘kodexplorer4.37.zip’
kodexplorer4.37.zip
100%[=========================================================================
===============================================================>] 13.20M
4.51MB/s
in 2.9s
2021-10-15 13:49:05 (4.51 MB/s) - ‘kodexplorer4.37.zip’ saved [13845184/13845184]
root@localhost:~# unzip kodexplorer4.37.zip
//解压压缩包
root@localhost:~# chown -R www-data:www-data /var/www/html
//授权文件夹
确保开发板正常访问网络,根据自己使用的实际网口,查看开发板 IP,这里以 fm1-mac3(P13 上)为
例。
root@localhost:~# ifconfig fm1-mac3
fm1-mac3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::5860:46ff:feab:db46 prefixlen 64 scopeid 0x20<link>
ether 5a:60:46:ab:db:46 txqueuelen 1000 (Ethernet)
RX packets 3 bytes 1198 (1.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 41 bytes 5201 (5.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x1ae4000-1ae4fff
打开浏览器,在地址栏输入:192.168.0.100。
- 52 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
请根据提示设置管理员账户密码并登陆,这里已设置密码为 123456 为例,可按照实际情况设置。
点击登录进入系统,点击“文件管理”菜单浏览开发板上的文件。
将 windows 上的测试视频文件拖到浏览器窗口中,自动开始上传。
- 53 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
在上传成功的文件上右键选择打开,播放视频。
- 54 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
除了视频文件外,还支持播放音频文件,在线编辑文本等。同时所有 PC 端支持的功能在移动设备上
同样可以体验,手机接入同一局域网内,打开手机浏览器,输入 192.168.0.100 进行体验。
输入设置的账号密码登录系统,进入系统之后可以看到刚刚上传的视频。其他功能可以自行体验。
- 55 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
3.2.5 虚拟化测试
3.2.5.1 Docker 基本环境测试
注意:请确保 OK1046A-C2 的时钟准确,否则拉取镜像时会导致认证过期。
Docker 是一个基于 LXC 的高级容器引擎,docker 是一种集装箱式的工作方式。正如我们会将各种
不同的货物统一打包成一个个集装箱,进行标准的管理和运输,在 docker 的世界里,我们把应用和应用
所依赖的运行环境打包成一个个 image,然后分发到任意支持 docker 的平台,就可以在这些平台运行我
们的应用,提供服务。Docker 是进程级别的容器,官方推荐一个 docker 只运行一个程序,当然你可以在
你的宿主机上运行成千上万个 docker。
1. 下载 hello-world 镜像
root@localhost:~# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
109db8fad215: Pull complete
Digest: sha256:7d91b69e04a9029b99f3585aaaccae2baa80bcf318f4a5d2165a9898cd2dc0a1
Status: Downloaded newer image for hello-world:latest
2. 查看本地 docker image
root@localhost:~# docker image ls
REPOSITORY
TAG
IMAGE ID
CREATED
SIZE
hello-world
latest
bc11b176a293
2 months ago
9.14kB
3.运行 hello-world 测试程序
root@localhost:~# docker container run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
- 56 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
4. 下载 ubuntu 镜像
root@localhost:~# docker pull qoriq/arm64-ubuntu
Using default tag: latest
latest: Pulling from qoriq/arm64-ubuntu
a3ed95caeb02: Pull complete
9025035f8d16: Pull complete
d54663dfcaf9: Pull complete
b940f6a4f33c: Pull complete
688957367bc4: Pull complete
88ca67eab938: Pull complete
f5f1c1a40562: Pull complete
357cdf8f1a01: Pull complete
de8e5d34ebd8: Pull complete
811aa6d4eba3: Pull complete
0dc75b6c54d0: Pull complete
654cadd8a53b: Pull complete
40d300e17719: Pull complete
ce42abd87d1e: Pull complete
Digest: sha256:eaef3a08336f59155e6cfb61bf55688711214561ddf00817b5c848211ac66b00
Status: Downloaded newer image for qoriq/arm64-ubuntu:latest
如需查看已经下载的 docker image
root@localhost:~# docker image ls
REPOSITORY
TAG
IMAGE ID
CREATED
SIZE
hello-world
latest
bc11b176a293
2 months ago
9.14kB
qoriq/arm64-ubuntu latest
903eaef3b724
5 years ago
327MB
5.启动 docker Ubuntu 内部运行 lighttp 服务
root@localhost:~# docker run -d -p 30081:80 --name=sandbox1 \
-h sandbox1 qoriq/arm64-ubuntu \
bash -c "lighttpd -f /etc/lighttpd/lighttpd.conf -D"
bb52adbbfe3f19889b2b4d77a41aa974410a266d1db3523ca35285c7d06b84ef
6.查看当前 docker container 运行状态
root@localhost:~# docker ps
CONTAINER ID
IMAGE
COMMAND
CREATED
- 57 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
STATUS
PORTS
NAMES
bb52adbbfe3f
qoriq/arm64-ubuntu "bash -c 'lighttpd -…"
4 minutes
0.0.0.0:30081->80/tcp
sandbox1
7.其它主机通过 web 浏览器访问 docker 内的 http 服务
4 minutes ago
Up
8.其它相关命令
命令
注释
docker stop containerID
停止正在运行的 docker
docker rm containerID
删除已经存在的 docker container
docker rmi image_name
删除已经下载的 docker image
docker ps -a
查看 docker 运行状态
docker restart containerID
启动对应的 container
3.2.5.2 LXC 基本环境测试
注意:本节测试请确保 OK1046A-C2 能正常访问外部网络,同时保证 OK1046A-C2 的时钟准确,否则拉
取镜像时会导致认证过期。
LXC 的全称为 Linux Container。LXC 是一种轻量的虚拟技术,Linux 原生支持的容器。可以说 docker
就是基于 LXC 发展起来的,提供 LXC 的高级封装,发展标准的配置方法。
LXC 的定位是替代传统的虚拟机,侧重于提供一个个操作系统,如 Ubuntu、Debian 等。Docker 是
面向应用的,官方提倡一个容器即是一个应用,以应用为中心。所以,docker 还提供了统一的打包部署
方案,即 Dockerfile, 还有版本控制,image 复用,远程仓库以供镜像共享等。
1. 安装 ubuntu16.04
查看 LXC 版本:
root@localhost:~# lxc --version
3.0.1
第一次运行 LXC 时需要执行一次(需要等待几分钟):
- 58 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
root@localhost:~# lxd -v init
//根据打印信息提示,全部按回车键选择默认即可
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (dir, lvm) [default=dir]:
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
显示可用镜像:
root@localhost:~# lxc image list images: | less
创建 ubuntu16.04 容器:
root@localhost:~# lxc launch ubuntu:16.04 test
Creating test
Retrieving image: rootfs: 100% (1.58MB/s)
Starting test
2. 显示本地容器
root@localhost:~# lxc list
+------+---------+--------------------+-----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4
|
IPV6
|
TYPE
| SNAPSHOTS |
+------+---------+--------------------+-----------------------------------------------+------------+-----------+
| test | RUNNING | 10.253.45.4 (eth0) | fd42:5801:6543:9186:216:3eff:fe5e:7bf6 (eth0) |
PERSISTENT | 0
|
+------+---------+--------------------+-----------------------------------------------+------------+-----------+
3. 查看容器网络
root@localhost:~# lxc network show lxdbr0
config:
ipv4.address: 10.253.45.1/24
ipv4.nat: "true"
ipv6.address: fd42:5801:6543:9186::1/64
ipv6.nat: "true"
description: ""
name: lxdbr0
type: bridge
used_by:
- /1.0/containers/test
managed: true
status: Created
locations:
- 59 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
- none
4. 查看容器信息
root@localhost:~# lxc info test
Name: test
Remote: unix://
Architecture: aarch64
Created: 2021/09/13 06:21 UTC
Status: Running
Type: persistent
Profiles: default
Pid: 6517
Ips:
eth0: inet
10.253.45.4
veth6Y71T4
eth0: inet6 fd42:5801:6543:9186:216:3eff:fe5e:7bf6 veth6Y71T4
eth0: inet6 fe80::216:3eff:fe5e:7bf6
veth6Y71T4
lo: inet
127.0.0.1
lo: inet6 ::1
Resources:
Processes: 21
CPU usage:
CPU usage (in seconds): 17
Memory usage:
Memory (current): 110.64MB
Memory (peak): 256.80MB
Network usage:
eth0:
Bytes received: 19.52kB
Bytes sent: 5.09kB
Packets received: 83
Packets sent: 45
lo:
Bytes received: 0B
Bytes sent: 0B
Packets received: 0
Packets sent: 0
sit0:
Bytes received: 0B
Bytes sent: 0B
Packets received: 0
Packets sent: 0
5. 查看容器配置
root@localhost:~# lxc config show test
architecture: aarch64
- 60 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
config:
image.architecture: arm64
image.description: ubuntu 16.04 LTS arm64 (release) (20210429)
image.label: release
image.os: ubuntu
image.release: xenial
image.serial: "20210429"
image.version: "16.04"
volatile.base_image: 57d6d0f42b3fa248416472e3ca873aa057084031841672a49b51b50edec49e93
volatile.eth0.hwaddr: 00:16:3e:5e:7b:f6
volatile.idmap.base: "0"
volatile.idmap.next:
'[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid
":165536,"Nsid":0,"Maprange":65536}]'
volatile.last_state.idmap:
'[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid
":165536,"Nsid":0,"Maprange":65536}]'
volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""
6. 运行容器 bash
root@localhost:~# lxc exec test -- /bin/bash
root@test:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:
Ubuntu 16.04.7 LTS
Release:
16.04
Codename:
xenial
root@test:~#
root@test:~# exit
exit
。
注意:如果提示容器未启动,请手动执行 lxc start test
root@localhost:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:
Ubuntu 18.04.1 LTS
Release:
18.04
Codename:
bionic
7. 文件下载测试
- 61 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
root@localhost:~# ls
dhry.res DI Net_Tools
root@localhost:~# lxc file pull test/etc/hosts .
root@localhost:~# ls
hosts wifi.sh
8. 文件上传测试
root@localhost:~# ls
dhry.res DI hosts Net_Tools
root@localhost:~# lxc file push test/etc/hosts .
root@localhost:~# ls
hosts wifi.sh
9. 停止容器
root@localhost:~# lxc stop test
root@localhost:~# lxc list
+------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 |
TYPE
| SNAPSHOTS |
+------+---------+------+------+------------+-----------+
| test | STOPPED |
|
| PERSISTENT |
0
|
+------+---------+------+------+------------+-----------+
10. 删除容器
root@localhost:~# lxc delete test
3.2.5.3 QEMU 基本环境测试
QEMU 是一种通用的开源机器仿真器和虚拟化器。QEMU 支持两种操作模式:用户模式仿真和系统
模式仿真。用户模式仿真 允许一个 CPU 构建的进程在另一个 CPU 上执行(执行主机 CPU 指令的动
态翻译并相应地转换 Linux 系统调用)。系统模式仿真,允许对整个系统进行仿真,包括处理器和配套的
外围设备。
下面将介绍在 OK1046A-C2 平台对系统进行仿真。以开发板 IP 为 192.168.1.105 为例。

路径:OK1046A-C2(Linux)用户资料\工具\qemu
请将用户资料工具目录下的 qemu 文件夹拷贝到开发板根目录:
root@localhost:~# ls /qemu/
qemu-ifup qemu.ext4.img
1. Run KVM Using Hugetlbfs
root@localhost:~# echo 256 > /proc/sys/vm/nr_hugepages
root@localhost:~# mkdir /boot/hugetlbfs
root@localhost:~# mount -t hugetlbfs none /boot/hugetlbfs/
2. Start qemu
root@localhost:~# qemu-system-aarch64 -smp 1 -m 512 -mem-path /boot/hugetlbfs/ \-cpu host \
-machine type=virt -kernel /run/media/mmcblk0p2/boot/Image -enable-kvm -display none \
-serial tcp::4446,server,telnet -drive if=none,file=/qemu/qemu.ext4.img,id=foo,format=raw \
-device virtio-blk-device,drive=foo -append 'root=/dev/vda rw console=ttyAMA0 rootwait \
earlyprintk' -monitor stdio
- 62 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
在同一局域网的 windows 主机的 cmd 使用 telnet 登录虚拟机:
telnet 192.168.1.105 4446
3. 配置网络
将网线插入 fm1-mac6 接口,查看自动获取的 IP
root@localhost:~# ifconfig fm1-mac6
- 63 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
在 OK1046A-C2 上配置网桥,这里以 192.168.1.105 为例,具体 IP 请以实际为准(保证开发板使用
该 IP)
root@localhost:~# brctl addbr br0
root@localhost:~# ifconfig br0 192.168.1.105 netmask 255.255.255.0
root@localhost:~# ifconfig fm1-mac6 0.0.0.0
root@localhost:~# brctl addif br0 fm1-mac6
启动 qemu
root@localhost:~# qemu-system-aarch64 -smp 1 -m 512 -cpu host -machine type=virt \
-kernel /run/media/mmcblk0p2/boot/Image -enable-kvm -display none \
-serial tcp::4446,server,telnet \
-drive if=none,file=/qemu/qemu.ext4.img,id=foo,format=raw -device virtio-blk-device,drive=foo \
-netdev tap,id=tap0,script=/qemu/qemu-ifup,downscript=no,ifname="tap0" \
-device virtio-net-pci,netdev=tap0 -append 'root=/dev/vda rw console=ttyAMA0 rootwait \
earlyprintk' -monitor stdio
在同一局域网内的 windows 主机的 cmd 使用 telnet 登录虚拟机
telnet 192.168.1.105 4446
查看网卡状态
/# ifconfig -a
配置网卡 IP:
/# ifconfig eth0 192.168.1.201 netmask 255.255.255.0
Ping 测试:
- 64 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
/# ping 192.168.1.1
4. 使用虚拟磁盘
在 OK1046A-C2 平台上创建磁盘文件
root@localhost:~# dd if=/dev/zero of=/boot/my_guest_disk bs=4K count=4K
启动 qemu
root@localhost:~# qemu-system-aarch64 -smp 1 -m 512 -cpu host -machine type=virt \
-kernel /run/media/mmcblk0p2/boot/Image -enable-kvm -display none \
-serial tcp::4446,server,telnet \
-drive if=none,file=/qemu/qemu.ext4.img,id=foo,format=raw -device virtio-blk-device,drive=foo \
-drive if=none,file=/boot/my_guest_disk,cache=none,id=user,format=raw \
-device virtio-blk-pci,drive=user -append 'root=/dev/vda rw console=ttyAMA0 rootwait
earlyprintk' \
-monitor stdio
在同一局域网的 windows 主机的 cmd 使用 telnet 登录虚拟机(IP 为 fm1-mac6 的 IP)
- 65 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
telnet 192.168.1.105 4446
查看虚拟磁盘
/#ls /dev/vdb
/dev/vdb
使用 fdisk 对虚拟磁盘分区
/# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xc9820d64.
Command (m for help):
Command (m for help): p
Disk /dev/vdb: 16 MiB, 16777216 bytes, 32768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc9820d64
Command (m for help):
Command (m for help): n
Partition type
- 66 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-32767, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-32767, default 32767):
Created a new partition 1 of type 'Linux' and of size 15 MiB.
Command (m for help):
Command (m for help): p
Disk /dev/vdb: 16 MiB, 16777216 bytes, 32768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc9820d64
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 32767 30720 15M 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
虚拟磁盘格式化
/# mkfs.vfat /dev/vdb1
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 15360 1k blocks and 3840 inodes
Filesystem UUID: 8f0c49e4-2737-498e-a984-c5f05ba59b99
Superblock backups stored on blocks:
8193
Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
挂载分区测试
/# mount /dev/vdb1 /mnt
/# echo "A virtual disk" > /mnt/test.txt
/# cat /mnt/test.txt
A virtual disk
5. 使用物理磁盘
Qemu 使用 host 主机的 /dev/mmcblk0 磁盘,注意该磁盘的内容被 qemu 格式化后会丢失。
root@localhost:~# qemu-system-aarch64 -smp 1 -m 512 -cpu host -machine type=virt \
- 67 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
-kernel /run/media/mmcblk0p2/boot/Image -enable-kvm -display none \
-serial tcp::4446,server,telnet \
-drive if=none,file=/qemu/qemu.ext4.img,id=foo,format=raw -device virtio-blk-device,drive=foo \
-object iothread,id=iothread0 \
-drive if=none,file=/dev/mmcblk0,cache=none,id=drive0,format=raw,aio=native \
-device virtio-blk-pci,drive=drive0,scsi=off,iothread=iothread0 \
-append 'root=/dev/vda rw console=ttyAMA0 rootwait earlyprintk' -monitor stdio
在同一局域网的 windows 主机的 cmd 上使用 telnet 登录 qemu
telnet 192.168.1.105 4446
查看物理磁盘
/ # ls /dev/vdb*
/dev/vdb
/dev/vdb1 /dev/vdb2 /dev/vdb3
- 68 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
这里的 vdb1 vdb2 vdb3 分别对应 OK1046A-C2 的 mmcblk0p1、mmcblk0p2、mmcblk0p3,我们挂
载第一个分区进行测试。
/# mount /dev/vdb2 /mnt
/# ls /mnt/boot
fsl-ok1046a-1040-5506-c3.dtb fsl-ok1046a-1133-5a59-c2.dtb Image ls1046ardb_boot.scr
6. 查看 qemu 的状态
启动 qemu
root@localhost:~# qemu-system-aarch64 -smp 1 -m 512 -cpu host -machine type=virt \
-kernel /run/media/mmcblk0p2/boot/Image -enable-kvm -display none \
-serial tcp::4446,server,telnet \
-drive if=none,file=/qemu/qemu.ext4.img,id=foo,format=raw -device virtio-blk-device,drive=foo \
-append 'root=/dev/vda rw console=ttyAMA0 rootwait earlyprintk' -monitor stdio
使用 telnet 登录开发板
telnet 192.168.1.105 4446 (IP 为开发板上网的 IP 请以实际为准)
在 putty 终端使用命令 info roms 命令查看磁盘
(qemu)info roms
- 69 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
查看寄存器
(qemu)info registers
3.2.6 OP-TEE 基本环境测试
TEE 背后的基本思想就是将和安全服务提取到独立的安全环境中去运行,当主系统有安全相关的操作
时,通过发动请求到安全环境获取系统预定义的服务。基于此 OP-TEE 可以分为三个部分,TEE 客户端
和用来和安全环境通讯的 TEE 驱动(这 2 个部分都运行在主系统 Linux),以及运行在安全环境中的 TEE OS
和在上面的安全应用,具体参见下图。
OK1046A-C2 平台的 OP-TEE OS 集成于 ppa.itb 固件中,启动 linux 内核可以见到如下打印信息:
optee: probing for conduit method from DT.
optee: initialized driver
OK1046A-C2 平台的文件系统中默认集成了 optee test 程序,可以对 optee os 进行一个全面的测试,
测试方法如下:
root@localhost:~# tee-supplicant &
root@localhost:~# xtest -l 15
- 70 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
//等待测试完成将出现测试结果如下:
…
regression_9523 OK
regression_9524 OK
+----------------------------------------------------47123 subtests of which 0 failed
79 test cases of which 0 failed
0 test case was skipped
TEE test application done!
测试程序源码位置:
测试源码
源码路径
Linux 应用程序
flexbuild/packages/apps/optee_test/host
OPTEE OS 端的 TA 程序
flexbuild/packages/apps/optee_test/ta
客户需要添加自己的 CA TA 程序时,只需要将编写到的 CA TA 程序放置于以上两个目录修改相应的
Makefile 文件即可。飞凌提供了一个简单的案例 mytest 测试程序。
mytest 测试程序源码位置:
测试源码
源码路径
Linux 应用程序
flexbuild/packages/apps/optee_test/host/mytest
OPTEE OS 端的 TA 程序
flexbuild/packages/apps/optee_test/ta/mytest
mytest 程序支持 sha1 sha256 两种安全散列算法,linux 应用程序将“www.forlinx.com”传递给
OPTEE OS 中的 TA 程序进行加密计算将结果返回给 linux 应用程序。
root@localhost:~# tee-supplicant &
root@localhost:~# mytest sha1
Entry sha1 CA
InitializeContext success
DEBUG: USER-TA:TA_CreateEntryPoint:43: has been called
FLOW:
USER-TA: tee_user_mem_alloc:343: Allocate: link:[0x40018c70],
buf:[0x40018c90:32]
DEBUG: USER-TA:TA_OpenSessionEntryPoint:81: Hello World!
OpenSession succDEBUG: USER-TA:g_CryptoTaHandle_Sha:107: 1557
ess
DEBUG: USER-TA:l_CryptoTaHash_sha:43: The md is sha1
FLOW:
USER-TA: tee_user_mem_alloc:343: Allocate: link:[0x40018bd0],
buf:[0x40018bf0:96]
FLOW:
USER-TA: tee_user_mem_free:442: Free: link:[0x40018bd0], buf:[0x40018bf0:96]
InvokeCommand suDEBUG: USER-TA:TA_CloseSessionEntryPoint:94: Goodbye!
ccess
The respoFLOW:
USER-TA: tee_user_mem_free:442: Free: link:[0x40018c70],
buf:[0x40018c90:32]
nd data length iDEBUG: USER-TA:TA_DestroyEntryPoint:53: has been called
s 0x14
The Respond hash data from TA just like follow:
0x05, 0x1d, 0xff, 0x36, 0xdd, 0xaa, 0xf0, 0xed, 0x99, 0xe4, 0x8e, 0xce, 0x5e, 0x98, 0xdf, 0x5d,
- 71 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
0xa7, 0x55, 0xd2, 0xe2,
root@localhost:~# mytest sha256
Entry sha256 CA
InitializeContext success
DEBUG: USER-TA:TA_CreateEntryPoint:43: has been called
FLOW:
USER-TA:
tee_user_mem_alloc:343:
Allocate:
link:[0x40018c70],
buf:[0x40018c90:32]
DEBUG: USER-TA:TA_OpenSessionEntryPoint:81: Hello World!
OpenSession succDEBUG: USER-TA:g_CryptoTaHandle_Sha:107: 1557
ess
DEBUG: USER-TA:l_CryptoTaHash_sha:47: The md is sha256
FLOW:
USER-TA:
tee_user_mem_alloc:343:
Allocate:
link:[0x40018bd0],
buf:[0x40018bf0:96]
FLOW:
USER-TA: tee_user_mem_free:442: Free: link:[0x40018bd0], buf:[0x40018bf0:96]
InvokeCommand suDEBUG: USER-TA:TA_CloseSessionEntryPoint:94: Goodbye!
ccess
The respoFLOW:
USER-TA: tee_user_mem_free:442: Free: link:[0x40018c70],
buf:[0x40018c90:32]
nd data length iDEBUG: USER-TA:TA_DestroyEntryPoint:53: has been called
s 0x20
The Respond hash data from TA just like follow:
0x76, 0xb4, 0xdb, 0x61, 0xb5, 0x5e, 0xf8, 0x1b, 0x79, 0xdd, 0x72, 0xd2, 0x4e, 0x19, 0x15,
0x4d,
0x55, 0x86, 0xeb, 0xfb, 0xe1, 0xa1, 0x46, 0xa8, 0xfd, 0x8c, 0xda, 0x46, 0x7b, 0x7f, 0x02, 0xc0,
- 72 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
3.2.7 OpenSSL 基本环境测试
安全套接字层(ssl)协议是应用最广泛的应用协议,通过使用诸如 aes、des 和 3des 等密码算法对数据
进行加密,在传输过程中对数据进行保护。
使用 OpenSSL 前请先设置环境变量
root@localhost:~# export OPENSSL_CONF=/usr/local/openssl/openssl.cnf
测试对称加密 rsa 速度
root@localhost:~# openssl speed rsa1024
Doing 1024 bit private rsa's for 10s: 5129 1024 bit private RSA's in 9.98s
Doing 1024 bit public rsa's for 10s: 114201 1024 bit public RSA's in 9.98s
OpenSSL 1.0.2l 25 May 2017
built on: reproducible build, date unspecified
options:bn(64,64) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(ptr)
compiler: aarch64-linux-gnu-gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC
-DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H
-DHAVE_CRYPTODEV
-I/home/zyh/workspace/TEST/10xx_C_new/1046/OK10xx-linux-fs/flexbuild/build/apps/compone
nts_arm64/usr/local/include -O3 -Wall -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
sign
verify
sign/s
verify/s
rsa 1024 bits
0.001946s 0.000087s
513.9
11443.0
测试 AES 对称加密算法:
root@localhost:~# dd if=/dev/urandom of=test bs=1 count=5922
root@localhost:~# openssl enc -aes-128-cbc -e -in test -out test.enc -pass pass:123
root@localhost:~# openssl enc -aes-128-cbc -d -in test.enc -out test.dec -pass pass:123
root@localhost:~# diff test test.dec
测试 DES 对称加密算法:
root@localhost:~# dd if=/dev/urandom of=test bs=1 count=5922
root@localhost:~# openssl enc -des-ede3-cbc -e -in test -out test.enc -pass pass:123
root@localhost:~# openssl enc -des-ede3-cbc -d -in test.enc -out test.dec -pass pass:123
root@localhost:~# diff test test.dec
- 73 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
3.2.8
IPSEC 基本环境测试
该项功能设置较为复杂,建议在一定网络基础上开展。需要打开内核 netfilter match ipsec 功能,否则
iptables 不能被正常设置;如果提示 raw 表失败,可以不导入 raw 表,或者内核配置加 raw 表。
Gateway moon 为 OK1046A-C2 fm1-mac3 fm1-mac4 网口。其它 client 为标准 pc 机。
网络拓扑结构:
子网 192.168.0.0/24 使用 ipsec 加密通信,子网 192.168.1.0/24 使用明文通信。
1、 重新配置内核
[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->
<*>
IPsec "policy" match support
[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
IP: Netfilter Configuration --->
<*> raw table support (required for NOTRACK/TRACE)
2、 安装 Strongswan
root@localhost:~# apt-get install strongswan
//apt-get 安装 Strongswan
所有使用 ipsec 的主机及网关均需安装,非 root 权限需要加 sudo。
3、 Gateway moon 设置
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/strongswan.conf
/etc/ipsec.d/
ipsec.d 目录存放 CA 证书、私钥和公钥
- 74 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2

路径:OK10XX-C(Linux)用户资料\工具\ipsec
moon 相关文件参照 moon_server.tar.bz2
导入 iptables
root@localhost:~# iptables-restore < moon_iptables_1046.txt
root@localhost:~# ifconfig fm1-mac3 192.168.0.1
root@localhost:~# ifconfig fm1-mac4 192.168.1.250
4、 Roadwarrior carol 设置
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/strongswan.conf
/etc/ipsec.d/
ipsec.d 目录存放 CA 证书、私钥和公钥

路径:OK10XX-C(Linux)用户资料\工具\ipsec
相关文件见 carol_client.tar.bz2
导入 iptables
root@localhost:~# sudo iptables-restore < carol_iptables.txt
root@localhost:~# sudo ifconfig eth0 192.168.0.100
5、 Client alice 设置
alice 位于 192.168.1.0/24 网段内,需要设置 192.168.0.0/24 网关地址
root@localhost:~# sudo ifconfig eth0 192.168.1.107
root@localhost:~# sudo route add -net 192.168.0.0/24 dev eth0
root@localhost:~# sudo route add -net 192.168.0.0 gw 192.168.0.1 netmask 255.255.255.0
- 75 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
6、 启动 ipsec
a、在 moon 网关上执行
root@localhost:~# ipsec restart
b、在 carol 主机上执行
root@localhost:~# ipsec restart
root@localhost:~# ipsec up home
出现 connection 'home' established successfully 表示 ipsec 认证完成。
7、 carol 和 alice 的 ping 通信
目前位于不同网段的 carol 和 alice 具备通信功能,且 carol 所在子网内使用加密通信。
carol 主机对 alice 主机的 ping。
在网关 192.168.0.1 和 192.168.0.100 之间传递的是 ESP 密文,经过解析产生了 192.168.1.107 对
192.168.0.100 回复的明文。
3.2.9 DPDK 基本环境测试
DPDK 是用户空间包处理的框架,专注于网络应用中数据包的高性能处理,具体体现在 DPDK 应用
程序是运行在用户空间上,利用自身提供的数据平面库来收发数据包,绕过了 Linux 内核协议栈对数据包
的处理过程。OK1046A-C2 平台支持完整的 DPDK 环境,同时支持 OVS-DPDK,底层基于 DPDK 的 Open
VSwitch。
DPDK 的知识库:
http://doc.dpdk.org/guides-17.05/linux_gsg/index.html
下面以二层转发和三层转发为例,测试 OK1046A-C2 平台的 DPDK 环境。首先,使用 DPDK 环境,
需要修改设备树,将网络配置到用户态。需要使用到的设备树文件:
一网络配置为:1133 5a59 为例
 源码路径:OK10xx-linux-fs/flexbuild/build/linux/linux/arm64/fsl-ok1046a-usdpaa-1133-5a59-c2.dtb
将 fsl-ok1046a-usdpaa-1133-5a59-c2.dtb 拷贝到开发板根目录,使用如下命令替换设备树:
root@localhost:~# mv /run/media/mmcblk0p2/boot/fsl-ok1046a-1133-5a59-c2.dtb
- 76 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
/run/media/mmcblk0p2/boot/fsl-ok1046a-1133-5a59-c2.dtb.bak
root@localhost:~# cp /run/media/sda1/fsl-ok1046a-usdpaa-1133-5a59-c2.dtb
/run/media/mmcblk0p2/boot/fsl-ok1046a-1133-5a59-c2.dtb
root@localhost:~# reboot
替换成功后启动开发板输入:
root@localhost:~# ifconfig fm1-mac3
如果提示 Device not found 就是已经替换成功。
还需要删除现有的 fmc 配置表
root@localhost:~# mv /etc/fmc/config/private/ls1046ardb/FORLINX/config_1133.xml \
/etc/fmc/config/private/ls1046ardb/FORLINX/config_1133.xml.bak
测试 DPDK 完成后恢复默认配置方法:
root@localhost:~# cp /run/media/mmcblk0p2/boot/fsl-ok1046a-1133-5a59-c2.dtb.bak \
/run/media/mmcblk0p2/boot/fsl-ok1046a-1133-5a59-c2.dtb
root@localhost:~# cp /etc/fmc/config/private/ls1046ardb/FORLINX/config_1133.xml.bak \
/etc/fmc/config/private/ls1046ardb/FORLINX/config_1133.xml
root@localhost:~# reboot
3.2.9.1 二层转发测试
二层转发网络拓扑如下图所示:
使用 OK1046A-C2 平台 fm1-mac3 和 fm1-mac4,对 Linux Host 和 OK1012A-C 之间的数据进行转
发。Linux Host 和 OK1012A-C 。(这里您也可以替换成其他的网络设备)
1133 5a59 配置:
fm1-mac3 == port0
fm1-mac4 == port1
以 1133 5a59 配置为例:配置 OK1046A-C2:
root@localhost:~#echo 256 > /proc/sys/vm/nr_hugepages
root@localhost:~#mkdir /boot/hugetlbfs
root@localhost:~#mount -t hugetlbfs none /boot/hugetlbfs/
root@localhost:~#l2fwd -c 0xf -n 1 -- -p 0x3 -q 1 --no-mac-updating
参数
说明
-c
Core mask 0xf 使用 4 核
-n
内存通道数
-p
Port mask 0xc 二进制 0011 使用 port0 port1
-q
每个核的队列数量默认为 1
--no-mac-updating
转换后不替换 MAC
配置 OK1012A-C:
root@localhost:~#ifconfig eth0 192.168.1.200
root@localhost:~#tcpdump -i eth0 -vv -n -e
配置 Linux Host:
- 77 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
forlinx@ubuntu~$ifconfig eth0 192.168.1.120
forlinx@ubuntu~$sudo modprobe pktgen.ko
forlinx@ubuntu~$echo "add_device eth0" > /proc/net/pktgen/kpktgend_0
forlinx@ubuntu~$echo "dst_mac 6e:56:7d:85:ce:4d" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "dst 192.168.1.200" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "pkt_size 64" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "count 1000000" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "start" > /proc/net/pktgen/pgctrl
注意:如果您的主机不含有 pktgen 驱动,请自行配置内核编译驱动。
查看 OK1046A-C2:
查看 OK1012A-C:
3.2.9.2 三层转发测试
三层转发网络拓扑如下图所示:
使用 OK1046A-C2 对 192.168.1.0 网段和 192.168.2.0 网段之间的数据进行转发。
1133 5a59 配置:
fm1-mac3 == port0
fm1-mac4 == port1
以 1133 5a59 配置为例,配置 OK1046A-C2:
DPDK 中自带的 l3fwd lpm 路由表与我们的网络拓扑环境不一致,因此需要修改代码,
 源码路径:OK10xx-linux-fs/flexbuild /packages/apps/dpdk/examples/l3fwd/l3fwd_lpm.c
- 78 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
修改说明:
收到的 192.168.1.0/24 网段数据使用 port0 输出
收到的 192.168.2.0/24 网段数据使用 port1 输出
在 flex-build 环境中使用 flex-builder -c dpdk -a arm64 -m ls1046ardb 命令进行编译。
root@ubuntu:~/work/OK10xx-linux-fs/flexbuild# flex-builder -c dpdk -a arm64 -m ls1046ardb
将编译完的可执行程序 packages/apps/dpdk/examples/l3fwd/build/l3fwd 拷贝到开发板根目录。
/l3fwd -c 0x3 -n 1 -- -p 0x6 -P -L --config="(0,0,0),(1,0,1)" \
--eth-dest=2,74:27:ea:f7:8e:10 --eth-dest=3,6e:56:7d:85:ce:4d
参数
说明
-c
Core Mask
-n
内存通道数
-p
Port Mask
-P
promiscuous mode
-L
使用 LPM
--config
(Port, Queue, Core)绑定端口队列 cpu 核
--eth-dest
输出端口对应的目的 MAC 地址
配置 OK1012A-C:
root@localhost:~#ifconfig eth0 192.168.2.2
root@localhost:~#tcpdump -i eth0 -vv -n –e
配置 Linux Host:
forlinx@ubuntu~$ifconfig eth0 192.168.1.120
forlinx@ubuntu~$modprobe pktgen.ko
forlinx@ubuntu~$echo "add_device eth0" > /proc/net/pktgen/kpktgend_0
forlinx@ubuntu~$echo "dst_mac E2:1C:5E:C0:19:88" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "dst 192.168.2.2" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "pkt_size 64" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "count 1000000" > /proc/net/pktgen/eth0
forlinx@ubuntu~$echo "start" > /proc/net/pktgen/pgctrl
查看 OK1012A-C:
- 79 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
3.2.10
OVS-DPDK 基本环境测试
本节简单介绍利用 ovs-dpdk 搭建如下图的二层交换环境。
注意:参考 3.2.9 节使用设备树 fsl-ok1046a-usdpaa-1133-5a59-c2.dtb
root@localhost:~#echo 256 > /proc/sys/vm/nr_hugepages
root@localhost:~#mkdir -p /mnt/hugepages
root@localhost:~#mount -t hugetlbfs none /mnt/hugepages
root@localhost:~#export DPAA_FMC_MODE=1
root@localhost:~#fmc -c /usr/local/dpdk/dpaa/usdpaa_config_ls1046_1133.xml -p \
/usr/local/dpdk/dpaa/usdpaa_policy_hash_ipv4_1queue.xml -a
root@localhost:~#export DPAA_NUM_RX_QUEUES=1
root@localhost:~#pkill -9 ovs
root@localhost:~#export DPDK_EXCLUDE_DEFAULT_MBUF=1
root@localhost:~#export PATH=$PATH:/usr/local/bin
root@localhost:~#export PATH=$PATH:/usr/local/sbin
root@localhost:~#rm -rf /usr/local/etc/openvswitch/conf.db
root@localhost:~#rm -rf /usr/local/var/run/openvswitch/vhost-user1
root@localhost:~#rm -rf /usr/local/var/run/openvswitch/vhost-user2
root@localhost:~#rm -f /tmp/conf.db
root@localhost:~#mkdir -p /var/log/openvswitch
root@localhost:~#mkdir -p /usr/local/etc/openvswitch
- 80 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
root@localhost:~#mkdir -p /usr/local/var/run/openvswitch
root@localhost:~#/usr/local/bin/ovsdb-tool create \
/usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
/usr/local/sbin/ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach \
--log-file=/var/log/openvswitch/ovs-vswitchd.log
root@localhost:~#export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
root@localhost:~#/usr/local/bin/ovs-vsctl --no-wait set Open_vSwitch .
other_config:dpdk-init=true
root@localhost:~#export SOCK_MEM=200
root@localhost:~#/usr/local/bin/ovs-vsctl --no-wait set Open_vSwitch . \
other_config:dpdk-socket-mem="$SOCK_MEM"
root@localhost:~#export OVS_CORE_MASK=0x1
root@localhost:~#export OVS_SERVICE_MASK=0x1
root@localhost:~#ovs-vsctl --no-wait set Open_vSwitch .
other_config:dpdk-lcore-mask=$OVS_SERVICE_MASK
root@localhost:~#ovs-vsctl --no-wait set Open_vSwitch .
other_config:pmd-cpu-mask=$OVS_CORE_MASK
root@localhost:~#ovs-vswitchd unix:$DB_SOCK --pidfile --detach -c $OVS_CORE_MASK
root@localhost:~#ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
root@localhost:~#ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk \
options:dpdk-devargs=fm1-mac3 \
options:n_rxq_desc=256 options:n_txq_desc=256
ovs-vsctl add-port br0 dpdk1 -- set Interface dpdk1 type=dpdk \
options:dpdk-devargs=fm1-mac4 \
options:n_rxq_desc=256 options:n_txq_desc=256
root@localhost:~#ovs-ofctl del-flows br0 ovs-ofctl add-flow br0
"table=0,priority=100,arp,action=normal"
root@localhost:~#ovs-ofctl add-flow br0
"table=0,priority=100,ip,ct_state=-trk,action=ct(table=1)"
root@localhost:~#ovs-ofctl add-flow br0
"table=1,in_port=1,ip,ct_state=+trk+new,action=ct(commit),2"
root@localhost:~#ovs-ofctl add-flow br0 "table=1,in_port=1,ip,ct_state=+trk+est,action=2"
root@localhost:~#ovs-ofctl add-flow br0
"table=1,in_port=2,ip,ct_state=+trk+new,action=ct(commit),1"
root@localhost:~#ovs-ofctl add-flow br0 "table=1,in_port=2,ip,ct_state=+trk+est,action=1"
root@localhost:~#ovs-vsctl --no-wait set Open_vSwitch . other_config:emc-insert-inv-prob=1
使用网线连接 Host1、OK1046A-C2、Host2,使用以下命令测试转发性能:
Host1:
root@localhost:~#iperf3 -s
Host2:
root@localhost:~#iperf3 -c 192.168.1.120 -i 1 -t 60
- 81 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
- 82 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
第四章 烧写系统
OK1046A_C3 开发板目前支持 U 盘系统。在烧写系统的时候有两种情况:第一种情况是系统能够正
常启动,直接用 U 盘烧写镜像即可;第二种情况是系统变砖了不能正常启动,用户需要制作烧写 TF 卡来
引导 uboot 启动,同时配合 U 盘烧写。
4.1 U 盘烧写
 说明:
 OK1046A-C2 有两款核心板,分别为 V1.X 版本和 V2.X 版本,用户可以看所拿到的核心板上的丝印
来判断核心板的版本,选择对应的出厂镜像;
 U 盘格式:FAT32 格式,U 盘大小大于 4G,拷贝镜像前先将 U 盘格式化一下;
 V1.x 出厂镜像文件路径:/用户资料/Linux/V1.x 核心板/镜像/1046_V1_C3_Ubuntu_images
 V2.x 出厂镜像文件路径:/用户资料/Linux/V2.x 核心板/镜像/1046_V2_C3_Ubunutu_images
OK1046A-C2 平台可以使用 U 盘来烧写文件系统到 eMMC 中,或者更新 QSPI flash 中的 Firmware。
前提是 Uboot 能够正常启动,用 U 盘更新系统时需要一个 FAT32 格式的 U 盘存放烧写镜像,请使用普通
正品 U 盘,U 盘的第一个分区为 FAT32 且大于 4G,拷贝镜像前先将 U 盘格式化一下。
将出厂镜像拷贝到做好的 U 盘里面,U 盘镜像文件说明如下:
镜像名称
说明
ls1046ardb_update.scr
Scripts
usb_update.itb
Tools
ubuntu.img
Rootfs
firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
Firmware
config.ini
Config
boot
内核和设备树等
U 盘 FAT32 分区存放以下文件:
其中 rootfs 和 firmware 可以选择其一进行放置,也可全部放置。配置文件 config.ini 内容如下:
[config]
platform=ok1046-c
qspifirmware=firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
sdfirmware=firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
rootfs=ubuntu.img
qspiflash=false
emmcflash=true
注意:
默认配置烧写时只更新文件系统,
如果您需要同时更新 QSPI Flash,
请将 config.ini 文件中
“qspiflash”
- 83 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
字段修改为“true”。
将做好的 U 盘插入开发板的 USB 口,如下所示:
上电启动系统会自动进入烧写流程, 部分烧写打印信息如下所示:
==================================================================
+---------------+------------------------------------------------+
|platform
|ok1046-c
|rootfs
|ubuntu.img
|qspiflash
|false
|emmcflash
|true
|sdfirmware
|firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
|qspifirmware |firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
+---------------+------------------------------------------------+
==================================================================
[emmc partition]
==================================================================
2048+0 records in
2048+0 records out
1048576 bytes (1.0MB) copied, 0.052539 seconds, 19.0MB/s
parting, wait ...
[
6.936641] random: parted: uninitialized urandom read (16 bytes read)
part, done.
formating, wait ...
format, done.
==================================================================
[emmc flash]
==================================================================
flashing, wait...
29270+1 records in
29270+1 records out
14986242 bytes (14.3MB) copied, 0.786920 seconds, 18.2MB/s
[
7.905621] random: crng init done
- 84 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
flash, done.
[ 85.754609] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
[Done] 79s
==================================================================
出现如上所示打印信息说明系统烧写成功了,断电将 U 盘拔下,重新上电即可。
4.2 制作烧写 TF 卡
 说明:
 TF 卡格式为 FAT32 格式;
 使用 TF 卡引导烧写前需要将拨码开关 A 拨为 ON——TF 启动
 由于 QSPI flash 里面的 uboot 镜像损坏了,故需要重新烧写 QSPI flash,需要将 U 盘里面的 config.ini
文件中“qspiflash”字段修改为“true”。
OK1046A-C2 uboot 默认是从 QSPI flash 引导系统启动,当 QSPI flash 不能正常引导系统启动时需
要制作 TF 卡来引导系统启动,配合 U 盘烧写系统;
OK1046A-C2 平台含有一个 TF 卡接口,但是由于它与 eMMC 冲突,一般情况下无法使用,但是我们
可以使用它来引导系统启动,启动之后拔出 TF 卡,系统自动将 Flash 切换到 eMMC。当然前提需要我们
将 firmware 烧到 TF 卡中,下面是制作烧写 TF 卡的过程。
1.将 TF 卡通过 USB 读卡器插入主机,并将其连接到虚拟机 Ubuntu 中,(如果读卡器没有被虚拟机
识别,可以使用以下方式将读卡器识别到虚拟机)
2.查看设备节点
forlinx@ubuntu:~$ ls /dev/sdb*
/dev/sdb /dev/sdb1
3.烧写 firmware 固件到 TF 卡
OK1046A-C2 有两款核心板,分别为 V1.X 版本和 V2.X 版本,用户可以看所拿到的核心板上的丝印
来判断核心板的版本,制卡时需要用相对应的制卡镜像,制卡镜像路径如下所示:
 V1.x 版本核心板制卡镜像路径:用户资料/手册/1046 用户手册 6.2 章节制作 TF 烧写卡用镜像/V1.x 版本
核心板/firmware_ls1046ardb_uboot_sdboot_1040_5506.img
 V2.x 版本核心板制卡镜像路径:用户资料/手册/1046 用户手册 6.2 章节制作 TF 烧写卡用镜像/V2.x 版本
核心板/firmware_ls1046ardb_uboot_64bit_sdboot_1040_5506.img
- 85 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
这里以做 V1.x 版本核心板烧写 TF 为例,将制卡镜像拷贝到 ubuntu 的 work 目录下,做如下操作将镜
像写入 TF 卡:
forlinx@ubuntu:~/work/$ sudo dd \
if=firmware_ls1046ardb_uboot_sdboot_1040_5506.img of=/dev/sdb seek=8 bs=512
29270+1 records in
29270+1 records out
14986242 bytes (15 MB, 14 MiB) copied, 11.3759 s, 1.3 MB/s
如上所示表明制卡成功,用做好的 TF 卡引导系统,同时配合 U 盘来烧写系统,烧写 U 盘的制作参考
U 盘烧写。
将做好的 TF 卡插入 TF 卡座,将做好的 U 盘插入底板的 USB 接口,将拨码开关 A 拨为 ON(拨码开
关状态如下所示),启动开发板,从一上电开始连续敲击空格键,是系统停在 uboot 命令行,此时弹出 TF
卡,系统自动将切换到 eMMC,输入 boot 进入烧写流程。
TF 卡烧写时拨码开关状态
部分烧写打印信息如下所示:
U-Boot SPL 2018.03-dirty (May 26 2020 - 12:34:31 +0800)
Initialzing DDR using fixed setting
Configuring DDR for 2100 MT/s data rate
Trying to boot from MMC1
TF 卡
U-Boot 2018.03-dirty (May 26 2020 - 12:34:31 +0800)
SoC: LS1046AE Rev1.0 (0x87070010)
Clock Configuration:
CPU0(A72):1800 MHz CPU1(A72):1800 MHz CPU2(A72):1800 MHz
CPU3(A72):1800 MHz
Bus:
700 MHz DDR:
2100 MT/s FMAN:
800 MHz
Reset Configuration Word (RCW):
00000000: 0e150012 10000000 00000000 00000000
00000010: 10405506 40005012 40025000 c1000000
00000020: 00000000 00000000 00000000 00238996
00000030: 20044500 00001002 00000096 00000001
Model: OK1046-C
Board: LS1046ARDB, boot from SD/eMMC
SERDES Reference Clocks:
SD1_CLK1 = 100.00MHZ, SD1_CLK2 = 156.25MHZ
SD2_CLK1 = 100.00MHZ, SD2_CLK2 = 100.00MHZ
I2C: ready
- 86 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
DRAM: 1.9 GiB (DDR4, 32-bit, CL=15, ECC off)
SEC0: RNG instantiated
FSL_SDHC: 0
PPA Firmware: Version LSDK-18.06-Forlinx
SEC Firmware: 'loadables' present in config
loadables: 'trustedOS@1'
DS2460 OK
Using SERDES1 Protocol: 4160 (0x1040)
Using SERDES2 Protocol: 21766 (0x5506)
MMC: Loading Environment from MMC... *** Warning - bad CRC, using default environment
Failed (-5)
In:
serial
Out: serial
Err: serial
SATA link 0 timeout.
AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: 64bit ncq pm clo only pmp fbss pio slum part ccc apst
Found 0 device(s).
SCSI: Net:
MMC read: dev # 0, block # 18432, count 128 ...
Fman1: Data at 00000000fbc4c020 is not a firmware
PCIe0: pcie@3400000 Root Complex: no link
PCIe1: pcie@3500000 Root Complex: no link
PCIe2: pcie@3600000 Root Complex: no link
No ethernet found.
Hit any key to stop autoboot: 0
=> boot
// 进入 uboot 命令行, 此时弹出 TF 卡,输入 boot 命令进入烧写流
程
starting USB...
[…]
//省略中间打印信息
+---------------+------------------------------------------------+
|platform
|ok1046-c
|rootfs
|ubuntu.img
|qspiflash
|true
|emmcflash
|true
|sdfirmware
|firmware_ls1046ardb_uboot_sdboot_1133_5a59.img
|qspifirmware |firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
+---------------+------------------------------------------------+
==================================================================
[erase qspi]
==================================================================
Erasing 4 Kibyte @ 1000 - 0% complete.[
7.117312] random: crng init done
Erasing 4 Kibyte @ 1000000 - 100% complete.
- 87 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
==================================================================
[flash qspi]
==================================================================
flashing, wait ...
29278+1 records in
29278+1 records out
14990338 bytes (14.3MB) copied, 197.133481 seconds, 74.3KB/s
real
3m 17.13s
user
0m 0.00s
sys
0m 0.15s
flash done.
==================================================================
[emmc partition]
==================================================================
2048+0 records in
2048+0 records out
1048576 bytes (1.0MB) copied, 0.052741 seconds, 19.0MB/s
parting, wait ...
part, done.
formating, wait ...
format, done.
==================================================================
[emmc flash]
==================================================================
flashing, wait...
29270+1 records in
29270+1 records out
14986242 bytes (14.3MB) copied, 0.787546 seconds, 18.1MB/s
flash, done.
[ 466.333036] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
[Done] 460s
==================================================================
如上所示表示系统烧写成功。用户烧写的时候使用的是 TF 卡引导烧写的,烧写完成后需要将拨码开
关 A 拨为 OFF,拔出 U 盘再重新上电启动。
4.3 TFTP 烧写 QSPI
4.3.1 TFTP 环境搭建
Tftp 是用来远程下载文件的常用网络协议,基于 udp 实现,在嵌入式调试开发过程中经常用来从 Host
主机下载文件到开发板,避免繁琐的 U 盘拷贝过程。本节主要讲解 Host 端的 tftp server 的环境搭建,飞
凌提供的 ubuntu18.04 中默认已经安装好了 tftp server 您可以略过此节。
安装前请确保您的虚拟机可以访问网络,首先安装 tftp-hpa 和 tftpd-hpa(前者是客户端,后者是服
务程序)以及 xinetd。
- 88 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
forlinx@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa xinetd
//使用apt安装需要的程序
forlinx@ubuntu:~$ sudo service tftpd-hpa restart
//以系统管理者的身份重启tftp服务
forlinx@ubuntu:~$ cat /etc/default/tftpd-hpa
//cat查看tftp配置文件
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
默认的 tftp 目录为 /var/lib/tftpboot 保持默认即可,下面进行本地 tftp 测试:
forlinx@ubuntu:~$ sudo chmod 777 -R /var/lib/tftpboot
//授权文件可读写可执行
[sudo] password for forlinx:
//需要输入密码:forlinx,按回车
forlinx@ubuntu:~$ echo "www.forlinx.com" > /var/lib/tftpboot/test
//在文件中输入字段
forlinx@ubuntu:~$ tftp localhost
//通过 tftp 获取文件
tftp> get test
tftp> q
forlinx@ubuntu:~$ ls test
//查看当前目录下的文件test
test
forlinx@ubuntu:~$ cat test
//查看test的内容
www.forlinx.com
test 的内容为刚写入的内容说明本地测试成功。
4.3.2 TFTP 烧写 QSPI
OK1046A-C2 平台的 uboot 阶段可以使用以太网,并且 uboot 中支持 tftp 协议,因此我们只需要稍加
配置开发板的网络,便可以通过 tftp 将文件从 Host 主机下载到开发板的内存,然后烧写到 qspi 中。下面
演示网络配置以及烧写过程。注意,用户的网络环境各不相同,配置网络时,具体的 IP 信息等请以实际
为准。
虚拟机要设置为桥接模式,查看虚拟机 IP(这里以 172.16.0.77 为例,具体 IP 请根据用户实际情况):
forlinx@ubuntu:~$ ifconfig
//获取网络接口配置信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.77 netmask 255.255.255.0 broadcast 172.16.0.255
inet6 fe80::e102:44b4:d3e9:6f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0c:27:d4 txqueuelen 1000 (Ethernet)
RX packets 890249 bytes 1300419308 (1.3 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 143750 bytes 9922163 (9.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1554 bytes 126929 (126.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1554 bytes 126929 (126.9 KB)
- 89 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
拷贝 Firmware 文件到 TFTP 目录(该路径为全编译生成镜像的路径):
forlinx@ubuntu:~$ cp
/home/forlinx/work/OK10xx-linux-fs/flexbuild/build/images/firmware_ls1046ardb_uboot_qspiboot_1133_
5a59.img /var/lib/tftpboot/
//复制firmware固件到/var/lib/tftpboot目录下
将网线插入 P13 上的网口,开发板上电,连续敲击空格键,使开发板停留在 uboot 命令行。
[…]
//省略部分打印信息
PCIe0: pcie@3400000 disabled
PCIe1: pcie@3500000 Root Complex: no link
PCIe2: pcie@3600000 Root Complex: x1 gen1
FM1@DTSEC1, FM1@DTSEC2, FM1@DTSEC3 [PRIME], FM1@DTSEC4, FM1@DTSEC5,
FM1@DTSEC6, FM1@TGEC1
Hit any key to stop autoboot: 0
=> setenv ipaddr 172.16.0.79
//设置开发板IP
=> setenv serverip 172.16.0.77
//配置Server IP
=> ping 172.16.0.77
//ping测试
Using FM1@DTSEC3 device
host 172.16.0.77 is alive
// Host is alive 表示网络通信正常
=> tftp 0x90000000 firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img
// Host is alive 表示网络通信正常,下载文件到内存
Using FM1@DTSEC3 device
TFTP from server 172.16.0.77; our IP address is 172.16.0.79
Filename 'firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img'.
Load address: 0x90000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
###############################################
3.4 MiB/s
done
- 90 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
Bytes transferred = 14990338 (e4bc02 hex)
=> sf probe 0:0
//进行连接flash
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
=> sf erase 0 0x1000000
//擦除编移 0x0 处到 0x1000000 之间的擦除块
SF: 16777216 bytes @ 0x0 Erased: OK
=> sf write 0x90000000 0 0x1000000
//把内存 0x90000000 处的数据,写入falsh的偏移 0x0 处,写入数据长度为 0x1000000(16MB)
device 0 whole chip
SF: 16777216 bytes @ 0x0 Written: OK
=>reset
//重启uboot
resetting ...
U-Boot 2018.03 (Dec 08 2021 - 15:49:05 +0800)
SoC: LS1046AE Rev1.0 (0x87070010)
Clock Configuration:
CPU0(A72):1800 MHz CPU1(A72):1800 MHz CPU2(A72):1800 MHz
CPU3(A72):1800 MHz
Bus:
700 MHz DDR:
2100 MT/s FMAN:
800 MHz
Reset Configuration Word (RCW):
00000000: 0e150012 10000000 00000000 00000000
00000010: 11335a59 40005012 40025000 c1000000
00000020: 00000000 00000000 00000000 00238996
00000030: 20044500 00001002 00000096 00000001
Model: OK1046-C
Board: LS1046ARDB, boot from QSPI
SERDES Reference Clocks:
SD1_CLK1 = 100.00MHZ, SD1_CLK2 = 156.25MHZ
SD2_CLK1 = 100.00MHZ, SD2_CLK2 = 100.00MHZ
I2C: ready
DRAM: Initialzing DDR using fixed setting
Configuring DDR for 2100 MT/s data rate
1.9 GiB (DDR4, 32-bit, CL=15, ECC off)
SEC0: RNG instantiated
PPA Firmware: Version LSDK-18.06-Forlinx
SEC Firmware: 'loadables' present in config
loadables: 'trustedOS@1'
DS2460 OK
Using SERDES1 Protocol: 4403 (0x1133)
Using SERDES2 Protocol: 23129 (0x5a59)
MMC: FSL_SDHC: 0
Loading Environment from SPI Flash... SF: Detected w25q128bv with page size 256 Bytes,
erase size
- 91 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
[…]
烧写完成后输入 reset 命令重启 uboot,如上所示说明烧写成功。
4.4 单步更新内核
OK1046A_C3 内核镜像烧写到 emmc 的 mmcblk0p2 分区,如果单独更新内核镜像,只需要更新里面
的同名镜像即可实现。以替换 fsl-ok1046a-1133-5a59-c2.dtb 设备树为例,具体操作如下:
root@localhost: cd /run/media/mmcblk0p2/
//进入分区路径
root@localhost:/run/media/mmcblk0p2# ls
boot
//此文件存放内核镜像
root@localhost:/run/media/mmcblk0p2# cd boot/
root@localhost:/run/media/mmcblk0p2/boot# ls
fsl-ok1046a-1133-5a59-c2.dtb fsl-ok1046a-1040-5506-c3.dtb Image ls1046ardb_boot.scr
将需要替换的镜像拷贝到 U 盘中,将 U 盘插到开发板 usb 接口,U 盘挂载路径为/run/media/sda1,
将 U 盘中的镜像复制到此分区中
root@localhost:/run/media/mmcblk1p1/boot#cp /run/media/sda1/fsl-ok1046a-1133-5a59-c2.dtb
fsl-ok1046a-1133-5a59-c2.dtb
root@localhost:/run/media/mmcblk1p1/boot# sync
//保存
root@localhost:/run/media/mmcblk1p1/boot# reboot
//重启
- 92 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
声 明
本手册版权归保定飞凌嵌入式技术有限公司所有。未经本公司的书面许可,任何单位和个人无权以任
何形式复制、传播、转载本手册的任何部分,违者将被追究法律责任。
保定飞凌嵌入式有限公司所提供的所有服务内容旨在协助用户加速产品的研发进度,在服务过程中所
提供的任何程序、文档、测试结果、方案、支持等资料和信息,都仅供参考,用户有权不使用或自行参考
修改,本公司不提供任何的完整性、可靠性等保证,若在用户使用过程中因任何原因造成的特别的、偶然
的或间接的损失,本公司不承担任何责任。
- 93 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
更多帮助
注意事项与维护
请勿带电插拔核心板及外围模块!
请遵循所有标注在产品上的警示和指引信息。
请保持本产品干燥。如果不慎被任何液体泼溅或浸润,请立刻断电并充分晾干。
使用中注意本产品的通风散热,避免温度过高造成元器件损坏。
请勿在多尘、脏乱的环境中使用或存放本产品。
请勿将本产品应用在冷热交替环境中,避免结露损坏元器件。
请勿粗暴对待本产品,跌落、敲打或剧烈晃动都可能损坏线路及元器件。
请勿使用有机溶剂或腐蚀性液体清洗本产品。
请勿自行修理、拆卸本公司产品,如产品出现故障请及时联系本公司进行维修。
擅自修改或使用未经授权的配件可能损坏本产品,由此造成的损坏将不予以保修。
资料的更新
资料获取
产品相关资料会不断的完善更新,本手册内
容亦然如此;当您在使用这些内容时,请确保其
为最新状态。
飞凌嵌入式产品资料更新通知采用微信公众
号推送,敬请关注!
请登录飞凌官方论“bbs.witech.com.cn”→“开发
板资料下载”选择对应平台下载;
下载前请阅读《资料下载说明》:
http://bbs.witech.com.cn/thread-67932-1-1.html
。
售后服务政策
送修地址
如产品使用过程中出现硬件故障可根据售后服
务政策进行维修;
服务政策:参见官方网站 www.forlinx.com 售后
服务说明;
地 址:河北省保定市高开区向阳北大街 2699 号
飞凌嵌入式技术有限公司新楼五层售后维修部
联系人:售后维修部
电 话:0312-3102650-952、953
邮编:071000
邮寄须知:建议使用顺丰、圆通或韵达,且不接
收任何到付。
技术支持范围
技术讨论范围
1. 本公司产品的软、硬件资源提供情况咨询;
2. 本公司产品的软、硬件手册使用过程中遇到的
源码的修改以及理解;
操作系统如何移植;
- 94 -
www.forlinx.com
OK1046A-C2 ubuntu 用户使用手册
FET1046A-C、OK1046A-C2
问题;
用户自行修改以及开发中遇到的软硬件问题;
注:以上三点虽不属于技术支持范围,但我公司
会尽力为用户提供帮助,如仍然没能解敬请谅解。
技术支持方式
技术支持时间
1. 电话:0312-3119192
2. 论坛:bbs.witech.com.cn
3. 邮箱:
Linux 技术支持: linux@forlinx.com
Android 技术支持: android@forlinx.com
硬件技术支持: hardware@forlinx.com
4. 知识库:bbs.witech.com.cn/kb
周一至周五:上午 9:00—11:30;
下午 13:30—17:00;
公司按照国家法定节假日安排休息,在此期间无
法提供技术支持,请将问题发送至邮箱或论坛技
术支持区,我们会在工作日尽快给您回复。
- 95 -
www.forlinx.com
Download