• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

MCU程序是否可以把RAM使用完

skawu 2018-04-10 浏览量:1161
在使用中,如果编译出来的固件内存把RAM用完或者10多个字节,这样有风险吗
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 还真的有内存用完的案例。

    有个基于AVR单片机的开源飞控,叫ardupilot。虽然mega2560的资源已经不少了,但是自3.0版以后,ardupilot新加了自动PID调参的功能,于是就把内存耗光了。

    这并不影响程序运行,只是使用者心情上不好,于是后来程序迁移到了内存更大的stm32f427

    • 发布于 2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:18
  • 理论上只要不超出,都不会有问题,实际上即使是超出部分,也可能没有问题。应为实际封装的RAM可能比标称的大一些。但是不建议这样用。
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 不建议,之前在程序中定义一些很大的数组,虽然下进去,但是感觉很容易卡死
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好不要用完,除非你的代码基本逻辑完全没有bug。
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 你所谓的固件把ram用完是什么概念?固件是存储在ROM或者flash或者sd中的吧,RAM是用来存储变量的,可能在程序系统会把ROM和RAM部署到统一的内存空间中(这样可以减少对RAM的实际使用,比如通过映射表来实现)。

    如果你的意思是程序可能超出RAM空间,肯定不建议这样用。

    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 不建议用完,最好预留一定的空间,防止程序问题
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好不要占满内存容易出问题
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果用完的话,一般会出现不可预知的错误
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 不建议这样使用,实际运行过程中可以会造成内存溢出,程序意外跑飞
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 用完了跑飞了会很尴尬,所以不建议用完
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要看编译器的,像ARM-MDK这种,即便你刚刚好用完也不会有问题,他的堆栈等各种变量都已包含在内,弊端是产品以后就别想修改功能或升级了,至于说跑飞之类的故障,即便是你的ram只用1%也不会有任何改善。   但Keil C51的情况不同,编译器编译后的剩余RAM空间是作为系统堆栈的,RAM用完也就是堆栈为0,只能是死路一条。
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以用完,风险是有点,但是系统会自己处理
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果用完的话会出现运行看似正常,但是有很多隐藏的诟病!有时候还一时半会发现不了,所以不建议占用全部内存
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 没有风险的,前提是你的程序设计要很严谨,不会出现异常。
    • 发布于2018-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 理论上可以,但是最好不要这样,容易出毛病。
    • 发布于2018-04-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果稳定可靠的话,选用大一点的ram
    • 发布于2018-04-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 只要编译出来的rw和zi小于你的ram就肯定没问题
    • 发布于2018-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好不要全部用完,因为这样子万一有一些堆栈溢出的数据没地方存储的话就会出现严重的错误。

    • 发布于2018-04-29
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

MCU程序是否可以把RAM使用完