代码之家  ›  专栏  ›  技术社区  ›  Laurenz

从arm获取目标上剩余的可用空间无eabi大小

  •  0
  • Laurenz  · 技术社区  · 7 年前

    我想计算嵌入目标上的剩余空间。

    Arduino IDE在输出窗口中显示:

    Sketch uses 9544 bytes (3%) of program storage space. Maximum is 262144 bytes.
    

    avr-size -C 显示“剩余xx%”的选项:

    $ avr-size -C --mcu=atmega32u4 build/myproject.hex
    AVR Memory Usage
    ----------------
    Device: atmega32u4
    
    Program:    8392 bytes (25.6% Full)
    (.text + .data + .bootloader)
    
    Data:       2196 bytes (85.8% Full)
    (.data + .bss + .noinit)
    

    然而,我实际上正在编写一个CMake文件来开发Arduino板的代码,该板带有Arm Cortex M0 CPU,所以我使用 arm-none-eabi-size ,显示如下代码大小:

    [100%] Built target hex
       text    data     bss     dec     hex filename
       8184     208    1988   10380    288c build/myproject
    [100%] Built target size
    *** Finished ***
    

    是否有方法计算设备上剩余的程序和数据空间?或者我需要对输出进行正则化,并计算硬编码值的百分比吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Creek Drop    2 年前

    如果您使用的是arm none eabi工具链,则可以添加链接器选项 -Wl,--print-memory-usage 它按百分比打印RAM和闪存的使用情况。输出如下所示:

    Memory region         Used Size  Region Size  %age Used
                 RAM:        8968 B        20 KB     43.79%
               FLASH:       34604 B       128 KB     26.40%
    

    我正在使用CubeMX生成的make文件,为了启用此打印,我在LDFLAGS行的末尾添加了该选项。对于CMake this thread 可能有用。