链接器的映射文件中的这些部分是什么?

时间:2019-09-28 08:44:20

标签: c memory-management linker map-files stm8

我的COSMIC-C链接器为我的STM8S微控制器项目生成了一个映射文件,尽管有一些熟悉的部分,但它还是有点没用。

这是地图文件的输出和一些模块:

                                --------
                               Segments
                               --------

start 00008080 end 00008084 length     4 segment .const
start 00008087 end 00008298 length   529 segment .text
start 00004000 end 00004000 length     0 segment .eeprom
start 00000000 end 00000000 length     0 segment .bsct
start 00000000 end 0000000a length    10 segment .ubsct
start 0000000a end 0000000a length     0 segment .bit
start 0000000a end 0000000a length     0 segment .share
start 00000100 end 00000100 length     0 segment .data
start 00000100 end 00000100 length     0 segment .bss
start 00000000 end 000003be length   958 segment .info.
start 00008000 end 00008080 length   128 segment .const
start 00008084 end 00008087 length     3 segment .init


                               -------
                               Modules
                               -------

D:\Program Files (x86)\COSMIC\FSE_Compilers\CXSTM8\lib\crtsi0.sm8:
start 00008087 end 000080d7 length    80 section .text
start 00000100 end 00000100 length     0 section .bss
start 00000000 end 00000000 length     0 section .ubsct
start 00000000 end 00000034 length    52 section .info.

Release\clockcontrol.o:
start 000080d7 end 000080f7 length    32 section .text
start 00000034 end 000000c1 length   141 section .info.

Release\main.o:
start 000080f7 end 00008145 length    78 section .text
start 000000c1 end 00000146 length   133 section .info.
start 00008080 end 00008084 length     4 section .const

我了解 .text .data 。并且我可以假设 bsct ubsct data bss (尽管已经具有.data和.bss );还有关于 .eeprom .const 的信息,它们可能代表了它们明显的内存部分。但是:

  1. .info,.bit,.share,.init是什么?
  2. 我对.bsct和.ubsct的假设正确吗?如果不是,这些部分是什么?如果是,为什么我们同时拥有.bsct / .ubsct和.data / .bss?
  3. 为什么我们有两个.const? (它们是连续的)
  4. 尽管定义了
  5. ,但问题1中提到的所有项目均未出现在我的代码模块中。它们只是标准吗?
  6. 这些部分是否遵循命名约定,或者仅仅是COSMIC之外的内容?我的意思是说它们是否是标准的。

有多个thanx。

更新

COSMIC链接器文档中有许多有关如何制作链接器脚本的描述,但没有预定义的表。似乎脚本是由STVD(IDE)编辑的。尽管如此,还是有一个例子(与我的问题不太相关)可能会有所帮助:

enter image description here

0 个答案:

没有答案