上手教程
介绍
串口调试
更新固件
启动模式说明
MaskRom模式
升级固件
烧写须知
使用SD卡更新固件
Linux开发
编译 Linux 固件
Firefly Linux 开发指南
Android开发
ADB 使用
编译环境搭建
编译 Android 5.1 固件
定制 Android 固件
驱动开发
ADC 使用
GPIO 使用
I2C 使用
IR 使用
LED 使用
MIPI CSI 使用
PWM 使用
SPI 使用
UART 使用
配件
串口模块
屏幕模组
摄像头模组
无线模块
电源适配器
红外遥控器
散热套件
其他
常见问题解答
硬件资料
FireflyApi
资源下载
AIO-3288C
产品规格书

上手教程

1. 介绍

  • AIO-3288C 开发板一块

  • WiFi 天线

另外可以选购的配件有:

另外,在使用过程中,你可能需要以下配件

  • 显示设备

    • 带 HDMI 接口的显示器或电视,及 HDMI 连接线

  • 网络

    • 100M/1000M 以太网线缆,及有线路由器

    • WiFi 路由器

  • 输入设备

    • USB 无线/有线的鼠标/键盘

    • 红外遥控器

  • 升级固件,调试

    • 双公头 USB 连接线

    • 串口转 USB 适配器

  • 发货清单参考

_images/started_shipping_list.jpg

2. 串口调试

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

2.1. 选购适配器

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

一般来说,采用 CH340 芯片的适配器,性能比较稳定,价格上贵一些。

2.2. 硬件连接

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

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

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

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

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

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

AIO-3288C 串口连接图:

_images/debug_connection.jpg

2.3. 串口参数配置

AIO-3288C 使用以下串口参数:

  • 波特率:115200

  • 数据位:8

  • 停止位:1

  • 奇偶校验:无

  • 流控:无

2.4. Windows 上使用串口调试

2.4.1. 安装驱动

下载驱动并安装:

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

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

_images/debug_find_com.jpg

2.4.2. 安装软件

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

到这里下载 MobaXterm

_images/debug_set_MobaXterm1.PNG _images/debug_set_MobaXterm2.PNG

2.5. Ubuntu 上使用串口调试

在 Ubuntu 上可以有多种选择:

  • minicom

  • picocom

  • kermit

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

2.5.1. 安装 minicom

更新固件

1. 启动模式说明

1.1. 前言

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

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

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

1.3. 升级方式

AIO-3288C 支持通过以下两种方式更新固件:

  • 使用 USB 线缆更新固件

    使用 USB 线将主板连接到电脑上,通过升级工具将固件烧写到主板上。

  • 使用 MicroSD 卡

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

1.4. 启动介质

AIO-3288C 从以下设备加载系统:

  • eMMC 接口

  • SDMMC 接口

1.5. 启动模式

AIO-3288C 有三种启动模式:

  • Normal 模式

  • Loader 模式

  • MaskRom 模式

1.5.1. Normal 模式

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

1.5.2. Loader 模式

在 Loader 模式下,bootloader 会进入升级状态,等待主机命令,用于固件升级等。要进入 Loader 模式,必须让 bootloader 在启动时检测到 RECOVERY(恢复)键按下,且 USB 处于连接状态。

使设备进入升级模式的方法如下:

  • 先断开电源适配器和双公头 USB 数据线的连接:

    • 双公头 USB 数据线一端连接主机,一端连接开发板

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

    • 接上电源

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

1.5.3. MaskRom 模式

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

一般情况下是不用进入 MaskRom 模式的,只有在 bootloader 校验失败(读取不了 IDR 块,或 bootloader 损坏) 的情况下,BootRom 代码 就会进入 MaskRom 模式。此时 BootRom 代码等待主机通过 USB 接口传送 bootloader 代码,加载并运行之。

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

2. MaskRom模式

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

2.1. 简介

MaskRom 模式是设备变砖的最后一条防线。强行进入 MaskRom 涉及硬件操作,有一定风险,因此仅在设备进入不了 Loader 模式的情况下,方可尝试 MaskRom 模式。进入 MaskRom 的原理是人为的把 Flash 的数据脚与地线短接,系统会认为 Flash 数据出错,从而清除 Flash 数据。

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

