首页
›
嵌入式边缘AI与TinyML
›
005-TFLite Micro移植调试与故障排查
›
《TFLite Micro固件体积诊断与链接裁剪》
VIP20
本课程属于:005-TFLite Micro移植调试与故障排查
嵌入式边缘AI与TinyML · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
📘
7. TFLite Micro编译体积过大:链接依赖与未使用代码清理
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导入
学习目标 · 核心概念 · 整体框架
课程导入
学习目标
02
基础知识
TFLite Micro的架构 · 编译流程 · 静态库与动态库的区别
基础知识
TFLite
03
链接器原理
链接器的工作机制 · 符号解析 · 重定位
链接器原理
链接器的工作机制
04
依赖分析
如何识别编译产物中的未使用代码 · 依赖树分析工具(如nm · objdump
依赖分析
如何识别编译产物
05
编译选项优化
常用编译选项(-ffunction-… · -fdata-sections · -Wl
编译选项优化
ffunction
06
链接脚本定制
通过链接脚本(.ld)控制内存布局 · 排除未使用段 · 优化对齐与填充
链接脚本定制
ld
07
TFLite Micro的算子注册机制
理解算子注册表 · 选择性注册算子以减少代码体积
TFLite
Micro
08
模型算子裁剪
根据实际模型需求 · 裁剪不需要的算子 · 内核和内置函数
模型算子裁剪
根据实际模型需求
09
内存分配器优化
减少内存池大小 · 优化arena配置 · 降低静态内存占用
内存分配器优化
减少内存池大小
10
代码级清理
移除调试日志 · 断言 · 未使用的宏定义
代码级清理
移除调试日志
11
静态库与动态库选择
对比静态链接与动态链接对体积的影响 · 以及TFLite Micro的适用场…
静态库
动态库选择
12
使用LTO(链接时优化)
开启-flto · -Wl · --lto-O2等选项
LTO
使用
13
符号剥离与strip工具
使用strip · -s · --strip-unneeded等去…
strip
符号剥离
14
依赖库精简
分析TFLite Micro依赖的第… · ruy) · 裁剪不需要的组件
依赖库精简
TFLite
15
构建系统配置
CMake · Makefile中如何设置优化选项 · 排除源文件
构建系统配置
CMake
16
案例分析
一个典型的TFLite Micro项… · 从默认编译到优化后的体积对比与步骤拆…
案例分析
TFLite
17
实战任务
使用--gc-sections和函数… · 将示例项目的二进制体积减少30%以上
实战任务
gc-sections
18
实战任务
通过算子裁剪 · 将仅含两个算子的模型编译体积最小化 · 并验证推理正确性
实战任务
通过算子裁剪
19
实战任务
使用nm和objdump分析编译产物 · 找出最大的未使用符号并清理
实战任务
nm
20
常见问题
链接时出现未定义引用 · 段重叠 · 符号冲突等问题的排查与解决
常见问题
链接时出现未定义…
21
常见问题
优化后运行异常(如内存越界 · 算子丢失)的调试方法
常见问题
优化后运行异常
22
性能与体积权衡
优化体积时如何保持推理速度 · 精度和实时性
性能
体积权衡
23
工具链进阶
使用arm-none-eabi-si… · bloaty等工具进行体积分析
工具链进阶
arm-none-eab…
24
自动化优化
编写脚本自动检测未使用代码 · 生成裁剪建议
自动化优化
编写脚本自动检测…
25
多平台适配
针对ARM Cortex-M · RISC-V · x86等不同架构的体积优化差异
多平台适配
ARM
26
与TFLite标准版对比
TFLite与TFLite Micr…
TFLite
标准版对比
27
高级主题
使用链接器插件 · 自定义pass · 二进制重写等高级技术进一步压缩体积
高级主题
使用链接器插件
28
综合项目
从零构建一个最小TFLite Mic… · 目标体积小于50KB · 并运行MNIST模型
综合项目
TFLite
29
测试与验证
优化后如何确保功能正确性 · 单元测试 · 集成测试与回归测试
测试
验证
30
课程总结
回顾关键知识点 · 常见陷阱 · 最佳实践
课程总结
回顾关键知识点
所属VIP或分类
同VIP:TFLite-Micro-CMake构建诊断与工程修复
同VIP:TFLite-Micro-RTOS并发推理故障处理
同VIP:TFLite-Micro交叉编译排错:工具链、ABI与链接脚本问题