前言
概述
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℃ |
核心板外观和尺寸
底板介绍
为了方便广大用户对TQ3399核心板的功能进行快速了解,提高产品开发的速度,我司提供配套的底板。套板的图片如下:
底板功能特性说明:
序号 | 功能接口 | 数量 | 备注 |
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 | 支持 | 支持 |
入门指南
使用前准备及说明
接线说明
必要硬件设备
PC机:Windows 7或Linux系统
12V电源一个:直流电源
目标板
网线
调试串口线
必要软件和配置
串口终端软件:如SecureCRT调试工具,详细配置参考<登录目标板系统>第1小章节
SSH远程连接软件:Putty调试工具,详细配置参考<登录目标板系统>第3小章节
启动拨码开关说明
无。
电源和电源接口连接说明
开发板标配电源 12V/1A 的电源适配器;电源接口规格DC5.5-2.1。前端使用 15V 瞬态管和 2.6A 可恢复保险丝对电源进行过压过流保护,后端由三极管和功率 MOS 组成过压关断保护电路,超过 15V 将自动关断;为确保开发板正常使用,请使用开发板配套电源。电源开发拨向“ON”为开,拨向“OFF”为关。
调试串口连接说明
调试串口是DECUG,为TTL电平接口,接口规格: 3PIN 2.0MM 间距座子 CON1.实物为图上红色矩形 标注,接口定义(以图片的位置方向)从左到右分别是 RXD,TXD,GND,我司有配套的调试串口连接线,名称规格为:购买套装的用户标配此调试串口连接线。
网络连接说明
评估板系统默认网络是启动的,如需通过网络远程连接评估板请先用网线连接此端口和您电脑或路由器交换机,并修改PC机或者路由器的IP(IP为192.168.1.X, X 一般取3到254中间的任意阿拉伯数字,但不能和评估板的IP冲突),确保板卡和您的电脑再同一局域网段。如您是第一次使用我司板卡,或不熟悉网络修改和网络登录的用户,建议通过连接调试串口进入系统。
液晶屏连接说明
开发板默认支持LVDS输出,默认配置我司10.1寸LVDS 1280x800显示屏
【连接图暂缺】
USB下载线连接
通过USB type-c线与PC相连,该接口可用于mfgtool镜像下载连接。
登录目标板系统
通过PC-Windows系统
在这里我们介绍在window平台下如何测试评估套版,首先需要在PC机安装一个串口终端,这里以Putty调试串口工具作为示范,您可以自行下载SecureCRT、xshell等工具进行调试串口的设置与连接。
一般需要设置端口、校验位、波特率,RTS/CTS等,常用串口工具配置说明如下:
端口选项根据您的实际使用的端口进行配置:计算机->设备管理器->端口
校验位在串口通信中一种简单的检错方式,一般选择8位
波特率需根据实际使用平台的串口配置进行选择
RTS/CTS一定不能选,否则可能出现串口有输出,没法输入的情况
Putty的配置如下下载链接:
协议选择Serial、设置端口为COM17(这个根据自己实际的端口选择)、波特率为115200
点击连接后进入Putty界面,正常情况下上电即可以看到开发板的启动打印信息,如下图所示:
说明:
如果没有串口打印信息,数据线有没有损坏
确认使用串口线是否为TTL电平
目标板正常启动打印信息如下,敲Enter可进入系统串口终端[root@rk3399:/ ]# ,此时可在该终端下操作目标板:
通过PC-Linux系统登录
如果您已经熟悉使用Linux系统开发,可以使用Linux终端工具minicom进行连接目标板,minicom使用基于PC-Linux环境下进行,以下是安装及配置过程:
安装minicom工具
#sudo apt-get install minicom
配置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的操作界面。
配置完成,输入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
Windows下使用Putty SSH连接步骤:
输入目标板IP,默认为192.168.1.6,Connection type选择SHH协议后点击Open进行连接操作。
点击Open后进入登录界面,输入默认账号密码,均为root:
输入账号密码成功后进入目标板串口终端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配置相关网络参数:
与PC互传文件
开发板与PC互相传输文件可通过U盘/SD卡或者网络传输,如果评估板和电脑处于同一局域网且互相ping通,建议使用网络进行传输,较为方便。
存储设备传输
插入FAT32格式存储设备(不支持其他格式存储设备),df查看U盘或SD卡挂载目录,通过拷贝命令cp进行文件传输:
网络传输
NFS网络传输文件
前提:PC-Linux与开发板网络互相ping通,服务器端已安装好NFS服务器,并且挂载路径有读写权限,安装步骤请查看附录一。
目标板NFS挂载命令: busybox mount -t nfs -o nolock 192.168.1.241:/root/nfs/imx6ul/r
ootfs /mnt
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路径下包含了由本司提供的部分测试脚本和可执行二进制文件,各子目录包含内容如下图所示:
2.通过修改/etc/init.d/S50launcher文件可以定制系统的开机自启动程序、初始环境变量等;
以太网功能测试
TQ3399_CoreB引出一路千兆有线网卡eth0,使用ifconfig命令确认网卡已经处于RUNNING状态,且具有合法的IP地址:
如没有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
如果开发板所处网络环境支持DHCP功能,则也可以使用 udhcpc -i eth0命令为eth0分配动态IP地址。
使用ping命令测试网络通信是否正常,ping www.baidu.com
WIFI功能测试
TQ3399_CoreB板载了AP6398S WIFI模块的型号,可以通过执行如下步骤使能系统的sta和ap功能,相关命令已集成至/test_file/test/wifi/目录下,用户可以直接使用该目录下的脚本进行操作。
STA连接热点
编辑WIFI配置文件/etc/wpa_supplicant.conf,设置待连接的WIFI热点SSID及密码:
执行如下命令使能WIFI:
ifconfig wlan0 up
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B
udhcpc -i wlan0
使用如下命令验证WIFI功能正常:
ifconfig
ping www.baidu.com -I wlan0
AP发送热点
编辑WIFI配置文件/etc/hostapd.conf,设置待连接的WIFI热点SSID及密码:
执行如下操作进行发送热点操作:
hostapd -B /etc/hostapd.conf -f /var/log/hostap.log
此时手机可查找到名为embedsky的WIFI热点,成功连接上热点。
以上几步仅仅保证了连接,如何上网还需配置,首先保证板卡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;
完成以上发送及路由转发操作,此时手机才可使用该热点正常上网。
4G功能使用
TQ3399_CoreB留有一路PCIE USB接口,默认支持N720 USB 4G模块,可以通过执行如下步骤使能4G功能,相关命令已集成至/etc/ppp/peers目录下,用户可以直接使用该目录下的脚本进行操作。
使用前请先插入N720模块,接上SIM卡,建议插上天线,以免信号不好连接失败。
lsusb查看设备ID或者ls /dev/ttyUSB*查看usb虚拟设备节点,正常识别模块会生成如下节点:
执行拨号上网命令:
[root@rk3399 /]# cd /etc/ppp/peers/
[root@rk3399 peers]# pppd call tq_N720_connect &
ifconfig查看,正常连接会生成ppp0节点,并且分配ip,这时可通过ping外网测试4G网络
ifconfig
ping www.baidu.com
说明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),如下图
执行cd /test_file/test/spidev/
./spi_test
存储设备测试
TQ3399_CoreB存储接口有一路USB 2.0,一路USB 3.0,一路TF卡槽,均可使用,插入设备均可自动挂载,df命令查看实际挂载命令。
这里测试使用32G U盘,建议格式化为fat、fat32;原则上使用U盘容量理论不受限,暂不支持exfat、ntfs格式,插入提示信息:
系统检测插入自动挂载,df查看挂载路径,如未挂载,可使用mount命令手动挂载:
对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能够保存时间,要测试精准度最好断电一天后第二天再上电看时间是否还正确。
问题与解决:
提示以下打印
rtc-pcf85631-0051:retrieveddate/timeisnotvalid.
hwclock:RTC_RD_TIME:Invalidargument
说明读取到的非法的rtc时间,第一次未设置rtc时钟直接通过hwclock读取时间时有可能会出现此报错。直接执行hwclock-w重新设置设置一个就可解决。
提示以下打印:
rtc-pcf85631-0051:lowvoltagedetected,date/timeisnotreliable.
说明电压不够或者没有放rtc电池。
音频测试
系统的音频架构为alsa,支持大部分的alsa测试方法,由于alsa架构比较复杂,这里只介绍最简单的测试方式,如果要更深入了解,用户可以到网上找相关资料:
录音
TQ3399_CoreB_V2底板没有板载MIC,需要使用外接MIC(J10)或带MIC头耳机录音,在命令行输入如下命令进行录音操作:
arecord -Dhw:0,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav
播放音乐
在命令行输入:
mp3play.sh 或者aplay test.wav
aplay /test_file/test/mediafiles/music-44_1K.wav
带耳机或者接上喇叭可以播放.<录音>小节的录音文件
查看控制单元
[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'
..... #请参看实际打印
设置耳机音量
查看相关属性的设置情况:
amixer cget numid=$id
进行相关属性的设置
amixer cget numid=$id $val
从上<查看控制单元>可知耳机音量音量控制单元为
numid=3,iface=MIXER,name='Headphone volume'
以下针对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寸屏为例说明接线如下,更详细硬件接口信息请查看硬件手册。
Linux系统默认启动自带的Qt demo,接屏显示Qt界面:
使用我司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
显示效果如下:
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";
};
显示效果如下:
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屏为例说明接线如下,更详细硬件接口信息,请查看硬件手册。
Linux系统默认启动自带的Qt demo,接屏显示Qt界面:
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文件:
2.2.4 打包update.img固件
$ cd tools/linux/Linux_Pack_Firmware/rockdev/
$ ./mkupdate.sh
在当前目录下会生成update.img固件,即可用此固件烧录TQ3399板子(烧写详细见《TQ3399镜像更新手册》)。
系统开发
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
从配套网盘资料中拷贝交叉编译工具的压缩包(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 /
解压完成后会在/opt/EmbedSky/TQ3399/下生成一系列的文件(夹)。目录结构如下图:
解压完成之后修改环境变量,添加交叉编译器的路径,使用命令:
#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
就可以查看刚刚安装好的交叉编译器了:
如果出现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版本
成功安装交叉编译器后,就可以进行编译已经创建好的 qt 工程了,qt5.9_example_V1.0.zip 中提供了一些 QT官方的例程源码。解压后目录结构如下:
例如编译 examples/opengl/cude/下的这个例程:
进入到该路径下,具体的路径以你的实际路径为准:
输入sudo qmake,生成Makefile:
输入sudo make或sudo make -j8编译生成qt执行程序:
生成的cube即为 qt 执行程序,拷贝到板子上即可测试。(可以通过U盘、SD卡或网络挂载的方式拷贝到板子文件系统中)
QtCreator交叉编译
安装QtCreator
拷贝qt-creator-opensource-linux-x86_64-3.5.1.run文件至你的PC目录下,进入到所在的目录下,命令行执行该文件(具体路径以你的实际路径为准!),根据提示步骤进行安装操作。
#./qt-creator-opensource-linux-x86_64-3.5.1.run
以下是详细截图:
安装成功之后点击完成。
qtcreator 的执行程序在你的安装目录下的./bin/中
进入到 qtcreator 所在的路径下,按照上文中截图的例子笔者的路径是/home/cheng/qt_creator_3.5.1//bin 进入到这个路径下,(实际路径以你安装时选择的路径为准,切勿盲目复制粘贴!)命令行执行./qtcreator 即可打开。
下图为qtcreator界面。至此,qtcreator 安装成功。
配置Qt Creator搭建交叉编译环境
简单来说就是通过配置qtcreator,将第一章节中的交叉编译器(arm-linux-gnueabihf-gcc)和qt编译工具(qmake)的路径添加到qtcreator中,由qtcreator调用这些工具进行编译。这样一来就可以在图形界面下进行qt程序的开发和编译了!
打开Qt Creator选择工具,找到子选项“Options”
添加交叉编译器(aarch64-linux-gcc)。
点击添加后选择GCC
自定义交叉编译器名称,选择交叉编译器路径。
名称是qtcreator 中给交叉编译器取的一个别名,为了方便区分其他编译工具,这里命名为tq3399-gcc
编译器路径:/opt/EmbedSky/TQ3399/bin/ aarch64-linux-gcc
点击 Apply
添加 qmake 编译工具
选择qmake路径/opt/EmbedSky/TQ3399/bin/qmake
添加构建套件(Kit)
选择构建套件(Kit)
套件的名称,可以自定义,这里笔者命名为:For_qt3399
点击下拉条选中“通用Linux设备”
点击下拉条选中前面步骤中交叉编译器取的别名tq3399-gcc
点击下拉条选中前面步骤中qmake的别名qt3399-qmake
点击方框中的选项“Apply”、“OK”
至此qtcreator配置完成!
使用QtCreator交叉编译
打开 qtcreator ,点击 Open Project
选中你项目的实际路径,每个qt工程都有一个 xxx.pro文件,点击XXXX.pro 文件后打开项目,这里是笔者选择examples/opengl/cube/cube.pro例程编译的截图:
选中您之前自定义的套件的名称:“For_qt3399”
可以点击“项目”,取消 “Shadow build”的选中(即不选中),
目的是为了让编译出来的执行文件生成在例程 源码的目录下,比较直观的查看。
进入了 qtcreator 工程界面,你可以在此查看和编写代码了
点击“构建项目”开始编译程序
成功编译后会在源码顶层目录下生成和工程文件(xxx.pro)同名的执行程序。
生成的cube即为 qt 执行程序,拷贝到板子上即可测试。(可以通过U盘、SD卡或网络挂载的方式拷贝到板子文件系统中)
应用开发例程
该部分例程属于通用接口例程,Linux系统下如需操作各外设接口可以参考该部分例程代码。
天嵌硬件操作库
天嵌硬件操作库下载链接:linux_lib_v1.0.1.tar
天嵌硬件操作库使用跳转链接:http://wiki.armbbs.net/tqwiki/public/info/index.html
例程调用
功能测试手册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源码结构如下:
配置、编译源码
注意:如未特殊说明“配置、编译源码”节所有命令均为在已经配置好交叉编译环境的命令行终端下执行。
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/ 目录
TQ3399刷入Android系统仅需要使用工具烧录update.img镜像文件即可;
说明:以上镜像可以通过解压出厂镜像合集/Android/update.zip文件得到。
Android应用开发指南
暂缺。
附录一PC开发环境搭建
PC-Linux平台环境搭建
Ubuntu16.04安装
Ubuntu安装手册(虚拟机版-通用)
交叉编译器安装
下载TQ3399_gcc9.3.0_Qt5.14.2.tar.bz2文件,将其拷贝到根目录PC-Linux系统/opt目录下
进入/opt目录进行解压操作
#cd /opt
#tar jxvf TQ3399_gcc9.3.0_Qt5.14.2.tar.bz2 -C /
写入环境变量
#echo PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/EmbedSky/TQ3399/bin"
>> /etc/environment
使环境生效
#source /etc/environment
查看交叉编译器版本
#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 系统的目录结构是一颗倒状树
/bin :存放常用命令(即二进制可执行程序)
/etc :存放系统配置文件
/home :所有普通用户的家目录
/root :管理员用户的家目录
/usr :存放系统应用程序及文档
/proc :虚拟文件系统目录,以进程为单位存储内存的映射
/dev :存放设备文件
/mnt :临时挂载点
/lib :存放库文件
/boot :系统内核及启动有关的文件
/tmp :存放各种临时文件,是所有用户均可访问的地点
/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)与我们联系(为了能够方便跟进记录,请参照邮件落款模板发送邮件。希望能结识更多的朋友,大家一起共同进步。
官方网站:http://www.embedsky.com
论坛:http://www.armbbs.net
淘宝店铺:https://embedsky.taobao.com
技术支持邮件:support@embedsky.net
技术支持电话:020-38373101-810(IMX6Q)
020-38373101-814(IMX6UL)
020-38373101-818(335X)
邮件落款模板
烧写镜像文件版本号:xxx (例如:V2.0_R1.0,版本号在文件名后面有)
使用板卡、系统:xxx (例如:e9 android 4.3)
联系人:xxxxx
联系方式:xxxxx
公司:xxxxxx (例如:天嵌科技、学校等等)
常规技术支持范围
使用我司的镜像与开发板。
系统或硬件出现问题时(不包含客户自行开发)