/* 接上篇 */

/*首先认识一下缩写

默认sections

.text               代码section

.data               需要初始化的数据

.bss                不需要初始化的数据

.rodata             存储的只读数据

.version_info       编译器相关信息

/*什么是小地址,flash 逐步细分分区

flash ->segment -> sector ->paragraph ->sections,

这里的sections 就是小地址 (个人理解,可能有误)*/

小地址sections

.sdata              需要初始化的数据

.sbss               不需要初始化的数据

.sdata2             存储的只读数据

绝对地址sections

.zdata              需要初始化的数据,可以存放在绝对的地址里面

.zbss               不需要初始化的数据,可以存放在绝对的地址里面

.zrodata            只读数据,可以存放在绝对的地址里面

*/

/*根据上面注释, 理解下面把对应的数据放在对应的区域里*/

/*Near Abbsolute Addressable Data Sections*/

section_layout :vtc:abs18

{

/*Near Absolute Data, selectable with patterns and user defined sections*/

group

{

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram5)

{

select "(.zdata.zdata_cpu5|.zdata.zdata_cpu5.*)";

select "(.zbss.zbss_cpu5|.zbss.zbss_cpu5.*)";

}

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram4)

{

select "(.zdata.zdata_cpu4|.zdata.zdata_cpu4.*)";

select "(.zbss.zbss_cpu4|.zbss.zbss_cpu4.*)";

}

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram3)

{

select "(.zdata.zdata_cpu3|.zdata.zdata_cpu3.*)";

select "(.zbss.zbss_cpu3|.zbss.zbss_cpu3.*)";

}

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram2)

{

select "(.zdata.zdata_cpu2|.zdata.zdata_cpu2.*)";

select "(.zbss.zbss_cpu2|.zbss.zbss_cpu2.*)";

}

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram1)

{

select "(.zdata.zdata_cpu1|.zdata.zdata_cpu1.*)";

select "(.zbss.zbss_cpu1|.zbss.zbss_cpu1.*)";

}

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram0)

{

select "(.zdata.zdata_cpu0|.zdata.zdata_cpu0.*)";

select "(.zbss.zbss_cpu0|.zbss.zbss_cpu0.*)";

}

group (ordered, attributes=rw, run_addr = mem:cpu0_dlmu)

{

select "(.zdata.zlmudata|.zdata.zlmudata.*)";

select "(.zbss.zlmubss|.zbss.zlmubss.*)";

}

}

/*Near Absolute Data, selectable by toolchain*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram0)

#        endif

{

group zdata_mcal(attributes=rw)

{

select ".zdata.dsprInit.cpu0.32bit";

select ".zdata.dsprInit.cpu0.16bit";

select ".zdata.dsprInit.cpu0.8bit";

}

group zdata_powerOn(attributes=rw)

{

select ".zdata.dsprPowerOnInit.cpu0.32bit";

select ".zdata.dsprPowerOnInit.cpu0.16bit";

select ".zdata.dsprPowerOnInit.cpu0.8bit";

}

group zbss_mcal(attributes=rw)

{

select ".zbss.dsprClearOnInit.cpu0.32bit";

select ".zbss.dsprClearOnInit.cpu0.16bit";

select ".zbss.dsprClearOnInit.cpu0.8bit";

}

group zbss_noClear(attributes=rw)

{

select ".zbss.dsprNoInit.cpu0.32bit";

select ".zbss.dsprNoInit.cpu0.16bit";

select ".zbss.dsprNoInit.cpu0.8bit";

}

group zbss_powerOn(attributes=rw)

{

select ".zbss.dsprPowerOnClear.cpu0.32bit";

select ".zbss.dsprPowerOnClear.cpu0.16bit";

select ".zbss.dsprPowerOnClear.cpu0.8bit";

}

group zdata(attributes=rw)

{

select "(.zdata|.zdata.*)";

select "(.zbss|.zbss.*)";

}

}

/*Near Absolute Const, selectable with patterns and user defined sections*/

group

