gpt4 book ai didi

embedded - 在闪存中下载代码的过程

转载 作者:行者123 更新时间:2023-12-04 13:34:25 25 4
gpt4 key购买 nike

我是嵌入式领域的新手。我对十六进制文件下载产生了疑问:
由于链接器和定位器的输出是一个二进制文件,具有.text,.bss,.data等各个节,.text驻留在Flash中,.bss进入RAM,.data进入RAM ...
所以我的问题是

  • 当我使用FLASH Loader将程序刻录到闪存时,如何将.bss和.data写入RAM。
  • 在最终的二进制文件中,有什么索引类型的东西可以区分.text和.bss段。
  • 链接器/定位器中是否有任何实用程序可将我们简单的二进制文件转换为十六进制格式。
  • 如何从十六进制文件的内容中区分.text和.bss?

  • 提前致谢。请帮忙。

    最佳答案

    1.) how .bss and .data are written to RAM as i am using FLASH Loader for burning my program onto flash?



    代码,常量数据和初始化数据都被写入闪存。在运行时,已初始化的数据将在启动期间复制到bss。常量数据通常可以直接访问(您可以使用“const”关键字进行声明)。

    2.) Is there any index kind of thing in the final binary which discriminates between .text and .bss segments?



    我认为您的意思是“二进制”链接器输出。这通常称为目标文件,与二进制镜像不同。目标文件包括所有代码,数据,符号,调试信息和内存地址。对于GCC工具链,链接器输出通常是.elf文件。

    链接器使用“链接脚本”或其他定义文件将各个段定位在适当的内存地址处。您的工具链应包含有关如何进行更改的文档。

    3.) Is there any utility in the linker/locator which converts our simple binary into hex format?



    “objcopy”实用程序将读取链接器输出,并可以写入多种格式的输出文件,包括Intel-hex。有关人类可读的输出,请参见“objdump”。

    4.) How can I discriminate between .text and .bss from the contents of hex file?



    按内存地址。对于复制到bss的数据,GCC使用“初始化数据”段。根据您的链接描述文件找到它。

    Intel-hex格式: http://en.wikipedia.org/wiki/Intel_HEX

    GCC: http://gcc.gnu.org/onlinedocs/

    关于embedded - 在闪存中下载代码的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294910/

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