打印

CpuTimer0和寄存器地址是怎么关联的

[复制链接]
1302|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
zhangmangui| | 2016-8-11 22:13 | 只看该作者
对于汇编器,它会自动创建.text, .bss和.data三个段。我们可以使用#pragma CODE_SECTION和#pragma DATA_SECTION来创建更多的段。

  默认情况下,各个段所分配的存储空间配置如下(可根据需要进行更改):

  最后,以一个ADC寄存器对应的内存地址分配的例子,来看看完成的cmd文件是如何完成的(事实上所有寄存器的内存地址分配在TI的外设和头文件包中已经帮我们做好了,这里是个演示)。

  首先,在使用寄存器(或者自定义的变量)的头文件或者源程序里,为寄存器(或者自定义的变量)指定一个自定义的段:

  #ifdef __cplusplus

  #pragma DATA_SECTION("AdcRegsFile")

  #else

  #pragma DATA_SECTION(AdcRegs,"AdcRegsFile");

  #endif

  volatile struct ADC_REGS AdcRegs; //使得结构体被分配在指定的段中

  然后,在cmd文件中,在SECTIONS下把AdcRegsFile这个段分配到ADC这块内存区域中,并在MEMORY中定义ADC这块内存区域的起始位置和长度。

  MEMORY

  {

  PAGE 0: /* Program Memory */

  /* 省略不相关内容的显示 */

  PAGE 1: /* Data Memory */

  /* 省略不相关内容的显示 */

  ADC : origin = 0x007100, length = 0x000020 /* ADC registers */

  /* 省略不相关内容的显示 */

  }

  SECTIONS

  {

  /* 省略不相关内容的显示 */

  AdcRegsFile : > ADC, PAGE = 1

  /* 省略不相关内容的显示 */

  }

  以上是一个自定义段并制定内存区域的完整例子。如果不需要这样的自定义,则可以不去管它,使用现有的,比如某个例子中可以使用的cmd文件就可以了。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
lwj10086 + 2 很给力!
板凳
airwill| | 2016-8-12 08:21 | 只看该作者
源文件:
#pragma DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");
volatile struct CPUTIMER_REGS CpuTimer0Regs;

cmd:
SECTIONS
{
   ...
   CpuTimer0RegsFile : > CPU_TIMER0,  PAGE = 1  
   ...
}

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
lwj10086 + 2 赞一个!
地板
lwj10086|  楼主 | 2016-8-12 09:05 | 只看该作者
airwill 发表于 2016-8-12 08:21
源文件:
#pragma DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");
volatile struct CPUTIMER_REGS CpuTi ...

谢谢

使用特权

评论回复
5
lwj10086|  楼主 | 2016-8-12 09:05 | 只看该作者
zhangmangui 发表于 2016-8-11 22:13
对于汇编器,它会自动创建.text, .bss和.data三个段。我们可以使用#pragma CODE_SECTION和#pragma DATA_SEC ...

谢谢

使用特权

评论回复
6
tomyoct| | 2016-8-12 22:31 | 只看该作者
对于使用者来说,可以不用管是如何实现的,学会应用就好了。

使用特权

评论回复
7
shenmu2012| | 2016-8-13 17:21 | 只看该作者
这个就不太清楚了,没怎深入的研究的。

使用特权

评论回复
8
zhangmangui| | 2016-8-13 22:18 | 只看该作者
深入到寄存器级别  还是一种好习惯  绒里理解的更深

使用特权

评论回复
9
FCCdsp| | 2016-8-18 22:12 | 只看该作者
又学到了好多知识

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

21

帖子

1

粉丝