前言
上手教程
升级固件
介绍
使用USB线缆升级固件
MaskRom 模式
使用 SD 卡升级固件
Linux开发
编译 Linux 固件
Firefly Linux 开发指南
技术案例
Android开发
ADB 使用
编译环境搭建
编译 Android9.0 固件
其他
U-Boot 使用
NPU使用
驱动开发
ADC 使用
GPIO 使用
I2C 使用
IR 使用
LCD使用
LED 使用
MIPI CSI 使用
RTC 使用
PWM 使用
SPI 使用
定时器使用
UART 使用
CAN 使用
配件
串口模块
屏幕模组
摄像头模组
无线模块
12V电源适配器
红外遥控器
散热套件
常见问题解答
硬件资料
Firefly Android 使用手册
FireflyApi
资源下载
AIO-3399ProC
产品规格书

前言

概述

本文档主要介绍基于 AIO-3399ProC 平台的开发方法。

OS 版本

OS 名称 内核版本 支持情况 维护情况
Linux 4.4 主要维护
Linux 4.19 维护
Android7.1   × ×
Android7.1 industry   × ×
Android8.1   × ×
Android9.0   主要维护
Android10.0   × ×

文档当前版本

  当前版本
文档名称 AIO-3399ProC 开发手册
版本号 V2.0.6
作者 Firefly Team
修改日期 2022-03-10

修订记录

  • V2.0.6

    • 更新时间:2022-03-10

    • 更新内容:

      • 《更新固件介绍》进行改版,加入图标方便用户阅读。

        • 加入不同工作模式对比图。

        • 添加不同升级模式之间的对比表格。

        • 对《MaskRom 升级模式》进行重新说明。

        • 不同升级模式的使用场景进行说明等。

      • 添加《导出设备系统》到《更多技术案例》。

      • 修正部分下载链接。

  • V2.0.5

    • 更新时间:2022-02-01

    • 更新内容:

      • 对《驱动开发》进行补充说明。

      • 补充部分图片。

      • 更新部分下载链接。

      • Faq: 增加HDMI 4K 解决方案。。

      • 添加了《ubuntu 固件更新日志》。

      • Linux 支持 kernel-4.19 版本。

  • V2.0.4

  • V2.0.3

    • 更新时间:2021-11-9

    • 更新内容:

      • 新增《前言》,主要描述产品 Wiki 修订记录和 OS 版本。

  • V2.0.2

  • V2.0.1

    • 更新时间:2021-10-29

    • Android 更新内容:

      • 驱动开发->LCD使用: 新增toshiba TC358775XBG 的支持。

      • 修正部分下载链接。

上手教程

串口调试

如果正在进行 U-Boot 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。

选购适配器

网店上有许多 USB 转串口的适配器,按芯片来分,有以下几种:

串口 最高波特率 是否推荐 评价 购买链接
CP2104 2Mbps 推荐 支持高波特率通信,稳定性好耐用 点击购买
CH340 2Mbps 不推荐 firefly和许多客户在实际使用中发现,市面上很多CH340的实际波特率达不到1.5Mbps,这给开发过程造成很多麻烦  
PL2303 1.2Mbps 不推荐 最高波特率达不到1.5Mbps  

注意: AIO-3399ProC 默认的波特率是 1500000,有些USB转串口芯片波特率无法达到 1500000,同一芯片的不同系列也可能会有差异,所以在选购之前一定要确认是否支持。

硬件连接

串口转 USB 适配器,有四个引脚:

  • 3.3V 电源(NC),不需要连接

  • GND,串口的地线,接开发板串口的 GND 针

  • TXD,串口的输出线,接开发板串口的 TX 针

  • RXD,串口的输入线,接开发板串口的 RX 针

注意: 如使用其它串口适配器遇到 TX 和 RX 不能输入和输出的问题,可以尝试对调 TX 和 RX 的连接。

AIO-3399ProC 串口连接图:

_images/debug_connection.jpg

串口参数配置

AIO-3399ProC 使用以下串口参数:

  • 波特率:1500000

  • 数据位:8

  • 停止位:1

  • 奇偶校验:无

  • 流控:无

Windows 上使用串口调试

安装驱动

下载驱动并安装:

如果在 Win8 上不能正常使用 PL2303,参考这篇文章, 采用 3.3.5.122 或更老版本的旧驱动即可。

如果在 Windows 系统上安装官网的 CP210X 驱动,使用 PUTTY 或 SecureCRT 等工具设置串口波特率为 1500000,如果出现设置不了或无效的问题,可以下载旧版本驱动

插入适配器后,系统会提示发现新硬件,并初始化,之后可以在设备管理器找到对应的 COM 口:

_images/debug_find_com.jpg

安装软件

Windows 上一般用 putty 或 SecureCRT。其中我们推荐使用 MobaXterm 免费版本。这是一款功能强大的终端软件,在这里介绍一下,MobaXterm 的使用方法与之类似。

到这里下载 MobaXterm

_images/debug_set_MobaXterm1.PNG _images/debug_set_MobaXterm2.PNG

Ubuntu 上使用串口调试

在 Ubuntu 上可以有多种选择:

  • minicom

  • picocom

  • kermit

篇幅关系,以下就介绍 minicom 的使用。

安装 minicom

升级固件

1. 介绍

1.1. 前言

AIO-3399ProC 出厂默认安装Android操作系统,如果用户要运行其他操作系统,需要使用对应的固件烧写到主板。

AIO-3399ProC 有灵活的启动方式。一般情况下,除非硬件损坏,AIO-3399ProC 开发板是不会变砖的。

如果在升级过程中出现意外,bootloader 损坏,导致无法重新升级,此时仍可以进入 MaskRom 模式来修复。

1.2. 固件获取

1.3. 升级方式

AIO-3399ProC 支持通过以下两种方式升级固件:

使用 AIO-3399ProC 将主板连接到电脑上,通过升级工具将固件烧写到主板上。

通过升级卡制作工具,将MicroSD卡制作为升级卡,将升级卡插入主板,上电开机,机器自动执行升级。

1.4. 启动存储器

AIO-3399ProC 从以下的存储器中加载系统:

  • eMMC 接口

  • SDMMC 接口

1.5. 启动模式

AIO-3399ProC 有三种启动模式:

  • Normal 模式

  • Loader 模式

  • MaskRom 模式

1.5.1. Normal 模式

Normal 模式就是正常的启动过程,各个组件依次加载,正常进入系统。

1.5.2. Loader 模式

在 Loader 模式下,bootloader 会进入升级状态,等待主机命令,用于固件升级等。

1.5.3. MaskRom 模式

MaskRom 模式用于 bootloader 损坏时的系统修复。