{

group (ordered, align = 4, contiguous, run_addr=mem:pfls0)

{

select ".zrodata.Ifx_Ssw_Tc0.*";

select ".zrodata.Ifx_Ssw_Tc1.*";

select ".zrodata.Ifx_Ssw_Tc2.*";

select ".zrodata.Ifx_Ssw_Tc3.*";

select ".zrodata.Ifx_Ssw_Tc4.*";

select ".zrodata.Ifx_Ssw_Tc5.*";

select ".zrodata.Cpu0_Main.*";

select ".zrodata.Cpu1_Main.*";

select ".zrodata.Cpu2_Main.*";

select ".zrodata.Cpu3_Main.*";

select ".zrodata.Cpu4_Main.*";

select ".zrodata.Cpu5_Main.*";

/*Near Absolute Const, selectable by toolchain*/

select ".zrodata.const.cpu0.32bit";

select ".zrodata.const.cpu0.16bit";

select ".zrodata.const.cpu0.8bit";

select ".zrodata.config.cpu0.32bit";

select ".zrodata.config.cpu0.16bit";

select ".zrodata.config.cpu0.8bit";

select "(.zrodata|.zrodata.*)";

}

}

}

/*Relative A0/A1/A8/A9 Addressable Sections*/

section_layout :vtc:linear

