发新帖我要提问
123
返回列表
打印
[STM32F1]

大家在估算一个程序需要 多少RAM多少FLASH,是如何预估的?

[复制链接]
楼主: heweibig
手机看帖
扫描二维码
随时随地手机跟帖
41
天天向善| | 2024-3-14 06:35 | 只看该作者 回帖奖励 |倒序浏览
有些程序在运行时消耗更多内存,例如在循环中动态分配堆空间。

使用特权

评论回复
42
ingramward| | 2024-3-14 13:37 | 只看该作者
FLASH的大小主要取决于程序的代码大小。为了提高代码效率并减少FLASH的使用,可以采用一些优化策略,如使用更紧凑的数据类型、优化算法、减少重复代码等。

使用特权

评论回复
43
pmp| | 2024-3-14 22:07 | 只看该作者
计算程序代码本身的大小,这可以通过编译器在编译后的.map文件中查看。
考虑到库文件、中断服务程序、初始化代码和常量数据(如字符串、表格)的大小。

使用特权

评论回复
44
天意无罪| | 2024-3-15 09:51 | 只看该作者
这个不好准确预估,一般都是经验值,比如与之前写的代码做对比,可以大概预估这次要写的代码需要占用多少存储容量。

使用特权

评论回复
45
eefas| | 2024-3-15 15:28 | 只看该作者
在程序运行过程中产生的中间变量也会占用RAM空间。

使用特权

评论回复
46
janewood| | 2024-3-16 14:12 | 只看该作者
根据单片机应用的功能需求,预估每个模块所需的代码大小。例如,输入输出处理、数学计算、通信协议等。

使用特权

评论回复
47
hilahope| | 2024-3-17 12:59 | 只看该作者
分析程序的总体架构,了解主要功能模块和数据结构的大小。
确定程序中使用的所有全局变量、静态变量、堆栈需求和堆(对于支持动态内存分配的单片机)的使用情况。

使用特权

评论回复
48
ccook11| | 2024-3-17 22:22 | 只看该作者
可以通过编译器生成的MAP文件或代码大小报告来获取。在编写程序时,尽量使用紧凑的编码风格和高效的算法,以减小代码大小。

使用特权

评论回复
49
51xlf| | 2024-3-18 01:35 | 只看该作者
FLASH主要用于存储程序代码。可以逐行分析程序代码,根据每行代码所占用的FLASH空间估算所需的FLASH容量。这通常需要参考单片机的指令集和编译器的相关信息。例如,一条MOV指令可能需要2字节的FLASH空间,一条JMP指令可能需要3字节的FLASH空间等。同时,还需要考虑程序中的数据和变量在FLASH中的存储需求。

使用特权

评论回复
50
小夏天的大西瓜| | 2024-3-18 17:50 | 只看该作者
确实编译出来都有大小的,在范围内就可以

使用特权

评论回复
51
timfordlare| | 2024-3-20 13:01 | 只看该作者
如果程序使用动态内存分配,需要评估平均和峰值时的堆空间使用量。
考虑操作系统或RTOS的开销,如任务堆栈大小、内核数据结构等。

使用特权

评论回复
52
芯路例程| | 2024-3-20 13:37 | 只看该作者
根据微控制器应用的功能需求,估计每个模块所需的代码量,如输入/输出处理、数学计算、通信协议等。

使用特权

评论回复
53
LinkMe| | 2024-3-20 14:01 | 只看该作者
程序执行过程中产生的中间变量也占用RAM空间。

使用特权

评论回复
54
zerorobert| | 2024-3-23 10:05 | 只看该作者
如果使用了外部设备,如ADC、DAC、PWM等,它们通常会占用一部分RAM和FLASH空间来存储采样数据和配置信息。

使用特权

评论回复
55
szt1993| | 2024-3-25 14:22 | 只看该作者
基本上参考编译的生成情况,再适当放宽就好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则