1. 太极派T113开发板入门指南
作为一名嵌入式Linux开发者,最近我入手了一块太极派T113开发板(86板),这是一款基于全志T113芯片的嵌入式开发平台。经过一段时间的摸索和实践,我整理了这份详细的开发指南,希望能帮助其他开发者快速上手这款开发板。
1.1 开发板硬件配置
太极派T113开发板的主要硬件规格如下:
| 组件 | 规格 |
|---|---|
| 处理器 | 全志T113双核Cortex-A7 |
| 内存 | DDR3L 128MB |
| 存储 | SPI NAND Flash 1Gb (128MB) |
| 显示屏 | 4寸86屏幕,RGB接口,分辨率480×480 |
| WiFi模块 | RTL8723DS |
| USB接口 | Type-C |
开发板提供了丰富的接口资源,包括GPIO、UART、SPI、I2C等,适合各种嵌入式应用开发。Type-C接口既用于供电也用于数据传输和调试,非常方便。
2. 系统资源监控与分析
2.1 使用top命令监控系统状态
在嵌入式Linux开发中,监控系统资源使用情况是基本功。通过SSH连接到开发板后,可以运行top命令查看实时系统状态:
code复制Mem: 99108K used, 17656K free, 124K shrd, 11188K buff, 40012K cached
CPU: 4% usr 3% sys 0% nic 92% idle 0% io 0% irq 0% sirq
Load average: 0.16 0.07 0.02 1/85 836
2.1.1 内存使用分析
第一行显示内存使用情况:
- 已使用内存:99.1MB
- 空闲内存:17.6MB
- 共享内存:124KB
- 缓冲区缓存:11.2MB
- 页面缓存:40.0MB
注意:Linux会充分利用空闲内存作为缓存,实际可用内存≈free + cached + buff ≈ 68.8MB
2.1.2 CPU使用率分析
第二行显示CPU使用情况:
- 用户空间程序占用:4%
- 内核空间占用:3%
- 空闲:92%
- 其他指标均为0%
这表明系统当前非常空闲,整体CPU使用率仅约7%。
2.1.3 系统负载分析
第三行显示系统负载:
- 过去1分钟、5分钟、15分钟的平均负载:0.16, 0.07, 0.02
- 1个进程正在运行/85个总进程
- 最后一个进程PID:836
2.2 关键进程分析
查看进程列表,几个关键进程值得关注:
- /usr/night7:占用45%虚拟内存和7% CPU,是系统中最消耗资源的进程
- 网络相关进程:
- wpa_supplicant:WiFi连接管理
- udhcpc:DHCP客户端
- netifd:网络接口守护进程
- 系统服务:
- procd:OpenWRT的进程管理守护进程
- dropbear:SSH服务器
- dbus-daemon:消息总线系统
- ntpd:时间同步服务
3. 系统固件编译与烧录
3.1 编译环境准备
首先需要设置编译环境:
bash复制source build/envsetup.sh
lunch
在出现的菜单中选择对应的开发板配置(对于太极派T113,通常选择第7项t113_pi-tina)。
3.2 编译系统固件
使用以下命令开始编译:
bash复制make V=s -j4
参数说明:
- V=s:显示详细编译信息
- j4:使用4个线程并行编译
编译完成后,使用pack命令打包固件:
bash复制pack
打包过程会生成最终的固件镜像文件,通常位于:
/home/taiji/tina-sdk/out/t113-pi/tina_t113-pi_uart0.img
3.3 固件烧录方式
3.3.1 SD卡固件烧录
- 将生成的.img文件写入SD卡
- 将SD卡插入开发板
- 开发板将从SD卡启动
3.3.2 SPI NAND Flash固件烧录
要支持SPI NAND Flash,需要修改配置文件:
-
修改
sys_config.fex文件:
tina-sdk/device/config/chips/t113/configs/pi/sys_config.fex
将storage_type值改为5 -
修改
env.cfg文件:
tina-sdk/device/config/chips/t113/configs/pi/env.cfg
将挂载参数改为nand -
重新编译固件:
bash复制make clean source build/envsetup.sh lunch make V=s -j4 -
使用PhoenixSuit工具烧录固件到SPI NAND Flash
4. 开发板特殊操作模式
4.1 进入FEL模式
FEL模式是全志芯片的特殊下载模式,进入方法:
- 开发板断电
- 按住开发板上的特定按键(通常是"FEL"或"UBOOT"键)
- 上电并保持按键按下约3秒
- 通过Type-C接口连接电脑,即可识别为FEL设备
或者在U-Boot命令行中直接输入命令:
code复制efex
4.2 修改root密码
通过SSH连接到开发板后,可以修改root密码:
bash复制passwd root
然后按照提示输入新密码两次即可。
5. 交叉编译环境搭建
5.1 工具链路径
SDK中提供的交叉编译工具链位于:
/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin
5.2 配置环境变量
为了在任何位置都能使用交叉编译工具链,需要将工具链路径添加到系统PATH环境变量中。可以编辑/etc/profile文件,添加:
bash复制export PATH=$PATH:/home/taiji/tina-sdk/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin
然后执行source /etc/profile使配置生效。
验证工具链是否配置成功:
bash复制arm-openwrt-linux-muslgnueabi-gcc -v
应该能看到工具链的版本信息。
6. 应用程序开发示例
6.1 使用Makefile编译
创建一个简单的hello world程序:
hello.c:
c复制#include <stdio.h>
int main(void)
{
printf("Hello Liefyuan !!! \r\n");
return 0;
}
Makefile:
makefile复制CC := arm-openwrt-linux-muslgnueabi-gcc
hello: hello.c
${CC} -o hello hello.c
clean:
rm hello
编译并检查生成的二进制文件:
bash复制make
file hello
输出应该显示这是一个ARM架构的可执行文件。
将程序传输到开发板并运行:
bash复制scp hello root@开发板IP:/tmp/
ssh root@开发板IP
chmod +x /tmp/hello
/tmp/hello
6.2 使用CMake编译
对于更复杂的项目,可以使用CMake进行构建。创建CMakeLists.txt文件:
cmake复制cmake_minimum_required(VERSION 3.10)
project(helloword)
SET(CROSS_COMPILE 1)
set(CMAKE_SYSTEM_NAME Linux)
# 交叉编译工具链路径
set(CMAKE_C_COMPILER "/home/taiji/tina-sdk/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-gcc")
# 链接库路径
link_directories(
/home/taiji/tina-sdk/out/t113-pi/staging_dir/target/usr/lib
)
# 头文件路径
include_directories(/home/taiji/tina-sdk/out/t113-pi/staging_dir/target/usr/include/)
include_directories(/home/taiji/tina-sdk/out/t113-pi/staging_dir/target/usr/include/allwinner/)
include_directories(/home/taiji/tina-sdk/out/t113-pi/staging_dir/target/usr/include/allwinner/include)
add_executable(hello_word hello.c)
创建build目录并编译:
bash复制mkdir build
cd build
cmake ..
make
生成的hello_word程序同样可以传输到开发板运行。
7. 常见问题解决
7.1 SSH连接提示主机密钥变更
当使用scp或ssh连接开发板时,可能会遇到以下错误:
code复制WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
这是因为开发板重装系统后SSH密钥发生了变化。解决方法:
bash复制ssh-keygen -R 开发板IP
这个命令会从known_hosts文件中删除旧的密钥记录,下次连接时会重新获取新的密钥。
7.2 交叉编译警告STAGING_DIR未定义
编译时可能会出现警告:
code复制arm-openwrt-linux-muslgnueabi-gcc.bin: warning: environment variable 'STAGING_DIR' not defined
可以设置STAGING_DIR环境变量解决:
bash复制export STAGING_DIR=/home/taiji/tina-sdk/out/t113-pi/staging_dir
7.3 系统资源不足
由于开发板资源有限(128MB内存),在运行较大程序时可能会遇到内存不足的问题。解决方法:
- 优化程序,减少内存使用
- 关闭不必要的系统服务
- 使用swap分区增加虚拟内存
8. 开发建议与经验分享
经过一段时间的开发实践,我总结出以下几点经验:
-
资源监控很重要:在嵌入式开发中,要经常使用top、free等命令监控系统资源使用情况,及时发现性能瓶颈。
-
交叉编译环境配置:正确设置交叉编译工具链路径和相关的环境变量(如STAGING_DIR)可以避免很多编译问题。
-
固件烧录技巧:
- 对于开发阶段,使用SD卡启动更方便测试
- 对于产品阶段,烧录到SPI NAND Flash更可靠
- 记得修改env.cfg中的挂载参数匹配实际存储设备
-
应用程序开发:
- 对于简单程序,Makefile足够使用
- 对于复杂项目,推荐使用CMake管理构建过程
- 静态链接可以减少运行时依赖,但会增加程序体积
-
调试技巧:
- 使用adb或scp传输程序到开发板
- 开发板的/tmp目录是可写的,适合存放临时测试程序
- 使用串口调试可以获得更详细的系统启动和运行信息
太极派T113开发板虽然资源有限,但完全能够满足大多数嵌入式Linux应用的开发需求。通过合理的资源管理和优化,可以开发出性能良好的嵌入式应用。