首页
›
嵌入式边缘AI与TinyML
›
009-Arduino Nano 33 BLE Sense TinyML项目实战
›
《Arduino TinyML轻量模型部署与RAM优化》
VIP20
本课程属于:009-Arduino Nano 33 BLE Sense TinyML项目实战
嵌入式边缘AI与TinyML · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
📘
11. Arduino内存优化:模型大小、Arena与全局变量控制
共计 30 章节
点击此处阅读海量试读课程:100+行业、1000+细分领域
01
课程导入
Arduino内存优化的必要性 · 学习目标 · 课程整体框架与适用场景
课程导入
Arduino
02
Arduino内存基础
Flash · SRAM · EEPROM的区别与作用
Arduino
内存基础
03
内存占用分析
如何查看编译后的程序大小(Sketc…
内存占用分析
Sketc
04
变量类型与内存
不同数据类型(int · float · char
变量类型
内存
05
全局变量控制
全局变量的定义 · 初始化方式对内存的影响 · 以及如何减少全局变量
全局变量控制
全局变量的定义
06
局部变量与栈
局部变量的生命周期 · 栈空间限制 · 以及递归和深层函数调用的风险
局部变量
局部变量的生命周…
07
动态内存与堆
malloc/free · new/delete的使用 · 以及堆碎片化问题
动态内存
malloc/free
08
Arena概念引入
什么是Arena(内存池) · 为什么在Arduino中需要Aren…
Arena
概念引入
09
Arena实现原理
基于静态数组或预分配缓冲区的内存池设… · 分配与释放逻辑
Arena
实现原理
10
Arena实战
编写一个简单的Arena类 · 支持分配和重置操作 · 并测试其效果
Arena
编写一个简单的
11
字符串优化
使用F()宏 · const char* · String类的内存开销对比与替代方…
字符串优化
使用F
12
数组与缓冲区优化
固定大小数组 · 环形缓冲区 · 动态调整策略
数组
缓冲区优化
13
结构体与联合体
使用struct · union · bit-field减少内存占用的方法
结构体
联合体
14
函数与代码优化
减少函数参数 · 使用内联函数 · 避免重复代码对内存的影响
函数
代码优化
15
库的内存占用
如何评估第三方库的内存开销 · 选择轻量级库
库的内存占用
如何评估第三方库…
16
编译选项与优化
使用编译器优化级别(-Os) · LTO · 去除未使用代码
编译选项
优化
17
内存监控工具
使用FreeMemory库 · MemoryFree库 · 串口输出实时内存状态
内存监控工具
FreeMemory
18
案例实战1
优化一个LED控制程序 · 减少全局变量和字符串内存
案例实战1
LED
19
案例实战2
使用Arena管理传感器数据缓冲区 · 避免动态分配碎片
案例实战2
Arena
20
案例实战3
优化一个数据记录器 · 处理大量浮点数据并控制内存
案例实战3
优化一个数据记录…
21
常见问题1
程序编译成功但运行时崩溃 · 如何排查内存溢出
常见问题1
程序编译成功但运…
22
常见问题2
String类导致的内存碎片 · 如何替换为char数组
常见问题2
String
23
常见问题3
全局变量过多导致SRAM不足 · 如何重构代码
常见问题3
SRAM
24
常见问题4
Arena分配失败或内存泄漏 · 如何调试和修复
常见问题4
Arena
25
进阶技巧
使用PROGMEM存储常量数据 · 减少SRAM占用
进阶技巧
PROGMEM
26
进阶技巧
使用union和位域压缩状态标志 · 节省内存
进阶技巧
union
27
进阶技巧
动态调整Arena大小 · 根据任务需求灵活分配
进阶技巧
Arena
28
综合项目
设计一个多任务Arduino系统 · 综合运用全局变量控制 · Arena和字符串优化
综合项目
Arduino
29
性能与内存权衡
在内存优化时如何平衡运行速度 · 代码可读性和维护性
性能
内存权衡
30
课程总结与扩展
回顾核心要点 · 推荐进一步学习资源 · 以及未来内存优化趋势
课程总结
扩展
所属VIP或分类
同VIP:Arduino-Edge-Impulse项目:零代码采集、训练到板端部
同VIP:Arduino-Nano-33端侧AI原型开发
同VIP:Arduino-TinyML低功耗采集与续航优化