gpt4 book ai didi

c - RAM & ROM 内存段

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:44 24 4
gpt4 key购买 nike

有.bss,.text,.data,.rodata,....等不同的内存段

我不知道它们中的哪些位于 RAM 中,哪些位于 FLASH 存储器中,许多资料在(RAM 和 ROM)存储器的两个部分中都提到了它们。

请提供 RAM 和闪存的内存段的公平解释。

ATMEL 工作室编译器
ATMEGA 32平台

最佳答案

希望您了解这些部分名称的典型用法。 .text 是代码,.rodata 只读数据,.data 是非零读/写数据(例如全局变量,已在编译时初始化),.bss 读/写数据假定为零,未初始化。 (未初始化的全局变量)。

所以 .text 和 .rodata 是只读的,所以它们可以在闪存或内存中并在那里使用。 .data 和 .bss 是读/写的,所以它们需要在 ram 中使用,但是为了将这些信息放入 ram,它必须在电源关闭时位于非 volatile 位置,然后复制到 ram。因此,在微 Controller 中,.data 信息将保存在闪存中, Bootstrap 代码需要将该数据复制到代码希望找到它的 ram 中。对于 .bss,您不需要所有这些零,您只需要起始地址和字节数, Bootstrap 可以将该内存归零。

所以他们所有人都可以/确实住在这两个地方。但典型的用例是只读的在闪存中使用,而读/写在 ram 中使用。

关于c - RAM & ROM 内存段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46961974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com