前言
概述
TQIMX6ULL_COREB_V3 核心板是由广东省天嵌嵌入式技术股份有限公司基于 NXP 的 i.MX 6ULL 系列处理器设计的工业级核心板,TQIMX6ULL_COREB_V3 核心板和其配套的评估底板 TQIMX6UL(L)_BASEB_V3 组成评估套件,用户可通过本WIKI找到评估套件的系统开发、使用方法等相关资料。
OS版本
| 系统 | 内核版本 | Qt库版本 | 维护情况 | 
| Linux+Qt5.5 | Linux4.1.15 | Qt5.5 | 维护中 | 
文档修订记录
| 修订日期 | 修订人 | 修订记录 | 备注 | 
| 2022-04-21 | Tanya | 初版 | 修订仅针对本网站文档 | 
产品介绍
核心板简介
TQIMX6UL_CoreB_V1.1是由天嵌股份于2017年推出的核心板,为给用户提供性价比更高,性能更强大的产品,我司于2022年全新推出TQIMX6UL_COREB_V3,可选6UL、6ULL CPU型号,我司主推6ULL,相较于6UL的528MHZ运行主频,6ULL CPU运行主频高达792MHz,且价格更优于6UL
针对不同的客户群体和应用场景,我们提供商业级和工业级不同的配置选择,如下表:
| 版本号 | 应用级别 | CPU | CPU型号 | 内存容量 | 存储容量 | 
| TQIMX6UL_COREB_V1.1 | 商业级 | 6UL | MCIMX6G2CVM05AA | 256MB | 256M Nand | 
| TQIMX6UL_COREB_V3 | 工业级 | 6ULL | MCIMX6Y2CVM08AA | 256MB | 256/512M Nand | 
| TQIMX6UL_COREB_V3 | 工业级 | 6ULL | MCIMX6Y2CVM08AA | 512MB | 512 MB/8G EMMC | 
核心板基本参数
| 核心板版本 | TQIMX6UL_COREB_V3 | 
| 核心板尺寸 | 50*40mm | 
| 核心板层数 | PCB采用6层沉金工艺,布局、布线充分考虑EMC | 
| 引脚针数、接口形式 | 160pin,采用B2B高速接口 | 
| 输入电压 | 12V | 
| 电源管理 | 分立电源 | 
| CPU | NXP iMX6ULL | 
| 架构 | 单核Cortex A7 | 
| 主频 | 792MHz | 
| 内存 | 256MB DDR3 (标配,其他配置可选) | 
| Flash | 256MB Nandflash(标配,其他配置可选) | 
| 核心板工作功耗 | 0.8W(5V/160mA) | 
| 工作温度 | -40~85°C(工业级);0~70℃(商业级) | 
核心板外观和尺寸
核心板接口采用BTB高速接口,尺寸:50*40mm。


底板介绍
为了方便广大用户对TQIMX6ULL_CoreB核心板的功能进行快速了解,提高产品开发的速度,我司提供配套的底板:

底板功能特性说明:
| 底板尺寸 | 182.5*112.4mm | 
| 底板层数 | 4层 | 
| 输入电压 | 12V 1A电源输入 | 
| Usb OTG | 1路 | 
| Usb Host | 4路(2路双层USB接口,USB2/USB4与扩展接口/4PIN排针复用,可通过电阻选择,出厂默认使用双层USB接口) | 
| Audio | 1路PHONE,2路输出 | 
| Ethernet | 2路百兆网口(网口2与UART7、UART8复用,可通过电阻选择,默认用作网口2,出厂默认用作网口2) | 
| UART | 最多支持8路 (UART2与RS485复用,可通过电阻选择,默认使用RS485; UART7、UART8与网口2复用,可通过电阻选择默认使用网口2) | 
| RS485 | 1路(与UART2复用) | 
| CAN | 2路 | 
| RTC备用电池 | 支持 | 
| SD卡座 | 1路 | 
| RST复位 | 1路复位按键 | 
| LCD类型选择 | 24bitRGB,底板支持电容屏/电阻屏自动识别 | 
| 扩展接口 | 扩展口引出1路USB、1路I2C、1路UART、2路PWM、3路GPIO和2路SPI引脚 | 
软件说明
天嵌股份为 TQi.MX6ULL 提供了功能强大的 uboot 源码与 linux-4.1.15的内核。提供的的 u-boot 版本为uboot_2016.03
| Linux + Qt系统 | ||
| 交叉 编译器 | arm-linux-gnueabi-gcc-4.9.4 | 专用armv7指令集,支持硬浮点运算 | 
| 烧写 | 支持SD卡脱机快速烧写 | SD卡脱机刷机,专为企业级用户定制,非常适合批量生产 | 
| 支持单个文件/多个文件一键烧写 | ||
| 支持ubi格式系统文件烧写 | ||
| uboot | 多启动方式选择(nand,SD卡) | |
| 多种方式烧写(sd卡,tftp) | ||
| 多种文件系统介质、格式挂载(nfs,ext4,ubi) | 提供源代码 | |
| 多种分辨率选择 | 提供源代码 | |
| 内存(256M/512M) | 提供源代码 | |
| uboot开机logo | 提供源代码 | |
| tftp启动方式 | 提供源代码 | |
| Linux 内核 | 版本: Linux-4.1.15 | 完善的BSP | 
| 支持EXT4/NFS/FAT32/等格式的文件系统 | 提供源代码 | |
| nand驱动 | 提供源代码 | |
| 看门狗驱动 | 提供源代码 | |
| RTC驱动 | 提供源代码 | |
| IO驱动 | 提供源代码 | |
| SPI驱动 | 提供源代码,仅供参考 | |
| I2C驱动 | 提供源代码 | |
| PWM控制驱动 | 提供源代码 | |
| 电阻屏驱动 | 驱动模块 | |
| 电容触摸驱动 | 驱动模块,天嵌移植添加 | |
| LCD背光驱动 | 提供源代码 | |
| LCD驱动(高清5"、标清7") | 提供源代码,天嵌移植添加 | |
| USB Host驱动: 支持优盘,USB Hub,USB键鼠等 | 提供源代码 | |
| USB Device驱动 | 提供源代码 | |
| TF/SD/MMC卡驱动:最大可支持32GB | 提供源代码 | |
| 串口驱动:6-8个(使用不同的配置) | 提供源代码 | |
| 音频驱动(wm8960:支持放音、ALSA接口,支持D类功放) | 提供源代码 | |
| 以太网络:2*100M | 提供源代码 | |
| USB转串口驱动 | 提供源代码 | |
| 嵌入式图形系统界面 | Qt/Embedded-5.5 | 提供arm版本源代码,支持运行时自由切换 | 
性能参数
说明:以下接口性能参数由于测试环境、使用模块不同,实际速率有可能会有差异,请以实际为准
| NXP i.MX6UL/NXP i.MX6ULL | |||
| 模块 | 性能指标 | 型号 | 数值 | 
| 网卡模块 | 网速 | KSZ8081RNB | 95.7Mbits/s | 
| IP101GRI | |||
| JL111-N0321 | |||
| SD卡 | 读写速度 | SD卡 read | 19.09MB/s(19550kB/s) | 
| SD卡 write | 30.80MB/s | ||
| USB | 读写速度 | USB read | 23.49MB/s(24055kb/s) | 
| USB write | 28.67MB/s | ||
| UART | 最大波特率 | ttySAC0 | 4000000 | 
| ttySAC1 | 4000000 | ||
| ttySAC2 | 4000000 | ||
| ttySAC3 | 4000000 | ||
| ttySAC4 | 4000000 | ||
| ttySAC5 | 4000000 | ||
| ttySAC6 | 4000000 | ||
| ttySAC7 | 4000000 | ||
| CAN | 最大波特率 | can0 | 800000 | 
| can1 | 800000 | ||
| SPI | 最大波特率 | spidev0.0 | 50000000 | 
| spidev1.0 | 50000000 | ||
评估套件支持的配件
| 模块名称 | 分辨率/速率 | NXP i.MX6ULL Coretex-A7 | 
| 天嵌5寸高清电容屏 | 800x480 | 支持 | 
| 天嵌7寸高清电容屏 | 1024x600 | 支持 | 
| 天嵌 TN92 普清电容/电阻屏 | 800x480 | 支持 | 
| Wifi模块 TQ8723-wifi-BT | 支持 | |
| 4G Sim7600 | 支持 | |
| 4G N720 | 支持 | 
入门指南
使用前准备及说明
接线说明
必要硬件设备
- PC机:Windows 7或Linux系统 
- 12V电源一个:直流电源 
- 目标板 
- 网线 
- 调试串口线 
必要软件和配置
- 串口终端软件:如Putty调试工具,详细配置参考<登录目标板系统>第1小章节 
- SSH远程连接软件:Putty调试工具,详细配置参考<登录目标板系统>第3小章节 
启动拨码开关说明
启动拨码开关拨到评估底板左边(靠近耳机接口)为 SD/USB 启动端,右边为 FLASH 启动端。首次启动请确认开关打到FLASH端启动。

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

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