操作步骤如下:

  1. 设备断开所有电源。

  2. 拔出 SD 卡。

  3. 用双公头 USB 数据线连接好设备和主机。

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

  5. 设备插入电源。

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

AIO-3288C:

_images/maskrom_test_points.png

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

_images/maskrom.png

3. 升级固件

3.1. 前言

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

3.2. 准备工作

  • AIO-3288C 开发板

  • 固件

  • 主机

  • 良好的双公头 USB 数据线

3.3. 固件文件

固件文件一般有两种:

  • 单个统一固件

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

  • 多个分区镜像

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

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

3.4. Windows

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

3.4.1. 安装 RK USB 驱动

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

_images/upgrade_firmware_install_RK_USB.jpg

3.4.2. 连接设备

设备进入升级模式的方式如下:

  • 先断开电源适配器和双公头 USB 数据线的连接:

    • 双公头 USB 数据线一端连接主机,一端连接开发板

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

    • 接上电源

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

AIO-3288C:

_images/download_otg.png

主机应该会提示发现新硬件并配置驱动。打开设备管理器,会见到新设备 Rockusb Device 出现,如下图。如果没有,则需要返回上一步重新安装驱动。

_images/upgrade_firmware_new_equipment.jpg

3.5. 烧写固件

下载 AndroidTool,解压,运行 AndroidTool_Release_vxx 目录里面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按鼠标右键,选择以管理员身份运行),如下图:

_images/upgrade_firmware_androidtool.jpg

3.5.1. 烧写统一固件 update.img

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

  1. 切换至 升级固件 页。

  2. 固件 按钮,打开要升级的固件文件。升级工具会显示详细的固件信息。

  3. 升级 按钮开始升级。

  4. 如果升级失败,可以尝试先按 擦除 Flash 按钮来擦除 Flash,然后再升级。一定要根据《烧写须知》进行擦除烧写

注意:如果你烧写的固件 loader 版本与原来的机器的不一致,请在升级固件前先执行擦除 Flash。

_images/upgrade_firmware_erase_flash.jpg

3.5.2. 烧写分区映像

每个固件的分区可能不相同,请确保分区的地址信息和 parameter 文件保持一致。

烧写分区映像的步骤如下:

  1. 切换至 下载镜像 页。

  2. 勾选需要烧录的分区,可以多选。

  3. 确保映像文件的路径正确,需要的话,点路径右边的空白表格单元格来重新选择。

  4. 点击 执行 按钮开始升级,升级结束后设备会自动重启。

_images/upgrade_firmware_androidtool.jpg

3.6. Linux

Linux 下无须安装设备驱动,参照 Windows 章节连接设备则可。

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

3.6.1. upgrade_tool

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

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

3.7. 常见问题

3.7.1. 1. 如何强行进入 MaskRom 模式

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

3.7.2. 2. 烧写失败分析

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

_images/upgrade_downloadfail.jpg

4. 烧写须知

由于不同系统的固件存在差异,烧写固件时可能会存在一些问题。若遇到烧写问题,可按照如下操作。

4.1. 准备工作

4.1.1. 固件

  • Linux

    Firefly 发布的 Linux 固件采用 GPT 分区格式管理启动介质,早期采用 MBR 分区格式的固件已经停止支持

  • Android 5.1

4.1.2. 烧写工具

4.2. 烧写 Android 固件须知

烧写 Android 固件时,请仔细阅读表格:

_images/load_android_notice.png

重点说明:在 Windows 下,Linux 升级 Android5.1 时,如何进入 Maskrom 模式:

步骤如下:

  1. 用 AndroidTool_v2.58 工具,点击 “擦除flash”,这步的作用是 “擦除IDB”,但无法擦除 flash,因此会出现 “擦除 flash 失败” 的情况。

  2. 重启板子,用 AndroidTool_v2.35 工具,点击 “擦除flash”,现在才是真正的 “擦除flash”。

  3. 点击 “升级”,开始烧写 Android5.1 固件。

