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

[复制链接]
5270|54
everyrobin 发表于 2024-3-2 17:45 | 显示全部楼层
需要了解程序的基本结构,包括主函数、子函数、变量和数据结构等。这有助于对程序的存储需求有一个初步的估计。
10299823 发表于 2024-3-3 09:08 | 显示全部楼层
在分配内存时,可能会产生内存碎片,这部分内存可能无法被有效利用,因此在实际计算时需要考虑一定的余量。
elsaflower 发表于 2024-3-3 11:06 | 显示全部楼层
如果程序中使用了外部设备,如串口、定时器等,这些设备的控制和数据缓存也会占用一定的RAM空间。
mikewalpole 发表于 2024-3-3 16:18 | 显示全部楼层
RAM主要用于存储程序运行过程中的变量和数据。可以逐个分析程序中的变量和数据结构,根据它们的数据类型和数量估算所需的RAM空间。例如,一个32位整数变量需要4字节的RAM空间,一个浮点型变量需要4字节的RAM空间,一个字符型变量需要1字节的RAM空间等。同时,还需要考虑程序运行过程中可能产生的临时变量和数据。
mmbs 发表于 2024-3-3 19:28 | 显示全部楼层
通常需要在RAM中预留一部分空间作为堆栈,以及可能的扩展空间。
yorkbarney 发表于 2024-3-4 11:24 | 显示全部楼层
需要深入理解程序的结构和功能。这包括识别程序中的各个部分(如主程序、中断服务程序、函数等),以及它们之间的关系和调用频率。
tabmone 发表于 2024-3-4 15:55 | 显示全部楼层
初步预估后,需要进行迭代和优化。这可能包括调整数据结构、优化代码算法、减少不必要的函数调用等。在每次优化后,重新使用静态分析工具进行估算,以确保满足资源需求。
理想阳 发表于 2024-3-5 08:57 | 显示全部楼层
我以前真的不关心这个问题
pixhw 发表于 2024-3-5 16:08 | 显示全部楼层
程序中可能需要存储一些全局变量、常量或堆栈数据。这部分数据的大小取决于程序的具体需求。可以通过查看编译器生成的数据段大小来预估数据存储所需的空间。
Pretext 发表于 2024-3-5 21:55 | 显示全部楼层
正常的做法是先用大容量的样本来写,然后根据实际情况选择合适的价格
i1mcu 发表于 2024-3-5 22:04 | 显示全部楼层
估算程序中使用的全局变量、静态变量、动态分配的堆栈空间等所需的内存大小。
软核硬核 发表于 2024-3-6 00:53 | 显示全部楼层
在选择合适的测试程序之前,我总是先编写大容量的测试程序
AIsignel 发表于 2024-3-8 20:07 | 显示全部楼层
Usually, don't use large arrays
jtracy3 发表于 2024-3-9 17:08 | 显示全部楼层
需要分析程序中使用的变量和数据结构。这包括全局变量、局部变量、数组、结构体等。注意考虑变量的数据类型、大小和生命周期,因为这些都会直接影响RAM的使用。
zerorobert 发表于 2024-3-10 11:09 | 显示全部楼层
程序中使用的全局变量、局部变量、数组、字符串等都会占用RAM空间。而定义的常量、程序代码本身则会占用FLASH空间
bestwell 发表于 2024-3-10 22:13 | 显示全部楼层
有些程序在运行时会占用更多的内存,例如,循环中的动态分配堆空间等。
tifmill 发表于 2024-3-11 16:55 | 显示全部楼层
可以使用开发工具,如Keil等,它们通常能提供详细的内存使用报告,帮助开发者了解程序对内存的实际需求。
minzisc 发表于 2024-3-11 19:14 | 显示全部楼层
如果程序使用了外部设备驱动或第三方库函数,需要考虑这些模块所占用的RAM和FLASH空间。通常,这些模块的文档或源代码中会提供其资源占用信息。
alvpeg 发表于 2024-3-12 14:16 | 显示全部楼层
通过实际编写代码并进行初步测试,观察编译器生成的.map文件或使用IDE提供的内存统计工具来精确了解RAM和FLASH的实际占用情况。
天天向善 发表于 2024-3-14 06:35 | 显示全部楼层
有些程序在运行时消耗更多内存,例如在循环中动态分配堆空间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部