{

/*Relative A0 Addressable Data, selectable by toolchain*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group a0 (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group a0 (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group a0 (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group a0 (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group a0 (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group a0 (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram0)

#        endif

{

select "(.data_a0.sdata|.data_a0.sdata.*)";

select "(.bss_a0.sbss|.bss_a0.sbss.*)";

}

"_SMALL_DATA_" := sizeof(group:a0) > 0 ? addressof(group:a0) : addressof(group:a0) & 0xF0000000 + 32k;

"__A0_MEM" = "_SMALL_DATA_";

/*Relative A1 Addressable Const, selectable by toolchain*/

/*Small constant sections, No option given for CPU specific user sections to make generated code portable across Cpus*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group  a1 (ordered, align = 4, run_addr=mem:pfls5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group  a1 (ordered, align = 4, run_addr=mem:pfls4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group  a1 (ordered, align = 4, run_addr=mem:pfls3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group  a1 (ordered, align = 4, run_addr=mem:pfls2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group  a1 (ordered, align = 4, run_addr=mem:pfls1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group  a1 (ordered, align = 4, run_addr=mem:pfls0)

#        endif

{

select "(.rodata_a1.srodata|.rodata_a1.srodata.*)";

select "(.ldata|.ldata.*)";

}

"_LITERAL_DATA_" := sizeof(group:a1) > 0 ? addressof(group:a1) : addressof(group:a1) & 0xF0000000 + 32k;

"__A1_MEM" = "_LITERAL_DATA_";

/*Relative A9 Addressable Data, selectable with patterns and user defined sections*/

group a9 (ordered, align = 4, run_addr=mem:lmuram)

{

select "(.data_a9.a9sdata|.data_a9.a9sdata.*)";

select "(.bss_a9.a9sbss|.bss_a9.a9sbss.*)";

}

"_A9_DATA_" := sizeof(group:a9) > 0 ? addressof(group:a9) : addressof(group:a9) & 0xF0000000 + 32k;

"__A9_MEM" = "_A9_DATA_";

/*Relative A8 Addressable Const, selectable with patterns and user defined sections*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group  a8 (ordered, align = 4, run_addr=mem:pfls5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group  a8 (ordered, align = 4, run_addr=mem:pfls4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group  a8 (ordered, align = 4, run_addr=mem:pfls3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group  a8 (ordered, align = 4, run_addr=mem:pfls2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group  a8 (ordered, align = 4, run_addr=mem:pfls1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group  a8 (ordered, align = 4, run_addr=mem:pfls0)

#        endif

{

select "(.rodata_a8.a8srodata|.rodata_a8.a8srodata.*)";

}

"_A8_DATA_" := sizeof(group:a8) > 0 ? addressof(group:a8) : addressof(group:a8) & 0xF0000000 + 32k;

"__A8_MEM" = "_A8_DATA_";

}

/*举个例子,

在core0的main函数里面调用一个函数

这个函数的c 文件需要dsram4内存里面运行

c文件名称: testmap.c

函数名称:void testmm(void)

只需要在下面groip对应的dsram4 里面把 c 的部分名字select一下,这里的* 意思是 任意通配符

group (ordered, attributes=rw, run_addr=mem:dsram4)

{

select ".data.Ifx_Ssw_Tc4.*";

select ".data.Cpu4_Main.*";

select "(.data.data_cpu4|.data.data_cpu3.*)";

select ".bss.Ifx_Ssw_Tc4.*";

select ".bss.Cpu4_Main.*";

select "(.bss.bss_cpu4|.bss.bss_cpu4.*)";

select "(*testmap.*)";  // 这里高亮

}

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram4)

{

select "(.zdata.zdata_cpu4|.zdata.zdata_cpu4.*)";

select "(.zbss.zbss_cpu4|.zbss.zbss_cpu4.*)";

select "(*testmap.*)";

}

编译出来的结果为:

| mpe:dsram4                       |             | .text.testmap.testmm (25427)                            | 0x0000000e | 0x30000000 | 0x0        | 0x00000002 |

| mpe:dsram4                       |             | .bss.testmap.testmmdata (25428)                         | 0x00000001 | 0x3000000e | 0x0000000e | 0x00000001 |

*/

/*Far Data / Far Const Sections, selectable with patterns and user defined sections*/

section_layout :vtc:linear

{

/*Far Data Sections, selectable with patterns and user defined sections*/

group

{

/*DSRAM sections*/

group

{

group (ordered, attributes=rw, run_addr=mem:dsram5)

{

select ".data.Ifx_Ssw_Tc5.*";

select ".data.Cpu5_Main.*";

select "(.data.data_cpu5|.data.data_cpu5.*)";

select ".bss.Ifx_Ssw_Tc5.*";

select ".bss.Cpu5_Main.*";

select "(.bss.bss_cpu5|.bss.bss_cpu5.*)";

}

group (ordered, attributes=rw, run_addr=mem:dsram4)

{

select ".data.Ifx_Ssw_Tc4.*";

select ".data.Cpu4_Main.*";

select "(.data.data_cpu4|.data.data_cpu3.*)";

select ".bss.Ifx_Ssw_Tc4.*";

select ".bss.Cpu4_Main.*";

select "(.bss.bss_cpu4|.bss.bss_cpu4.*)";

}

group (ordered, attributes=rw, run_addr=mem:dsram3)

{

select ".data.Ifx_Ssw_Tc3.*";

select ".data.Cpu3_Main.*";

select "(.data.data_cpu3|.data.data_cpu3.*)";

select ".bss.Ifx_Ssw_Tc3.*";

select ".bss.Cpu3_Main.*";

select "(.bss.bss_cpu3|.bss.bss_cpu3.*)";

}

group (ordered, attributes=rw, run_addr=mem:dsram2)

{

select ".data.Ifx_Ssw_Tc2.*";

select ".data.Cpu2_Main.*";

select "(.data.data_cpu2|.data.data_cpu2.*)";

select ".bss.Ifx_Ssw_Tc2.*";

select ".bss.Cpu2_Main.*";

select "(.bss.bss_cpu2|.bss.bss_cpu2.*)";

}

group (ordered, attributes=rw, run_addr=mem:dsram1)

{

select ".data.Ifx_Ssw_Tc1.*";

select ".data.Cpu1_Main.*";

select "(.data.data_cpu1|.data.data_cpu1.*)";

select ".bss.Ifx_Ssw_Tc1.*";

select ".bss.Cpu1_Main.*";

select "(.bss.bss_cpu1|.bss.bss_cpu1.*)";

}

group (ordered, attributes=rw, run_addr=mem:dsram0)

{

select ".data.Ifx_Ssw_Tc0.*";

select ".data.Cpu0_Main.*";

select "(.data.data_cpu0|.data.data_cpu0.*)";

select ".bss.Ifx_Ssw_Tc0.*";

select ".bss.Cpu0_Main.*";

select "(.bss.bss_cpu0|.bss.bss_cpu0.*)";

}

}

/*LMU Data sections*/

group

{

group (ordered, attributes=rw, run_addr = mem:cpu0_dlmu)

{

select "(.data.lmudata_cpu0|.data.lmudata_cpu0.*)";

select "(.bss.lmubss_cpu0|.bss.lmubss_cpu0.*)";

}

group (ordered, attributes=rw, run_addr = mem:cpu1_dlmu)

{

select "(.data.lmudata_cpu1|.data.lmudata_cpu1.*)";

select "(.bss.lmubss_cpu1|.bss.lmubss_cpu1.*)";

}

group (ordered, attributes=rw, run_addr = mem:cpu2_dlmu)

{

select "(.data.lmudata_cpu2|.data.lmudata_cpu2.*)";

select "(.bss.lmubss_cpu2|.bss.lmubss_cpu2.*)";

}

group (ordered, attributes=rw, run_addr = mem:cpu3_dlmu)

{

select "(.data.lmudata_cpu3|.data.lmudata_cpu3.*)";

select "(.bss.lmubss_cpu3|.bss.lmubss_cpu3.*)";

}

group (ordered, attributes=rw, run_addr = mem:cpu4_dlmu)

{

select "(.data.lmudata_cpu4|.data.lmudata_cpu4.*)";

select "(.bss.lmubss_cpu4|.bss.lmubss_cpu4.*)";

}

group (ordered, attributes=rw, run_addr = mem:cpu5_dlmu)

{

select "(.data.lmudata_cpu5|.data.lmudata_cpu5.*)";

select "(.bss.lmubss_cpu5|.bss.lmubss_cpu5.*)";

}

group (ordered, attributes=rw, run_addr=mem:lmuram)

{

select "(.data.lmudata|.data.lmudata.*)";

select "(.bss.lmubss|.bss.lmubss.*)";

}

}

}

/*Far Data Sections, selectable by toolchain*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group (ordered, contiguous, align = 4, attributes=rw, run_addr = mem:dsram0)

#        endif

{

group data_mcal(attributes=rw)

{

select ".data.farDsprInit.cpu0.32bit";

select ".data.farDsprInit.cpu0.16bit";

select ".data.farDsprInit.cpu0.8bit";

}

group bss_mcal(attributes=rw)

{

select ".bss.farDsprClearOnInit.cpu0.32bit";

select ".bss.farDsprClearOnInit.cpu0.16bit";

select ".bss.farDsprClearOnInit.cpu0.8bit";

}

group bss_noInit(attributes=rw)

{

select ".bss.farDsprNoInit.cpu0.32bit";

select ".bss.farDsprNoInit.cpu0.16bit";

select ".bss.farDsprNoInit.cpu0.8bit";

}

group data(attributes=rw)

{

select "(.data|.data.*)";

select "(.bss|.bss.*)";

}

}

/*Heap allocation*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group (ordered, align = 4, run_addr = mem:dsram5[LCF_HEAP5_OFFSET])

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group (ordered, align = 4, run_addr = mem:dsram4[LCF_HEAP4_OFFSET])

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group (ordered, align = 4, run_addr = mem:dsram3[LCF_HEAP3_OFFSET])

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group (ordered, align = 4, run_addr = mem:dsram2[LCF_HEAP2_OFFSET])

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group (ordered, align = 4, run_addr = mem:dsram1[LCF_HEAP1_OFFSET])

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group (ordered, align = 4, run_addr = mem:dsram0[LCF_HEAP0_OFFSET])

#        endif

{

heap "heap" (size = LCF_HEAP_SIZE);

}

/*Far Const Sections, selectable with patterns and user defined sections*/

group

{

group (ordered, align = 4, run_addr=mem:pfls0)

{

select ".rodata.Ifx_Ssw_Tc0.*";

select ".rodata.Cpu0_Main.*";

select "(.rodata.rodata_cpu0|.rodata.rodata_cpu0.*)";

}

group (ordered, align = 4, run_addr=mem:pfls1)

{

select ".rodata.Cpu1_Main.*";

select ".rodata.Ifx_Ssw_Tc1.*";

select "(.rodata.rodata_cpu1|.rodata.rodata_cpu1.*)";

}

group (ordered, align = 4, run_addr=mem:pfls2)

{

select ".rodata.Ifx_Ssw_Tc2.*";

select ".rodata.Cpu2_Main.*";

select "(.rodata.rodata_cpu2|.rodata.rodata_cpu2.*)";

}

group (ordered, align = 4, run_addr=mem:pfls3)

{

select ".rodata.Ifx_Ssw_Tc3.*";

select ".rodata.Cpu3_Main.*";

select "(.rodata.rodata_cpu3|.rodata.rodata_cpu3.*)";

}

group (ordered, align = 4, run_addr=mem:pfls4)

{

select ".rodata.Ifx_Ssw_Tc4.*";

select ".rodata.Cpu4_Main.*";

select "(.rodata.rodata_cpu4|.rodata.rodata_cpu4.*)";

}

group (ordered, align = 4, run_addr=mem:pfls5)

{

select ".rodata.Ifx_Ssw_Tc5.*";

select ".rodata.Cpu5_Main.*";

select "(.rodata.rodata_cpu5|.rodata.rodata_cpu5.*)";

}

}

/*Far Const Sections, selectable by toolchain*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group (ordered, align = 4, run_addr=mem:pfls5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group  ordered, align = 4, run_addr=mem:pfls4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group (ordered, align = 4, run_addr=mem:pfls3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group (ordered, align = 4, run_addr=mem:pfls2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group (ordered, align = 4, run_addr=mem:pfls1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group (ordered, align = 4, run_addr=mem:pfls0)

#        endif

{

select ".rodata.farConst.cpu0.32bit";

select ".rodata.farConst.cpu0.16bit";

select ".rodata.farConst.cpu0.8bit";

select "(.rodata|.rodata.*)";

}

}

/* PSRAM Code selections*/

section_layout :vtc:linear

{

/*Code Sections, selectable with patterns and user defined sections*/

group

{

/*Program Scratchpad Sections*/

group

{

group code_psram0 (ordered, attributes=rwx, copy, run_addr=mem:psram0)

{

select "(.text.cpu0_psram|.text.cpu0_psram.*)";

select "(.text.psram_text_cpu0|.text.psram_text_cpu0.*)";

}

group code_psram1 (ordered, attributes=rwx, copy, run_addr=mem:psram1)

{

select "(.text.cpu1_psram|.text.cpu1_psram.*)";

select "(.text.psram_text_cpu1|.text.psram_text_cpu1.*)";

}

group code_psram2 (ordered, attributes=rwx, copy, run_addr=mem:psram2)

{

select "(.text.cpu2_psram|.text.cpu2_psram.*)";

select "(.text.psram_text_cpu2|.text.psram_text_cpu2.*)";

}

group code_psram3 (ordered, attributes=rwx, copy, run_addr=mem:psram3)

{

select "(.text.cpu3_psram|.text.cpu3_psram.*)";

select "(.text.psram_text_cpu3|.text.psram_text_cpu3.*)";

}

group code_psram4 (ordered, attributes=rwx, copy, run_addr=mem:psram4)

{

select "(.text.cpu4_psram|.text.cpu4_psram.*)";

select "(.text.psram_text_cpu4|.text.psram_text_cpu4.*)";

}

group code_psram5 (ordered, attributes=rwx, copy, run_addr=mem:psram5)

{

select "(.text.cpu5_psram|.text.cpu5_psram.*)";

select "(.text.psram_text_cpu5|.text.psram_text_cpu5.*)";

}

}

}

}

/* FLS Code selections*/

section_layout :vtc:linear

{

/*Code Sections, selectable with patterns and user defined sections*/

group

{

/*Cpu specific PFLASH Sections*/

group

{

group (ordered, align = 4, run_addr=mem:pfls0)

{

select ".text.Ifx_Ssw_Tc0.*";

select ".text.Cpu0_Main.*";

select ".text.CompilerTasking.Ifx_C_Init";

select "(.text.text_cpu0|.text.text_cpu0.*)";

}

group (ordered, align = 4, run_addr=mem:pfls1)

{

select ".text.Ifx_Ssw_Tc1.*";

select ".text.Cpu1_Main.*";

select "(.text.text_cpu1|.text.text_cpu1.*)";

}

group (ordered, align = 4, run_addr=mem:pfls2)

{

select ".text.Ifx_Ssw_Tc2.*";

select ".text.Cpu2_Main.*";

select "(.text.text_cpu2|.text.text_cpu2.*)";

}

group (ordered, align = 4, run_addr=mem:pfls3)

{

select ".text.Ifx_Ssw_Tc3.*";

select ".text.Cpu3_Main.*";

select "(.text.text_cpu3|.text.text_cpu3.*)";

}

group (ordered, align = 4, run_addr=mem:pfls4)

{

select ".text.Ifx_Ssw_Tc4.*";

select ".text.Cpu4_Main.*";

select ".text.text_cpu4*";

select "(.text.text_cpu4|.text.text_cpu4.*)";

}

group (ordered, align = 4, run_addr=mem:pfls5)

{

select ".text.Ifx_Ssw_Tc5.*";

select ".text.Cpu5_Main.*";

select ".text.text_cpu5*";

select "(.text.text_cpu5|.text.text_cpu5.*)";

}

}

}

/*Code Sections, selectable by toolchain*/

#        if LCF_DEFAULT_HOST == LCF_CPU5

group (ordered, run_addr=mem:pfls5)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU4

group  ordered, run_addr=mem:pfls4)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU3

group (ordered, run_addr=mem:pfls3)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU2

group (ordered, run_addr=mem:pfls2)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU1

group (ordered, run_addr=mem:pfls1)

#        endif

#        if LCF_DEFAULT_HOST == LCF_CPU0

group (ordered, run_addr=mem:pfls0)

#        endif

{

select ".text.fast.pfls.cpu0";

select ".text.slow.pfls.cpu0";

select ".text.5ms.pfls.cpu0";

select ".text.10ms.pfls.cpu0";

select ".text.callout.pfls.cpu0";

select "(.text|.text.*)";

}

}

}

