了解嵌入式软件中的链接描述文件 NOLOAD 部分

Understanding linker script NOLOAD sections in embedded software

根据 ld 的 GNU 文档,NOLOAD 部分的工作方式如下:

The `(NOLOAD)' directive will mark a section to not be loaded at run time. The linker will process the section normally, but will mark it so that a program loader will not load it into memory.

现在,关于 程序加载器,根据维基百科:

Embedded systems typically do not have loaders, and instead, the code executes directly from ROM. In order to load the operating system itself, as part of booting, a specialized boot loader is used.

那么,NOLOAD 部分对 FW/嵌入式软件到底有什么作用?

NOLOAD 部分定义了 link 程序正常需要但不能加载到内存中的部分。例如,您可能需要 link 您的程序带有一些位于 ROM 中的代码,因此您告诉 link 人员将 ROM 中的代码标记为 NOLOAD。然后将加载程序的工具(调试器、OS 或其他)将不会加载这部分代码。