共5条
1/1 1 跳转至页
谈谈R8C/M16C的内存(section)分配 [转]
我们知道,编译器在编译程序的时候,会将程序按照一定的方式来预处理,编译,链接和重定位。
R8C/M16C使用的是nc30系列编译器,这个编译器被集成到HEW里。当我们使用HEW来调试时R8C/M16C芯片时,会调用NC30来编译,链接等工作,最后生成一些可执行文件,包括仿真文件.x30和可执行的二进制文件.mot。
下面讲的是NC30的内存分配,也就是我们在程序里经常看到的section关键字。
当我们新建一个R8C的汇编工程后,可以在sect30.inc看到整个代码的内存分配。
NC30的内存分配如下:
SBDATA SBDATA区
near RAM 低地址RAM区
far RAM 高地址RAM区
near ROM 低地址ROM区
far ROM 高地址ROM区
stack 栈
heap 堆
Initial data of "data" section 初始化了的数据区
switch table section 跳转表
code 代码区
variable vector section 可变的向量区
fixed vector section 固定的向量区
我们分别讲讲他们的含义。
SBDATA
这个区域从内部RAM的起始地址开始,一般用来存放经常使用的数据,比如volatile变量等,这样可以提高程序执行速度。
使用#pragma SBDATA指令,告诉编译器将变量重定位到SBDATA区域。比如:
#pragma SBDATA cc
int cc;
near RAM
低地址RAM区。利用关键字_near或者__near可以将变量申明到此区域,比如:
int _near cc;
Stack
栈
Heap
堆
near ROM
低地址ROM区,存放常量
far RAM
高地址RAM区,一般用来扩展外部RAM
far ROM
高地址ROM区,存放常量等
Initial data of 'data' section
初始化数据段,位于ROM,里面都是初始化好了的数据
switch table section
跳转表
code
代码区,存放二进制可执行代码
variable vector section
可变的向量区,存放中断向量
fixed vector section
固定的向量区,存放系统异常向量,例如复位,断点等
提示:
在HEW的build--toolchain里面,可以选择一些编译或链接参数等。
关键词: 谈谈 内存 section 分配
共5条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
我要赚赏金