提示:若有用户在使用 AndroidTool_v2.35 工具时,点击 “擦除flash” 和 “升级” 都会出现 “测试设备失败” 的情况下,换 AndroidTool_v2.47 版本工具。

4.3. 烧写 Linux-GPT 固件须知

烧写 Linux-GPT 固件时,请仔细阅读表格:

_images/load_linux_gpt_notice.png

重点说明:

一、在 Windows 下,Linux-MBR 或 Android5.1 升级 Linux-GPT,如何进入 Maskrom 模式:

步骤如下:

  1. 用 AndroidTool_v2.58 工具,点击 “擦除flash”,完成后,设备自动进入 Maskrom 模式。

  2. 点击 “升级”,开始烧写 Linux-GPT 固件

二、在 Linux 下,Linux-MBR 或 Android5.1 升级 Linux-GPT,如何进入 Maskrom 模式:

步骤如下:

4.4. 烧写 Linux-MBR 固件须知

烧写 Linu-MBR 固件时,请仔细阅读表格:

_images/load_linux_mbr_notice.png

在上述表格中,都是进入 Loader 模式下,正常升级。

5. 使用SD卡更新固件

本文主要介绍了如何将实现使用MicroSD卡,更新主板上的固件。

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

5.1. 准备工作

  • 主板

  • 电脑

  • SD卡

  • USB读卡器

5.2. 操作步骤

  • SD_Firmware_Tool SD_Firmware_Tool 1.xx 为瑞芯微官方发布的SD卡烧录工具。

5.2.1. 操作步骤如下:

  • 下载SD卡制作工具:SD_Firmware_Tool

  • 下载需要升级到主板上的统一固件。

  • 将MicroSD插入USB读卡器,再插入到电脑USB口上。

  • 打开SD_Firmware_Tool,勾选“固件升级”框,选择正确的可移动磁盘设备和升级固件。

  • 点击开始创建之后,等待创建结束。

  • 取出MicroSD卡,插入主板的MicroSD卡插槽,对主板上电开机,主板自动开始升级。

  • 升级完成后,取出MicroSD卡,主板自动重启,完成整个更新固件的流程。

_images/SD_Firmware_Tool.png

Linux开发

1. 编译 Linux 固件

1.1. 编译环境搭建

本章介绍 Linux SDK 的编译环境搭建。

注意:

(1)推荐在 X86_64 Ubuntu 16.04 系统环境下进行开发,若使用其它系统版本,可能需要对编译环境做相应调整。

(2)使用普通用户进行编译,不要使用 root 用户权限进行编译。

  • 方法一(推荐)

Firefly_Linux_SDK 源码包比较大,可以通过如下方式获取 Firefly_Linux_SDK 源码包:下载链接

下载完成后先验证一下 MD5 码:

  • 方法二

通过 repo 拉取代码,此方法对网络要求较高,有条件可以使用

可选择获取完整 SDK 或者 BSP:

mkdir ~/proj/rk3288_linux_release_v2.5.0a_20230510/
cd ~/proj/rk3288_linux_release_v2.5.0a_20230510/

## 完整 SDK
repo init --no-clone-bundle --repo-url https://gitlab.com/firefly-linux/git-repo.git -u https://gitlab.com/firefly-linux/manifests.git -b master -m rk3288_linux_release.xml

## BSP ( 只包含基础仓库和编译工具 )
## BSP 包括 device/rockchip 、docs 、 kernel 、 u-boot 、 rkbin 、 tools 和交叉编译链
repo init --no-clone-bundle --repo-url https://gitlab.com/firefly-linux/git-repo.git -u https://gitlab.com/firefly-linux/manifests.git -b master -m rk3288_linux_bsp_release.xml

1.1.2. 同步代码

执行如下命令同步代码:

  • 方法二:使用 Docker

使用 dockerfile 创建容器,在容器中进行编译,完美解决编译环境问题,并且与主机环境隔离,互不影响。

首先在主机中安装 docker,请参考:安装教程

1.2.1.3. 下载 Ubuntu 根文件系统


