This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TM4C1290NCPDT:可以使用多少 RAM 来保存数据

Guru**** 2478765 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/694213/compiler-tm4c1290ncpdt-how-much-ram-can-i-use-to-save-off-data

器件型号:TM4C1290NCPDT

工具/软件:TI C/C++编译器

所有、  

我有以下要求。

  • 目的是持续打开和关闭 由微控制器控制的器件。 打开周期为2秒、关闭周期为2秒。 必须在导通周期的开始和结束时将32位整数保存到 RAM 中。 这种情况必须永远发生。 这些值将按需打印。
  • 我的问题是可以保存多少个32位整数? 当我耗尽 RAM 时会发生什么情况?
  • 是否有任何关于如何最好地实施此要求的想法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Haroldo、
    您是否为每个打开周期为 RAM 保存不同的32位值? 片上 RAM 受到限制、最终将耗尽。 RAM 还用于存储栈和应用程序声明的其他变量。
    不确定您的应用是什么。 为什么需要保存所有32位整数的整个历史记录?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Charles 的快速回复。

    我实际上为每个导通周期保存3个不同的32位值。 最后2秒的周期。 一个32位值在开始时保存、在周期中再保存500ms、在200ms 时保存第三个。

    要求保存所有32位整数的整个历史记录。 如何计算在实际耗尽 RAM 之前可以保存多少个32位值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我建议您查看.map 文件以查看使用和未使用的 SRAM 大小。 下面只是一个示例。 三个32位整数占用12个字节、您只有256k RAM。 无论 SRAM 大小如何、您最终都将耗尽它。 如果您的应用程序要求您保存所有数据、您可能需要探索将数据保存到某些外部存储器设备。 但是、您可以在外部器件上保存的数量也受到限制。 同样、不确定为何必须保存所有数据。 您能否仅保存最近1分钟或最近1小时的数据?


    秘书长的报告
    TI ARM 链接器 PC v16.9.4.
    秘书长的报告
    >> 2018年4月13日(星期五) 16:31:09

    输出文件名:
    入口点符号:"_c_int00"地址:0007a049


    存储器配置

    名称 原点长度 已使用 未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    闪存 00000000 00100000 0007b94e 000846b2 R X
    SRAM 20000000 00040000 00018374 00027c8c RW X


    段分配映射

    运行 origin load origin length init length atts members
    ------ ------ ------ ------ ---- ----
    00000000 00000000 0007b950 0007b950 r-x
    00000000 00000000 00000200 00000200 r--.intvecs
    00000200 00000200 0006dae8 0006dae8 r-.const
    0006dce8 0006dce8 0000dc06 0000dc06 r-x .text
    0007b8f0 0007b8f0 00000060 00000060 r-.cinit
    20000000 20000000 00018374 00000000 Rw-
    20000000 20000000 00017af0 00000000 rw-.bss
    20017af0 20017af0 00000800 00000000 rw-.stack
    200182f0 200182f0 00000084 00000000 rw-.data
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Charles、
    或者、我正在考虑将这些值写入文件。 您是否有任何将值保存到该微控制器文件的示例?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不会:... ((总 MCU RAM (字节)- RAM 安全保留(字节:STACK + vars + Other))/ 4 (4个字节,每个32位整数)产生您的结果?

    您寻求"保存整个历史"-但选择"高度易失性"和 严格大小限制的媒介(SRAM)-这会使"整个历史"处于极大的危险-它不会吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您可以查看下面的 SD_CARD 示例 /examples/boards/dk-tm4c129x/sd_card. SD_card 示例演示了如何从 SD 卡访问文件系统。 它利用了 FatFS。