• TQ3399_CoreB
  • 前言

    概述

    TQ3399是基于RK3399六核新平台,Big.Little大小核架构的低功耗高性能处理器,它包括双核Cortex-A72、4核Cortex-A53以及独立的NEON协处理器,RK3399内置多种功能强大的嵌入式硬件引擎,为高端应用提供了优异的性能。支持多格式视频、高品质的JPEG的编解码,以及特殊图像的预处理和后处理。包括h.264、h.265、vp9等格式的4Kx2K @60fps解码,尤其是支持H.264、H.265格式的10bits解码,以及h.264、mvc、vp8等格式的1080p@30fps编码。RK3399内置3D GPU,能够完全兼容OpenGL ES1.1/2.0/3.0/3.1、OpenCL和DirectX 11.1。特殊的MMU 2D硬解码器能最大限度地提高显示性能,提供流畅的体验操作。RK3399具有高性能的双通道存储器接口(DDR3/DDR3L/LPDDR3/LPDDR4),能够提供高内存带宽,同时为应用提供了一套完整的外设接口。

    文档修订记录

    修订日期 修订人 修订记录 备注
    2022-07-18 Tom 初版 修订仅针对本网站文档
    2022-08-08 Tanya

    产品介绍

    核心板简介

    TQ3399开发平台是基于瑞芯微旗舰平台RK3399开发的,RK3399是瑞芯微推出的高性能嵌入式多核应用处理器,Big.Little大小核架构的低功耗高性能处理器,它包括双核Cortex-A72、4核Cortex-A53以及独立的NEON协处理器,RK3399内置多种功能强大的嵌入式硬件引擎,为高端应用提供了优异的性能。支持多格式视频、高品质的JPEG的编解码,以及特殊图像的预处理和后处理。包括h.264、h.265、vp9等格式的4Kx2K @60fps解码,尤其是支持H.264、H.265格式的10bits解码,以及h.264、mvc、vp8等格式的1080p@30fps编码。RK3399内置3D GPU,能够完全兼容OpenGL ES1.1/2.0/3.0/3.1、OpenCL和DirectX 11.1。特殊的MMU 2D硬解码器能最大限度地提高显示性能,提供流畅的体验操作。

    核心板采用双排BTB连接器,尺寸80mm X 55mm,共引出240Pin,将RK3399 CPU的绝大部分功能信号引出,包含ETHERNET、HDMI、eDP、MIPI DSI、MIPI_CSI、USB、SDIO、UART、PCIE、I2S、SPI、I2C 等通讯接口。

    核心板基本参数

    项目 参数指标
    CPU主频

    Dual-core Cortex-A72 up to 1.8GHz

    Quad-core Cortex-A53 up to 1.4GHz

    内存 2/4GB,LPDDR4
    Flash 8/16/32/64GB,EMMC
    外扩存储 标准Micro SD卡,支持大于16G以上。Micro SD卡安装方式:标准Micro SD卡,外插式安装。
    移动通信

    应配置同时支持中国移动、中国联通、中国电信4G/3G/2G的全网通通信模块。

    4G/3G通信SIM卡通信方式:1个标准SIM卡插槽,支持外插式安装。

    显示

    LVDS:双8,最高支持1920x1200显示

    EDP:支持2560x1600显示

    HDMI:支持4K 60Hz显示

    UART

    UART共5路:

    (1)TTL:2路,1路为Debug口,另1路为普通UART

    (2)TTL/RS232:2路

    (3)RS485:1路

    USB

    USB共5路:

    Type-C:USBOTG,1路引出;

    USB3.0:USBHOST,1路引出,USBA3.0接口

    USB2.0:USBHOST,3路引出,1路USBA2.0接口,2路4pin座子

    CAMERA MIPI CSI:2路
    网络

    以太网:1路,10/100M/1000M,RJ45

    无线网络:wifi & BT4.1

    声音

    标准3.5mm音频接口

    内置功放,≥1.2W,一路4P 2.0间距接口,立体声。

    时钟 RTC时钟。板上不自带电池,需外接纽扣电池。
    按键 3路按键:1路复位按键,1路recovery按键,1路poweron按键。
    电源 输入额定电压:DC12V,输入范围DC9V-15V。
    尺寸 170mm×125mm×15mm
    软件系统 Android 8.1/10.0、Linux、Ubuntu
    更新升级 具备Micro SD卡和USB自动升级内核、文件系统、应用程序。
    工作温度 工作温度: 0℃~70℃

    核心板外观和尺寸

    C:\Users\Hugo_Lam\Desktop\1\DSC_0139.pngC:\Users\Hugo_Lam\Desktop\1\DSC_0142.png

    底板介绍

    为了方便广大用户对TQ3399核心板的功能进行快速了解,提高产品开发的速度,我司提供配套的底板。套板的图片如下:

    C:\Users\Hugo_Lam\Desktop\1\TQ339套板 接口标注-01.jpg

    底板功能特性说明:

    序号 功能接口 数量 备注
    1 UART ≤2 UART2为调试串口
    2 Ethernet 1 1路千兆输出
    3 USB Host 3 1路USB3.0,2路USB2.0
    4 USB OTG 1 1路Type-c
    5 SDIO 2 4位总数据线
    6 MIPI_DSI 2

    Dual MIPI_DSI 4-Lane,最高支持2560*1600

    其中1路与MIPI_CSI复用

    7 MIPI_CSI 2 Dual MIPI_CSI 4-Lane,其中1路与MIPI_DSI复用
    8 HDMI 1 HDMI 2.0 3-Lane,支持4K输出
    9 eDP 1 eDP 1.3 4-Lane,支持2560*1600
    10 I2S 2 2路I2S引出
    11 I2C ≤4 最多配置4路I2C引出
    12 SPI ≤3 最多配置3路SPI引出
    13 PWM ≤2 支持PWM_OUT
    14 ADC ≤5 采样范围为0-1.8V,采样精度为10bits
    15 RTC 1 核心板集成PCF8563外部时钟芯片

    评估套件软件参数表

    系统 Linux
    内核 Linux4.4.149
    文件系统 buildroot-201802/Qt
    GUI Qt5.9.0
    驱动支持 LPDDR4+eMMC GPIO UART SPI
    I2C USB2.0 USB3.0 KEY
    RTC MIPI DSI Double LVDS MIPI CSI
    HDMI OUT Touch Screen Audio SDIO
    WIFI 4G PCIE ADC

    性能参数

    供电特性

    类型 最小值 典型值 最大值
    核心板板工作电压 4.8V 5.0V 5.5V
    底板工作电压 11.4V 12V 12.6V

    功耗参数

    工作状态 核心板工作电流@5V 备注
    开机不接屏 平均 210mA, 开机峰值可达 600mA Android 10
    休眠不接屏 TBD Android 10
    播放本地视频 300mA Android 10
    播放网页视频 380mA Android 10

    环境特性

    环境温度 商业级
    工作温度 0℃~70℃
    存储温度 -40℃~85℃
    存储湿度 55±10%RH

    套版支持的配件

    模块名称 分辨率/速率 Android Linux4.4+Qt5.9.0
    天嵌 10.1寸 高清电容屏 1280x800 支持 支持
    Wifi模块 RTL6223-wifi-BT 支持 支持
    4G N720 支持 支持

    入门指南

    使用前准备及说明

    接线说明

    必要硬件设备

    1. PC机:Windows 7或Linux系统

    2. 12V电源一个:直流电源

    3. 目标板

    4. 网线

    5. 调试串口线

    必要软件和配置

    1. 串口终端软件:如SecureCRT调试工具,详细配置参考<登录目标板系统>第1小章节

    2. SSH远程连接软件:Putty调试工具,详细配置参考<登录目标板系统>第3小章节

    启动拨码开关说明

    无。

    电源和电源接口连接说明

    开发板标配电源 12V/1A 的电源适配器;电源接口规格DC5.5-2.1。前端使用 15V 瞬态管和 2.6A 可恢复保险丝对电源进行过压过流保护,后端由三极管和功率 MOS 组成过压关断保护电路,超过 15V 将自动关断;为确保开发板正常使用,请使用开发板配套电源。电源开发拨向“ON”为开,拨向“OFF”为关。

    0b456a1ad2c0d741224815173ede770

    调试串口连接说明

    调试串口是DECUG,为TTL电平接口,接口规格: 3PIN 2.0MM 间距座子 CON1.实物为图上红色矩形 标注,接口定义(以图片的位置方向)从左到右分别是 RXD,TXD,GND,我司有配套的调试串口连接线,名称规格为:购买套装的用户标配此调试串口连接线。

    网络连接说明

    评估板系统默认网络是启动的,如需通过网络远程连接评估板请先用网线连接此端口和您电脑或路由器交换机,并修改PC机或者路由器的IP(IP为192.168.1.X, X 一般取3到254中间的任意阿拉伯数字,但不能和评估板的IP冲突),确保板卡和您的电脑再同一局域网段。如您是第一次使用我司板卡,或不熟悉网络修改和网络登录的用户,建议通过连接调试串口进入系统。

    f69263410adbffd2d6651b8897c9f43

    液晶屏连接说明

    开发板默认支持LVDS输出,默认配置我司10.1寸LVDS 1280x800显示屏

    【连接图暂缺】

    USB下载线连接

    通过USB type-c线与PC相连,该接口可用于mfgtool镜像下载连接。

    登录目标板系统

    通过PC-Windows系统

    在这里我们介绍在window平台下如何测试评估套版,首先需要在PC机安装一个串口终端,这里以Putty调试串口工具作为示范,您可以自行下载SecureCRT、xshell等工具进行调试串口的设置与连接。

    一般需要设置端口、校验位、波特率,RTS/CTS等,常用串口工具配置说明如下:

    1. 端口选项根据您的实际使用的端口进行配置:计算机->设备管理器->端口

    2. 校验位在串口通信中一种简单的检错方式,一般选择8位

    3. 波特率需根据实际使用平台的串口配置进行选择

    4. RTS/CTS一定不能选,否则可能出现串口有输出,没法输入的情况

    Putty的配置如下下载链接:

    协议选择Serial、设置端口为COM17(这个根据自己实际的端口选择)、波特率为115200

    1661603500076

    点击连接后进入Putty界面,正常情况下上电即可以看到开发板的启动打印信息,如下图所示:

    1661603974972

    说明:

    1. 如果没有串口打印信息,数据线有没有损坏

    2. 确认使用串口线是否为TTL电平

    目标板正常启动打印信息如下,敲Enter可进入系统串口终端[root@rk3399:/ ]# ,此时可在该终端下操作目标板:

    1661604041252

    通过PC-Linux系统登录

    如果您已经熟悉使用Linux系统开发,可以使用Linux终端工具minicom进行连接目标板,minicom使用基于PC-Linux环境下进行,以下是安装及配置过程:

    1. 安装minicom工具

    #sudo apt-get install minicom

    1. 配置minicom

    安装minicom完成后,输入命令minicom -s启动,将出现配置菜单:使用PC键盘的上下键选中serial port setup选项后,用回车键进入串口配置。

    进入串口配置界面,输入A配置串口驱动为/dev/ttyS0(不管在windows中是COMn(n可以是任意数),在虚拟机的Ubuntu下均是ttyS0)后回车,如果是usb转串口设备名应该作用/dev/ttyUSBn(n为数字,视实际而定,一般为0)。输入E配置速率为115200 8N1输入F将Hardware Flow Control设为NO,回车退出。

    由于我们使用minicom是作为超级终端连接评估套件的, 而不是控制modem,所以需要修改modem and dialing。

    将Modem and dialing配置单中得Init string、 Reset string、Hang-up string设置为空。

    设置完成后选择Save setup as dfl选项将当前设置保存为默认设置;在配置菜单上选择Save setup as dfl保存配置单(一定要做这一步,否则下次启动minicom时还需要重新配置);选择Exit退出配置并进入minicom的操作界面。

    1. 配置完成,输入minicom可以直接启动,此时上电即可以看到开发板的启动打印信息。

    说明1:如果您是在虚拟机中使用minicom,您需要在启动虚拟机中的Ubuntu之前先在您的虚拟机中添加串口设备,然后再启动虚拟机中的Ubuntu。特别注意一点:当Windows中使用了串口设备(比如启动了SecureCRT软件,并且已经使用COM3这个串口端口),然后如果在虚拟机中设置的也是COM3这个端口,那么在虚拟机中的Ubuntu启动后,在minicom中是没法使用串口的,只能选择关闭SecureCRT软件,释放COM3,然后虚拟机中的Ubuntu才能够使用该串口。

    说明 2:输入sudo minicom -D /dev/ttyUSB0可以直接指定USB串口设备。

    通过SSH远程登录

    评估板默认启动SSH远程服务,同时默认启动NET1,默认IP为192.168.1.6,没有调试串口线的情况下,电脑和评估板在同一网段下,可以通过网线连接NET1网口,实现SSH远程登录,实际操作建议连接调试串口确认IP地址。

    注:连接之前请确保PC与板子IP相互ping通

    Linux下使用SSH连接命令:

    ssh root@192.168.1.6

    修改密码:

    passwd root

    1661603274905

    Windows下使用Putty SSH连接步骤:

    1. 输入目标板IP,默认为192.168.1.6,Connection type选择SHH协议后点击Open进行连接操作。

    1661604526694

    1. 点击Open后进入登录界面,输入默认账号密码,均为root:

    1661604472501

    1. 输入账号密码成功后进入目标板串口终端root家目录下,即可在该终端下操作目标板,如下:

    ARM-Linux系统基础操作

    登录到目标板系统之后,您可以通过Linux常用命令对目标板进行查看、修改等操作。

    查看系统版本信息

    [root@rk3399 ]# cat /proc/version

    Linux version 4.4.194 (tanya@EmbedSky-Server2) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #2 SMP Mon May 23 19:47:49 CST 2022

    [root@rk3399 ]#

    查看CPU信息

    [root@rk3399 ]# cat /proc/cpuinfo

    processor : 0

    BogoMIPS : 48.00

    Features : fp asimd evtstrm aes pmull sha1 sha2 crc32

    CPU implementer : 0x41

    CPU architecture: 8

    CPU variant : 0x0

    CPU part : 0xd03

    CPU revision : 4

    Serial : 9870e22ba3551e93

    [root@rk3399]#

    查看内存使用情况

    [root@rk3399 ]# free -m

    total used free shared buff/cache available

    Mem: 1963 79 1749 24 134 1837

    Swap: 0 0 0

    [root@rk3399 ]#

    查看磁盘使用情况

    [root@rk3399 ]# df -hT

    Filesystem Type Size Used Avail Use% Mounted on

    /dev/root ext4 5.9G 397M 5.2G 7% /

    devtmpfs devtmpfs 973M 0 973M 0% /dev

    tmpfs tmpfs 982M 0 982M 0% /dev/shm

    tmpfs tmpfs 982M 348K 982M 1% /tmp

    tmpfs tmpfs 982M 272K 982M 1% /run

    /dev/mmcblk1p7 ext2 63M 13M 49M 20% /oem

    /dev/mmcblk1p10 ext2 1.1G 465K 1.1G 1% /userdata

    [root@rk3399 ]#

    查看分区信息

    [root@rk3399 ]# fdisk -l

    Number Start (sector) End (sector) Size Name

    1 16384 24575 4096K uboot

    2 24576 32767 4096K trust

    3 32768 40959 4096K misc

    4 40960 106495 32.0M boot

    5 106496 172031 32.0M recovery

    6 172032 237567 32.0M backup

    7 237568 368639 64.0M oem

    8 368640 630783 128M baseparameter

    9 385024 12967935 6144M rootfs

    10 12967936 15269854 1123M userdata

    [root@rk3399 ]#

    获取和保存系统log信息

    [root@rk3399 ]# ls -l /var/log/messages

    -rw-r--r-- 1 root root 141124 Jul 8 01:05 /var/log/messages

    [root@rk3399 ]#

    获取内核启动参数

    [root@rk3399 ]# cat /proc/cmdline

    storagemedia=emmc androidboot.storagemedia=emmc androidboot.mode=normal androidboot.verifiedbootstate=orange androidboot.slot_suffix= androidboot.serialno=YHNEVI9UK1 rw rootwait earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext4 coherent_pool=1m

    [root@rk3399 ]#

    修改网卡ip

    修改IP命令:

    [root@rk3399 ]# ifconfig eth0 192.168.1.36 #配置eth0 IP地址

    [root@rk3399 ]# route add default gw 192.168.1.2 #配置网关地址

    [root@rk3399 ]# echo "nameserver 202.96.128.166" >> /etc/resolv.conf #配置DNS服务器

    [root@rk3399 ]# ping www.baidu.com #通过ping命令检测网络通讯

    以上修改网络在串口终端执行,断电会失效,恢复到默认的配置,如需长久修改IP地址,可以进入启动脚本/etc/embedsky_conf找到network config配置相关网络参数:

    59d77d97b9112bdaa50ffdecc5ed3ea

    与PC互传文件

    开发板与PC互相传输文件可通过U盘/SD卡或者网络传输,如果评估板和电脑处于同一局域网且互相ping通,建议使用网络进行传输,较为方便。

    存储设备传输

    插入FAT32格式存储设备(不支持其他格式存储设备),df查看U盘或SD卡挂载目录,通过拷贝命令cp进行文件传输:

    网络传输

    1. NFS网络传输文件

    前提:PC-Linux与开发板网络互相ping通,服务器端已安装好NFS服务器,并且挂载路径有读写权限,安装步骤请查看附录一。

    目标板NFS挂载命令: busybox mount -t nfs -o nolock 192.168.1.241:/root/nfs/imx6ul/r

    ootfs /mnt

    1657796704298

    1. SCP传传输文件

    前提:PC-Windows与PC-Linux端与开发板网络互相ping通,目标板后台sshd服务已默认启动。

    PC-Linux命令连接:

    PC-Windows工具连接:

    选用任意一个远程连接工具,这里使用WinSCP,远程登录开发板进行文件的浏览与修改。

    开机自启动程序

    开机自启动程序存放于评估板系统/etc/embedsky_conf脚本:

    目标板系统更新

    出厂默认已经烧写Android系统,FLASH启动模式下可以正常启动系统,如果您定制或者修改过系统镜像,需要更新新版本的系统,则需要使用USB、SD卡或TFTP烧录方式重新烧录板子。

    USB更新

    安装USB更新工具:FactoryTool_1.66.zip

    下载镜像文件:

    参考:<>。

    SD卡/TF卡更新

    安装SD卡更新工具:SDDiskTool_v1.61.zip

    下载镜像文件:

    参考:<>。

    Linux外设功能测试

    以下的截图、文件名仅供参考,系统会因版本升级而添加修改文件而变得略有不同。请以实际情况为准,使用前请先按照《TQ3399环境搭建说明.pdf》进行Windows环境串口终端的配置,以下操作均需连接调试串口终端进行操作。

    Rootfs基本功能使用

    Rootfs目录结构

    TQ3399_CoreB_V2.8.0 Rootfs镜像顶层目录结构如下图所示:

    无标题

    注意:镜像中的/bin、/lib、/sbin目录不是物理存在的真实目录,只是指向/usr路径下对应目录的符号链接。

    1./test_file/test路径下包含了由本司提供的部分测试脚本和可执行二进制文件,各子目录包含内容如下图所示:

    无标题1

    2.通过修改/etc/init.d/S50launcher文件可以定制系统的开机自启动程序、初始环境变量等;

    以太网功能测试

    TQ3399_CoreB引出一路千兆有线网卡eth0,使用ifconfig命令确认网卡已经处于RUNNING状态,且具有合法的IP地址:

    无标题10

    如没有IP或需要自行配置IP地址,在启动脚本/etc/embedsky_config修改或者添加以下命令

    #network config

    mode=0 #0----dhcp 1----static ip #配置动态获取或者静态获取

    net='eth0' #配置获取eth0的IP地址

    if [ $mode -eq 0 ];then

    udhcpc -i $net -b & #udhcpc动态获取

    elif [ $mode -eq 1 ];then

    ifconfig $net down

    sleep 1

    echo "nameserver 8.8.8.8" > /etc/resolv.conf

    echo "nameserver 202.96.128.166" >> /etc/resolv.conf #手动设置DNS

    ifconfig $net 192.168.1.6 #手动设置IP地址

    route add default gw 192.168.1.2 #手动设置网关地址

    fi

    1. 如果开发板所处网络环境支持DHCP功能,则也可以使用 udhcpc -i eth0命令为eth0分配动态IP地址。

    2. 使用ping命令测试网络通信是否正常,ping www.baidu.com

    无标题11

    WIFI功能测试

    TQ3399_CoreB板载了AP6398S WIFI模块的型号,可以通过执行如下步骤使能系统的sta和ap功能,相关命令已集成至/test_file/test/wifi/目录下,用户可以直接使用该目录下的脚本进行操作。

    1. STA连接热点

    1. 编辑WIFI配置文件/etc/wpa_supplicant.conf,设置待连接的WIFI热点SSID及密码:

    1. 执行如下命令使能WIFI:

    ifconfig wlan0 up

    wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B

    udhcpc -i wlan0

    wifi

    udhcpc

    1. 使用如下命令验证WIFI功能正常:

    ifconfig

    ping www.baidu.com -I wlan0

    wifi-ping

    1. AP发送热点

    1. 编辑WIFI配置文件/etc/hostapd.conf,设置待连接的WIFI热点SSID及密码:

    1. 执行如下操作进行发送热点操作:

    hostapd -B /etc/hostapd.conf -f /var/log/hostap.log

    ap

    1. 此时手机可查找到名为embedsky的WIFI热点,成功连接上热点。

    2. 以上几步仅仅保证了连接,如何上网还需配置,首先保证板卡eth0可以正常联网,其次将无线网卡wlan0的设备传输数据转发到有线网卡eth0上面。所以需要配置一下路由转发规则,打通数据传输的链路。

    #设置linux系统允许ip包转发

    echo "1" > /proc/sys/net/ipv4/ip_forward

    #清除原设置

    iptables -F

    iptables -t nat -F

    iptables -t mangle -F

    iptables -X

    iptables -t nat -X

    iptables -t mangle -X

    #设置filter table默认原则

    iptables -P INPUT ACCEPT

    iptables -P OUTPUT ACCEPT

    iptables -P FORWARD ACCEPT

    #启用NAT数据转发功能,

    iptables -t nat -A POSTROUTING -j MASQUERADE

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;

    1. 完成以上发送及路由转发操作,此时手机才可使用该热点正常上网。

    4G功能使用

    TQ3399_CoreB留有一路PCIE USB接口,默认支持N720 USB 4G模块,可以通过执行如下步骤使能4G功能,相关命令已集成至/etc/ppp/peers目录下,用户可以直接使用该目录下的脚本进行操作。

    1. 使用前请先插入N720模块,接上SIM卡,建议插上天线,以免信号不好连接失败。

    无标题5

    1. lsusb查看设备ID或者ls /dev/ttyUSB*查看usb虚拟设备节点,正常识别模块会生成如下节点:

    无标题4

    1. 执行拨号上网命令:

    [root@rk3399 /]# cd /etc/ppp/peers/

    [root@rk3399 peers]# pppd call tq_N720_connect &

    pppd

    无标题111

    1. ifconfig查看,正常连接会生成ppp0节点,并且分配ip,这时可通过ping外网测试4G网络

    ifconfig

    ping www.baidu.com

    无标题222

    说明1:如果ping外网ip通,域名不通,则需要手动添加DNS服务器, echo nameserver 114.114.114.114 >> /etc/resolv.conf

    说明2:如果拨号一直报以下打印信息,说明信号不好,请务必接上天线后使用

    sent [IPCP ConfReq id=0x3 ]

    rcvd [IPCP ConfAck id=0x3 ]

    串口设备测试

    RK3399 CPU 一共有6个串口,包括1个调试串口,4个USB转串口,以及原生TTL串口 UART0;TQ3399_CoreB可用串口包含调试串口在内,最多可用6个。对应关系为:

    串口 设备名 电平 备注
    UART0 /dev/ttyS0 TTL 供蓝牙使用
    USB->UART0 /dev/ttySAC0 RS485 对应J9
    USB->UART1 /dev/ttySAC1 TTL 对应J6
    USB->UART2 /dev/ttySAC2 RS232 对应J7
    USB->UART3 /dev/ttySAC3 RS232 对应J8
    UART2 / TTL 调试串口,对应底板DEBUG1

    说明:UART2为调试串口;UART0复用为蓝牙功能。

    终端查看串口节点如下:

    [root@rk3399:/]# ls -l /dev/ttySAC*

    crw-rw---- 1 root dialout 168, 0 May 16 16:14 /dev/ttySAC0

    crw-rw---- 1 root dialout 168, 1 May 16 16:14 /dev/ttySAC1

    crw-rw---- 1 root dialout 168, 2 May 16 16:14 /dev/ttySAC2

    crw-rw---- 1 root dialout 168, 3 May 16 16:14 /dev/ttySAC3

    调试串口的测试只要接上串口线连接到PC端,打开secureCRT等串口终端软件,有信息输出即正常。

    其他串口可以通过连接PC串口助手或者通过自收发、对测方式进行测试,如果要使用不同串口交叉调试时请注意电平的一致性。

    uart_test默认放在test_file/test/serial目录下,可以直接执行,这里仅短接USB->UART3 (J8)的RX、TX使用自带命令进行自收发做功能测试,代码可自行编写或者参考我司提供的demo,测试命令举例如下,read的数据和write的数据一致即测试通过,反之则失败:

    [root@rk3399 serial]# ./uart_app /dev/ttySAC3 -b 115200 -rw 123asd -asc -l

    ==================================================

    Device [/dev/ttySAC3]

    read write w:123asd

    format ascii

    loop true

    boudrate = 115200

    interval : 1000 ms

    ==================================================

    open /dev/ttySAC3 ok

    fcntl=0

    isatty success!

    fd-open=3

    set done!

    /dev/ttySAC3 write :123asd

    /dev/ttySAC3 read=6 : 123asd

    /dev/ttySAC3 write :123asd

    /dev/ttySAC3 read=6 : 123asd

    [root@rk3399 serial]#

    SPI使用说明

    TQ3399_CoreB 核心板最多可有两路SPI口可以使用,SPI0与Ethernet复用,默认使用有线网络功能,SPI1通过底板扩展口引出,默认使用SPI功能。

    接口 设备名 说明
    SPI0 /dev/spidev0.0

    与Ethernet复用,TQ3399_BASEB_V1 底板

    默认用于有线网络

    SPI1 /dev/spidev1.0 通过TQ3399_BASEB_V1底板扩展口引出

    短接底板扩展口CONNETOR的PIN7(SPI1_MISO)和PIN8(SPI1_MOSI),如下图

    微信图片_20220528153036

    执行cd /test_file/test/spidev/

    ./spi_test

    2022-05-28 15-34-02屏幕截图

    存储设备测试

    TQ3399_CoreB存储接口有一路USB 2.0,一路USB 3.0,一路TF卡槽,均可使用,插入设备均可自动挂载,df命令查看实际挂载命令。

    1. 这里测试使用32G U盘,建议格式化为fat、fat32;原则上使用U盘容量理论不受限,暂不支持exfat、ntfs格式,插入提示信息:

    USB_PAN

    1. 系统检测插入自动挂载,df查看挂载路径,如未挂载,可使用mount命令手动挂载:

    U-MOUNT

    1. 对U盘进行读写操作:

    [root@rk3399 /]# echo embedsky > /media/usb0/embedsky.txt

    [root@rk3399 /]# cat /media/usb0/embedsky.txt

    embedsky

    [root@rk3399 /]#

    U盘文件读写正常:

    说明:TF卡使用与U盘方法一致,只是挂载路径有所不同。

    RTC测试

    插上电池,确保电池有电(测量电池座两端的电压为3V左右即为有电),没有接入电池或者电压过低时会有打印提示,date查看时间,如果时间不准确,使用以下命令进行设置:

    # date //查看系统时间

    Tue Jan 19 03:28:23 UTC 2021

    #

    # date -s "2021-01-19 12:00:00" //设置系统时间

    Tue Jan 19 12:00:00 UTC 2021

    #

    # hwclock -w //系统时间同步至硬件时间

    # hwclock -r //查看硬件时间

    Tue Jan 19 12:00:15 2021 0.000000 seconds

    设置时间,最好设置和自己手机上一样的时间。设置完成后断开12V电源,等待5秒以上。重新接上电源进入系统使用date或hwclock命令查看当前时间。观察时间时候正确。最好断电一天后第二天再上电看时间是否还正确。RTC能够保存时间,要测试精准度最好断电一天后第二天再上电看时间是否还正确。

    问题与解决:

    1. 提示以下打印

    rtc-pcf85631-0051:retrieveddate/timeisnotvalid.

    hwclock:RTC_RD_TIME:Invalidargument

    说明读取到的非法的rtc时间,第一次未设置rtc时钟直接通过hwclock读取时间时有可能会出现此报错。直接执行hwclock-w重新设置设置一个就可解决。

    1. 提示以下打印:

    rtc-pcf85631-0051:lowvoltagedetected,date/timeisnotreliable.

    说明电压不够或者没有放rtc电池。

    音频测试

    系统的音频架构为alsa,支持大部分的alsa测试方法,由于alsa架构比较复杂,这里只介绍最简单的测试方式,如果要更深入了解,用户可以到网上找相关资料:

    1. 录音

    TQ3399_CoreB_V2底板没有板载MIC,需要使用外接MIC(J10)或带MIC头耳机录音,在命令行输入如下命令进行录音操作:

    arecord -Dhw:0,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav

    1. 播放音乐

    在命令行输入:

    mp3play.sh 或者aplay test.wav

    aplay /test_file/test/mediafiles/music-44_1K.wav

    带耳机或者接上喇叭可以播放.<录音>小节的录音文件

    1. 查看控制单元

    [root@rk3399 /]# amixer controls

    numid=3,iface=MIXER,name='Headphone volume'

    numid=47,iface=MIXER,name='Headphone Switch'

    numid=5,iface=MIXER,name='FM gain volume'

    numid=15,iface=MIXER,name='Phone Out Mixer LOMIX Switch'

    numid=18,iface=MIXER,name='Phone Out Mixer MIC1 Boost Switch'

    numid=17,iface=MIXER,name='Phone Out Mixer MIC2 Boost Switch'

    numid=16,iface=MIXER,name='Phone Out Mixer ROMIX Switch'

    numid=48,iface=MIXER,name='Phoneout Speaker Switch'

    numid=11,iface=MIXER,name='ADC gain volume'

    numid=13,iface=MIXER,name='HPL Mux'

    ..... #请参看实际打印

    1. 设置耳机音量

    1. 查看相关属性的设置情况:

    amixer cget numid=$id

    1. 进行相关属性的设置

    amixer cget numid=$id $val

    1. 从上<查看控制单元>可知耳机音量音量控制单元为

    numid=3,iface=MIXER,name='Headphone volume'

    1. 以下针对numid=3,使用cset与cget命令以实现音量的控制,具体命令说明请看相关注释:

    numid=3,iface=MIXER,name='Headphone volume'

    ; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0

    : values=59 #当前笔者的值为59

    | dBscale-min=-63.00dB,step=1.00dB,mute=1 #最大音量值为63

    [root@rk3399 /]#

    [root@rk3399 /]# amixer cset numid=3 63 #设置最大音量值

    numid=3,iface=MIXER,name='Headphone volume'

    ; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0

    : values=63

    | dBscale-min=-63.00dB,step=1.00dB,mute=1

    [root@rk3399 /]#

    说明:不同的版本numid可能会有不同,请按实际情况操作。

    显示说明

    5.1.10.1.LVDS显示

    系统默认配置LVDS 1280x800显示分辨率,测试前请先接好lvds屏与背光,有3个电源可选,使用我司配套的 10.1 寸电容屏,LVDS 电压为3.3v,接错会烧屏。以我司10.1寸屏为例说明接线如下,更详细硬件接口信息请查看硬件手册。

    微信图片_20220516162630

    1. Linux系统默认启动自带的Qt demo,接屏显示Qt界面:

    无标题3

    1. 使用我司10.1寸LVDS屏连接即可正常触摸,电容屏无需校准等操作。

    5.1.10.2.MIPI显示

    系统默认配置LVDS 1280x800显示分辨率,由于LVDS接口与MIPI屏背光引脚有差异,使用MIPI显示需要使用配置MIPI屏显示的镜像文件或者自行修改源码配置为

    linux_sdk-v2.8.0/kernel/arch/arm64/boot/dts/rockchip//tq3399-dsi_5inch_mipi_ok.dtsi,

    执行cp tq3399-dsi_5inch_mipi_ok.dtsi tq3399-dsi.dtsi,即默认配置了视维达5寸HD MIPI 720x1280分辨率,如要改回10.1寸LVDS屏显示,执行cp tq3399-dsi_10.1inch_lvds_ok.dtsi tq3399-dsi.dtsi

    无标题8

    显示效果如下:

    无标题9

    5.1.10.3.HDMI显示

    系统默认主屏配置LVDS 1280x800显示分辨率,由于HDMI显示不支持embedsky.ini文件修改分辨率,TQ3399默认支持LVDS屏幕和HDMI显示同时输出,HDMI配置文件为:

    linux_sdk-v2.8.0/kernel/arch/arm64/boot/dts/rockchip/tq3399-coreb-base-linux.dts,

    &hdmi {

    pinctrl-names = "default";

    pinctrl-0 = <&hdmi_i2c_xfer>, <&hdmi_cec>;

    #address-cells = <1>;

    #size-cells = <0>;

    #sound-dai-cells = <0>;

    status = "okay";

    };

    无标题7

    显示效果如下:

    HDMI

    5.1.10.4.EDP显示

    系统默认配置LVDS 1280x800显示分辨率,而EDP屏显示分辨率为1920x1080,由于LVDS接口与EDP屏背光引脚用的是不同组,使用EDP显示需要使用配置EDP屏显示的镜像文件或者自行修改源码配置:

    linux_sdk-v2.8.0/kernel/arch/arm64/boot/dts/rockchip/tq3399-coreb-base-linux.dts,

    修改如下:

    将#elif 0 //eDP 改成 #elif 1 //eDP

    将#elif 1 //mipi-DSI 改成 #elif 0 //mipi-DSI

    保存后全编译镜像烧录,要改回10.1寸LVDS还原修改即可;

    测试前请先接好15.6寸EDP屏与背光,有3个电源可选,使用配套的 15.6 寸USB接口电容屏,EDP 电压为3.3v,接错会烧屏。以15.6寸EDP屏为例说明接线如下,更详细硬件接口信息,请查看硬件手册。

    无标题333

    1. Linux系统默认启动自带的Qt demo,接屏显示Qt界面:

    无标题444

    2,使用配套的15.6寸USB触摸屏连接即可正常触摸,电容屏无需校准等操作。

    Linux系统开发指南

    解压Linux源码包

    由于源码过大,一般使用分卷压缩,分卷压缩源码包在PC Linux环境下,执行如下命令解压Linux系统源码压缩包TQ3399_Linux_CoreB_V2.8.0.tar.bz2*

    cat TQ3399_Linux_CoreB_V2.8.0.tar.bz2* | tar xj

    使用cd命令切换到解压的linux_sdk-v2.8.0文件夹,查看Linux源码结构如下:

    无标题

    配置SDK、编译源码

    注意:如未特殊说明“配置、编译源码”节所有命令均为在已经配置好交叉编译环境的命令行终端下执行。

    2.2.1配置SDK:

    进入该目录,执行以下命令:

    $ cd linux_sdk-v2.8.0

    $ ./build.sh lunch

    然后选中5. BoardConfig-tq3399-coreb_base-board.mk

    2.2.2全部编译

    $ ./build.sh all

    仅编译Kernel

    $ ./build.sh kernel &&

    仅编译uboot

    $ ./build.sh uboot &&

    仅编译rootfs

    $ ./build.sh rootfs &&

    仅编译recovery

    $ ./build.sh recovery &&

    2.2.3编译完成后,需要生成各img文件:

    $ ./mkfirmware.sh

    执行完上述命令后,会在rockdev/生成如下各img文件:

    无标题1

    2.2.4 打包update.img固件

    $ cd tools/linux/Linux_Pack_Firmware/rockdev/

    $ ./mkupdate.sh

    在当前目录下会生成update.img固件,即可用此固件烧录TQ3399板子(烧写详细见《TQ3399镜像更新手册》)。

    无标题2

    系统开发

    Kernel源码简介

    暂缺。

    UART

    源码路径:

    下面只列出主要的驱动文件且与rk3399平台相关的代码路径。

    文件内容 源码路径
    设备属性文件 kernel/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
    kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi
    驱动源码

    drivers/tty/serial/8250/8250_core.c

    drivers/tty/serial/8250/8250_dma.c dma实现

    drivers/tty/serial/8250/8250_dw.c design ware ip相关操作

    drivers/tty/serial/8250/8250_early.c early console实现

    drivers/tty/serial/8250/8250_fsl.c

    drivers/tty/serial/8250/8250.c

    drivers/tty/serial/8250/8250_port.c 端口相关的接口

    drivers/tty/serial/earlycon.c 解析命令行参数,并提供注册early con接

    串口驱动一般不需要修改,也不建议修改,如果要使用流控,修改类型id属性,并在引脚里加上就可以了。RK原厂UART开发手册对应:开发板配套教材集/RKDocs/common/UART/《Rockchip_Developer_Guide_UART_CN.pdf》;

    代码简述

    rk3399.dtsi,rk3399-sapphire.dtsi配置

    属性 属性功能介绍
    status 串口是否使用
    uartx 串口号,对应生成的/dev/ttySx
    reg-io-width 串口类型,可选2,4,8分别对应,2--tx,rx 4--tx,rx,cts,rts, 8--tx,rx,cts,rts,dtr,dsr,dcd,ring
    pinctrl-names,pinctrl-0 使用的对应的引脚

    例子:

    uart0: serial@ff180000 {

    compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";

    reg = <0x0 0xff180000 0x0 0x100>;

    clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;

    clock-names = "baudclk", "apb_pclk";

    interrupts = ;

    reg-shift = <2>;

    reg-io-width = <4>;

    pinctrl-names = "default";

    pinctrl-0 = <&uart0_xfer>;

    status = "disabled";

    };

    板级 dts 文件添加:

    &uart0 {

    pinctrl-names = "default";

    pinctrl-0 = <&uart0_xfer &uart0_cts>;

    status = "okay";

    };

    SDHC

    源码路径:

    下面只列出主要的驱动文件且与rk3399平台相关的代码路径。

    文件内容 源码路径
    设备属性文件 kernel/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
    驱动源码 kernel/drivers/mmc/host/dw_mmc-rockchip.c

    常用的属性都可以dtsi配置文件设置。所以一般只要修改此文件即可,驱动不用做什么修改。RK原厂MMC开发手册对应:开发板配套教材集/RKDocs/common/MMC/《Rockchip_Developer_Guide_SDMMC_SDIO_eMMC_CN.pdf》;

    代码简述

    属性 属性功能介绍
    status sdcard是否使用(true为使用,disabled为不使用)
    bus-width

    此配置标识需要使用 SD 卡的线宽。SD 卡最大支持 4 线模式,如果不配置就模式使用 1 线模式。另外,

    这个位只支持的数值为 1,4,配置其他数值会认为是非法数值,强制按照 1 线模式进行使用。

    cd-gpios 插入检测脚
    cap-mmc-highspeed;cap-sd-highspeed; 此配置为标识此卡槽支持 highspeed 的 SD 卡。 如果不配置,表示不支持 highspeed 的 SD 卡。
    sdmmc_pwren sdmmc电源使能脚
    vmcc sdc的供电配置
    clock-frequency 正常工作频率
    vqmmc-supply sdc cd脚的上拉供电配置
    max-frequency

    此配置设置 SD 卡的运行频率,虽然设置为 150M,但是还要根据 SD 卡的不同模式进行调整。这部分不

    需要用户关心,实际运行频率和模块的关系软件会关联。最大不超过 150MHz。

    常用的属性已经通过注释标出,用户可以根据自己需要自行修改。

    &sdmmc {

    broken-cd;

    bus-width = <4>;

    cap-mmc-highspeed;

    cap-sd-highspeed;

    supports-sd;

    clock-frequency = <150000000>;

    disable-wp;

    sd-uhs-sdr104;

    max-frequency = <150000000>;

    pinctrl-names = "default";

    pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;

    vqmmc-supply = <&vcc_sdio>;

    status = "okay";

    };

    I2C/TWI总线

    开发板中共有4个i2c总线,使用i2cx表示。PMIC挂到i2c0,eeprom、csi摄像头挂到i2c1,twi2外引到J8中,twi3连接触摸,twi4连到rtc中。要了解更详细的硬件连接细节请参考《TQ3399开发平台硬件手册-20201110.pdf》

    源码路径:

    下面只列出主要的驱动文件且与rk3399平台相关的主要文件。驱动代码位于:

    文件内容 源码路径
    设备属性文件 kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi
    驱动源码 kernel/drivers/i2c/busses/i2c-rk3x.c

    主要修改文件为设备属性文件,驱动一般不需要修改。RK原厂I2C开发手册对应:开发板配套教材集/RKDocs/common/I2C/《Rockchip_Developer_Guide_I2C_CN.pdf》;

    代码简述

    rk3399.dtsi

    属性 属性功能介绍
    status i2cx是否使用(true为使用,disabled为不使用)
    i2c-scl-rising-time-ns SCL 上升沿时间由硬件决定,改变上拉电阻可调节该时间,需通过示波器量测,参考上图;例如测得 SCL 上升沿365ns,i2c-scl-rising-time-ns=<365>。(默认可以不配置,但必须保证当前的上升沿时间不能超过所配置频率下的 I2C 标准所定义的最大上升沿时间)
    i2c-scl-falling-time-ns

    SCL 下降沿时间, 一般不变, 等同于 i2c-sda-

    falling-time-ns。(默认也可以不配置)

    一般只要修改速度与错误重发次数、间隔就可以了。其它不建议修改

    i2c1: i2c@ff110000 {

    compatible = "rockchip,rk3399-i2c";

    reg = <0x0 0xff110000 0x0 0x1000>;

    assigned-clocks = <&cru SCLK_I2C1>;

    assigned-clock-rates = <200000000>;

    clocks = <&cru SCLK_I2C1>, <&cru PCLK_I2C1>;

    clock-names = "i2c", "pclk";

    interrupts = ;

    pinctrl-names = "default";

    pinctrl-0 = <&i2c1_xfer>;

    #address-cells = <1>;

    #size-cells = <0>;

    status = "disabled";

    };

    &i2c1 {

    status = "okay";

    i2c-scl-rising-time-ns = <300>;

    i2c-scl-falling-time-ns = <15>;

    rt5640: rt5640@1c {

    #sound-dai-cells = <0>;

    compatible = "realtek,rt5640";

    reg = <0x1c>;

    clocks = <&cru SCLK_I2S_8CH_OUT>;

    clock-names = "mclk";

    realtek,in1-differential;

    pinctrl-names = "default";

    pinctrl-0 = <&rt5640_hpcon &i2s_8ch_mclk>;

    spk-con-gpio = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>; /* GPIO4_D5 */

    hp-det-gpio = <&gpio4 RK_PD6 GPIO_ACTIVE_HIGH>; /* GPIO4_D6 */

    /*io-channels = <&saradc 4>;

    hp-det-adc-value = <500>;*/

    };

    };

    Linux应用开发指南

    说明1:如未安装PC机Linux系统,参考<附录一>安装Ubuntu 16.04。

    说明2:以下环境是在ubuntu16.04、64bit系统下搭建,其他系统或其他版本仅供参考。

    Qt应用程序交叉编译

    解压交叉编译器

    在搭建环境之前需要安装一些必要的依赖工具,执行ubuntu_env_install.sh 脚本安装所需环境。该步骤非必需,如果你之前有执行过这个脚本可以跳过这一步骤。

    #sudo sh ubuntu_env_install.sh

    c57e13be0c31fb29a8edd925af7d999

    从配套网盘资料中拷贝交叉编译工具的压缩包(TQ3399_gcc9.3.0_Qt5.14.2.tar.bz2),将压缩包解压到 PC 的根目录下,然后在终端中解压。请务必解压在 PC 根目录下,否则将不能交叉编译 QT 程序!

    解压命令:

    # sudo tar xvf TQ3399_gcc9.3.0_Qt5.14.2.tar.bz2 -C /

    b4897d59524b186c1f60e567b947693

    解压完成后会在/opt/EmbedSky/TQ3399/下生成一系列的文件(夹)。目录结构如下图:

    9f5042c4634cce6abb05350aae898a1

    解压完成之后修改环境变量,添加交叉编译器的路径,使用命令:

    #sudo gedit /etc/environment

    或者

    # sudo vim /etc/environment

    以下是添加和修改的内容:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/EmbedSky/TQ3399/bin"

    红色字体部分为需要添加的路径,黑色字体部分因用户而异,并不需要修改。请读者注意!

    修改完成后保存文件,然后执行以下命令使环境变量生效:

    #source /etc/environment

    接着执行:

    #aarch64-linux-gcc -v

    就可以查看刚刚安装好的交叉编译器了:

    79599c52f0add33df552ef233ee0d25

    如果出现aarch64-linux-gcc: command not found 的情况则没有安装成功。请检查交叉工具是否解压成功,路径是否正确,/etc/environment 文件中添加的内容是否正确。

    修改qmake环境变量:

    sudo vi /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

    将第一行的/usr/bin/qmake替换为交叉编译器中qmake的路径

    以下是替换的内容:

    /opt/EmbedSky/TQ3399/bin/

    /usr/lib/x86_64-linux-gnu

    执行qmake -v即可查看qmake版本

    4cfacf7a28707c29da73705ad1736a5

    成功安装交叉编译器后,就可以进行编译已经创建好的 qt 工程了,qt5.9_example_V1.0.zip 中提供了一些 QT官方的例程源码。解压后目录结构如下:

    例如编译 examples/opengl/cude/下的这个例程:

    1. 进入到该路径下,具体的路径以你的实际路径为准:

    72a3ff8f62d23a8d564c4ee1f7f9a08

    1. 输入sudo qmake,生成Makefile:

    3ee6f053d0685cfb3e2cd6b4f599583

    1. 输入sudo make或sudo make -j8编译生成qt执行程序:

    生成的cube即为 qt 执行程序,拷贝到板子上即可测试。(可以通过U盘、SD卡或网络挂载的方式拷贝到板子文件系统中)

    2ed1b5b98d91333bc2f43cd4569acab

    QtCreator交叉编译

    安装QtCreator

    拷贝qt-creator-opensource-linux-x86_64-3.5.1.run文件至你的PC目录下,进入到所在的目录下,命令行执行该文件(具体路径以你的实际路径为准!),根据提示步骤进行安装操作。

    #./qt-creator-opensource-linux-x86_64-3.5.1.run

    以下是详细截图:

    7257111ad4b41e034c34cab74f71a9f

    安装成功之后点击完成。

    qtcreator 的执行程序在你的安装目录下的./bin/中

    b3d93ab5e6010fe2869ed60d3ee3eec

    进入到 qtcreator 所在的路径下,按照上文中截图的例子笔者的路径是/home/cheng/qt_creator_3.5.1//bin 进入到这个路径下,(实际路径以你安装时选择的路径为准,切勿盲目复制粘贴!)命令行执行./qtcreator 即可打开。

    下图为qtcreator界面。至此,qtcreator 安装成功。

    1642487731(1)

    配置Qt Creator搭建交叉编译环境

    简单来说就是通过配置qtcreator,将第一章节中的交叉编译器(arm-linux-gnueabihf-gcc)和qt编译工具(qmake)的路径添加到qtcreator中,由qtcreator调用这些工具进行编译。这样一来就可以在图形界面下进行qt程序的开发和编译了!

    1. 打开Qt Creator选择工具,找到子选项“Options”

    b8f7c70c18297a72e5e3eb0afa488d1

    1. 添加交叉编译器(aarch64-linux-gcc)。

    1. 点击添加后选择GCC

    2. 自定义交叉编译器名称,选择交叉编译器路径。

    3. 名称是qtcreator 中给交叉编译器取的一个别名,为了方便区分其他编译工具,这里命名为tq3399-gcc

    编译器路径:/opt/EmbedSky/TQ3399/bin/ aarch64-linux-gcc

    1. 点击 Apply

    1. 添加 qmake 编译工具

    2. 选择qmake路径/opt/EmbedSky/TQ3399/bin/qmake

    1. 添加构建套件(Kit)

    1. 选择构建套件(Kit)

    2. 套件的名称,可以自定义,这里笔者命名为:For_qt3399

    3. 点击下拉条选中“通用Linux设备”

    4. 点击下拉条选中前面步骤中交叉编译器取的别名tq3399-gcc

    5. 点击下拉条选中前面步骤中qmake的别名qt3399-qmake

    6. 点击方框中的选项“Apply”、“OK”

    至此qtcreator配置完成!

    使用QtCreator交叉编译

    1. 打开 qtcreator ,点击 Open Project

    2. 选中你项目的实际路径,每个qt工程都有一个 xxx.pro文件,点击XXXX.pro 文件后打开项目,这里是笔者选择examples/opengl/cube/cube.pro例程编译的截图:

    1. 选中您之前自定义的套件的名称:“For_qt3399”

    1. 可以点击“项目”,取消 “Shadow build”的选中(即不选中),

    目的是为了让编译出来的执行文件生成在例程 源码的目录下,比较直观的查看。

    1. 进入了 qtcreator 工程界面,你可以在此查看和编写代码了

    2. 点击“构建项目”开始编译程序

    56fd437a55547c6322823ee29d9dbea

    1. 成功编译后会在源码顶层目录下生成和工程文件(xxx.pro)同名的执行程序。

    31f8f3c8a2c4d046d5da6fa41fb9f0b

    生成的cube即为 qt 执行程序,拷贝到板子上即可测试。(可以通过U盘、SD卡或网络挂载的方式拷贝到板子文件系统中)

    应用开发例程

    该部分例程属于通用接口例程,Linux系统下如需操作各外设接口可以参考该部分例程代码。

    天嵌硬件操作库

    1. 天嵌硬件操作库下载链接:linux_lib_v1.0.1.tar

    2. 天嵌硬件操作库使用跳转链接:http://wiki.armbbs.net/tqwiki/public/info/index.html

    例程调用

    1. 功能测试使用例程

    2. 功能测试手册V1.2.pdf

    Android系统开发指南

    解压Android源码包

    由于源码过大,一般使用分卷压缩,分卷压缩源码包在PC Linux环境下执行如下命令解压Android源码压缩包TQ3399_Android10.0_CoreB_V1.0.0.tar.bz2*

    cat TQ3399_Android10.0_CoreB_V1.0.0.tar.bz2* | tar xj

    使用cd命令切换到解压的android-10.0-v1.2.3文件夹,查看android 10.0源码结构如下:

    2022-03-23 16-48-19屏幕截图

    配置、编译源码

    注意:如未特殊说明“配置、编译源码”节所有命令均为在已经配置好交叉编译环境的命令行终端下执行。

    2.2.1 配置编译环境

    进入该目录,执行以下命令:

    $ cd android-10.0-v1.2.3

    $ source build/envsetup.sh

    $ lunch rk3399_Android10-userdebug

    编译前可先执行如下命令,更新android 的接口文件或数据库文件:

    make update-api -j8

    make api-stubs-docs-update-current-api -j8

    一键全部编译打包

    $ ./build.sh -UKAu

    仅编译kernel

    $ ./build.sh K 或者cd kernel

    make ARCH=arm64 rockchip_defconfig android-10.config rk3399.config

    make ARCH=arm64 rk3399-evb-ind-lpddr4-android-avb.img -j16

    cd ..

    ./mkimage.sh

    仅编译uboot

    $ ./build.sh -U 或者cd u-boot

    ./make.sh rk3399

    仅编译android

    $ ./build.sh -A 或者source build/envsetup.sh

    lunch rk3399_Android10-userdebug

    make -j16

    ./mkimage.sh

    说明:

    ( WHERE: -U = build uboot

    -C = build kernel with Clang

    -K = build kernel

    -A = build android

    -o = build OTA package

    -u = build update.img

    -v = build android with 'user' or 'userdebug'

    -d = huild kernel dts name

    -V = build version

    -J = build jobs

    )

    编译完成后会在rockdev/目录下创建对应的镜像目录,rockdev/Image-rk3399_Android10/update.img为打包后能直接烧录的整包镜像。

    2.2.2 清除命令

    cd u-boot

    make distclean

    cd ../

    cd kernel

    make distclean

    cd ../

    make clean

    rm -rf rockdev out

    由于 android 系统过于庞大,编译时间略长,请耐心等待编译完成,编译完成的镜像位于:

    android-10.0-v1.2.3/rockdev/Image-rk3399_Android10/ 目录

    2022-03-23 17-10-58屏幕截图

    TQ3399刷入Android系统仅需要使用工具烧录update.img镜像文件即可;

    说明:以上镜像可以通过解压出厂镜像合集/Android/update.zip文件得到。

    Android应用开发指南

    暂缺。

    附录一PC开发环境搭建

    PC-Linux平台环境搭建

    Ubuntu16.04安装

    Ubuntu安装手册(虚拟机版-通用)

    交叉编译器安装

    1. 下载TQ3399_gcc9.3.0_Qt5.14.2.tar.bz2文件,将其拷贝到根目录PC-Linux系统/opt目录下

    2. 进入/opt目录进行解压操作

    #cd /opt

    #tar jxvf TQ3399_gcc9.3.0_Qt5.14.2.tar.bz2 -C /

    1. 写入环境变量

    #echo PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/EmbedSky/TQ3399/bin"

    >> /etc/environment

    1. 使环境生效

    #source /etc/environment

    1. 查看交叉编译器版本

    #aarch64-linux-gcc -v

    常用开发工具安装

    搭建nfs服务器

    在PC-Linux系统中执行以下命令,可以搭建nfs服务器:

    #apt-get install nfs-common

    #mkdir /opt/nfs

    #echo "/opt/nfs *(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports

    #/etc/init.d/nfs-kernel-server restart

    搭建tftp服务器

    在PC-Linux中执行以下命令,可以在搭建tftp服务器:

    #apt-get install tftp-hpa tftpd-hpa

    #mkdir /opt/tftp

    #echo "TFTP_USERNAME=\"tftp\"" > /etc/default/tftpd-hpa

    #echo "TFTP_DIRECTORY=\"/opt/tftp\"" >> /etc/default/tftpd-hpa

    #echo "TFTP_ADDRESS=\"0.0.0.0:69\"" >> /etc/default/tftpd-hpa

    #echo "TFTP_OPTIONS=\"-l -c -s\"" >> /etc/default/tftpd-hpa

    #service tftpd-hpa restart ;注此命令需要每次开机执行一次才能使用

    搭建ftp服务器

    在PC-Linux中执行以下命令,可以搭建ftp服务器:

    #apt-get install vsftpd

    #mkdir /opt/ftp

    #useradd -d /opt/ftp -s /bin/bash ftpname

    #passwd ftpname ;设置密码,例如设置为123

    #service vsftpd start

    使用方法:

    在开发板中执行ftpget -u ftpname -p 123 192.168.1.xxx zImage获取电脑中/opt/ftp目录下的zImage文件

    PC-Windows平台环境搭建

    安装串口工具

    Putty为串口调试、ssh连接常用工具,下载链接:Putty

    此软件无需要安装,只要将它解压后即可使用。

    安装WinSCP

    WinSCP为ssh连接常用工具,下载链接:WinSCP.zip

    此软件无需要安装,只要将它解压后即可使用。

    安装USB下载工具

    Usb下载工具,下载链接:download/FactoryTool_1.66.zip

    此软件无需要安装,只要将它解压后即可使用。 Usb下载工具需要安装驱动,下载链接:DriverAssitant_v4.91.zip

    此压缩包解压后双击打开DriverInstall.exe,即可安装驱动。

    安装SD制卡工具

    SD制卡工具,下载链接:SDDiskTool_v1.61.zip

    此软件无需要安装,只要将它解压后即可使用。

    附录二Linux基础知识

    Linux目录结构

    Linux 系统的目录结构是一颗倒状树

    1. /bin :存放常用命令(即二进制可执行程序)

    2. /etc :存放系统配置文件

    3. /home :所有普通用户的家目录

    4. /root :管理员用户的家目录

    5. /usr :存放系统应用程序及文档

    6. /proc :虚拟文件系统目录,以进程为单位存储内存的映射

    7. /dev :存放设备文件

    8. /mnt :临时挂载点

    9. /lib :存放库文件

    10. /boot :系统内核及启动有关的文件

    11. /tmp :存放各种临时文件,是所有用户均可访问的地点

    12. /var :存放系统运行中常改变的文件,如系统日志

    Linux常用命令

    常用命令:

    1. ls:列出文件list

    2. cd:切换目录change directory

    3. cp:复制copy

    4. mv:移动move

    5. rm:移除,删除remove

    6. mkdir:创建文件夹make directory

    7. rmdir:移除,删除文件夹remove directory

    8. chown:更改所有者change owner

    9. chmod:更改文件的权限模式change mode

    10. find:查找

    11. |:管道

    12. grep:按行查找并匹配

    13. tar:打包,压缩,解压

    14. cat:打印文件内容

    15. ps:查看进程process select

    16. kill:杀死进程

    17. passwd:修改密码password user

    18. pwd:显示工作目录print work directory

    19. tee:显示并保存

    20. reboot:重启

    21. sync:保存数据

    Linux绝对路径与相对路径

    绝对路径:是从系统根目录(“ / ”)开始到指定位置的路径。

    [root@Embedsky ]# cd test_file/test/

    [root@Embedsky test]# cd /opt/PDA/

    [root@Embedsky PDA]#

    相对路径:是从当前目录开始到指定位置的相对路径

    [root@Embedsky ]# cd etc/ #当前所在路径是/目录,而/目录下有etc目录,所以可以切换

    [root@Embedsky etc]# cd etc

    -/bin/sh: cd: can't cd to etc

    #而同样的命令,由于当前所在目录改变了,所以就算是同一个命令也会报错,除非在/etc/目录中还有一个etc目录




    附录三 资料下载链接

    01_开发板介绍资料
    02_开发板配套硬件资料
    03_开发板配套器件资料
    04_开发板配套教材集
    05_开发板配套镜像
    06_开发板配套源码
    [07_开发板配套例程]
    08_开发板配套工具
    09_开发板测试报告



    附录四 常见问题解答

    FAQ

    FAQ详细信息,请查看《TQ3399_FAQ》文档,文档总结了使用TQ3399平台所遇到的部分问题及解决方法,如果查看文档仍未解决问题,请拨打技术支持电话或者发送邮件到技术支持邮箱寻求技术支持。

    技术支持说明

    天嵌科技致力于高科技产业发展提供技术与服务,为广大客户提供嵌入式技术软硬件开发工具与解决方案,致力于ARM内核系列CPU的开发和应用,提供低功耗、高性价比的嵌入式产品,提供针对性强、量身定制的客户化设计;无论是新设计还是对现有产品的改型设计,我们都会为您提供高品质的开发服务。

    由于时间有限,手册难免存在纰漏和错误,诚恳的希望各位读者批评和指正。关于修改的bug,我们会在第一时间在论坛上更新,论坛建有技术支持专区,欢迎大家遇到问题去里面寻找解决方法。还可以通过邮件(support@embedsky.net)与我们联系(为了能够方便跟进记录,请参照邮件落款模板发送邮件。希望能结识更多的朋友,大家一起共同进步。

    020-38373101-814(IMX6UL)

    020-38373101-818(335X)

    邮件落款模板

    烧写镜像文件版本号:xxx (例如:V2.0_R1.0,版本号在文件名后面有)

    使用板卡、系统:xxx (例如:e9 android 4.3)

    联系人:xxxxx

    联系方式:xxxxx

    公司:xxxxxx (例如:天嵌科技、学校等等)

    常规技术支持范围

    1. 使用我司的镜像与开发板。

    2. 系统或硬件出现问题时(不包含客户自行开发)