FIRMWARE_VER: 8.1
MACHINE_MODEL:RK3288
MACHINE_ID:007
MANUFACTURER:RK3288
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3288
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00010000@0x0000a000(boot),0x00010000@0x0001a000(recovery),0x00010000@0x0002a000(backup),0x00600000@0x0005a000(rootfs),-@0x0065a000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

CMDLINE 属性是我们关注的地方,以 uboot 为例, 0x00002000@0x00004000(uboot) 中 0x00004000 为uboot 分区的起始位置,0x00002000 为分区的大小,以此类推。

FIRMWARE_VER: 8.1
MACHINE_MODEL:RK3288
MACHINE_ID:007
MANUFACTURER:RK3288
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3288
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00010000@0x0000a000(boot),0x00010000@0x0001a000(recovery),0x00010000@0x0002a000(backup),0x00020000@0x0003a000(oem),0x00100000@0x0005a000(rootfs),-@0x0015a000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

CMDLINE 属性是我们关注的地方,以 uboot 为例, 0x00002000@0x00004000(uboot) 中 0x00004000 为uboot 分区的起始位置,0x00002000 为分区的大小,以此类推。

Firefly Linux 开发指南

Firefly Linux 开发指南

Android开发

1. ADB 使用

1.1. 前言

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

1.2. 准备连接

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

然后到 adb download 下载 adb.zip,解压到 C:adb 以方便调用。

打开命令行窗口,输入:

2. 编译环境搭建

2.1. 准备工作

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

  • 64 位 CPU

  • 16GB 物理内存 交换内存

  • 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB

官方推荐 Ubuntu 14.04 操作系统,经测试,Ubuntu 12.04 也可以编译运行成功,只需要满足 http://source.android.com/source/building.html 里的软硬件配置即可。

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

3. 编译 Android 5.1 固件

3.1. 下载 Android SDK

Android SDK 源码包比较大(约6.3G),可以通过如下方式获取源码包:

下载完成后先验证一下 MD5 码:

3.2.3. 构建变体说明

默认的目标构建变体(TARGET_BUILD_VARIANT)为 userdebug。常用变体有三种,分别是用户(user)、用户调试(userdebug)和工程模式(eng),其区别如下:

  • user

    • 仅安装标签为 user 的模块

    • 设定属性 ro.secure=1,打开安全检查功能

    • 设定属性 ro.debuggable=0,关闭应用调试功能

    • 默认关闭 adb 功能

    • 打开 Proguard 混淆器

    • 打开 DEXPREOPT 预先编译优化

  • userdebug

    • 安装标签为 user、debug 的模块

    • 设定属性 ro.secure=1,打开安全检查功能

    • 设定属性 ro.debuggable=1,启用应用调试功能

    • 默认打开 adb 功能

    • 打开 Proguard 混淆器

    • 打开 DEXPREOPT 预先编译优化

  • eng

    • 安装标签为 user、debug、eng 的模块

    • 设定属性 ro.secure=0,关闭安全检查功能

    • 设定属性 ro.debuggable=1,启用应用调试功能

    • 设定属性 ro.kernel.android.checkjni=1,启用 JNI 调用检查

    • 默认打开 adb 功能

    • 关闭 Proguard 混淆器

    • 关闭 DEXPREOPT 预先编译优化

如果目标构建变体为 user,则 adb 无法获取 root 权限。 要选择目标构建变体,可以在 make 命令行加入参数,例如:

请参照升级固件 一文来烧写分区映像文件。 如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的固件升级工具)的 rockdevImage 目录中,之后参照升级文档烧写分区映像即可,这样的好处是使用默认配置即可,不用修改文件的路径。

update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。

4. 定制 Android 固件

4.1. 前言

定制 Android 固件,有两种方法:

  • 改源码,然后编译生成固件。

  • 在现有固件的基础上进行裁剪。