网络连接说明
开发板支持双网口:NE1和NET2,其中NET2与UART7、UART8为复用功能。关于NET2与UART7、UART8复用功能详细请查看TQIMX6ULL评估板的硬件手册。
评估板系统默认网络是启动NET1,默认IP:192.168.1.6,如需通过网络远程连接评估板请先用网线连接此端口和您电脑或路由器交换机,并修改PC机或者路由器的IP(IP为192.168.1.X, X 一般取3到254中间的任意阿拉伯数字,但不能和评估板的IP冲突),确保板卡和您的电脑再同一局域网段。如您是第一次使用我司板卡,或不熟悉网络修改和网络登录的用户,建议通过连接调试串口进入系统。

液晶屏连接说明
开发板支持LCD输出,支持我司大部分LCD接口显示屏,通过软排线连接显示屏与开发板

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

登录目标板系统
通过PC-Windows系统
在这里我们介绍在window平台下如何测试评估套件,首先需要在PC机安装一个串口终端,这里以Putty调试串口工具作为示范,您可以自行下载SecureCRT、xshell等工具进行调试串口的设置与连接。
一般需要设置端口、校验位、波特率,RTS/CTS等,常用串口工具配置说明如下:
- 端口选项根据您的实际使用的端口进行配置:计算机->设备管理器->端口 
- 校验位在串口通信中一种简单的检错方式,一般选择8位 
- 波特率需根据实际使用平台的串口配置进行选择 
- RTS/CTS一定不能选,否则可能出现串口有输出,没法输入的情况 
Putty的配置如下:Putty.exe。
Connection type选择Serial、设置Serial line为COM14、Speed为115200

点击Open后进入Putty界面,正常情况下上电即可以看到开发板的启动打印信息,如下图所示:
说明:
- 如果没有串口打印信息,检查启动拨码是否已打到FALSH启动 
- 确认使用串口线是否为RS232电平 

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

通过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远程登录。
注:连接之前请确保PC与板子IP相互ping通
Linux下使用SSH连接命令:
tanya@EmbedSky-Server2:/data1/tanya_data$ssh root@192.168.1.6
root@192.168.1.6's password: 
[root@Embedsky ~]# 
[root@Embedsky ~]# 
[root@Embedsky ~]# Windows下使用Putty SSH连接步骤:
- 输入目标板IP,默认为192.168.1.6,Connection type选择SHH协议后点击Open进行连接操作。 

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

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

目标板Linux系统基础操作
登录到目标板系统之后,您可以通过Linux常用命令对目标板进行查看、修改等操作。
查看系统版本信息
[root@Embedsky ]# cat /proc/version 
Linux version 4.1.15 (tanya@EmbedSky-Server2) (gcc version 4.9.4 (Linaro GCC 4.9-2017.01) ) #1 SMP PREEMPT Sun Apr 24 13:50:53 CST 2022
[root@Embedsky ]# 查看cpu信息
[root@Embedsky ]# cat /proc/cpuinfo 
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)       #cpu架构
BogoMIPS        : 8.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5
Hardware        : Freescale i.MX6 Ultralite (Device Tree)
Revision        : 0000
Serial          : 0000000000000000
[root@Embedsky ]# 查看内存使用情况
[root@Embedsky ]# free -m
             total       used       free     shared    buffers     cached