Aurix 多核链接文件 lsl --- 下篇相关推荐

  1. 英飞凌 AURIX TC3XX 系列单片机的链接文件

    前言 程序在完成编译后,每个".c"文件会生成".o"目标文件,此时代码无法通过目标文件运行,还需要通过链接文件为每个目标文件和系统标准库等链接起来,根据链接文 ...

  2. python下载文件保存_python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  3. 第2周第4课:set_uid、set_gid、stick_bit、软(硬)链接文件

    2019独角兽企业重金招聘Python工程师标准>>> 2.18 特殊权限set_uid 权限的标准写法是4位数,第1位表示特殊权限. 该权限仅针对二进制可执行文件,使文件在执行阶段 ...

  4. Windows下Libvirt Java API使用教程(三)- TLS认证访问和动态链接文件依赖

    之前已经介绍过了libvirt api的上手使用方式: <Windows下Libvirt Java API使用教程(二)- 接口使用说明> <Windows下Libvirt Java ...

  5. 纯前端下载pdf链接文件,而不是打开预览的解决方案

    纯前端下载pdf链接文件,而不是打开预览的解决方案 参考文章: (1)纯前端下载pdf链接文件,而不是打开预览的解决方案 (2)https://www.cnblogs.com/jackson-yqj/ ...

  6. python3下载文件-python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  7. 【Android 逆向】Linux 文件分类 ( 普通文件 | 目录文件 | 链接文件 | 字符设备文件 | 管道文件 | 块设备文件 )

    文章目录 一.Linux 文件分类 1.普通文件 2.链接文件 3.字符设备文件 4.管道文件 5.块设备文件 一.Linux 文件分类 Linux 文件分类 : " - " 表示 ...

  8. visual studio 添加链接文件

    本文转载http://blog.163.com/zhongpenghua@yeah/blog/static/87727415201282432345613/ 那个有个箭头的文件就是链接文件了,添加方法 ...

  9. html链接文件不可用,PPT2013如何解决链接文件失效

    工作中在做PPT时,经常需要添加一些视频或音频之类的链接文件.而我们拷贝到另外一台电脑上的时候,由于这些链接文件的路径变了,这些链接也就失效了.遇到链接失效怎么办?下面学习啦给大家分享解决链接失效的方 ...

  10. linux 常用命令整理----链接文件

    ln 用法:ln -s /etc/issue /tmp/issue.soft ln /etc/issue /etc/issue.hard 如果加-s为软链接,类似于windows的快捷方式 不加-s为 ...

