目录
一、背景
AURIX TC397一般拥有多块存储器,包括PSRR、DSRR、DLMU、LMU等,在AURIX development studio下的lsl链接文件中定义了这几个区段。
在默认的lsl链接文件中使用LCF_DEFAULT_HOST选项将.data .bss .romdata等段链接至指定的位置中。
但是在实际的使用中由于所需的变量的可能大小过大,无法存储在默认的存储空间中,可以将该变量链接至其他存储空间。
二、链接设置
以下方法适用于Tasking 和 Aurix Development Studio。
1、第一种方法:使用attribute属性
使用__attribute__(( section( ".bss.bss_cpu0")))属性在定义变量的时候将变量定义至指定的位置
uint8_t __attribute__(( section( ".bss.bss_cpu0"))) ucHeap[configTOTAL_HEAP_SIZE];
".bss.bss_cpu0"是在lsl文件中定义好的段(此处注意要完全按照lsl文件中的定义)
2、第二种方法:使用#pragma属性
使用#pragma section属性可以将一段定义都定义至指定的位置
#pragma section farbss "bss_cpu0"
uint8_t ucHeap[configTOTAL_HEAP_SIZE];
#pragma section farbss restore
该方法
以#pragma section farbss "bss_cpu0"开始,"bss_cpu0"是在lsl文件中定义好的段
以#pragma section farbss restore结束,
在这两个宏之间的.bss定义都将链接至"bss_cpu0"中
3、第三种方法:使用预定义属性
使用编译器预定的属性
如果要定义数据,使用BEGIN_DATA_SECTION和END_DATA_SECTION即可
BEGIN_DATA_SECTION(lmubss)
uint8 ucHeap[256 * 1024];
END_DATA_SECTION
lmubss是在lsl链接文件中定义的段
tips:更多关于编译链接的问题可以查阅 Tasking编译器手册:Tasking编译器用户手册-嵌入式文档类资源-CSDN下载