前一种方法,可以从各个层面去定制 Android,自由度大,但对编译环境和技术要求比较高,参见《编译 Android 固件》一文。 现在介绍后一种方法,分为解包、定制和打包三个阶段。主机操作系统为 Linux,采用的工具为开源软件。

  • package-file

    • update.img 的打包说明文件,update.img 里也含有一份 package-file。

  • RK3288Loader_uboot_Apr212014_134842.bin

    • 启动加载器,即 bootloader。

  • rk3288-3.10-uboot-data1G.parameter.txt

    • 参数文件,可以设定内核启动参数,里面有重要的分区信息。

  • Image/misc.img

    • misc 分区的映像,用来控制 Android 是正常启动,还是进入急救模式(Recovery Mode)。

  • Image/kernel.img

    • Android 内核。

  • Image/resource.img

    • 资源映像,内有内核开机图片和内核设备树信息(Device Tree Blob)。

  • Image/boot.img

    • Android 内核的内存启动盘(initrd),是内核启动后最先加载的根文件系统,包含重要的初始化动作,一般不需要改动。

  • Image/recovery.img

    • Android 急救模式的映像,内含内核和急救模式的根文件系统。

  • Image/system.img

    • 对应于 Android 的 /system 分区,是以下的定制对象。

4.5.2. 打包

首先要检查一下 system.img 的大小,对照 parameter 文件的分区情况(可参考文档 Parameter 文件格式),作必要的大小调整。

驱动开发

1. ADC 使用

1.1. 前言

AIO-3288C 开发板上的 AD 接口分为:高速 ADC 流接口 (High-speed ADC Stream Interface)、温度传感器 (Temperature Sensor)、逐次逼近ADC (Successive Approximation Register)。本文主要介绍 ADC 的基本配置方法。

内核采用工业 I/O 子系统来控制 ADC,该子系统主要为 AD 转换或者 DA 转换的传感器设计。其相关数据结构以及配置方法如下:

1.2. 数据结构

2. GPIO 使用

2.1. 简介

GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。

RK3288 有 9 组 GPIO bank: GPIO0,GPIO1, …, GPIO8。每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分(不是所有 bank 都有全部编号,例如 GPIO5 就只有 B0~B7, C0~C3)。

每个 GPIO 口除了通用输入输出功能外,还可能有其它复用功能,例如 GPIO5_B4,可以复用成以下功能之一:

  • spi0_clk

  • ts0_data4

  • uart4exp_ctsn

每个 GPIO 口的驱动电流、上下拉和重置后的初始状态都不尽相同,详细情况请参考TRM 文档

RK3288 的 GPIO 驱动是在以下 pinctrl 文件中实现的:

of_get_named_gpio_flags 从设备树中读取 led-power 的 GPIO 配置编号和标志,gpio_is_valid 判断该 GPIO 编号是否有效,gpio_request 则申请占用该 GPIO。如果初始化过程出错,需要调用 gpio_free 来释放之前申请过且成功的 GPIO 。

调用 gpio_direction_output 就可以设置输出高还是低电平,因为是 GPIO_ACTIVE_LOW ,如果要灯亮,需要写入 0。

实际中如果要读出 GPIO,需要先设置成输入模式,然后再读取值:

2.4. 复用

如何定义 GPIO 有哪些功能可以复用,在运行时又如何切换功能呢?以 I2C4 为例作简单的介绍。

查规格表可知,I2C4_SDA 与 I2C4_SCL 的功能定义如下:

_images/gpio_i2c4.png

3. I2C 使用

3.1. 前言

AIO-3288C 开发板上有 6 个片上 I2C 控制器。本文主要描述如何在该开发板上配置 I2C。

  • 配置 I2C 可分为两大步骤:

    • 定义和注册 I2C 设备

    • 定义和注册 I2C 驱动

下面以配置 lt8641ex 为例。

3.2. 定义和注册 I2C 设备

在注册I2C设备时,需要结构体 i2c_client 来描述 I2C 设备。然而在标准Linux中,用户只需要提供相应的 I2C 设备信息,Linux就会根据所提供的信息构造 i2c_client 结构体。

用户所提供的 I2C 设备信息以节点的形式写到 dts 文件中,如下所示:

注:msgs[0] 是要向从机发送的信息,告诉从机主机要读取信息。msgs[1] 是主机向从机读取到的信息。

至此,主机可以使用函数 i2c_master_reg8_send 和 i2c_master_reg8_recv 和从机进行通讯。

  • 实际通讯示例