Mem:           241         48        192          1          0          5
-/+ buffers/cache:         43        197
Swap:            0          0          0
[root@Embedsky ]#查看磁盘使用情况
[root@Embedsky ]# df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
ubi0:rootfs          ubifs         194.1M    168.9M     25.2M  87% /
devtmpfs             devtmpfs      120.5M         0    120.5M   0% /dev
tmpfs                tmpfs         120.7M         0    120.7M   0% /dev/shm
tmpfs                tmpfs         120.7M      1.5M    119.2M   1% /tmp
tmpfs                tmpfs         120.7M     24.0K    120.6M   0% /run查看分区信息
Nand flash查看分区:
[root@Embedsky ]# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00400000 00020000 "u-boot"
mtd1: 00200000 00020000 "u-boot-env"
mtd2: 00400000 00020000 "logo"
mtd3: 00a00000 00020000 "kernel"
mtd4: 00200000 00020000 "dtb"
mtd5: 0ea00000 00020000 "rootfs"
[root@Embedsky ]# 获取和保存系统log信息
[root@Embedsky ]# ls -l  /var/log/messages获取内核启动参数
[root@Embedsky ]# cat /proc/cmdline 
console=ttySAC0,115200 panel=panel_lcd root=ubi0:rootfs rootfstype=ubifs ubi.mtd=5 mtdparts=gpmi-nand:4m(u-boot),2m(u-boot-env),4m(logo),10m(kernel),2m(dtb),-(rootfs) rootwait rw修改网卡ip
修改IP命令:
[root@Embedsky ]# ifconfig eth0 192.168.1.36            #配置eth0 IP地址
[root@Embedsky ]# route add default  gw  192.168.1.2    #配置网关地址
[root@Embedsky ]# echo "nameserver 202.96.128.166" >> /etc/resolv.conf  #配置DNS服务器
[root@Embedsky ]# 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挂载命令:mount -t nfs -o nolock 192.168.1.35:/home/nfs /mnt/

- SCP传传输文件 
前提:PC-Windows与PC-Linux端与开发板网络互相ping通,目标板后台sshd服务已默认启动。
PC-Linux命令连接:

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


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

其中/opt/PDA/bin/tqpda &是默认开机启动qt5程序,若要取消开机启动程序,在其前面加#注释掉即可;若要修改默认启动程序将其替换自己程序的路径即可。
root@Embedsky:/# vim /etc/embedsky_conf
目标板系统更新
出厂默认已经烧写Linux+Qt5.5系统,FLASH启动模式下可以正常启动系统,如果您定制或者修改过系统镜像、需要更新新版本的系统,则需要使用USB、SD卡或TFTP烧录方式重新烧录板子。
sd卡更新
- 制作烧录卡 
(1)Windows平台制作烧录卡
下载Windows_TQSDMaker.zip,操作手册:《TQSDMaker用户使用手册.pdf》。
(2)Linux平台制作烧录卡
下载tqimx6ul-tools-v3.0.tar.bz2,操作手册:TQIMX6UL_COREB镜像烧写.pdf。
- 成功制作SD烧录卡后,将拨码启动方式拨到SD/USB端,插卡上电进行烧录操作; 
- 烧录成功后断电拨回Nand/Emmc启动启动。 
usb更新
- 将开发板拨码拨为USB启动(SD/USB端),通过USB otg接口连接板子和电脑; 
- 烧录成功后断电,拨回Nand/Emmc启动。 
下载mfgtools_for_6ull_v3.0.zip,操作手册:TQIMX6UL_COREB镜像烧写.pdf。
tftp更新
使用TFTP更新镜像前提:
- 开发板可以正常启动进入uboot菜单; 
- PC端电脑已搭建TFTP服务器,安装步骤请查看附录一。 
TFTP更新镜像步骤:
- 接上串口,上电。在uboot倒数完之前,按ctrl+c中断启动。 
Hit key to stop autoboot('CTRL+C'):  0      #倒数完之前- 进入命令行菜单选择menu->0->6,设置TFTP服务器参数 
#####   TQ-IMX6ULL U-boot MENU    #####
            [SET PARAMS]
#######################################
[1] Set NFS boot parameter
[2] Set EMMC/EXT4 boot parameter Standard Linux
[5] Set Download Image name
[6] Set TFTP parameters(serverip,ipaddr...)
[s] Save the parameters
[c] Choice lcd type
[i] printf board infomation
[e] reset default environment variables
[r] Restart u - boot
[q] Return Main menu
Please press a key to continue :6
Enter the TFTP Server(PC) IP address: (192.168.1.49)
192.168.1.162                       #设置tftp服务器ip地址
Enter the IP address: (192.168.1.41)
192.168.1.36                        #设置开发板ip
Enter the netmask address: (255.255.255.0)  
255.255.255.0                       #设置掩码   
Save parameters?(y/n)
y                               #按 y 保存,如果保存,设置数据会写到flash中在以后的所有 u-boot 操作都会生效。否则只有在本次烧写中生效,复位或者断电都会恢复成设置之前的状态。
Saving Environment to MMC...
Writing to MMC(1)... done- 按q返回上一级菜单,按p测试与设置的tftp服务器是否连通,连通即可进行烧写 
#####   TQ-IMX6ULL U-boot MENU    #####
            [TFTP MODE]
