关于「基于全志T113-S3的86-Screen」的一切
关于基于全志T113-S3的86-Screen的一切
Author: kkl
该笔记目前处于积极开发阶段。
hahaha标题有点吹大了哈,虽然说是关于一切,但再细节的东西的说不完的。但是我会把我上手以后摸索的整个心路历程尽量地都详细展现出来。本篇文章围绕着基于T113-S3的86-Screen的复现展开,项目作者by@FanHuaCloud


写在前面
T113-S3是全志的一款非常不错的能够跑Linux系统的Soc,该芯片采用双核A7,主频高达1.2GHz,具备高效能和低功耗的特点,片上内存128MB,支持硬件解码,和D1s Pin to Pin,支持相互替换支持全志提供的Tina Linux SDK,文档齐全,对于DIY玩家来说用于制作一些带显示屏的小设备是非常完美了。
前阵子在“海鲜市场”低价入了韦东山的T113-S3的开发板,经过一番摸索以后发现了TinaLinux这个新奇的东西,听说是全志基于Openwrt自研的系统(被戏谑为全志家的小女儿。
前面已经折腾得够多韦东山的全志T113-S3开发板了,从内核编译、运行LVGL到新增驱动都体验了个遍,现在咱们想要开发属于自己的基于全志T113-S3的设备了。正好遇见了这个优秀的开源项目基于T113-S3的86-Screen,作者事无巨细得交代了从零到一搭建内核编译的平台并且开源了详细的文档和虚拟机,非常适合初学者上手学习(感谢@FanHuaCloud对此进行开源,事不宜迟,我们直接开始!
本篇文章将简述如何从零到一复刻「基于T113-S3的86-Screen」。
我的环境
- 虚拟机:VMware Ubuntu 20.04
最近才得知,在年尾的时候VMware被博通并购了,可以放开免费使用啦!所以本次想要尝试一下使用VMware的虚拟机平台进行操作!
虚拟机获取链接: https://pan.baidu.com/s/1INtes0puPvBo2v6UM7_SBA 提取码: u4vt
这个虚拟机是交流群中分享的,如果你不想折腾内核的话,可以直接拿来用,或者你想学习一下内核编译修改配置流程,可以按照作者的教程来(在立创硬件开源的附件:Tina SDK构建指南)。
或者戳这里获取:Tina SDK构建指南.pdf
我接下来的教程会以分享的虚拟机为基础来进行,为了尽量保持系统开发环境统一哈。
- 开发板:基于T113-S3的86-Screen
- Tina-Linux版本:linux-5.4
开始
下载并安装VMware
这个自行去官网下载就好,或者什么别的渠道下载都行,记得要下载最新的免费的版本就行。
PCB打样与器件采购

- 打样参数:1.6mm、无阻抗需求
硬件焊接这部分就不多赘述啦,熟能生巧!而且焊接难度不高,元器件在某宝都能买齐。
注意1:spinand要购买w25n02这款芯片,而不是原理图里面的w25q128!作者应该是没有更正原理图。
注意2:屏幕那些大件尽量买作者推荐的商家,不然可能会遇到一些硬件bug,修复起来很头疼的!
虚拟机的设置
账号
交流群中提供的虚拟机有三个账号:
| 账号 | 密码 |
|---|---|
| taiji | taiji |
| ubuntu20 | ubuntu20 |
| root | root |
注意:root账户是隐藏的,是管理员,要在命令行中执行su -,输入对应的密码才可以使用。tina-sdk放在taiji账户中。
taiji 和 ubuntu20 这两个账户都是没有sudo权限的,你需要在root账户下给它们添加到sudo组:
1 | |
配网
交流群分享的虚拟机一开始是上不了网的,需要执行一些步骤(跟着链接中的教程:https://blog.csdn.net/qq_35291429/article/details/132070006
内核编译
具体的内核编译过程请参考我之前的文章:全志T113-S3的TinaLinux编译流程记录
记得选择开发板要选t113_pi-tina

…
FAQ
Q:TINA在编译打包PACK之后出现ERROR: unable to open file boot-resource.fex?

A:解决方法:安装i386 gcc兼容包 sudo apt-get install libc6:i386 libgcc1:i386 libstdc++6:i386 -y
解决参考1:https://blog.csdn.net/zengsenhua/article/details/129946001
解决参考2:https://bbs.aw-ol.com/topic/804/tina在编译打包pack之后有问题/10
Q:TINA在编译时出现ERROR诸如此类: /bin/sh:1: cc: not found?

A:解决方法:你编译环境没搞好,gcc的安装包没装上,估计还有许多安装包都没有装上,所以请执行以下命令,重新安装编译环境(根据你的ubuntu的版本):
1 | |
1 | |
关于tina-sdk的压缩、转移与解压
有时候我们可能需要将当前虚拟机当中的tina-sdk打包压缩,发送到另外一个虚拟机当中解压编译。因为我们不可能又去官网拉取一个全新的sdk然后又自己从头到尾修改一遍内核,这样很麻烦。因此,以下提供一些压缩与解压的指令(tar和7z),推荐使用7z,压缩和解压的速度都比较快!
tar
在ubuntu当中,tar通常都是预安装的,不需要手动安装(如果要,自行去问问ai安装一下吧!
1 | |
1 | |
7z
1 | |
1 | |
1 | |
注意:转移到其他虚拟机后,记得要将tina-sdk当中的out文件夹删除干净,然后make clean,再去做编译打包的操作哦!否则会遇到路径不一致的报错问题,是因为文件发生了移动,从前的编译结果在这里已经不适用了。
关于如何解决Read-only file system
文章参考1:https://bbs.aw-ol.com/topic/1000/在d1的tina上整上overlayfs
文章参考2:https://bbs.aw-ol.com/topic/3461/问题解决-使用sd卡启动系统时-文件系统为只读状态
执行make menuconfig,找到对应目录,勾选e2fsprogs,如图:

然后分区表sys_partition.fex当中加入rootfs_data(若已有,就不用,操作如下:
1 | |
最后就可以编译打包,烧录上电测试。顺利的话,此时在/mnt/UDISK文件夹中创建新文件就能够成功啦(或者adb传输文件就能成功啦!
添加uboot启动logo
文章参考:https://dshanpi.100ask.net/docs/T113s3-Industrial/part7/AddABootLogoImageInUboot/
准备图片
准备一张图片,名字和格式一定为bootlogo.bmp!!!
图片的分辨率要求在屏幕的分辨率范围内,如这里使用的86屏的分辨率是480x480像素,所以我们准备的图片的分辨率就要小于480x480,我在这准备了一张图片(我的头像,240x240像素:

将这个图片拷贝到~/tina-sdk/device/config/chips/t113/configs/pi/configs/
修改配置
执行make kernel_menuconfig
>Device Drivers -> Graphics support -> Bootup logo


修改sun8iw20p1_uart3_defconfig,路径为/home/taiji/tina-sdk/lichee/brandy-2.0/u-boot-2018/configs/sun8iw20p1_uart3_defconfig,在末尾加上下面两句:
1 | |
编译、测试
然后,编译打包,上电测试,看看效果吧!

BTW
如果你需要为其他的屏幕添加uboot启动logo,你需要在ubootbrandy2.0当中手动配置一下屏幕驱动哦!原理和在内核linux5.4配置屏幕驱动差不多的。
1 | |
然后将CONFIG_LCD_SUPPORT_ST7701S_86=y,修改成你的屏幕支持就ok啦!
tplayerdemo的使用方法
文章参考1:D1s使用tplayerdemo播放badapple
文章参考2:T113-S3的音频输入与输出方法
tplayerdemo是tina-sdk自带的程序,里面基于全志开放的硬件解码API接口实现了多种格式的音视频的播放。
内核配置(编译程序
首先,根据全志给的开发指南Tina_Linux_多媒体解码_开发指南修改内核配置,勾选对应的选项✔
配置好内核以后,重新编译打包,烧录上电。
播放音视频(运行程序
然后我们就可以在开发板的命令行中使用tplayerdemo命令播放音视频啦,如播放视频tplayerdemo /mnt/UDISK/video.mp4。
注意:在执行tplayerdemo命令之前,要确认音频通路是否打开(是否解除静音),要执行amixer -D hw:audiocodec cset name='Headphone Switch' 1打开音频通路,否则音视频播放几秒钟就会卡死!
我们可以使用
amixer命令来查看与编辑音频相关的设备情况:▶查看音频相关的设备节点的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152# 命令amixer:查看音频相关的设备节点的情况
root@TinaLinux:/# amixer
Simple mixer control 'Headphone',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'Headphone volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 7
Mono: 4 [57%]
Simple mixer control 'FMINL gain volume',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'FMINR gain volume',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC1 ADC2 swap',0
Capabilities: enum
Items: 'Off' 'On'
Item0: 'Off'
Simple mixer control 'ADC1 Input FMINL',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC1 Input LINEINL',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC1 Input MIC1 Boost',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC1 volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 255
Mono: 160 [63%]
Simple mixer control 'ADC2 Input FMINR',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC2 Input LINEINR',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC2 Input MIC2 Boost',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC2 volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 255
Mono: 160 [63%]
Simple mixer control 'ADC3 ADC4 swap',0
Capabilities: enum
Items: 'Off' 'On'
Item0: 'Off'
Simple mixer control 'ADC3 Input MIC3 Boost',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'ADC3 volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 255
Mono: 160 [63%]
Simple mixer control 'DAC volume',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 255
Front Left: 160 [63%]
Front Right: 160 [63%]
Simple mixer control 'HpSpeaker',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'LINEINL gain volume',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'LINEINR gain volume',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'LINEOUT',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'LINEOUT volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 31
Mono: 26 [84%]
Simple mixer control 'LINEOUTL Output Select',0
Capabilities: enum
Items: 'DAC_SINGLE' 'DAC_DIFFER'
Item0: 'DAC_DIFFER'
Simple mixer control 'LINEOUTR Output Select',0
Capabilities: enum
Items: 'DAC_SINGLE' 'DAC_DIFFER'
Item0: 'DAC_DIFFER'
Simple mixer control 'MIC1 Input Select',0
Capabilities: enum
Items: 'MIC_DIFFER' 'MIC_SINGLE'
Item0: 'MIC_DIFFER'
Simple mixer control 'MIC1 gain volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 31
Mono: 31 [100%]
Simple mixer control 'MIC2 Input Select',0
Capabilities: enum
Items: 'MIC_DIFFER' 'MIC_SINGLE'
Item0: 'MIC_DIFFER'
Simple mixer control 'MIC2 gain volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 31
Mono: 31 [100%]
Simple mixer control 'MIC3 Input Select',0
Capabilities: enum
Items: 'MIC_DIFFER' 'MIC_SINGLE'
Item0: 'MIC_DIFFER'
Simple mixer control 'MIC3 gain volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 31
Mono: 31 [100%]
Simple mixer control 'codec hub mode',0
Capabilities: enum
Items: 'hub_disable' 'hub_enable'
Item0: 'hub_disable'
Simple mixer control 'digital volume',0
Capabilities: volume volume-joined
Playback channels: Mono
Capture channels: Mono
Limits: 0 - 63
Mono: 63 [100%]▶快速查看音频相关的设备节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36# 命令amixer controls:快速查看音频相关的设备节点
root@TinaLinux:/# amixer controls
numid=17,iface=MIXER,name='Headphone volume'
numid=30,iface=MIXER,name='Headphone Switch'
numid=12,iface=MIXER,name='FMINL gain volume'
numid=13,iface=MIXER,name='FMINR gain volume'
numid=2,iface=MIXER,name='ADC1 ADC2 swap'
numid=24,iface=MIXER,name='ADC1 Input FMINL Switch'
numid=25,iface=MIXER,name='ADC1 Input LINEINL Switch'
numid=23,iface=MIXER,name='ADC1 Input MIC1 Boost Switch'
numid=6,iface=MIXER,name='ADC1 volume'
numid=27,iface=MIXER,name='ADC2 Input FMINR Switch'
numid=28,iface=MIXER,name='ADC2 Input LINEINR Switch'
numid=26,iface=MIXER,name='ADC2 Input MIC2 Boost Switch'
numid=7,iface=MIXER,name='ADC2 volume'
numid=3,iface=MIXER,name='ADC3 ADC4 swap'
numid=29,iface=MIXER,name='ADC3 Input MIC3 Boost Switch'
numid=8,iface=MIXER,name='ADC3 volume'
numid=5,iface=MIXER,name='DAC volume'
numid=31,iface=MIXER,name='HpSpeaker Switch'
numid=14,iface=MIXER,name='LINEINL gain volume'
numid=15,iface=MIXER,name='LINEINR gain volume'
numid=32,iface=MIXER,name='LINEOUT Switch'
numid=16,iface=MIXER,name='LINEOUT volume'
numid=18,iface=MIXER,name='LINEOUTL Output Select'
numid=19,iface=MIXER,name='LINEOUTR Output Select'
numid=20,iface=MIXER,name='MIC1 Input Select'
numid=9,iface=MIXER,name='MIC1 gain volume'
numid=21,iface=MIXER,name='MIC2 Input Select'
numid=10,iface=MIXER,name='MIC2 gain volume'
numid=22,iface=MIXER,name='MIC3 Input Select'
numid=11,iface=MIXER,name='MIC3 gain volume'
numid=33,iface=MIXER,name='Soft Volume Master'
numid=1,iface=MIXER,name='codec hub mode'
numid=4,iface=MIXER,name='digital volume'
1
2# 使用命令amixer cget:快速查看单个音频相关设备节点的当前状态
amixer cget numid=30,iface=MIXER,name='Headphone Switch' # 查看耳机输出▶修改音频设备的参数
1
2
3
4
5
6
7# 修改音频设备的参数
amixer -D hw:audiocodec cset name='Headphone Switch' 1 # 开启耳机输出
amixer -D hw:audiocodec cset name='Headphone Volume' 3 # 设定音量
# 或者使用以下方法(效果一样
amixer cset numid=30,iface=MIXER,name='Headphone Switch' 1 # 开启耳机输出
amixer cset numid=17,iface=MIXER,name='Headphone volume' 3 # 设定音量
简易音视频播放器(Simple Player
克隆
这个功能是从作者的仓库找到的,感谢开源:https://gitee.com/fhcloud/tplayer_kbd
修改
把这个仓库克隆下来之后,你需要修改一些文件当中的路径为自己虚拟机当中的路径(以分享的虚拟机为例:
1 | |
1 | |
1 | |
编译
修改好以上文件以后,按顺序执行以下命令:
1 | |
测试
最后把生成的可执行文件tplayer_kbd通过adb传输到开发板上,然后再传几个mp3、mp4文件用于测试,尽量都把文件传到/mnt/UDISK/路径下吧,这里是用户存放文件的区域,不会对其他文件有影响,文件也不会意外被删除。
然后,我们来测试一下例程:
1 | |
展示一下我的实际效果,弹钢琴的帅老头大家应该都很熟悉了吧haha:

关于U盘的挂载
这里基于全志的开发指南Tina_Linux_存储_开发指南简单讲解一下U盘如何挂载。
手动挂载
当我们往开发板的USB口插入U盘时,设备会自动识别到U盘,你可以在dev文件夹下看到新增了诸如sda的设备,此时说明咱们的U盘已经连接到开发板,接下来执行mount /dev/sda /mnt/exUDISK/挂载U盘设备到/mnt/exUDISK文件夹中。顺利的话,接下来cd到该文件夹,你就能读取到U盘当中的内容啦!

自动挂载
千呼万唤使出来,终于,我成功的解决的U盘自动挂载的问题,当然,连同U盘的热插拔问题我也一并解决啦!
这里,我提供两种做法:
fstab
使用fstab实现U盘的开机自动挂载,此法适合procd-init,刚好咱们的86屏就可以使用这个方法.
1 | |
然后把最后两个选项的enabled改成1,即可实现开机自动挂载U盘设备啦,但是这种做法有一个缺点,就算无法热插拔,每一次拔出U盘再插回去,就没有办法自动挂载啦。
所幸,好处是,这种方法没有什么依赖,适合简单的开发使用。
udev
好,接下来来到了udev,这可是个好东西,后面有机会单独拿一篇文章出来讲。
这个需要你先make menuconfig打开配置项libevdev.

先前往该路径下cd /lib/udev/rules.d,然后新建文件vim 91-mount-udisk.rules:
1 | |
然后保存退出,重新加载udev规则:
1 | |
然后,不出意外的话,你就可以顺利的实现U盘的热插拔啦!
…
更多的内容,看开发指南吧(笑!
命令行日志输出到LCD屏幕
修改env.cfg
env.cfg的路径参考/home/hugokkl/tina-d1-h/device/config/chips/t113/configs/100ask/env.cfg

修改kernel_menuconfig





然后就配置完成,重新编译打包啦!下面是显示效果展示:

LVGL示例测试
交流群中提供的虚拟机中刚好提供了一份LVGL测试的程序lvgl_taiji,咱们拿来用一用!
先cd到lvgl_taiji文件夹中,执行以下命令编译程序:
1 | |
然后将编译出来的执行文件lv_taiji通过adb丢到开发板当中运行就可以咯!
…
设备开机后程序自启动
有些时候,我们想要在设备上电开机之后,不想通过命令行输入,自动加载一些内核模块,执行某些命令或者程序时,就会用到以下的操作!
修改开发板当中的/etc/rc.local文件,加入自己想要执行的命令:
1 | |
关于串口设备
在这块开发板中,原作者设计使用uart0作为console的输出口,同时也在开发板侧面留下了两个串口供大家自行DIY,分别是:uart3和uart5,但是提供的虚拟机当中的设备树里并没有使能这两个串口设备,于是如果你想要使用这两个额外的串口,就需要手动设置,下面我粗略地演示一下,如何在设备树中设置串口驱动(以uart3为例:
首先去到~/tina-sdk/device/config/chips/t113/configs/pi/linux-5.4/board.dts.
打开board.dts设备树文件,做以下修改:
参照下列步骤图,把uart3对应的引脚进行修改、然后把status改为okay,结束!
然后,你就可以重新编译内核,打包镜像啦。
最后你可以在咱们的开发板上cat /dev/ttyS*,可以看到ttyS3串口设备已经被注册存在啦,然后你就可以愉快的使用它!
注意:要确定所选择的引脚没有被别的外设复用哟!



1 | |
TODO: 原作者还预留了两个RS485的方向引脚,所以这两个串口还可以作为485总线,后面有空做一下分享吧!
USB摄像头推流
文章参考:https://blog.csdn.net/qq_28877125/article/details/127824696
内核配置
86屏开发板本身的固件并没有打开摄像头相关的配置,因此在最开始,我们要对Tina-sdk进行一波配置。
Tina文件系统配置:make menuconfig







这里需要注意的是,mjpg-streamer依赖libjpeg,但是我们勾选的图像库是libjpeg-turbo,顾名思义是libjpeg的加强版,因此我们需要到mjpg-streamer的makefile里修改一下依赖:将libjpeg改为libjpeg-turbo.


Linux Kernel配置:make kernel_menuconfig



然后重新给sdk编译打包,将镜像烧到sd卡里,插入板子上电!板子的USB口接上UVC摄像头即可。
如果看到设备节点存在/dev/video0和/dev/video1,那就说明板子检测到了摄像头,如图:
此时,你可以使用指令v4l2-ctl -d /dev/video0 --list-formats-ext,来看一下这个摄像头支持的格式和分辨率,如图:
浏览器显示摄像头画面
提前联网!联网我就不多说了,贴两条指令出来,没看明白的话这里有篇文章:D:
1 | |
然后板子上输入指令,推流:mjpg_streamer -i "/usr/lib/input_uvc.so -r 640x480 -d /dev/video0 -y -f 30 -n" -o "/usr/lib/output_http.so".
然后打开浏览器输入网址http://<你板子的ip>:8080/?action=stream,看到有画面输出,就说明成功啦!
屏幕显示摄像头画面
“因为我的摄像头不支持RGB模式,所以就设置成YUV格式的输出模式,然后再将YUV格式转成RGB格式的视频流显示”,原作者如是说,源码如下:
1 | |
使用Tina-sdk的交叉编译工具链进行交叉编译,推入,运行:
1 | |
顺利的话,就能在屏幕上看到视频流啦!
自定义根目录系统
文章参考:https://bbs.aw-ol.com/topic/3907/请问下-t113-s3tinalinux-如何新增文件到根文件系统中
当我们已经对T113-S3和Tina-Linux足够了解,也写了不少程序了,每一次重新烧录镜像就要把程序再拷贝到开发板里,这样还是比较麻烦的。如何能够直接将我们所需要的文件、资源或者库依赖一起打包到镜像里面,生成一个自定义镜像呢,继续往下看吧!
首先,在对应的地方贴上你需要自定义的文件或者文件夹,如下,根据你的系统做不同的选择:
1 | |
然后,make,你会发现,如果你在里面放入了可执行文件,就会报错,因为执行make编译的时候会有脚本检测你放入当前路径的内容里面是否包含可执行文件,然后会找到它需要什么库依赖。
所以,此时编译报错,不要慌,翻翻编译记录,找到如下图所示的一些所需的库依赖:

然后,在~/tina-sdk/package/busybox-init-base-files/Makefile或者~/tina-sdk/package/base-files/Makefile下添加如下内容(选择哪个Makefile一样是取决于你的系统):
引号中改成你缺少的库名字就行啦,你缺什么就echo什么,格式按照下面的来:
1 | |
然后,重新编译make,可能你会发现又有新的报错,没关系往上翻编译记录,可能它还是会再报一两次的库依赖缺少,你继续把它缺少的库依赖在Makefile里面echo一下,最后就能编译成功啦,祝你成功!
接下来,pack,这个时候可能rootfs.fex的空间就不够大了,你需要修改一下gedit ~/tina-sdk/device/config/chips/t113/configs/pi/sys_partition.fex
把rootfs的size改大一些就行了,具体改多大呢,你可以把pack的报错和sys_partition.fex内容一起贴给ai,它会帮你算出一个合理的大小(我就是用豆包算的,der包~
重新修改后保存,重新再pack,到这一步,基本上就能打包成功啦!
…
写在后面
鸣谢:
…