news 2026/4/16 21:32:23

全志T113 Tina5.0开发实战:定制应用程序与优化启动流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
全志T113 Tina5.0开发实战:定制应用程序与优化启动流程

1. 全志T113 Tina5.0开发环境搭建

在开始定制应用程序和优化启动流程之前,我们需要先搭建好开发环境。全志T113 Tina5.0系统支持OpenWrt和Buildroot两种构建系统,这里我们以OpenWrt为例进行说明。

首先需要下载Tina5.0 SDK开发包,解压后你会看到一个完整的开发目录结构。我建议在Ubuntu 18.04或20.04系统上进行开发,因为这是官方测试最多的环境。实测在Windows下的WSL2也能运行,但可能会遇到一些路径问题。

安装必要的依赖包:

sudo apt-get update sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y

配置环境变量很重要,我习惯在~/.bashrc中添加:

export PATH=$PATH:/opt/toolchain/bin export STAGING_DIR=/opt/toolchain/staging_dir

编译整个系统前,建议先执行:

make menuconfig

在这里选择正确的芯片型号(T113)和开发板配置。新手最容易犯的错误就是选错了芯片型号,导致后续编译失败。

2. 添加自定义应用程序到Tina系统

2.1 应用程序打包方式

Tina系统提供了两种方式来打包自定义应用程序:

第一种是通过busybox-init-base-files机制。这个目录下的文件在编译时会自动覆盖到rootfs中。我们可以把应用程序直接放在:

/home/sdk/t113_tina5.0/openwrt/target/t113/t113-ws_devboard/busybox-init-base-files

这种方式简单直接,适合静态文件或简单的脚本。

第二种是通过创建OpenWrt软件包的方式,这是更规范的做法。我们可以在:

/home/sdk/t113_tina5.0/openwrt/package

目录下创建自己的软件包。我建议参考现有的软件包结构,比如btmanager这个示例。

2.2 创建自定义软件包

让我们以一个简单的helloworld程序为例,演示如何创建完整的软件包:

  1. 在package目录下创建helloworld文件夹
  2. 新建Makefile文件,内容如下:
include $(TOPDIR)/rules.mk PKG_NAME:=helloworld PKG_RELEASE:=1 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/helloworld SECTION:=utils CATEGORY:=Utilities TITLE:=Helloworld -- prints a snarky message endef define Package/helloworld/description It's my first package demo. endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef define Build/Configure endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) \ CC="$(TARGET_CC)" \ CFLAGS="$(TARGET_CFLAGS) -Wall" \ LDFLAGS="$(TARGET_LDFLAGS)" endef define Package/helloworld/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/usr/bin/ endef $(eval $(call BuildPackage,helloworld))
  1. 创建src目录并编写helloworld.c程序
  2. 执行make menuconfig,在Utilities类别中找到helloworld并选中
  3. 执行make package/helloworld/compile进行编译

2.3 常见问题解决

在实际操作中,我遇到过几个典型问题:

  1. 权限问题:确保你的开发账户对SDK目录有读写权限
  2. 路径问题:绝对路径和相对路径要区分清楚,建议使用$(TOPDIR)这样的变量
  3. 依赖问题:如果程序依赖其他库,需要在Makefile中明确声明
  4. 编译选项:交叉编译时要注意目标架构和本机的区别

3. 配置应用程序开机自启动

3.1 init.d脚本编写

Tina系统使用busybox的init机制,启动脚本存放在:

/home/sdk/t113_tina5.0/openwrt/target/t113/t113-dev/busybox-init-base-files/etc/init.d

一个典型的启动脚本如下:

#!/bin/sh /etc/rc.common START=95 STOP=15 APP_NAME="myapp" APP_PATH="/usr/bin/myapp" APP_PID_FILE="/var/run/myapp.pid" start() { echo "Starting $APP_NAME" start-stop-daemon -S -b -m -p $APP_PID_FILE -x $APP_PATH } stop() { echo "Stopping $APP_NAME" start-stop-daemon -K -p $APP_PID_FILE } restart() { stop sleep 1 start }

几个关键点:

  • START=95表示启动顺序,数字越大启动越晚
  • 使用start-stop-daemon管理进程
  • 记得给脚本执行权限:chmod +x /etc/init.d/myapp

3.2 启用自启动

创建好脚本后,需要启用它:

/etc/init.d/myapp enable

这会在/etc/rc.d/下创建对应的软链接。

3.3 调试技巧

调试启动脚本时,我常用的方法:

  1. 在脚本中添加调试输出:
echo "Debug: Starting at $(date)" >> /tmp/debug.log
  1. 手动测试:
/etc/init.d/myapp start /etc/init.d/myapp stop
  1. 查看日志:
logread | grep myapp
  1. 检查进程:
ps | grep myapp

4. 修改开机LOGO与启动优化

4.1 替换开机LOGO

Tina系统的开机LOGO文件位置取决于使用的构建系统:

对于OpenWrt构建:

/home/sdk/t113_tina5.0/openwrt/target/t113/t113-common/boot-resource/boot-resource/bootlogo.bmp

