打印
[其他产品]

功力不深,MCU系统动态内存慎玩为妙

[复制链接]
206|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王栋春|  楼主 | 2025-7-17 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在实际工作中,有时不免会遇到早前的MCU系统由于各种原因,而导致其自身存储空间无法满足工作之需的情况。面对如此情况,有关技术人员会往往采取两种方法进行补救,用来延长系统的运行时间,方法一是通过清理MCU系统中无关紧要的数据释放存储空间,或者是通过软件技术对MCU系统中一些不需要保存的存储数据进行定期清理,达到存储空间延缓被塞满拉低系统运行速度之目的;方法二便是通过外挂存储器,对MCU系统进行扩容处理。这两种方法各有优劣,不过有些技术人员还会MCU系统搞动态内存操作,不过这需要对系统运行环境和软件编程技术都有很高的要求,一般人员还是慎重点为宜。
本单位有关技术人员中,面对MCU系统存储空间不够用的情况之时,绝大部分采取外挂存储器的操作,可以极大地保障系统平稳运行速度和使用时间。

使用特权

评论回复
沙发
huangcunxiake| | 2025-7-17 10:44 | 只看该作者
什么是动态内存

使用特权

评论回复
板凳
inkfish| | 2025-7-18 10:41 | 只看该作者
简单的内存复用这样就够了  

typedef union{
    uint8_t mEncoderBuf[8*1024];
    uint8_t mYmodeBuf[4][2*1024];
}GLOBAL_DATA_t;

static FIL s_mFile;
   
GLOBAL_DATA_t s_mGlobalBuf;

FIL * get_file_buf(void)
{
    return &s_mFile;
}

uint8_t * get_opus_encoder_buf(void)
{
    return s_mGlobalBuf.mEncoderBuf;
}

uint8_t * get_ymode_tx_buf(void)
{
    return &s_mGlobalBuf.mYmodeBuf[0][0];
}

uint8_t * get_ymode_rx_buf(void)
{
    return &s_mGlobalBuf.mYmodeBuf[1][0];
}


uint8_t * get_ymode_file_path_buf(void)
{
    return &s_mGlobalBuf.mYmodeBuf[2][0];
}

uint8_t * get_format_buf(void)
{
    return s_mGlobalBuf.mEncoderBuf;
}

使用特权

评论回复
地板
王栋春|  楼主 | 2025-7-18 10:51 | 只看该作者
inkfish 发表于 2025-7-18 10:41
简单的内存复用这样就够了  

typedef union{

还是坛友厉害,俺说的这点东西都是听搞软件的同事们讲的,具体的俺是一窍不通。

使用特权

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

本版积分规则

4462

主题

27857

帖子

78

粉丝