#######################################
[1] Download u-boot to NandFlash or eMMC       [u-boot.imx]     #tftp更新u-boot.imx
[2] Download Logo image to NandFlash or eMMC   [logo.bmp]       #tftp更新logo.bmp
[3] Download Linux Kernel to NandFlash or eMMC [zImage]         #tftp更新zImage
[4] Download Device tree blob(*.dtb)           [tq-imx6ull.dtb]     #tftp更新设备树文件
[5] Download rootfs image to NandFlash or eMMC [rootfs_ext4.img]    #tftp更新文件系统
[7] Download all (uboot,kernel,dtb,rootfs)                      #tftp更新所有镜像文件
[8] Boot the system                                         #启动系统
[9] Erase the whole emmc                                        #擦除flash
[0] Set the boot parameters                                 #设置tftp参数
[p] Test network (Ping PC's IP)  [pc:192.168.1.162,arm:192.168.1.36]    #测试网络
[r] Restart u - boot                                            #复位u-boot
[k] Test kernel Image (zImage)                                  
[d] Test dtb Image (*.dtb)
[a] test kernel and dtb
[q] Return Main menu                                            #返回上一级菜单
Please press a key to continue 
Please press a key to continue :p
Using FEC0 device
host 192.168.1.162 is alive         #与tftp服务器正常连通打印未连通则会出现以下打印,请检查网络部分
Please press a key to continue :p
No ethernet found.
ping failed; host 192.168.1.162 is not alive终端更新
系统添加了mtd-util相关工具,适用于系统终端下直接更新logo、内核或者设备树文件,该工具仅支持在Nand下使用,不支持更新Emmc使用, 远程操作步骤如下:
- 使用命令前用cat /proc/mtd 查看一下mtdchar字符设备: 
[root@Embedsky ]# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00400000 00020000 "u-boot"
mtd1: 00200000 00020000 "u-boot-env"
mtd2: 00400000 00020000 "logo"
mtd3: 00a00000 00020000 "kernel"
mtd4: 00200000 00020000 "dtb"
mtd5: 0ea00000 00020000 "rootfs"- 通过网络挂载或者U盘等其他方式将要更新的镜像拷贝到系统目录,这里通过nfs挂载将zImage拷贝到根目录下: 
[root@Embedsky ]# mount -t nfs -o nolock 192.168.1.162:/home/zImage /mnt
[root@Embedsky ]# cp /mnt/zImage ./
- Nandwrite 向Nand flash对应分区写入数据,这里将zImage写入对应的mtd3分区: 
[root@Embedsky ]# nandwrite -p /dev/mtd3 zImage 
Writing data to block 0 at offset 0x0
Writing data to block 1 at offset 0x20000
Writing data to block 2 at offset 0x40000
Writing data to block 3 at offset 0x60000- reboot重启刷新Nand flash数据,验证是否已经写入,可通过查看内核编译信息判断: 
[root@Embedsky ]# cat /proc/version 
Linux version 4.1.15+ (qingleqq@z-work) (gcc version 5.3.1 20160412 (Linaro GCC 5.3-2016.05) ) #356 SMP PREEMPT Mon Dec 27 11:21:58 HKT 2021
[root@Embedsky ]# linux外设功能测试
命令行测试
rtc使用
插上电池,确保电池有电,进入系统后通过以下命令设置时间:
# date -s "2019-04-28 15:06:00"
Sun Apr 28 15:06:00 UTC 2019
# hwclock -w
# date 
Sun Apr 28 15:06:09 UTC 2019建议设置为北京时间。设置完成后断开12V电源,等待10秒以上。重新接上电源进入系统使用date或hwclock命令查看当前时间,观察时间是否正确。最好断电一天后第二天再上电看时间是否还正确。RTC能够保存时间,要测试精准度最好断电一天后第二天再上电看时间是否还正确。
RTC时间有一定误差属于正常现象,一般一个月误差在±60s以内为正常。
uart使用
天嵌IMX6ULL评估套件引出8路串口:
| 串口名 | 设备名 | 功能 | 电平 | 板子上的丝印 | 
|---|---|---|---|---|
| 串口0 | /dev/ttySAC0 | 调试串口 | RS232 | CON1 | 
| 串口1 | /dev/ttySAC1 | 用户自定义 | RS485 | CON2 | 
| 串口2 | /dev/ttySAC2 | 用户自定义 | RS232 | CON3 | 
| 串口3 | /dev/ttySAC3 | 用户自定义 | RS232 | CON4 | 
| 串口4 | /dev/ttySAC4 | 用户自定义 | TTL | CON5 | 
| 串口5 | /dev/ttySAC5 | 用户自定义 | TTL | CON6 | 
| 串口6 | /dev/ttySAC6 | 与ETH2复用 | TTL | CON7 | 
| 串口7 | /dev/ttySAC7 | 与ETH2复用 | TTL | CON8 | 
板载的串口均为3线串口。除了串口0用作调试串口,其它串口用户都可以使用。
注意:
- 串口6、7与网卡复用,出厂配套底板默认是网络功能。如果要使用串口功能,请查看硬件手册确认电阻位置,同时烧写对应板卡的单网卡+网卡复用(imx6ul为:tq-imx6ul_net0_uart.dtb,imx6ull为:tq-imx6ull_net0_uart.dtb)的设备树文件。 
- 串口1默认是485电平,即在默认情况下测试CON2是不通的。若要使用TTL电平,去掉R194、R200 NC掉,将 R255、R256改成33R的电阻;UART2为TTL电平输出。具体请参考硬件手册。 
测试CON4的通讯,短接CON4的rx和tx,执行命令
/test_file/test/uart_test /dev/ttySAC3程序自收发字符串,成功打印ok,收发失败打印faile

CAN使用
短接can0与can1,H-H,L-L,以下是测试过程:
# ifconfig can0 down
# ip link set can0 type can bitrate 1000000 triple-sampling on
# ifconfig can0 up
flexcan 2090000.can can0: writing ctrl=0x012320d4
# ifconfig can1 down 
# ip link set can1 type can bitrate 1000000 triple-sampling on 
# ifconfig can1 up 
flexcan 2094000.can can1: writing ctrl=0x012320d4
# candump can1&                             #监听can1
# cansend can0 111#1122334455667788                 #can0发送数据
  can1  111   [8]  11 22 33 44 55 66 77 88  #can1接收到的数据led控制
控制LED只是设置一下高低电平即可。系统有2个led灯,具体操作是一样的,只有路径有不一样,led1的操作目录是/sys/class/leds/LED1/,led2的操作目录是/sys/class/leds/LED2/。下面以led1为例,简单说明如何使用:
点亮LED1,在命令行输入下列命令:
#echo 0 > /sys/class/leds/LED1/brightness熄灭LED1,在命令行输入下列命令:
#echo 1 > /sys/class/leds/LED1/brightnessGPIO使用
注: 控制gpio需要保证该引脚已经配置成普通gpio,例如控制GPIO5_IO2
#echo 130 > /sys/class/gpio/export
#echo out > /sys/class/gpio/gpio130/direction
#echo 1 > /sys/class/gpio/gpio130/value
#echo 0 > /sys/class/gpio/gpio130/value配置占用引脚为普通GPIO参考:<配置占用引脚为普通GOIO.txt>
说明:
a./sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号,/sys/class/gpio/export写编号,比如以上命令,命令成功后生成/sys/class/gpio/gpio130目录,如果没有出现相应的目录,说明此引脚不可导出;计算引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数 b.value文件是端口的数值,为1或0,echo写入高低电平之后可以使用万用表测量该引脚是否可控。 c.direction文件,定义输入输入方向;
pwm使用
在命令行中设置PWM输出,调出pwm0目录下设备节点,*为你要设的pwm。
在命令行输入下列命令:
#echo 0 > /sys/class/pwm/pwmchip*/export 
#echo 1 > /sys/class/pwm/pwmchip*/pwm0/enable //设置使能
#echo 1000000 > /sys/class/pwm/pwmchip*/pwm0/period  //设置周期
#echo 500000 > /sys/class/pwm/pwmchip*/pwm0/duty_cycle   //设置占空比背光控制
在命令行中设置背光亮度:
#echo xxx >/sys/class/backlight/backlight/brightness 其中xxx为0~6的数值,表示背光的亮度,0为最暗,6为最亮
在代码中设置背光亮度:
Int fd = Open(“/sys/class/backlight/backlight/brightness”,O_RDWR);
write(fd,”6”,2);    //设置背光值为50
Close(fd);音频功能
播放音频,接耳机或喇叭后执行:
#aplay /root/test_utils/music_20s.wav录音执行:
#arecord -Dhw:0,1 -d 10 -f cd -r 44100 -c 2 -t wav test.wavwifi功能
说明:以下wifi功能测试仅适用于我司配套的TQ-8723-wifi模块,其他wifi模块请参考使用。
发送热点
本方法仅保证适用于tq-8723-wifi模块,插上模块,在板卡串口终端上执行
#cd /test_file/
#./send_ap.sh默认账号:test 密码:12345678
修改账号密码方法:
#vim /etc/hostapd.conf账号对应项:ssid=test
密码对应项:wpa_passphrase=12345678
连接热点
本方法仅保证适用于tq-8723-wifi模块,插上模块,在板卡串口终端上执行
#cd /test_file/
#./link_wifi.sh默认账号:CDMA-yalu密码:1234567890
wifi用户、密码修改:
#vim /etc/wpa_supplicant.conf账号对应项:ssid="CDMA-yalu"
密码对应项:psk="1234567890"
4G功能
说明:以下4G功能测试仅适用于我司配套模块,其他模块请参考使用。
- tq-SIM7100,SIM7600使用,在板卡串口终端上执行 
#/test_file/link_4g_sim7600.sh- N720模块使用,在板卡串口终端上执行 
#/test_file/link_4g_N720.sh注:使用N720如果报错,有可能是串口冲突,可以
#vi /etc/ppp/peers/tq_N720_connect修改/dev/ttyUSB0为/dev/ttyUSB1或者/dev/ttyUSB2,保存重新拨号。
linux系统开发指南
注:以下环境是在ubuntu16.04、64bit系统下搭建,其他系统或其他版本仅供参考。进行Linux系统开发之前请先参考附录一《PC环境搭建章节》搭建开发环境。
编译bootloader固件
下载uboot源码TQIMX6ULL_uboot_V1.4.tar.bz2,将其拷贝到根目录/opt目录下,然后在ubuntu系统中执行
#cd /opt
#tar xvf TQIMX6ULL_uboot_V1.4.tar.bz2 -C /
#cd /opt/EmbedSky/TQIMX6ULL/u-boot-2016.03
#./build.sh
coreb's version ?           #这里根据使用的核心板版本进行选择
    [ 0 ] version 3 (default)
    [ 1 ] version 1
0
choose your configuration plz   #这里根据使用核心板的存储大小进行选择
    [ 0 ] ddr=256M, media=NANDFlash (default)
    [ 1 ] ddr=512M, media=NANDFlash
    [ 2 ] ddr=256M, media=EMMC
    [ 3 ] ddr=512M, media=EMMC
    [ c ] make clean 
0然后等待编译完成,编译完成后可以看到在此目录下有对应的uboot镜像,比如选择 ddr=256M, media=NANDFlash,生成对应的镜像文件:u-boot-nand-ddr256M.imx,该镜像文件通用于IMX6UL、IMX6ULL两款CPU,具体使用的是哪款板卡可以查看官网的产品信息。
编译kernel固件
下载linux源码[TQIMX6ULL_linux_Vx.x.tar.bz2](https://pan.baidu.com/s/1A61c_tTY_bMMj69E9VUYHw)[提取码:qnjd],将其拷贝到根目录/opt目录下,然后在ubuntu系统中执行
#cd /opt
#tar xjf TQIMX6ULL_linux_V2.4.tar.bz2 -C /
#cd /opt/EmbedSky/TQIMX6ULL/linux-imx-4.1.15
#./build.sh然后等待编译完成,编译完成后可以看到在此目录下有
IMX6UL、IMX6ULL通用kernel:zImage
| 内核镜像 | zImage | 兼容imx6ul、imx6ull两款cpu,兼容所有内存和flash型号 | 
| dtb镜像 | tq-imx6ul-corebv1_net0net1.dtb | TQIMX6UL_coreBv1双网卡设备树,兼容所有内存和flash型号 | 
| tq-imx6ul-corebv1_net0uart.dtb | TQIMX6UL_coreBv1单网卡+8串口设备树,兼容所有内存和flash型号 | |
| tq-imx6ul-corebv3_net0net1.dtb | TQIMX6UL_coreBv3双网卡设备树,兼容所有内存和flash型号 | |
| tq-imx6ul-corebv3_net0uart.dtb | TQIMX6UL_coreBv3单网卡+8串口设备树,兼容所有内存和flash型号 | |
| tq-imx6ull-corebv1_net0net1.dtb | TQIMX6ULL_coreBv1双网卡设备树,兼容所有内存和flash型号 | |
| tq-imx6ull-corebv1_net0uart.dtb | TQIMX6ULL_coreBv1单网卡+8串口设备树,兼容所有内存和flash型号 | |
| tq-imx6ull-corebv3_net0net1.dtb | TQIMX6ULL_coreBv3双网卡设备树,兼容所有内存和flash型号 | |
| tq-imx6ull-corebv3_net0uart.dtb | TQIMX6ULL_coreBv3单网卡+8串口设备树,兼容所有内存和flash型号 | 
文件可以直接烧录到对应板卡中启动,使用的是哪款板卡可以查看官网的产品信息。设备树文件分别是双网卡,单网卡+串口复用的设备树,具体使用设备树视客户使用情况而定。
制作rootfs固件
下载系统源文件rootfs_qt5.5_v1.6.tgz,和tqimx6ul-tools-v3.0.tar.bz2将其拷贝到根目录/下,然后在ubuntu系统中执行:
#tar xvf tqimx6ul-tools-v3.0.tar.bz2 -C /
#mkdir rootfs               #新建文件夹
#tar xvf rootfs_qt5.5_v1.6.tgz -C ./rootfs      #解压到/rootfs,注意不要解压到根目录下
# /tqimx6ul-tools/createrootfs.sh rootfs        #制作rootfs镜像
rootfs
your nand/emmc size?                #需要根据实际使用存储大小选择镜像制作
  [ 0 ] 256M nand 
  [ 1 ] 512M nand 
  [ 2 ]   1G nand 
  [ 3 ]   4G emmc 
  [ 4 ]   8G emmc 执行完之后会在当前目录下生成rootfs_ubi.img或者rootfs_ext4.img文件,rootfs_ubi.img用于Nand Flash,rootfs_ext4.img用于Emmc,该镜像文件为IMX6UL、IMX6ULL通用文件系统,可直接烧写到板卡启动。
kernel源码简介
内核使用的是 kernel_4.1.15。以下的路径都是在相对于内核根目录而言。由于驱动代码牵涉较广,难以将文件一一描述,所以以下提及的驱动源码只是相对主要或者是修改频率比较高的文件。
| 驱动 | 在内核中的源码位置 | 系统中的设备名称 | 
|---|---|---|
| emmc/sdcard 驱动 | drivers/mmc/host/sdhci-esdhc-imx.c | /dev/mmcblk* | 
| drivers/mmc/host/sdhci.c | ||
| drivers/mmc/host/sdhci-pltfm.c | ||
| LCD 驱动 | drivers/video/fbdev/mxc/mxc_edid.c | /dev/fb* | 
| drivers/video/fbdev/mxc/mxc_dispdrv.c | ||
| drivers/video/fbdev/mxc/mxc_lcdif.c | ||
| drivers/video/fbdev/mxc/mxc_ipuv3_fb.c | ||
| 电阻触摸屏驱动 | drivers/input/touchscreen/imx6ul_tsc.c | dev/input/event* | 
| 电容触摸屏驱动 | drivers/input/touchscreen/goodix.c | dev/input/event* | 
| 有线网络驱动 | drivers/net/ethernet/freescale/fec_main.c | eth0 | 
| 串口驱动 | drivers/tty/serial/imx.c | /dev/ttySAC* | 
| drivers/tty/serial/mxs-auart.c | ||
| drivers/tty/serial/serial_core.c | ||
| sgtl5000声卡驱动 | sound/soc/imx/* | /dev/snd/* | 
| I2C驱动 | drivers/i2c/busses/i2c-imx.c | /dev/i2c-* | 
| 按键驱动 | drivers/input/keyboard/gpio_keys.c | dev/input/event* | 
| 背光灯驱动 | drivers/video/backlight/pwm_bl.c | /sys/class/backlight/* | 
| drivers/video/backlight/backlight.c | ||
| Pwm驱动 | drivers/clk/clk-pwm.c | /sys/class/pwm/* | 
| RTC驱动 | drivers/rtc/rtc-pcf8563.c | /dev/rtc0 | 
| 看门狗驱动 | drivers/watchdog/imx2_wdt.c | /dev/watchdog | 
| ADC驱动 | drivers/iio/adc/imx7d_adc.c | /sys/devices/platform/soc/2100000.aips-bus/2198000.adc/iio\:device0/in_voltage%d_raw | 
led
源码路径
主要修改文件为设备树文件,驱动一般不需要修改,驱动代码位于:
| 文件内容 | 源码路径 | 
|---|---|
| 设备树文件 | arch/arm/boot/dts/tq-imx6ull.dtsi | 
| 驱动源码 | drivers/tty/serial/imx.c | 
代码简述
leds {
        compatible = "gpio-leds";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_leds>;
        led1 {
            label = "LED1";
            gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;   //led 使用的引脚,与触发电平
        };
        led2 {
            label = "LED2";
            gpios = <&gpio5 8 GPIO_ACTIVE_HIGH>;
        };
};按键
天嵌IMX6ULL套板目前只有1个按键。为系统的复位按键,是专有功能,不可以作为gpio-button用。所以板子不存在用户可定制的按键。如果用户自己定制底板,可以通过以下方式添加自己的按键。
源码路径
只列出主要的驱动文件且与imx平台相关的。
| 文件内容 | 源码路径 | 
|---|---|
| 设备树文件 | arch/arm/boot/dts/tq-imx6ull.dtsi | 
| 驱动源码 | drivers/input/keyboard/gpio_keys.c | 
代码简述
因为只是一个demo。所以所有的引脚都是随便用的。用户只要明白方法即可
gpio-keys {
        compatible = "gpio-keys";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_keys>;
        status = "disabled";
        key0 {
            label = "F1";
            gpios = <&gpio5 3 GPIO_ACTIVE_HIGH>;    #使用gpio5_3,设置GPIO_ACTIVE_HIGH高有效            gpio-key,wakeup;#有这个表示按键可唤醒系统
            linux,code = <KEY_F1>;                 };#键值:具体定义在include/dt-bindings/input/input.h
    };管脚配置
pinctrl_keys:keysgrp{
            fsl,pins = <
                MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03  0x79
            >;
        };GPIO
源码路径
主要修改文件为设备树文件,驱动一般不需要修改,驱动代码位于:
| 文件内容 | 源码路径 | 
|---|---|
| 设备树文件 | arch/arm/boot/dts/tq-imx6ull.dtsi | 
| 驱动源码 | drivers/gpio/gpiolib.c | 
| Pin脚定义 | arch/arm/boot/dts/imx6ull-pinfunc.h | 
代码简述
&iomuxc {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_hog_1>;
    imx6ul-evk {
pinctrl_hog_1: hoggrp-1 {
            fsl,pins = <
                MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059     /* SD1 CD       */
                MX6UL_PAD_CSI_DATA03__GPIO4_IO24        0x17059     /* 4G power     */
                MX6UL_PAD_CSI_DATA00__GPIO4_IO21        0x17059     /* 4G disabled  */
                MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01      0x17059     /* 4G reset     */
                MX6UL_PAD_CSI_DATA02__GPIO4_IO23        0x17059     /* GPIO         */
                MX6UL_PAD_CSI_DATA01__GPIO4_IO22        0x17059     /* GPIO         */
            >;
        };
..........
}其中MX6UL_PAD_CSI_DATA01__GPIO4_IO22表示CSI_DATA01引脚作为GPI_IO4_22使用。
UART
源码路径
主要修改文件为设备树文件,驱动一般不需要修改,驱动代码位于:
| 文件内容 | 源码路径 | 
|---|---|
| 设备树文件 | arch/arm/boot/dts/tq-imx6ull.dtsi | 
| 驱动源码 | drivers/tty/serial/imx.c | 
代码简述
- 调试串口 
板子使用串口1作为调试串口,先将串口1设置为系统标准输出。
chosen {
  stdout-path = &uart1;
};配置一般属性并将串口1的状态设置为”okay”打开模式
&uart1 {
  pinctrl-names = "default";
  pinctrl-0 = <&pinctrl_uart1>;
  status = "okay";
};定义配置管脚模式(注:如果有其它位置定义了同一个管脚,需要将其它位置的定义注释掉。)
pinctrl_uart1: uart1grp {
    fsl,pins = <
        MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
        MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
    >;
};管脚的pinctrl_uart1与uart1 中的pinctrl-0 对应。
- 串口2~5: 
串口2-5配置都为一样,以下以串口2为讲解。
配置串口一般属性并使能串口2:
&uart2 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_uart2>;
    //如果硬件设计上是支持流控的可以添加下面的选项
    /*fsl,uart-has-rtscts;*/
    /* for DTE mode, add below change */
    /* fsl,dte-mode; */
    /* pinctrl-0 = <&pinctrl_uart2dte>; */
};定义配置uart2管脚模式,注:名字需要与pinctrl-0属性一致
pinctrl_uart2: uart2grp {
  fsl,pins = <  
        MX6QDL_PAD_EIM_D26__UART2_TX_DATA   0x1b0b1  
          MX6QDL_PAD_EIM_D27__UART2_RX_DATA   0x1b0b1  
          MX6QDL_PAD_EIM_D28__UART2_CTS_B 0x1b0b1  
          MX6QDL_PAD_EIM_D29__UART2_RTS_B 0x1b0b1  
  >;
};Linux应用开发指南
C应用程序交叉编译
说明1::如未安装PC机Linux系统,参考<附录一>安装Ubuntu16.04。
说明2: 以下环境是在ubuntu16.04、64bit系统下搭建,其他系统或其他版本仅供参考。
编写test源程序
本章节使用的demo程序如下图:

包含三个包含 3 个源文件 main.c test_a.c test_b.c 以及一个头文件 include/test.h

编译test程序
- 配置交叉编译器 
通过 arm-linux-gnueabihf-gcc
-v命令查看当前系统使用交叉编译器版本,为gcc version 4.9.4 (Linaro GCC
4.9-2017.01),如果非当前版本或者无该交叉编译器,请按照
- 编译 - 命令行直接编译,编译命令: - arm-linux-gnueabihf-gcc -O3 -Iinclude main.c test_a.c test_b.c -o test
 

生成的test文件为ARM类型,即为IMX6ULL Linux 环境下运行的二进制程序文件。
- 通过编写Makefile编译: 
CROSS_COMPILE ?= arm-linux-gnueabihf-
CC := $(CROSS_COMPILE)gcc
all: test
test: main.c test_a.c test_b.c include/test.h
    $(CC) -O3 -Iinclude main.c test_a.c test_b.c -o test
clean:
    rm -rf *.o test执行 make 命令完成编译,生成的test文件为ARM类型,即为IMX6ULL Linux 环境下运行的二进制程序文件。

运行test
将生成的二进制执行程序拷贝到目标板上,文件拷贝传输方式参考<与PC互传文件>章节,执行效果如下:

Qt应用程序交叉编译
命令行交叉编译
按照前一小章节成功安装交叉编译器后,就可以进行编译已经创建好的 qt 工程了,天嵌提供tqPainter.tar.gz例程源码供客户使用。以下是编译步骤:
1. 将 tqPainter.tar.gz 例程拷贝到 Ubuntu任意目录下(这里拷贝到/date 目录)解压:
#cd /date 
#tar xvf tqPainter.tar.gz 
2. 进入该源码路径
#cd tqPainter 3. arm_qmake 生成 Makefile
#arm_qmake 4. make 或 make -j8 生成 qt 执行程序
#make
生成的 tqPainter 即为 qt 执行程序,拷贝到板子上即可测试(参考<与PC互传文件章节>将程序拷贝到板子目录,这里拷至目标板/opt/PDA/bin/目录)。
注:生成的可执行程序是不能在 PC 上执行的!目标板执行如下效果:
# /opt/PDA/bin/tqPainter 
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/mm/qt_creator_3.5.1//bin 进入到这个路径下,(实际路径以你安装时选择的路径为准,切勿盲目复制粘贴!)命令行执行./qtcreator 即可打开。
下图为qtcreator界面。至此,qtcreator 安装成功。