一般情况下是不用进入 MaskRom 模式的,只有在 bootloader 校验失败(读取不了 IDB 块,或 bootloader 损坏) 的情况下,BootRom 代码 就会进入此模式。此时 BootRom 代码等待主机通过 USB 接口传送 bootloader 代码,加载并运行之。当板子变砖无法正常启动或升级程序时,也可以手动进入MaskRom 模式.

要强行进入 MaskRom 模式,请参阅《MaskRom 模式》一章。

2. 使用USB线缆升级固件

2.1. 前言

本文介绍了如何将主机上的固件,通过USB数据线烧录到 AIO-3399ProC 开发板的存储器中。升级时,需要根据主机操作系统和固件类型来选择合适的升级方式。

2.2. 准备工具

  • AIO-3399ProC 开发板

  • 固件

  • 主机

  • 良好的Type-C数据线数据线

2.3. 准备固件

固件可以通过编译 SDK 获得,也可以通过资源下载处下载公版固件(统一固件)。固件文件一般有两种:

  • 单个统一固件

统一固件是由分区表、bootloader、uboot、kernel、system等所有文件打包合并成的单个文件。Firefly正式发布的固件都是采用统一固件格式,升级统一固件将会更新主板上所有分区的数据和分区表,并且擦除主板上所有数据。

  • 多个分区镜像

即各个功能独立的文件,如分区表、bootloader、kernel等,在开发阶段生成。独立分区镜像可以只更新指定的分区,而保持其它分区数据不被破坏,在开发过程中会很方便调试。

通过统一固件解包/打包工具,可以把统一固件解包为多个分区镜像,也可以将多个分区镜像合并为一个统一固件。

2.4. 安装烧写工具

2.4.1. Windows操作系统

  • 安装RK USB驱动

下载 Release_DriverAssistant.zip,解压,然后运行里面的 DriverInstall.exe 。为了所有设备都使用更新的驱动,请先选择驱动卸载,然后再选择驱动安装

_images/upgrade_firmware_install_RK_USB.jpg

注意:不同固件使用的工具版本可能不同,请根据《使用USB线烧写须知(重要)》下载对应的版本

_images/upgrade_firmware_androidtool.jpg

2.4.2. Linux操作系统

Linux 下无须安装设备驱动

注意:不同固件使用的工具版本可能不同,请根据《使用USB线烧写须知(重要)》下载对应的版本

下载 Linux_Upgrade_Tool, 并按以下方法安装到系统中,方便调用:

2.5.1. Loader模式

2.5.1.1. 硬件方式进入Loader模式

连接设备并通过RECOVERY按键进入Loader升级模式步骤如下:

  • 先断开电源适配器连接

  • Type-C数据线连接好设备和主机。

    _images/upgrade_otg_interface.png

  • 按住设备上的 RECOVERY (恢复)键并保持。

    _images/upgrade_recovery_reset.png

  • 插上电源

  • 大约两秒钟后,松开 RECOVERY 键。

2.5.1.2. 软件方式进入Loader模式

Type-C数据线 接好后在串口调试终端或adb shell给板子运行以下命令:

_images/upgrade_firmware_androidtool.jpg

如果有进行“进入Loader模式”的操作,仍旧没有看到烧写工具提示LOADER,此时可以看一下Windows主机是否有提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rockusb Device 出现,如下图。如果没有,可返回上一步重新安装驱动

_images/upgrade_firmware_new_equipment.jpg

Linux操作系统

2.5.2. MaskRom模式

进入MaskRom模式的方法,请参考《MaskRom模式》

2.6. 烧写固件

2.6.1. Windows操作系统

2.6.1.1. 烧写统一固件 update.img

烧写统一固件 update.img 的步骤如下:

1.切换至Upgrade Firmware页。 2.按Firmware按钮,打开要升级的固件文件。升级工具会显示详细的固件信息。 3.按Upgrade按钮开始升级。 4.如果升级失败,可以尝试先按 EraseFlash 按钮来擦除 Flash,然后再升级。一定要根据《使用USB线烧写须知(重要)》进行擦除烧写

_images/upgrade_firmware_erase_flash.jpg

_images/upgrade_firmware_androidtool.jpg

2.6.2. Linux操作系统

2.6.2.1. 烧写统一固件 update.img

如果升级失败,可以尝试先擦除后再升级。一定要根据《使用USB线烧写须知(重要)》的表格进行擦除烧写

2.7. 常见问题

2.7.1. 1. 如何强行进入 MaskRom 升级模式

如果板子进入不了 Loader 模式,此时可以尝试强行进入 MaskRom 升级模式。操作方法见《MaskRom模式》

2.7.2. 2. 烧写失败分析

如果烧写过程中出现Download Boot Fail, 或者烧写过程中出错,如下图所示,通常是由于使用的USB线连接不良、劣质线材,或者电脑USB口驱动能力不足导致的,请更换USB线或者电脑USB端口排查。 

_images/upgrade_downloadfail.jpg

3. MaskRom 模式

有关启动模式的介绍,请参阅《介绍》一章

3.1. 简介

MaskRom 升级模式升级是最基本的固件升级方式,也是设备变砖的最后一条防线。因为 MaskRom 升级模式 涉及硬件操作,如需短路焊盘请谨慎操作,以免观察失误造成其它元件被错误短路。因此在设备可以进入Loader 升级模式的情况下,优先使用Loader 升级模式。

请小心阅读,并谨慎操作!

操作步骤如下:

  1. 设备断开所有电源。

  2. 拔出 SD 卡。

  3. 用Type-C数据线连接好设备和主机。

  4. 用金属镊子接通AIO-3399ProC上的如下图所示的两个测试点并保持(如下图所示)。

  5. 设备插入电源。

  6. 稍候片刻,之后松开镊子。

_images/maskrom_test_points.jpg

此时设备就会进入 MaskRom 模式。

_images/maskrom.jpg

4. 使用 SD 卡升级固件

本文主要介绍了如何将实现使用MicroSD卡,更新主板上的固件。但也仅限于固件小于4G大小的情况下,否则请查看《若固件大于4G的SD升级卡制作教程》

使用MicroSD更新固件,需要在电脑上,通过做卡工具,将统一固件写入MicroSD卡,目前此操作只支持在Windows操作系统上完成。

4.1. 准备工作

Linux开发

1. 编译 Linux 固件

为了方便用户的使用与开发,官方提供了 Linux 开发的整套 SDK,本章详细的说明 SDK 的具体用法。

1.1. 准备工作

1.1.1. 搭建 SDK 编译环境

以下文件请务必确认安装!

这里使用Ubuntu18.04进行测试(推荐使用ubuntu18.04系统进行开发,或者使用 docker 部署 Ubuntu18.04 容器,否则无法安装好环境包):

1.1.2. 下载 Firefly_Linux_SDK 分卷压缩包