例如主机和 LT8641EX 通讯,主机向 LT8641EX 发送信息,设置 LT8641EX 使用通道 1:

注:ch用于保存读取到的信息。

4. IR 使用

4.1. 红外遥控配置

AIO-3288C开发板上可以接红外收发传感器 IR 实现遥控功能。

AIO-3288C的 IR 接线位置如下图红框所示:

_images/ir_interface.png

本文主要描述在开发板上如何配置红外遥控器。其配置步骤可分为两个部分:

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

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

4.2. 内核驱动

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

注:通过 adb 修改该文件重启后即可生效。

更详细的说明请参考 leds-class.txt

开发板上的 LED 的默认状态为:

  • Red: 系统上电时打开

  • Blue:用户自定义

用户可以通过 echo 向其 trigger 属性输入命令控制每一个 LED:

6. MIPI CSI 使用

6.1. 板载资源

AIO-3288C 开发板有 MIPI 摄像头接口,摄像头图像处理能力达到 4416x3312 像素,支持 4K 视频录制。此外,开发板还支持 USB 摄像头。

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

6.2. 相关代码目录

与摄像头相关的代码目录如下:

6.3. 配置原理

设置摄像头相关的引脚和时钟,即可完成配置过程。

从以下摄像头接口原理图可知,需要配置的引脚有:CIF_PWR、MIPI_PWR、MIPI_SDA、MIPI_SCL、MIPI_RST 和 CIF_PDN0。

_images/mipi_csi_1.png

  • CIF_PWR 对应 AIO-3288C 上的 GPIO7_B4 引脚:

_images/mipi_csi_2.png

  • MIPI_PWR 和 MIPI_RST 对应 AIO-3288C 上的 GPIO3_B2 和 GPIO3_B0 引脚,默认为高电平:

_images/mipi_csi_3.png

  • MIPI_SDA 和 MIPI_SCL 由 CIF_PWR 控制:

_images/mipi_csi_4.png _images/mipi_csi_5.png

  • CIF_PDN0 对应 GPIO2_B6 引脚:

_images/mipi_csi_6.png

在开发板中,除了 CIF_POWER 和 DVP_POWER 要在 DTS 和驱动中设置,其它引脚都是在 cam_board_rk3288_aio-3288c.xml 中设置。

即可完成内核的编译。

7. PWM 使用

7.1. 前言

AIO-3288C 开发板上有 4 路 PWM 输出,分别为 PWM0 ~ PWM3,本章主要描述如何配置 PWM。

PWM 驱动文件:

CPOL:表示时钟信号的初始电平的状态,0 为低电平,1 为高电平。

CPHA:表示在哪个时钟沿采样,0 为第一个时钟沿采样,1 为第二个时钟沿采样。

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

_images/spi.jpg

9. UART 使用

9.1. 简介

AIO-3288C 开发板支持 SPI 桥接/扩展 4个增强功能串口(UART)的功能,分别为 RS232,RS485 和 1个调试串口 UART2。

其中:UART2 为 TTL 电平接口,RS232 为 RS232 电平接口,RS485 为 RS485 电平接口。

注意:RS232 需要使用RS232交叉线才能使用,不然rx和tx会出现收发不成功的问题

9.2. 调试方法

内核已默认打开这个几个串口,硬件接口对应软件上的节点分别为:

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

9.2.4.1. 注意

UART2 可以将 rx/tx 短接进行回环通信测试,RS232 由于硬件上不支持回环收发数据,所以只能跟其他主机进行通信测试。

配件

1. 串口模块

1.1. USB转TTL串口模块

1.1.1. 产品参数

  • 品牌:Firefly

  • 尺寸:29mm*19mm

1.1.2. 技术资料

驱动下载:http://www.prolific.com.tw/US/ShowProduct.aspx?pcid=41

1.1.3. 实物图

_images/module_serial.png

1.1.4. 连接方法

_images/debug_connection.png

2. 屏幕模组

2.1. 10.1寸LVDS屏幕模组

2.1.1. 产品参数

  • 品牌:Firefly

  • 型号:HSX101H40C

  • 尺寸:10.1寸

  • 分辨率:1280x800

  • 接口:LVDS

  • 可视角度:170°

  • 触摸屏:多点电容触摸

