我正在从事一个嵌入式C项目。嵌入式系统的主要问题是内存有限。我遇到一个问题,我需要使用中断从串行通信链路中获取32字节数据,然后将这些数据保存到EEPROM。
在EEPROM中写入一个字节的时间需要4毫秒的时间。为了节省内存,我可以在从串行接口(在ISR内部)接收数据时写入数据。但这不是一个可行的解决方案。
我可以使用的另一种方法是使用一个包含32字节缓冲区的结构:
struct example_struct
{
unsigned char buffer[32];
};
分配32字节的内存,用它将我的数据保存在ISR中,并在写入EEPROM后释放内存。不幸的是,我的C编译器没有这种自由。开发环境不支持malloc和free。
具体来说,我想优化内存使用。代替使用全局缓冲区保存数据,在ISR和EEPROM写功能之间传输数据的可能方法是什么?
可用于处理的RAM限制为368字节。
请指教
谢谢
由于malloc
和free
丢失,“释放”内存的概念就变成“为了不同的目的重用同一静态分配的内存块”。
为此,union
只要注意不要一次将其用于多种用途,就可以通过在global内分配内存块来重用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句