SBC-T113S产品特性:
- 采用Allwinner公司Cortex-A7双核T113-S3/S4处理器,运行最高速度为1.2GHZ;
- 内置64-bit XuanTie C906 RISC-V协处理器(仅T113-S4支持);
- 支持JPEG/MJPEG视频编码,最大分辨率1080p@60fps;支持多格式1080P@60fps视频解码 (H.265,H.264, MPEG-1/2/4);
- 支持RGB666/LVDS/MIPI-DSI,分辨率最高1920x1080;
- 支持128-256M Bytes DDR3 SDRAM,其中T113-S3内置128MB;T113-S4内置256MB;
- 支持SPI NAND存储和启动(默认:256MB)或者EMMC启动(默认:4GB,最大32GB);
- 支持一路USB2.0 OTG(设计为TYPE-A接口);支持二路USB2.0 HOST;
- 支持七路RS232通信或者6路RS232和1路RS485(非隔离);
- 支持一路CAN BUS通信(非隔离);
- 支持一路10/100M以太网;
- 稳定的操作系统的支持,可预装LINUX 5.4(Preempt)或者OpenWRT;
- 经典尺寸主板,尺寸为120*100MM;
SBC-T113S产品功能评估图:
编译 Tina Linux
在搭建好编译环境并下载好源码后,即可对源码进行编译,编译打包好后,即可将打包好的固件烧写到设备中去。本文主要介绍编译和烧写的方法。
T113_S4官方适配Tina5.0版本。Tina5.0同时支持openWrt
和buildroot
双编译环境
本文将分为两个部分,分别介绍 openWrt
编译方法与 buildroot
的编译方法。
注意:两套编译系统并不是完全独立的,在openWrt内修改的kernel menuconfig 会影响到 buildroot的 kernel 配置。
openWrt 编译
openWrt
的编译大致分为以下流程:
(1) source build/envsetup.sh # 获取 Tina 环境变量
(2) lunch # 载入方案列表,选择方案
(3) mp # 编译打包
(1)获取 Tina 环境变量
tina@VirtualBox:~/tina-t113_s4$ source build/envsetup.sh
NOTE: The SDK(/home/tina/tina-t113_s4) was successfully loaded
load openwrt... ok
Please run lunch next for openwrt.
load buildroot,sata,dragonboard,bsp...ok
Please run ./build.sh config next for buildroot, bsp.
(2)载入方案列表,选择方案
之后使用 lunch 命令载入方案列表,可以看到方案 1 对应的是 t113_s4-sbc-t113s-tina 板子,也正是 SBC-T113S主板。输入 1 回车即可。看到方案 2 对应的是 t113_i-sbc-t113-tina 板子,这款是我司另外一款以T113i为主控的主板-SBC-T113,如果是其他板子,也可以输入对应板子的序号选择方案。
tina@VirtualBox:~/tina-t113_s4$ lunch
You're building on Linux
Lunch menu... pick a combo:
1 t113_s4-sbc-t113s_nand-tina
2 t113_i-sbc-t113-tina
Which would you like? []: 1
第一次 lunch 需要阅读使用协议,同意表示同意全志科技相关用户协议与SDK的使用协议。如果同意,输入y即可。
...上略...
You can read /home/tina/tina-t113_s4/build/disclaimer/Allwinnertech_Disclaimer(Cn_En)_20181122.md for detailed information.
You read time left 8 seconds....
I have already read, understood and accepted the above terms? [Y/N]
之后 SDK 会自动根据你所选择的方案解压编译工具链,创建环境,耐心等待下即可。输出如下:
Jump to longan autoconfig
/home/tina/tina-t113_s4/build.sh autoconfig -o openwrt -i t113_s4 -b vision -n default
========ACTION List: mk_autoconfig -o openwrt -i t113_s4 -b sbc-t113s_nand -n default;========
options :
INFO: Prepare toolchain ...
INFO: kernel defconfig: generate /home/tina/tina-t113_s4/kernel/linux-4.9/.config by /home/tina/tina-t113_s4/device/config/chips/t113_s4/configs/sbc-t113s_nand/linux-5.4/config-5.4
INFO: Prepare toolchain ...
make: Entering directory `/home/tina/tina-t113_s4/kernel/linux-5.4'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on '../../../../../device/config/chips/t113_s4/configs/vision/linux-5.4/config-5.4'
#
# configuration written to .config
#
make: Leaving directory `/home/tina/tina-t113_s4/kernel/linux-5.4'
INFO: clean buildserver
INFO: prepare_buildserver
看到 INFO: prepare_buildserver 并且没有报错就说明编译环境准备完毕了。
(3)编译打包
Tina Linux 里可以使用 make 命令进行编译,pack 命令打包。
tina@VirtualBox:~/tina-t113_s4$ make
当然,也可以在 make 命令后面增加参数,支持多线程编译、选择是否输出日志的选项,例如:
make -j128 # 以 128 线程编译 SDK
make V=s # 开启全部日志输出
make V=s -j128 # 以 128 线程编译SDK并开启全部日志输出
编译完成之后,使用 pack 命令打包。
tina@VirtualBox:~/tina-t113_s4$ pack
最后,如果编译完成,则会输出以下内容,代表编译打包完成,可以在/home/tina/tina-t113_s4/out/t113_s4/sbc-t113s_nand/openwrt 目录下找到打包完成的固件。
----------image is at----------
27M /home/tina/tina-t113_s4/out/t113_s4/vision/openwrt/t113_s4_linux_ sbc-t113s_nand_uart0.img
pack finish
buildroot 编译
buildroot 的编译大致分为以下流程:
(1) ./build.sh config # 配置编译模式和项目文件
(2) ./build.sh # 编译
(3) ./build.sh pack # 打包
(1) 配置编译模式,项目文件
使用 ./build.sh config 配置编译模式与项目文件。
tina@VirtualBox:~/tina-t113_s4$ ./build.sh config
========ACTION List: mk_config ;========
options :
All available platform: # 选择 linux 平台,T113_S4 不支持安卓平台
0. android
1. linux
Choice [linux]:
All available linux_dev: # 选择 buildroot
0. bsp
1. buildroot
2. tinyos
3. openwrt
Choice [openwrt]: 1
All available ic: # 选择 t113_s4 芯片
0. t113_s4
1. t113i
Choice [t113]: 0
All available board: # 选择 t113_s4 主板sbc-t113s_nand
0. sbc-t113s_nand
1. sbc-t113_nand
Choice [vision]: 0
All available flash: # 选择储存介质,默认default
0. default
1. nor
Choice [default]: 0
(2)编译固件
使用 ./build.sh 编译固件。
tina@VirtualBox:~/tina-t113_s4$ ./build.sh
========ACTION List: build_linuxdev;========
options :
INFO: ----------------------------------------
INFO: build linuxdev ...
INFO: chip: sun8iw20p1
INFO: platform: linux
INFO: kernel: linux-5.4
INFO: board: vision
...下略...
编译成功后会显示下列信息。
sun8iw20p1 compile Kernel successful
INFO: ----------------------------------------
INFO: build Tina OK.
INFO: ----------------------------------------
(3)打包固件 使用 ./build.sh pack 编译固件。可以在/home/tina/tina-t113_s4/out/t113_s4/ sbc-t113s_nand/buildroot/ 目录下找到打包完成的固件。
tina@VirtualBox:~/tina-t113_s4$ ./build.sh pack
...上略...
Dragon execute image.cfg SUCCESS !
----------image is at----------
71M /home/tina/tina-t113_s4/out/t113_s4/vision/buildroot/t113_s4_linux_ sbc-t113s_nand_uart0.img
pack finish
进阶编译操作
单独重编某个应用
重编应用包应用场景一般为:只修改了应用,不想重新烧写固件,只需要安装应用安装包即可。请确保进行过一次固件的编译,确保SDK基础已经编译,才能单独重编应用包。
请确保在编译前已加载tina环境:
$ source build/envsetup.sh
$ lunch
(1)方法一
当在应用包的目录(包括其子目录)中,可执行
$ mm [-B]
=> B参数则先clean此应用临时文件再编译
示例: 假设软件包路径为:openwrt/package/feeds/utils/memtester/
,则:
$ cd openwrt/package/feeds/utils/memtester/
$ mm -B
编译出应用安装包保存路径为:
out/IC型号/方案名/openwrt/extra/packages/arm_cortex-a7_neon/base/memtester_4.3.0-1_arm_cortex-a7_neon.ipk
对于t113_s4主板,便是
out/t113_s4/ sbc-t113s_nand/openwrt/extra/packages/arm_cortex-a7_neon/base/memtester_4.3.0-1_arm_cortex-a7_neon.ipk
(2)方法二
任意目录下执行
$ mmo [-B] 软件包名
=> B
参数则先clean此应用临时文件再编译
示例:假设软件包路径为:openwrt/package/feeds/utils/memtester/,包名由PKG_NAME决定,即memtester:
$ mmo -B memtester
其他快捷命令
命令 | 命令有效目录 | 作用 |
make | tina根目录 | 编译整个sdk |
make menuconfig | tina根目录 | 启动软件包配置界面 |
make kernel_menuconfig | tina根目录 | 启动内核配置界面 |
mkernel | tina根目录 | 编译内核,调试DTS时有用 |
make clean | tina根目录 | 清除当前项目的所有编译文件,但是不清除配置 |
make distclean | tina根目录 | 清除当前项目的所有编译文件,同时清除配置,一般在更换平台时使用 |
croot | tina下任意目录 | 快速切换到tina根目录 |
cconfigs | tina下任意目录 | 快速切换到方案的bsp配置目录 |
cplat | tina下任意目录 | 快速切换到方案配置目录 |
ctarget | tina下任意目录 | 快速切换到openWrt软件包编译产物目录 |
crootfs | tina下任意目录 | 快速切换到openWrt rootfs目录 |
copsrc | tina下任意目录 | 快速切换到openWrt目录 |
cout | tina下任意目录 | 快速切换到方案的输出目录 |
cboot | tina下任意目录 | 快速切换到bootloader目录 |
cgrep | tina下任意目录 | 在c/c++/h文件中查找字符串 |
mm [-B] | 软件包目录 | 编译软件包,-B指编译前先clean |
mmo [-B] pkg | tina下任意目录 | 编译指定的软件包,-B指编译前先clean |
pack | tina根目录 | 打包固件 |
m | tina下任意目录 | make的快捷命令,编译整个sdk |
p | tina下任意目录 | pack的快捷命令,打包固件 |
特别说明:执行make时,可以使用make -j32,这个指令的意思是使用32核并行编译,这个视编译主机情况而定。建议第一次编译时用 make -j1 V=s,这个指令的意思是单核并开启日志输出,一般在编译出现问题时排除问题所用。