Bootstrap

ghs 变量 函数指定地址

参考链接

指定bss数据

  1. 链接脚本添加bss代码段,不添加则由系统随机分配RAM地址

    SECTIONS
    {
    .sram								:>. SRAM
    …
    .mybss abs(0xffe04000) :>. /* locate the section to address 0xffe04000 */
    …
    }
    
  2. 源码指定bss数据存放区域
    注意:这里 section 为 bss段

    #pragma ghs section bss=.mybss”
    int svarInit;
    #pragma ghs section bss=default
    

指定data数据

  1. 链接脚本添加data代码段,不添加则由系统随机分配RAM地址

    SECTIONS
    {
    .sram								:>. SRAM
    …
    .mydata abs(0xffe04000) :>. /* locate the section to address 0xffe04000 */
    …
    }
    
  2. 源码指定data数据存放区域
    注意:这里 section 为 data段

    #pragma ghs section data=.mydata”
    int svarInit = 3;
    #pragma ghs section data=default
    

指定text

  1. 链接脚本添加text代码段,不添加则由系统随机分配RAM地址

    SECTIONS
    {
    .intvec								:>. CODE_FLASH
    …
    .mytextabs(0x101FE0000) :>. /* locate the section to address 0xffe04000 */
    …
    }
    
  2. 源码指定text数据存放区域
    注意:这里 section 为 text 段

    #pragma ghs section text=.mytext”
    void mey_func(void)
    {}
    #pragma ghs section text=default
    

链接脚本指定源文件存储位置

	SECTIONS
	{
		/********************************************/
		.text:
		{
			test.o(.text)	//指定test.o存储地址 运行地址
		}>ROM
		ROM.data	ROM(data)				:>.
		/********************************************/
		.data								:
		{
			main.o(.text)	//指定main.o的代码段的运行地址到data段
			main.o(.rodata) //指定main.o的只读段的运行地址到data段
		}
		> SRAM
		.bss								:
		{
			main.o(.bss) //指定main.o的bss段的运行地址到bss段
		}
		> .
	}
;