由于 Firefly_Linux_SDK 源码包比较大,部分用户电脑不支持4G以上文件或单个文件网络传输较慢, 所以我们采用分卷压缩的方法来打包SDK。用户可以通过如下方式获取 Firefly_Linux_SDK源码包:Firefly_Linux_SDK源码包

1.1.3. 解压 Firefly_Linux_SDK 分卷压缩包

第一次使用SDK需执行3个步骤,如果是后续想更新SDK,只需执行第3步进行网络更新即可

注意,以下步骤十分重要!!

不要将 extboot.img 烧录进旧版本固件!

除此之外,extboot ubuntu 还支持以安装包的形式更新内核,详情查看Ubuntu 使用手册

1.3.2.2. RAW 固件

RAW 固件,是一种能以逐位复制的方式烧写到存储设备的固件,是存储设备的原始映像。不同于 RK 固件,目前仅支持通过 Etcher 工具烧写至 SD 卡启动。

Etcher 官方下载链接

FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3399
MACHINE_ID: 007
MANUFACTURER: RK3399
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00040000@0x0000a000(boot:bootable),0x00040000@0x0004a000(recovery),0x00010000@0x0008a000(backup),0x00c00000@0x0009a000(rootfs),0x00040000@0x00c9a000(oem),-@0x00d1a000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

1.5. 常见问题

1.5.1. 如何进入升级模式

操作方法见《升级固件》

Firefly Linux 开发指南

Firefly Linux 开发指南

3. 技术案例

3.1. OpenSIP搭建

