paradoxfx

【原创】TI C2833x介绍---系统的初始化(13)

0
阅读(4329)

EALLOW和EDIS我们在前面用到的时候也曾经提到过,不过不是专门描述的所以不是很具体。这次有时间了专门把它们总结一下。EALLOW就是Emulation Allow的缩写,即仿真器存取允许;在使用EALLOW指令的情况下(令CPU状态寄存器ST1里面的EALLOW = 1),可以使用仿真器通过JTAG协议访问被保护的那些关键寄存器(被保护是为了防止意外或错误的写操作);EDIS是与EALLOW成对使用的,它自然就是Emulation Disable的缩写,即禁止仿真器对关键寄存器的操作。EALLO是CPU状态寄存器ST1的一个个位(bit6),EALLOW与EDIS这对组合又是C28x汇编指令集中的两条指令,EALLOW置位ST1寄存器的相应位,EDIS则清零ST1寄存器的相应位,在C语言编程中插入汇编指令的时候,可以用下面的语句:

asm(" EALLOW"); //CSMSCR register is EALLOW protected.

*CSMSCR = 0x8000;

asm("EDIS");

我们在看TI的头文件与外设库的时候,看到C程序中的EALLOW与EDIS都是直接使用的,例如:

EALLOW;

SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;

……

EDIS;

是因为已经在”DSP2833x_Device.h”头文件中预定义了:

#define EALLOW asm(" EALLOW")

#define EDIS asm(" EDIS")

被EALLOW访问保护的寄存器有以下几类:

  • Device Emulation
  • Flash
  • Code Security Module
  • PIE Vector Table
  • DMA (most registers)
  • eCANA/B (control registers only; mailbox RAM not protected)
  • ePWM1 - 6 (some registers)
  • GPIO (control registers only)
  • System Control

在配置EALLOW与不置位的情况下,存取上述几类被保护的寄存器的结果是:

EALLOW

CPU

CPU

JTAG

JTAG

0

忽略

允许

允许

允许

1

允许

允许

允许

允许

可以看出,在使用CCS通过JTAG调试的时候,在CCS里面通过watch window或者其它方式直接修改被保护的寄存器,是具有很高的权限的。

Baidu
map