2.1.2. 内核编译

2.2. 参考固件

AIO-3288C_LVDS

2.2.1. 接线方式

_images/module_display.png

  • 注意:黄色座子为TP插座,红色座子为背光控制插座

3. 摄像头模组

3.1. OV13850摄像头模组

3.1.1. 产品参数

  • 品牌:Omnivision

  • 型号:CMK-OV13850

  • 接口:MIPI

  • 像素:1320W

3.1.2. 参考固件

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

3.1.3. 技术资料

OV13850摄像头DataSheet

3.1.4. 实物图

_images/module_camera_1.png

3.1.5. 连接方法

_images/module_camera_2.png

3.1.6. 实拍图片

_images/module_camera_3.png

4. 无线模块

4.1. EC20 4G模组套件

4.1.1. 产品参数

  • 型号

    • 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

  • 数据传输

    • 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

4.1.2. 实物图

_images/module_wireless_ec20_1.png

4.1.3. 连接方法

  • USB接口连接

_images/module_wireless_ec20_2.png

  • Mini-PCIe接口连接

_images/module_wireless_ec20_3.png

4.1.4. 参考固件

公版固件默认支持 EC20 4G 模组。

5. 电源适配器

5.1. 12V电源适配器

5.1.1. 产品参数

  • 产品:电源适配器

  • 规格:美规/欧规

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

  • 输出标准:12V-2A

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

5.1.2. 实物图

_images/module_12V_adapter_1.png

_images/module_12V_adapter_2.png

6. 红外遥控器

6.1. 产品参数

  • 产品:12键红外遥控器

  • 版本:Firefly 定制版

  • 电源:两节7号电池

  • 适配:AIO-3288C

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

6.2. 实物图

_images/module_ir.png

6.3. 键值码

_images/module_ir_remote_info.png

  • AIO-3288C 的 IR 接线位置如下图红框所示:

_images/module_ir_connection.png

7. 散热套件

7.1. 铝制散热片

7.1.1. 产品参数

  • 适配:AIO-3288C

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

7.1.2. 实物图

_images/module_cooling_radiator.jpg

7.1.3. 安装方式

_images/module_cooling.jpg

其他

1. U-Boot使用

1.1. 前言

1.3. 烧录

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

_images/uboot_download.jpg

1.4. 确认是否正确烧写新的 Loader

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

添加后重新编译Uboot,可以生成:RK3288Loader_uboot_Vx.xx.xx.bin 和 uboot.img,把 

RK3288Loader_uboot_Vx.xx.xx.bin 和 uboot.img 烧入板子即可。

常见问题解答

1. FAQ

1.1. 开机异常并循环重启

可能是电源电流不够,请使用电压为 12V,电流为 2.5A~3A 的电源。

1.2. Ubuntu 用户名和密码

1.3. Git链接地址

https://bitbucket.org/T-Firefly/firefly-rk3288

1.5. 打开 Root 权限

Android 系统有很多很强大的功能都需要用到 root 权限,开发者经常在使用的时候遇到权限的问题。

那如何在 Firefly 平台上开启系统的 root 权限功能呢?Firefly 已在系统添加启动 root 权限的功能,具体的步骤如下:

  1. 在 Settgins apk 里面找到 About device 然后点击进去

  2. 点击 Build number 7次后会提示(you are now a developer)

  3. 然后返回上一级点击 Developer options 选项后,在选项中点击 Enable ROOT 就打开 root 权限功能

_images/faqs_android_root.png

1.6. OTG 口无法使用 USB 设备

AIO-3288C 有一个双层 USB 接口,底下的接口为 OTG 接口,使用 ADB 时需要在设置->USB->连接PC打钩,如果使用其他 USB 设备,则需要去掉打钩,不然会导致 USB 设备不能使用。

硬件资料

1. 接口定义

1.1. 整机接口定义

AIO-3288C 提供了丰富的接口,具体如下图:

_images/interface_definition.png

FireflyApi

FireflyApi

 

资源下载

资料下载

电话咨询
微信咨询
留言