配置QtCreator搭建交叉编译环境
简单来说就是通过配置qtcreator,将第一章节中的交叉编译器(arm-linux-gnueabihf-gcc)和qt编译工具(qmake)的路径添加到qtcreator中,由qtcreator调用这些工具进行编译。这样一来就可以在图形界面下进行qt程序的开发和编译了!
- 打开Qt Creator选择Tools,找到子选项“Options” 

- 添加交叉编译器(arm-linux-gnueabihf-gcc)。 
- 选择Build &Run->Compilers点击Add后选择GCC 
- 名称:是 qtcreator 中给交叉编译器取的一个别名,为了方便区分其他编译工具。这个名称你可以自己定,这里命名为ARM-QT5.5 
编译器路径:/opt/EmbedSky/linaro-4.9/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
- 点击 Apply 

- 添加 qmake 编译工具 
选择Build &Run->Qt Versions点击Add后选择qmake路径:/opt/EmbedSky/linaro-4.9/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/sysroot/usr/bin/qmake

- 添加构建套件(Kit) 
- 选择Build &Run->Kits点击Add添加套件 
- 套件的名称,可以自定义,这里笔者命名为:For_QT5.5 
- 点击下拉条选中“通用Linux设备” 
- 点击下拉条选中前面步骤中你给交叉编译器取的别名ARM-QT5.5 
- 点击下拉条选取qmake 
- 点击方框中的选项“Apply”、“OK” 