最新文章

  1. CTO 写的低级 Bug 再致网站被黑,CEO 的号都被盗了!
  2. 深拷贝(deep clone)与浅拷贝(shallow clone)
  3. poj 1873 枚举+凸包
  4. Java获取各种常用时间方法
  5. database design
  6. java中sort的cmp_快速排序(cmp函数详解)
  7. 跨域cookie设置
  8. MVC 异常处理机制
  9. html没有prefix属性,HTML前缀属性(Open Graph Protocol)的含义?
  10. pycharm 升级 pip
  11. 2022年低功耗软路由cpu一览
  12. 家长们,居家网课这样做
  13. SQL Server 数据库实验课第九周——第六章总结
  14. 关于React 行内样式backgroundImage的设置
  15. HDU-OJ 杭电1495非常可乐
  16. 任务签到表(2006.11.20)
  17. ESP32C3驱动舵机
  18. java框架2019_Java回顾#2 – 2019年最佳工具,框架和功能
  19. 查看mysql数据库sid_查看数据库sid
  20. 2019/04/03

热门文章

  1. 如何一周之内摸清一个行业?
  2. wordpress入门主题_WordPress儿童主题入门
  3. 【折半查找二叉判定树】
  4. [开发过程]<项目管理>TAPD工具
  5. AutoSAR系列讲解 - 总目录
  6. 海洋cms index.php被修改,海洋CMS(SEACMS)新版本V6.55补丁仍可被绕过执行任意代码...
  7. uni-gram与bi-gram语言模型
  8. siblings筛选同胞元素
  9. 10计算机语言代表什么,win10是什么编程语言写的_win10史诗般的巨型编程项目
  10. win10多用户同时登陆