对于Buildroot构建:

/home/sdk/t113_tina5.0/device/config/chips/t113/boot-resource/boot-resource/bootlogo.bmp

替换时要注意:

  1. 图片必须是BMP格式
  2. 建议使用24位色深
  3. 分辨率要匹配屏幕
  4. 文件大小不能超过分区限制

4.2 解决LOGO大小问题

如果替换后打包报错,可能是LOGO太大。需要修改分区配置:

/home/sdk/t113_tina5.0/device/config/chips/t113/configs/axx/linux-5.4/sys_partition.fex

找到boot-resource分区,调整size值:

[partition] name = boot-resource size = 2340

4.3 启动流程优化

要实现快速启动,可以从以下几个方面优化:

  1. 精简内核:通过make kernel_menuconfig移除不需要的驱动和功能
  2. 优化init进程:减少不必要的启动脚本
  3. 并行启动:在/etc/inittab中添加::sysinit:/etc/init.d/rcS S boot &
  4. 延迟加载:非关键服务可以延迟启动
  5. 文件系统优化:使用squashfs只读rootfs,减少校验时间

实测通过这些优化,T113的启动时间可以从原来的10秒左右缩短到5秒以内。

5. 高级定制技巧

5.1 文件系统定制

除了添加应用程序,我们还可以定制整个文件系统:

  1. 添加自定义用户: 在busybox-init-base-files/etc/passwd和/etc/shadow中添加条目

  2. 修改网络配置: 编辑busybox-init-base-files/etc/config/network

  3. 添加自定义服务: 创建/etc/init.d脚本和/etc/config配置文件

5.2 内核模块开发

如果需要开发内核模块,可以:

  1. 在package/kernel目录下创建模块
  2. 编写Kconfig和Makefile
  3. 通过make kernel_menuconfig启用模块
  4. 编译并打包到镜像中

5.3 固件打包与烧写

完成所有修改后,执行:

make -j$(nproc)

生成固件位于out/t113/目录下。

烧写工具推荐使用PhoenixSuit,注意:

  1. 开发板要进入FEL模式
  2. 选择正确的固件文件
  3. 第一次烧写可能需要安装驱动

6. 调试与问题排查

开发过程中难免会遇到各种问题,我总结了一些常见问题的解决方法:

  1. 系统无法启动:
  • 检查串口输出,定位卡在哪个阶段
  • 确认内核命令行参数是否正确
  • 验证文件系统是否完整
  1. 应用程序运行异常:
  • 使用strace跟踪系统调用
  • 检查动态库依赖:ldd /path/to/app
  • 查看系统日志:logread
  1. 性能问题:
  • 使用top查看系统资源使用情况
  • 使用ftrace分析内核性能
  • 使用perf进行性能剖析
  1. 网络问题:
  • ifconfig查看接口状态
  • route -n检查路由表
  • ping测试基本连通性

在实际项目中,我建议建立一个checklist,记录每次遇到的问题和解决方法,这样可以大大提高开发效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 21:31:44

3个简单步骤:在Linux桌面无缝运行Android应用的秘密武器

3个简单步骤:在Linux桌面无缝运行Android应用的秘密武器 【免费下载链接】waydroid Waydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/wa/waydroi…

作者头像 李华
网站建设 2026/4/16 21:30:56

PMP题库_05_质量管理

PMP 项目管理专业认证 题库精选系列 知识领域:项目质量管理题库精选 第5章 | Chapter 5适用考试PMP 第七版/第八版题目数量42道精选题目重点内容质量管理计划、质量审计、七大质量工具题目类型概念题 情景题 目录 一、规划质量管理 12道题二、管理质量 16道题三、控…

作者头像 李华
网站建设 2026/4/16 21:30:50

iFlow CLI进阶:从MCP Server开发到自动化内容分发的Workflow构建

1. iFlow CLI与MCP Server基础概念解析 第一次接触iFlow CLI时,我被它强大的工作流编排能力惊艳到了。这不仅仅是一个命令行工具,而是一个能够将多个数据源、处理逻辑和发布渠道串联起来的自动化引擎。特别是在内容分发场景中,配合MCP&#x…

作者头像 李华
网站建设 2026/4/16 21:29:20

PotPlayer双语字幕配置终极指南:三步实现外语视频无障碍观看

PotPlayer双语字幕配置终极指南:三步实现外语视频无障碍观看 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 你是否曾经因为…

作者头像 李华
网站建设 2026/4/16 21:22:13

Laravel 1.x:现代PHP框架的雏形

Laravel 1.x(发布于2011年)是该框架的初始版本,其核心特性奠定了后续版本的基础,但功能相对精简。以下是主要特性解析: 1. 路由系统 基础路由定义 仅支持闭包路由,不支持控制器路由: Route::ge…

作者头像 李华
网站建设 2026/4/16 21:16:29

3步打造专属Windows桌面:Rainmeter让你的工作空间焕然一新

3步打造专属Windows桌面:Rainmeter让你的工作空间焕然一新 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter 你是否每天面对着单调乏味的Windows桌面,渴望一个既美观又…

作者头像 李华