至此qtcreator配置完成!
使用QtCreator交叉编译
- 打开 qtcreator ,点击 Open Project 
- 选中你项目的实际路径,每个qt工程都有一个 xxx.pro文件,点击XXXX.pro 文件后打开项目,这里是笔者选择tqPainter/tqPainter.pro例程编译的截图: 

- 选中您之前自定义的套件的名称:“For_QT5.5 ”,点击 Configure Project 

- 可以点击“项目”,取消 “Shadow build”的选中(即不选中), 
目的是为了让编译出来的执行文件生成在例程 源码的目录下,比较直观的查看。

- 进入了 qtcreator 工程界面,你可以在此查看和编写代码了 
- 点击“构建项目”开始编译程序 

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

生成的tqPainter即为 qt 执行程序,拷贝到板子上即可测试。(可以通过U盘、SD卡或网络挂载的方式拷贝到板子文件系统中)
应用开发例程
该部分例程属于通用接口例程,Linux系统下如需操作各外设接口可以参考该部分例程代码。
天嵌硬件操作库
- 进入/opt目录进行解压操作 
天嵌硬件操作库下载链接:linux_lib_v1.0.1.tar
天嵌硬件操作库使用跳转链接:http://wiki.armbbs.net/tqwiki/public/info/index.html
例程调用
附录一PC开发环境搭建
PC-Linux平台环境搭建
Ubuntu16.04安装
Ubuntu安装手册(通用)
交叉编译器安装
下载gcc-linaro-4.9-20190425.tar.bz2文件,将其拷贝到根目录PC-Linux系统/opt目录下
#cd /opt
#tar jxvf gcc-linaro-4.9-20190425.tar.bz2 -C /- 写入环境变量 
#echo PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/EmbedSky/linaro-4.9/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:/opt/EmbedSky/linaro-4.9/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/sysroot/usr/bin" >> /etc/environment- 使环境生效 
#source /etc/environment- 查看交叉编译器版本 
#arm-linux-gnueabihf-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
此软件无需要安装,只要将它解压后即可使用。
安装TFTP server工具
为了在Windows 端使用 TFTP 传输功能,需要安装 TFTP 的代理软件,下载链接:TFTP_Server.rar
解压该压缩包,然后双击“tftpdwin.exe”即可开始安装,安装完成后启动 TFTP 的代理软件:TFTP Server TFTPDWIN:

配置:
在对其进行配置前,需要关闭TFTP功能,点击图标 使变成
使变成 即可。然后“System->Setting”,就可以开始配置了,如下图所示:
即可。然后“System->Setting”,就可以开始配置了,如下图所示:

首先配置“General”页,设置保存配置单的路径,这里我设置为“F:\My Documents” (因为笔者的电脑中的“My Documents”是放到 F 盘的):

然后配置“Output”页,设置输出文件的路径(请根据自己的实际情况设置),如下图:

然后点击“确定”选项保存并退出即可。最后点击图标 使变成
使变成 重新启动tftp服务。
重新启动tftp服务。
安装WinSCP
WinSCP为ssh连接常用工具,下载链接WinSCP.zip
此软件无需要安装,只要将它解压后即可使用。
安装usb下载工具
usb下载使用freescale提供的mfg-tools工具,下载链接:mfgtools_xxx.zip 此软件无需要安装,只要将它解压后即可使用,最好不要放在有中文的路径下。 说明1:此软件在没有正确放置镜像时打开会报错,具体方法可参考《TQIMX6UL系列平台镜像烧写手册》关于usb烧写的部分章节。 说明2:usb烧写不需要额外安装usb驱动。 说明3:此软件与imx6q(天嵌另一平台开发板)暂不兼容。
附录二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目录
附录三资料下载链接
附录四 常见问题解答
FAQ
FAQ详细信息,请查看《TQIMX6UL_FAQ》文档,文档总结了使用TQIMX6UL(L)平台所遇到的部分问题及解决方法,如果查看文档仍未解决问题,请拨打技术支持电话或者发送邮件到技术支持邮箱寻求技术支持。
技术支持说明
天嵌股份致力于高科技产业发展提供技术与服务,为广大客户提供嵌入式技术软硬件开发工具与解决方案,致力于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 (例如:天嵌股份、学校等等)
常规技术支持范围
- 使用我司的镜像与开发板。 
- 系统或硬件出现问题时(不包含客户自行开发) 