SIP(Session Initiation Protocol,会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现而需要的NGN(下一代网络)系列协议中重要的一员。支持H.264协议。

  • 本次使用的系统为Ubuntu18.04(若使用ubutu20.04或Debian等可能需稍作修改)

3.1.1. 编译opensips

安装所需的环境包

3.1.3. 3. 启动sips服务

  • 启动opensips服务: sudo service mysql restart

3.1.4. 4. 测试远程通讯功能

使用 linphone

  • 输入opensips账号地址 账号:1000 密码:1000

_images/opensips1.png _images/opensips2.png _images/opensips3.png

  • 测试结果: 能进行视频、语音通话、文本信息传输和文件传输。

3.1.5. FAQ

  • Can’t connect to MySQL server on ‘168.168.100.178’ (111) root@jinchengubuntu-VirtualBox:/usr/local/opensips/sbin# ./opensipsdbctl create MySQL password for root: INFO: test server charset mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2003 (HY000): Can’t connect to MySQL server on ‘168.168.100.178’ (111) mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2003 (HY000): Can’t connect to MySQL server on ‘168.168.100.178’ (111) WARNING: Failed to get the available and used character sets

注释

  • Python

    使用 OpenCV-Python 方式读取 MIPI 摄像头需要添加Gstreamer支持,并需要重现编译安装OpenCV。参考《OpenCV 编译和安装》

 

3.3. OpenCV 编译和安装

不少客户遇到OpenCV的问题多集中在如何获取mipi摄像头的数据。因为OpenCV使用的V4l2协议和Rockchip编写的mipi摄像头驱动协议不同,所以不能直接使用OpenCV的摄像头API。本节讲述如何编译Opencv并添加GStreamer API支持。

3.3.1. 要求

  • OS: Ubuntu18.04 / Debian 10

  • OpenCV version: 3.4.15

  • Board: RK3399

3.3.2. 编译和安装

  3.安装Opencv所需的环境包

# 安装编译环境、gtk包和相关编解码库
sudo apt install cmake build-essential libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libjasper-dev

# 注意!如果安装了rknn_toolkit(or lite)则不需要再安装Python-numpy,否则会导致rknn_toolkit(or lite)无法使用
sudo apt install python-numpy

3.4. USB 以太网

USB 以太网,主要实现的是将设备的 OTG 接口做外设模式,模拟成一个网络接口,然后主机通过 USB 连接设备并通过设备访问互联网。以下是基于 Firefly-RK3399 板卡进行的具体操作。

操作环境:

  • Ubuntu 系统的 PC 机

  • Firefly-RK3399 板卡

3.4.1. 内核设置

在内核目录下,打开内核配置选项菜单:

编译完成后将内核烧录到设备中,烧录过程请用户参考相应板卡维基的升级固件页面。然后将内核目录下生成的下列模块复制到设备中:

  • drivers/usb/gadget/function/u_ether.ko

  • drivers/usb/gadget/function/usb_f_ecm_subset.ko

  • drivers/usb/gadget/function/usb_f_ecm.ko

  • drivers/usb/gadget/function/usb_f_rndis.ko

  • drivers/usb/gadget/function/usb_f_eem.ko

  • drivers/usb/gadget/legacy/g_ether.ko

  • drivers/usb/gadget/libcomposite.ko

然后在设备上,依次加载上述模块:

3.5. 网络启动

网络启动,是用 TFTP 在服务器下载内核、dtb 文件到目标机的内存中,同时可以用 NFS 挂载网络根文件系统到目标机上,实现目标机的无盘启动。以下基于 Firefly-RK3399 板卡作出一个示例,提供用户参考。

准备工作:

  • Firefly-RK3399 板卡

  • 路由器、网线

  • 安装有 NFS 和 TFTP 的服务器

  • 一份制作好的根文件系统

注:示例中使用的是 Ubuntu 系统的 PC 机作为服务器,通过路由器和网线实现与设备的连接。用户可以根据自己的实际情况作调整,但如果是 PC 机直连设备,请使用交叉网线。请确保服务器和目标机在同一局域网内。

3.6. 外部存储设备 rootfs 挂载

根文件系统除了可以使用在内部的 eMMC 中的,还可以使用外部存储设备的根文件系统,如 SD 卡,U 盘等。以下是以 SD 卡为例,在 Firefly-RK3399 设备上实现挂载外部存储设备的根文件系统。

格式化完成后,使用 dd 命令,将制作好的根文件系统烧写到 SD 卡刚新建的分区中。(根文件系统的定制可以参考:《Ubuntu 根文件系统定制》

3.7. 在线更新内核和 U-Boot

本小节介绍了在线更新的一个简单的流程。将内核、U-Boot 或者其他需要更新的文件打包成 deb 安装包,然后导入到本地包仓库,实现在设备上下载并自动更新。仅供用户参考。

3.8. rknn_toolkit_lite

RKNN Toolkit Lite 是 RKNN Toolkit 的精简版本,为用户提供在 PC、RK3399Pro、RK1808、RK1806、V1109、RV1126 上进行模型推理的开发套件。用户通过该 SDK 提供的 Python 接口可以方便、快速地完成 AI 应用的开发和部署。相比 RKNN Toolkit 繁杂且费时的安装过程, RKNN Toolkit Lite 安装过程只需十分钟不到。请仔细阅读《3399pro NPU开发手册》进行安装。

Android开发

1. ADB 使用

1.1. 前言

ADB,全称 Android Debug Bridge,是 Android 的命令行调试工具,可以完成多种功能,如跟踪系统日志,上传下载文件,安装应用等。

1.2. 准备连接

1.3. USB方式

1.5. Windows下的 ADB 安装

首先参照安装 RK USB 驱动一节安装好驱动。

然后到 http://www.t-firefly.com/share/index/index/id/6afafdf7c54b8eb95e81156d94e54db5.html 下载

2. 编译环境搭建

2.1. 准备工作

编译 Android 对机器的配置要求较高:

  • 64 位 CPU

  • 16GB 物理内存 交换内存

  • 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB, 如果要编译源码则还需要 150GB 的磁盘空间。

RK官方推荐 Ubuntu 14.04 操作系统,不过该系统比较老且不再维护了,所以这里推荐使用 Ubuntu 16.04或18.04,只需要满足 http://source.android.com/source/building.html 里的软硬件配置即可。

编译环境的初始化可参考 http://source.android.com/source/initializing.html

3. 编译 Android9.0 固件

3.1. 下载 Android SDK

由于 Android SDK 源码包比较大,可以通过如下方式获取Android9.0源码包: 下载链接

下载完成后,在解压前先校验下 MD5 码:

也可以到如下地址在线查看源码: [https://gitlab.com/TeeFirefly/firenow-oreo-rk3399#]

3.3. 分区镜像

  • boot.img: Android 的 initramfs 映像,包含Android根目录的基础文件系统,它负责初始化和加载系统分区。

  • system.img: ext4 文件系统格式的 Android 文件系统分区映像。

  • kernel.img: 内核映像。

  • resource.img: Resource 映像, 包含启动图片和内核设备树。

  • misc.img: misc 分区映像, 负责启动模式的切换和急救模式参数的传递。

  • recovery.img: Recovery 模式映像。

  • rk3399_loader_v1.12.112.bin: Loader 文件。

  • uboot.img: U-Boot 映像文件。

  • trust.img: Arm trusted file (ATF) 映像文件。

  • parameter.txt: 分区布局和内核命令行。

  • vendor.img: TODO

  • oem.img: TODO

  • baseparameter.img: TODO

3.4. 其他安卓版本

U-Boot 使用

前言

烧录

打开烧录工具,板子接好 USB OTG 线,接通电源时按住 Recovery 键,使开发板进入 U-Boot 的下载模式,在烧录工具中选择编译好的 Loader 文件,点击执行即可,如下图:

_images/uboot_download.jpg

确认是否正确烧写新的 Loader

如果你已经成功烧写你最新编译的 Loader,在开机的串口输出中可以看到类似如下信息:

NPU使用

AIO-3399Pro-JD4 核心板内置 NPU 模块。

简单使用范例

接上摄像头,打开Settings->Apps & notification->RK3399Pro Pose Demo->Permission,给Camera和storage权限 然后打开桌面应用RK3399Pro Pose Demo运行。

详细使用方法

RK3399Pro NPU Manual

驱动开发

ADC 使用

简介

AIO-3399ProC 开发板上的 AD 接口有两种,分别为:温度传感器 (Temperature Sensor)、逐次逼近ADC (Successive Approximation Register)。其中:

  • TS-ADC(Temperature Sensor):支持两通道,时钟频率必须低于800KHZ

  • SAR-ADC(Successive Approximation Register):支持六通道单端10位的SAR-ADC,时钟频率必须小于13MHZ。

内核采用工业 I/O 子系统来控制 ADC,该子系统主要为 AD 转换或者 DA 转换的传感器设计。 下面以 SAR-ADC 为例子,介绍 ADC 的基本配置方法。

DTS配置

配置DTS节点

AIO-3399ProC SAR-ADC 的 DTS 节点在 kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi 文件中定义,如下所示:

FAQs

为何按上面的步骤申请 SARADC,会出现申请报错的情况?

驱动需要获取ADC通道来使用时,需要对驱动的加载时间进行控制,必须要在saradc初始化之后。saradc是使用module_platform_driver()进行平台设备驱动注册,最终调用的是module_init()。所以用户的驱动加载函数只需使用比module_init()优先级低的,例如:late_initcall(),就能保证驱动的加载的时间比saradc初始化时间晚,可避免出错。

GPIO 使用

简介

GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。 RK3399 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分。所有的 GPIO 在上电后的初始状态都是输入模式,可以通过软件设为上拉或下拉,也可以设置为中断脚,驱动强度都是可编程的。 每个 GPIO 口除了通用输入输出功能外,还可能有其它复用功能,例如 GPIO2_A2,可以利用成以下功能:

  • GPIO2_A2

  • GIF_D2

每个 GPIO 口的驱动电流、上下拉和重置后的初始状态都不尽相同,详细情况请参考《RK3399 规格书》中的 “Chapter 10 GPIO” 一章。 RK3399 的 GPIO 驱动是在以下 pinctrl 文件中实现的:

IO-Domain

在复杂的片上系统(SOC)中,设计者一般会将系统的供电分为多个独立的 block,这称作电源域(Power Domain),这样做有很多好处,例如:

  • 在 IO-Domain 的 DTS 节点统一配置电压域,不需要每个驱动都去配置一次,便于管理;

  • 依照的是 Upstream 的做法,以后如果需要 Upstream 比较方便;

  • IO-Domain 的驱动支持运行过程中动态调整电压域,例如 PMIC 的某个 Regulator 可以 1.8v 和 3.3v 的动态切换,一旦 Regulator 电压发生改变,会通知 IO-Domain 驱动去重新设置电压域。

AIO-3399ProC 原理图上的 Power Domain Map 表以及配置如下表所示:

_images/gpio_power_domain.jpg

通过 RK3399 SDK 的原理图可以看到 bt656-supply 的电压域连接的是 vcc18_dvp, vcc_io 是从 PMIC RK808 的 VLDO1 出来的;

在 DTS 里面可以找到 vcc1v8_dvp, 将 bt656-supply = <&vcc18_dvp>。

其他路的配置也类似,需要注意的是如果这里是其他 PMIC,所用的 Regulator 也不一样,具体以实际电路情况为标准。

调试方法

IO指令

GPIO 调试有一个很好用的工具,那就是 IO 指令,AIO-3399ProC 的 Android 系统默认已经内置了 IO 指令,使用 IO 指令可以实时读取或写入每个 IO 口的状态,这里简单介绍 IO 指令的使用。首先查看 IO 指令的帮助:

FAQs

Q1: 如何将 PIN 的 MUX 值切换为一般的 GPIO?

A1: 当使用 GPIO request 时候,会将该 PIN 的 MUX 值强制切换为 GPIO,所以使用该 PIN 脚为 GPIO 功能的时候确保该 PIN 脚没有被其他模块所使用。

Q2: 为什么我用 IO 指令读出来的值都是 0x00000000?

A2: 如果用 IO 命令读某个 GPIO 的寄存器,读出来的值异常,如 0x00000000 或 0xffffffff 等,请确认该 GPIO 的 CLK 是不是被关了,GPIO 的 CLK 是由 CRU 控制,可以通过读取 datasheet 下面 CRU_CLKGATE_CON* 寄存器来查到 CLK 是否开启,如果没有开启可以用 io 命令设置对应的寄存器,从而打开对应的 CLK,打开 CLK 之后应该就可以读到正确的寄存器值了。

Q3: 测量到 PIN 脚的电压不对应该怎么查?

A3: 测量该 PIN 脚的电压不对时,如果排除了外部因素,可以确认下该 PIN 所在的 IO 电压源是否正确,以及 IO-Domain 配置是否正确。

Q4: gpio_set_value() 与 gpio_direction_output() 有什么区别?

A4: 如果使用该 GPIO 时,不会动态的切换输入输出,建议在开始时就设置好 GPIO 输出方向,后面拉高拉低时使用 gpio_set_value() 接口,而不建议使用 gpio_direction_output(), 因为 gpio_direction_output 接口里面有 mutex 锁,对中断上下文调用会有错误异常,且相比 gpio_set_value,gpio_direction_output 所做事情更多,浪费。

I2C 使用

简介

AIO-3399ProC 开发板上有 9 个片上 I2C 控制器,各个 I2C 的使用情况如下表:

_images/i2c_list.jpg

本文主要描述如何在该开发板上配置 I2C。

配置 I2C 可分为两大步骤:

  • 定义和注册 I2C 设备

  • 定义和注册 I2C 驱动

下面以配置 GSL3680 为例。

定义和注册 I2C 设备

FAQs

Q1: 通信失败,出现这种 log: “timeout, ipd: 0x00, state: 1” 该如何调试?

A1: 请检查硬件上拉是否给电。

Q2: 调用 i2c_transfer 返回值为 -6?

A2: 返回值为 -6 表示为 NACK 错误,即对方设备无应答响应,这种情况一般为外设的问题,常见的有以下几种情况:

  • I2C 地址错误,解决方法是测量 I2C 波形,确认是否 I2C 设备地址错误;

  • I2C slave 设备不处于正常工作状态,比如未给电,错误的上电时序等;

  • 时序不符合 I2C slave 设备所要求也会产生 Nack 信号。

Q3: 当外设对于读时序要求中间是 stop 信号不是 repeat start 信号的时候,该如何处理?

A3: 这时需要调用两次 i2c_transfer, I2C read 拆分成两次,修改如下:

IR 使用

红外遥控配置

AIO-3399ProC 开发板上使用红外收发传感器 IR (耳机接口和 recovery 之间)实现遥控功能,在 IR 接口处接上红外接收器。本文主要描述在开发板上如何配置红外遥控器。

其配置步骤可分为两个部分:

  • 修改内核驱动:内核空间修改,Linux 和 Android 都要修改这部分的内容。

  • 修改键值映射:用户空间修改(仅限 Android 系统)。

内核驱动

在 Linux 内核中,IR 驱动仅支持 NEC 编码格式。以下是在内核中配置红外遥控的方法。

所涉及到的文件:

IR 使用

如下图是通过按红外遥控器按钮,所产生的波形,主要由 head, Control, information, signed free 这四部分组成,具体可以参考 RC6 Protocol。

_images/ir.jpg

LCD使用

简介

AIO-3399ProC开发板默认外置支持了两个LCD屏接口,一个是LVDS,一个是EDP,接口对应板子上的位置如下图:

_images/lcd_interface.jpg

LVDS屏

DTS配置

引脚配置

AIO-3399ProC的SDK有LVDS DSI的DTS文件:kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-aioc-lvds-HSX101H40C.dts,从该文件中我们可以看到以下语句:

都是高电平有效,具体的引脚配置请参考《GPIO 使用》一节。

LVDS配置背光

AIO-3399ProC开发板外置了一个背光接口用来控制屏幕背光,如下图所示:

_images/lcd_back_light.jpg

在DTS文件:kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-core.dtsi中配置了背光信息,如下:

时序属性参考下图:

_images/lcd_sequence.jpg

Init Code

lvds屏上完电后需要发送初始化指令才能使之工作。初始化指令需要以下工具文档生成,下载TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm_1280x800.xls

如何配置LVDS panel-init-sequence

以1280x800单lvds为例: 首先打开TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm_1280x800.xls 

_images/page.png 选择页面”Timing Parameters_SYNC_EVENT”,按照LVDS屏的时序填入LVDS timing黄色单元,一般只需填入以下单元即可。

  • HPW / HBPR / HDISPR / HFPR 分别对应 hsync-len / hback-porch / hactive / hfront-porch

  • VPW / VBPR / VDISPR / VFPR 分别对应 vhsync-len / vback-porch / vactive / vfront-porch

LVDS timing填入完成后还需配置常规参数 

_images/parameter.png

  • 1.根据LVDS屏规格书确认LVDS Link和LVDS output format并选择屏的参数。

  • 2.计算LVDS clock(蓝色单元无法写入,需要黄色单元自动计算得出),需要填入DSI Clock(HOST), Pixel Clock Source, Pixel Clock Divider。计算公式如下:DSI Clock/Pixel Clock Source/Pixel Clock Divider=LVDS Clock

填入上述黄色单元基本上完成配置,接下来选择页面”Source”即可看到转换后的Comment 

_images/source.png 以上面为例”013C 00030005”,mipi command就应该是”29 02 06 3C 01 05 00 03 00”

  • 29 : packet ID

  • 02 : 2ms delay

  • 06 : 6 bytes

  • 3C 01 : address = 0x013C

  • 00 03 00 05 : data=0x05000300

将页面source所有地址写入数据,即可完成初始化指令panel-init-sequence。

dts在kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-aioc-lvds-HSX101H40C.dts中可以看到lvds的初始化指令列表:

命令格式以及说明可参考以下附件: Rockchip DRM Panel Porting Guide.pdf

常见问题

1. 画面抖动闪屏

排查屏参数是否超出屏规格书限定周期,排查屏时钟大小。”Timing Parameters_SYNC_EVENT”所有参数变动必须和comment同步调整。

2. 颜色显示异常

尝试同步调整color mapping或者lvds timing。

NOTE: 工具文档页面”How to use”有详细步骤,其他参数说明可以参考文档”页面”菜单。

EDP屏

DTS配置

引脚配置

AIO-3399ProC的SDK有EDP DSI的DTS文件:kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-aioc-edp.dts,从该文件中我们可以看到以下语句:

都是高电平有效,具体的引脚配置请参考《GPIO 使用》一节。

EDP配置背光

因为背光接口是公用的,所以可参考上述LVDS的配置方法。

EDP配置显示时序

kernel 也可以把 Timing 写在 panel-simple.c 中, 直接以短字符串匹配 在drivers/gpu/drm/panel/panel-simple.c文件中有以下语句

MODULE_DEVICE_TABLE(of, platform_of_match); 时序的参数在结构体lg_lp079qx1_sp0v_mode中配置。

命令格式以及说明可参考以下附件: Rockchip DRM Panel Porting Guide.pdf

发送指令可以看到在kernel/drivers/gpu/drm/panel/panel-simple.c文件中的操作:

LED 使用

前言

AIO-3399ProC 开发板上有 2 个 LED 灯,如下表所示:

_images/led_pin.jpg

可通过使用 LED 设备子系统或者直接操作 GPIO 控制该 LED。

以设备的方式控制 LED

标准的 Linux 专门为 LED 设备定义了 LED 子系统。 在 AIO-3399ProC 开发板中的两个 LED 均以设备的形式被定义。

MIPI CSI 使用

简介

AIO-3399ProC 开发板分别带有两个MIPI,MIPI最高支持支持4K拍照,并支持1080P 30FPS以上视频录制。此外,开发板还支持 USB 摄像头。

本文以 OV13850 摄像头为例,讲解在该开发板上的配置过程。

接口效果图

_images/camera_interface.jpg

配置原理

设置摄像头相关的引脚和时钟,即可完成配置过程。 从以下摄像头接口原理图可知,需要配置的引脚有:MIPI_PWR, MIPI_PDN0_CAM/MIPI_PDN1_CAM和RST_CAM_0/1。

  • mipi接口 

  • _images/module_mipi_sch.png

  • MIPI_PWR 对应 RK3399Pro 的 GPIO3_D5;

  • MIPI_PDN0_CAM/MIPI_PDN1_CAM 对应 RK3399Pro 的 GPIO3_D3 / GPIO3_D4;

  • MIPI_RST0/MIPI_RST1 对应GPIO2_A6 / GPIO2_A1;

在开发板中,这三个引脚都是在 kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-usbacm.dtsi 中设置。

配置步骤

配置 ov13850驱动和VCM驱动

修改kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-usbacm.dtsi 初始化摄像头:

FAQs

1.无法打开摄像头,首先确定sensor I2C是否通信。若不通则可检查mclk以及供电是否正常(Power/PowerDown/Reset/Mclk/I2cBus)分别排查 2.参考驱动列表ː ov8858.c Gc2145.c Ov7251 tc35874x.c

RTC 使用

简介

AIO-3399ProC 开发板上有 一个集成于 RK808 上的RTC(Real Time Clock),主要功能有时钟,日历,闹钟,周期性中断,双通道 32KHz 时钟输出。

J2 接上 CR2032 纽扣电池后,可以保证板子掉电后 RTC 可以正常运行。J2 位置如下图:

_images/rtc_interface.jpg

FAQs

Q1: 开发板上电后时间不同步?

A1: 检查一下 RTC 电池是否正确接入。

PWM 使用

前言

本章主要描述如何配置 PWM。

FAQs

PWM 无法注册成功:

  • dts 配置文件是否打开对应的 PWM。

  • PWM 所在的 IO 口是否被其他资源占用,可以根据报错的返回值去查看原因。

SPI 使用

SPI 简介

SPI 是一种高速的,全双工,同步串行通信接口,用于连接微控制器、传感器、存储设备等。AIO-3399ProC SPI 引出来了一路 SPI2 (可复用 GPIO )给外部使用。AIO-3399ProC 开发板提供了 SPI12(单片选)接口,具体位置如下图:

_images/spi_interface.jpg

SPI 的四种工作模式波形图如下:

_images/spi_waveform.jpg

驱动编写

下面以 W25Q128FV Flash 模块为例简单介绍 SPI 驱动的编写。

硬件连接

AIO-3399ProC 与 W25Q128FV 硬件连接可参考下表:

_images/spi_hardware_connection.jpg

FAQs

Q1: SPI 数据传送异常

A1: 确保 SPI 4 个引脚的 IOMUX 配置正确, 确认 TX 送数据时,TX 引脚有正常的波形,CLK 频率正确,CS 信号有拉低,mode 与设备匹配。

定时器使用

前言

其中定义的 Timer0 的寄存器和中断号和时钟等。

其他 Timer 对应的中断号可看如下图片:

_images/timer_interrupt.jpg

UART 使用

简介

AIO-3399ProC 支持 SPI 桥接/扩展 4 个增强功能串口(UART)的功能,分别为 UART1,UART2,RS232,RS485。每个 UART 都拥有 256 字节的 FIFO 缓冲区,用于数据接收和发送。其中:

  • UART1,UART2 为 TTL 电平接口,RS232 为 RS232 电平接口,RS485 为 RS485 电平接口

  • 每个子通道 UART 的波特率、字长、校验格式可以独立设置,最高可以提供 2Mbps 的通信速率

  • 每个子通道具备收/发独立的 256 BYTE FIFO,FIFO 的中断可按用户需求进行编程触发点

  • 具备子串口接收 FIFO 超时中断

  • 支持起始位错误检测

AIO-3399ProC 开发板的串口接口图如下:

_images/uart_interface.jpg

然后在主机的串口终端输入字符串 “Firefly RS485 test…”,设备端即可见到相同的字符串。

CAN 使用

简介

CAN(Controller Area Network)总线,即控制器局域网总线,是一种有效支持分布式控制或实时控制的串行通信网络。CAN总线是一种在汽车上广泛采用的总线协议,被设计作为汽车环境中的微控制器通讯。 如果想了解更多的内容可以参考CAN应用报告

硬件连接

CAN模块之间接线,CAN_H接CAN_H,CAN_L接CAN_L,

硬件原理图默认NC了CAN功能。 _images/can3.png

由于默认硬件接口优先RS485,需要硬件对下方电阻进行修改 _images/can2.jpg

通信测试

CAN通信测试,驱动在AIO-3399ProC上默认已经做了支持,所以直接使用 candump 和 cansend 工具进行收发报文测试即可,将工具push到/system/bin/目录下执行。工具可以在 官方 或者 github 下载。

FAQS

总结调试过程中遇到的几个问题及解决方法:

Q: “ifconfig -a” 查看不到canX设备。

A: 检查驱动是否移植成功进入probe,检查MCP2515_CAN模块供电是否正常,是否损坏。

Q: 报文发送后很久才接收到,或者接收不到。

A:检查总线 CAN_H 和 CAN_L, 杜邦线是否松动或者接反。

Q:接收端只成功接收一次报文,后面就再也接收不到报文了。

A:检查MCP2515模块的INT中断引脚在dts中是否配对;INT引脚是否和开发板对应的pin脚连接上。

配件

串口模块

USB转TTL串口模块

产品参数

  • 品牌:Firefly

  • 尺寸:29mm*19mm

实物图

_images/module_serial_list.jpg

连接方法

_images/debug_connection.jpg

屏幕模组

10.1 寸LVDS屏模组

产品参数

  • 型号:HSX101H40C-L28A

  • 尺寸:10.1 寸

  • 分辨率:800x1280

  • 显示接口:LVDS

  • 可视角度:170°

  • 触摸屏:多点电容触摸

参考固件

注意: 支持 10.1 寸屏的官方固件名带有 LVDS 字样,下面是固件的链接:固件链接

编译命令

用官网 SDK 编译支持的 10.1 寸屏的固件时使用以下命令:

实物图

  • 注意:下图中电压跳线要使用12V

_images/module_display_lvds.jpg

DM-M10R800 V2 MIPI屏模组

产品参数

  • 型号:M101014_BE45_A1

  • 尺寸:10.1 寸

  • 分辨率:800x1280

  • 显示接口:MIPI

  • 可视角度:160°

  • 触摸屏:多点电容触摸

参考固件

注意: 支持 10.1 寸MIPI屏的官方固件名带有 MIPI 字样,下面是固件的链接:固件链接

编译命令

用官网 SDK 编译支持的 10.1 寸MIPI屏的固件时使用以下命令:

实物连接图

_images/module_display_mipi.jpg

摄像头模组

OV13850 摄像头模组(已停产)

产品参数

  • 品牌:Omnivision

  • 型号:CMK-OV13850

  • 接口:MIPI

  • 像素:1320W

参考固件

公版固件默认支持 CMK-OV13850 摄像头模组

实物图

_images/module_camera_ov13850-1.jpg

_images/module_camera_ov13850-2.jpg

连接方法

_images/module_camera_connection.jpg

实拍图片

_images/module_camera_photographs.png

CAM-8MS1M 单目摄像头模组

产品参数

  • 品牌:SV

  • ISP:XC7160

  • Sensor: SC8238

  • 接口: MIPI

  • 像素: 800W(当前仅支持1080P,4K仍在适配中)

参考固件

公版固件默认支持 CAM-8MS1M 单目摄像头模组。若无法使用单目摄像头 CAM-8MS1M,请更新固件

Android 9.0 固件下载

实物图参考

_images/cam_8ms1m_front.jpg _images/cam_8ms1m_back.jpg

连接方法

_images/aio_3399proc_8ms1m.jpg

实拍图片

_images/camera_8ms1m_shoot.jpg

SV-TAYSH-TQ摄像头模组

产品参数

  • 型号:XC7022(RGB)/XC6130(IR)

  • 接口:MIPI

  • 像素:200W

修改方法 (手动修改)

kernel/arch/arm64/boot/dts/rockchip/rk3399pro-firefly-aioc.dtsi

修改上述补丁后重新编译内核并烧写 boot.img 后重启。

实物图

_images/camera_SV-TAYSH-TQ.jpg

连接方式

_images/camera_SV-TAYSH-TQ_connect.jpg

实拍图片

_images/camera_SV-TAYSH-TQ_shoot.png

无线模块

EC20 4G模组套件

产品参数

  • 型号

    • EC20-C R2.0 Mini PCIe-C

  • 电源电压

    • 3.3V~ 3.6V, 典型值: 3.3V

  • 工作频段

    • TDD-LTE: B38/B39/B40/B41

    • FDD-LTE: B1/B3/B8

    • WCDMA: B1/B8

    • TD-SCDMA: B34/B39

    • GSM: 900/1800 MHz

  • 数据传输

    • TDD-LTE: Max 130Mbps (DL) Max 35Mbps (UL)

    • FDD-LTE: Max 150Mbps (DL) Max 50Mbps (UL)

    • DC-HSPA : Max 42Mbps (DL) Max 5.76Mbps (UL)

    • UMTS: Max 384Kbps (DL) Max 384Kbps (UL)

    • TD-SCDMA: Max 4.2Mbps (DL) Max 2.2Mbps (UL)

    • CDMA: Max 3.1Mbps (DL) Max 1.8Mbps (UL)

    • EDGE: Max 236.8Kbps (DL) Max 236.8Kbps (UL)

    • GPRS: Max 85.6Kbps (DL) Max 85.6Kbps (UL)

  • 接口连接器

    • USB:USB 2.0 高速接口, 480Mbps

    • 数字语音:1个数字语音接口 (可选)

    • USIM:1.8V/3V

    • 网络指示:×2, NET_STATUS 和 NET_MODE

    • UART:×1 UART

    • 复位:低电平

    • PWRKEY:低电平

    • 天线接口:×3 (主天线, 分集天线和GNSS天线接口)

    • ADC:×2

  • 结构尺寸

    • 51.0mm × 30.0mm × 4.9mm

  • 重量

    • 约 10.5g

  • 认证

    • CCC/ NAL*/ TA

GNSS 功能

EC20 模组分带GNSS和不带GNSS两种,Firefly官网售卖的EC20 4G模组是不支持GNSS的,后缀为SNNS,支持GNSS功能的EC20 模组一般带有后缀SGNS,公版固件支持GNSS功能,但是默认关闭,使用方法可参考EC20 GNSS功能章节。

实物图

_images/module_wireless_ec20.png

连接方法

  • Mini-PCIe 接口连接

_images/module_wireless_mini-pcie.jpg

  • SIM 卡连接

_images/module_wireless_sim_connection.jpg

参考固件

公版固件默认支持 EC20 4G 模组 [链接]

EC200T 4G模组套件

产品参数

  • 型号

    • EC200T-CN Mini PCIe-D

  • 电源电压

    • 3.4V~ 4.3V, 典型值: 3.8V

  • 工作频段

    • TDD-LTE: B34/B38/B39/B40/B41

    • FDD-LTE: B1/B3/B5/B8

    • WCDMA: B1/B5/B8

    • GSM: 900/1800 MHz

  • 数据传输

    • TDD-LTE: Max 120Mbps (DL) Max 3Mbps (UL)

    • FDD-LTE: Max 150Mbps (DL) Max 50Mbps (UL)

    • DC-HSDPA: Max 21Mbps (DL)

    • HSDPA: Max 5.76 Mbps (UL)

    • WCDMA: Max 384Kbps (DL) Max 384Kbps (UL)

    • EDGE: Max 236.8Kbps (DL) Max 236.8Kbps (UL)

    • GPRS: Max 85.6Kbps (DL) Max 85.6Kbps (UL)

  • 接口连接器

    • USB:USB 2.0 高速接口, 480Mbps

    • 数字语音:1个数字语音接口 (可选)

    • USIM:1.8V/3V

    • UART:×1 UART

    • UART_DTR (睡眠控制)

    • W_DISABLE# (飞行模式控制)

    • LED_WWAN# (网络状态指示)

    • PERST# (模块复位)

    • RI (主机唤醒)

    • WAKEUP_IN (睡眠控制,低电平有效)

    • WAKEUP_OUT (睡眠状态指示)

    • 天线接口:×2 (主天线, 分集天线)

  • 结构尺寸

    • 51.0mm × 30.0mm × 4.9mm

  • 重量

    • 约 10.2g

  • 认证

    • CCC/SRRC/NAL

实物图

_images/module_wireless_ec200t.jpg

连接方法

参考EC20 4G模组套件

参考固件

公版固件默认支持 EC200 4G 模组 [链接]

GNSS 模块

DELINCOMM 系列

产品参数

_images/module_wireless_gps_delincomm.jpg

该系列各个模组型号的参数会存在差异,详情可参考DelinComm_gps.pdf

接口定义

VCC (红线)、GND (黑线)、TX (白线)、RX(绿线)

使用说明

硬件连接
  • 将模组的VCC、GND、TX、RX分别接到 AIO-3399ProC UART0(对应节点为/dev/ttysWK2)的3.3V、GND、RX、TX,注意避免接错VCC、GND、TX、RX导致烧坏模组

  • 对于UART的一些定义和说明可以参考Wiki教程《UART 使用》

软件配置

DELINCOMM系列串口波特率配置为9600,公版固件已经默认配置好,使能GPS后即可使用,详情可以参考如何使能GPS和修改串口配置

注意:GPS功能会占用到 UART0,若需要用 UART0 作为其他用途,需要将GPS先禁止掉

参考固件

公版新固件默认支持GPS模组, 但需要手动打开。 或直接下载GPS默认启动固件百度云

EC20 GNSS功能

使用说明

硬件连接

EC20模组根据EC20 4G模组套件章节的说明连接,天线接入带有GPS丝印的天线接口。

软件配置

对于EC20模组,其GNSS 配置的串口节点和波特率分别为/dev/ttyUSB1115200,使用模组之前需要检查/system/etc/u-blox.confSERIAL_DEVICE或者SERIAL_BAUD_RATE的值是否与之匹配,确认匹配则使能GPS后即可使用,使能方法参考如何使能GPS和修改串口配置

注意:对于EC20模组,使用GNSS功能时,需要注意是否有接入其他的ttyUSB*设备,存在其他ttyUSB时,有可能会使EC20的默认ttyUSB设备号发生变化,导致GNSS功能无法使用

临时修改

确保固件为最新公版固件,固件默认关闭GPS功能,需要手动使能,以下是修改方法:

12V电源适配器

产品参数

  • 产品:电源适配器

  • 规格:美规/欧规

  • 输入标准:AC110-240V 50/60Hz

  • 输出标准:12V-2A

注意: AIO-3399ProC 一体机正常工作需要电源 12V/2A,电流低于 2A 可能会因电流过小而异常重启,为了保证开发板的正常工作,请使用电压为 12V,电流为 2A~3A 的电源,推荐使用 Firefly 官网电源配件。

实物图

_images/module_power_adapter1.png

_images/module_power_adapter2.png

红外遥控器

产品参数

  • 产品:12键红外遥控器

  • 版本:Firefly 定制版

  • 电源:两节7号电池

  • 适配:AIO-3399ProC

  • 描述:支持 AIO-3399ProC 开发板的遥控开机功能

实物图

_images/module_ir.png

键值码

_images/module_ir_remote_info.png

散热套件

铝制散热片

产品参数

  • 适配:AIO-3399ProC

  • 尺寸:尺寸:43mm (L)* 39.5mm(W)*11mm(H)

实物图

_images/module_cooling_radiator.jpg

安装方式

_images/module_cooling_radiator_install.png

一体散热风扇

产品参数

  • 型号:TFAN_55S_B

  • 适配:AIO-3399ProC

  • 尺寸:5.5±0.3mm * 55.5±0.3mm

  • 电压:12V (10.8-13.2V)

  • 最大风量:5.8CFM

实物图

_images/module_cooling_fan.jpg

安装方式

_images/module_cooling_fan_install.png

常见问题解答

FAQs

HDMI 无法 4K 显示?

AIO-3399ProC 默认出厂固件是支持 LVDS HDMI 1080P 的双屏显示,HDMI 分辨率最高只能到 1080P。HDMI 要支持到 4K 分辨率需要重新烧写默认固件,或者重新编译内核 make ARCH=arm64 rk3399pro-firefly-aioc.img ,重新烧写 resource.img 即可。

哪里有 RK3399Pro 芯片技术手册?

K3399Pro 芯片技术手册链接:Part1 Part2

Android 系统如何关闭音频?

针对无 codec 模块的用户,若不关闭音频相关配置,内核是会一直报异常 log 信息。关闭音频方法有两种:

1、在源码中 disable audioserver:

写号工具写入SN,MAC地址

注意:如果开发板进行了eMMC擦除操作,之前写入的数据也会被清除。

Windows方式

  • 安装RKDevInfoWriteTool

  • RKDevInfoWriteTool的设置里选中”RPMB”

  • 根据需要在RKDevInfoWriteTool的设置里配置”SN”,”WIFI MAC”,”LAN MAC”,”BT MAC”等

  • 开发板进入loader模式

  • RKDevInfoWriteTool进行写入或者读取操作

具体操作可以参考RKDevInfoWriteTool安装目录下的《RKDevInfoWriteTool使用指南》PDF文档。

Linux方式

开发板自身写号方式

  • buildroot使能BR2_PACKAGE_VENDOR_STORAGE

  • 通过vendor_storage命令进行读写操作

硬件资料

接口定义

整机接口定义

AIO-3399ProC 提供了丰富的接口,主要包括:

  • 电源接口

  • Type-C (OTG)

  • 1 x USB3.0

  • 2 x USB2.0

  • HDMI

  • 以太网

  • LVDS 屏幕接口

  • EDP 屏接口

  • TP 触摸接口

  • 屏电压跳线接口

  • 背光接口

  • WIFI 天线

  • 蓝牙天线

  • 电源按键

  • MIC 接口

  • 音频输入输出 (linein,lineout)

  • 3.5mm 耳机接口

  • RTC 电源接口

  • 12V 电源接口

  • IR 接口

  • TF 卡槽

  • SIM 卡卡槽

  • 扩展按键接口

  • I2C

  • I2S

  • 喇叭接口

  • recovery 按键

  • EDP 屏接口

  • 调试串口

  • 工业级串口 (RS485,RS232,2TTL)

  • CAN总线

  • RTC 电源接入口

  • MIPI 屏接口(双 LVDS 复用)

  • MINI-PCIE

具体如下图: _images/interface.jpg

硬件文档

Firefly Android 使用手册

Firefly Android 使用手册

FireflyApi

FireflyApi

资源下载

资料下载

电话咨询
微信咨询
留言