vLinkGen Memory Layout

Memory Layout按存储内容主要分为:

1、代码

2、运行在RAM中的代码

3、常量

4、初始化的全局变量

5、未初始化的全局变量

6、堆栈

Step1

对于链接文件最重要的是将分配的段(Section)分配到固定的位置(MemLayout).这些段可以打包成一个Group。

因此最重要的是段的定义,段的定义根据存储内容的不同分为:

1、代码段

2、常量段

3、堆栈段

4、初始化及未初始化的变量段

一、代码段又分为:

1、启动代码段

2、运行在RAM中的代码段

3、Option Byte

4、任务及中断代码

5、其他代码段

二、常量段分为:

1、中断向量表

2、Autosar OS的一些配置参数转化的常量

3、其他的常量

三、堆栈区

1、Task及中断都配置的有堆栈

2、OS中使用的堆栈

四、初始化及未初始化的变量

1、bss、data区

2、Autosar OS定义的一些全局变量

Step2

一、当相关Section定义完成后,要以组的形式对其进行约束

1、Code和Constant Section被指定在Const Group

2、相关Group可以控制被指定存在在哪个分配的Memeory Section中

3、对于需要拷贝在RAM中运行的部分可以通过相关Group来指定

 4、在Group中可以对相关Section(段)再组合为更大的Section Group。同时可以对相关Section Group的对齐方式及初始化方式进行设定

Step3

在链接文件中可以定义一些符号变量,这些符号变量可以在代码中使用,需要在头文件或者源文件中对相关符号变量进行声明.

如:定义一个段的起始及结束定义成相关符号变量,在代码中可以检测相关的符号变量,从而获得相应的地址信息。

在链接文件中定义Symbol这个Symbol其有相应的地址。可以在vLinkGen中定义相关的Symbol时既可以使用链接文件中定义的符号也可以使用绝对地址。如上_RESET使用的是符号,也可以在Value中填写绝对地址。

同时如果要在代码中使用相应的符号变量,需要在头文件或者源文件中对相应符号进行声明。

 

可以看到FunctionInRam_START_SEC的值和FunctionInRam$$Base的值是一致的。

Step4

变量段控制

1、初始化的变量

2、未初始化的变量

3、Task及ISR中分配的堆栈

Step5

这是最重要的一部分,它是对芯片存在结构的具体划分:

1、中断向量表

2、OPTION BYTE

3、代码区

4、堆栈区

上述代码区和堆栈区还可以再划分成小区域来存在不同功能的数据

堆栈区可能还要划分出一部分来存储在RAM中运行的程序

代码区中要划分出启动代码区及常规代码区

在堆栈区中最好开辟出来一部分启动代码使用到的堆栈区域。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值