F28335第五篇——EALLOW和EDIS

在DSP中,为了防止重要寄存器被误写入,设置EALLOW保护。EALLOW 和 EDIS 配套使用,分表表示写入申请(Edit allow)和禁止写入(Edit disable)。举例:

   EALLOW;	// This is needed to write to EALLOW protected registers
   PieVectTable.WAKEINT = &wakeint_isr;
   EDIS;   // This is needed to disable write to EALLOW protected registers

这是将中断服务程序地址写入到中断向量表中。由于中断向量表受到了保护,所以,在写入之前需要进行写入申请,写完之后要禁止写入,保护寄存器。
EALLOW保护主要是针对DSP存储空间外设帧(Peripheral Frame)而言的。关于外设帧的更多信息,可以参考博客(F28335第四篇——存储器及CMD文件)。外设帧又简称PF。在DSP中,外设帧总共分成四个区域,为PF0-PF3。其中,PF1-PF3中所有寄存器都受到EALLOW保护,而在PF0中有些寄存器是不受EALLOW保护的。换言之,所有不受保护的寄存器都在PF0中,他们分别为:

  • ADC寄存器
  • XINTF寄存器(存疑。。。)
  • 计时器0/1/2
  • PIE寄存器

附上TI官方说明:
F28335第五篇——EALLOW和EDIS_第1张图片
F28335第五篇——EALLOW和EDIS_第2张图片

更新

由于上文中引用的TI官方文档比较老旧,所以有些数据并不相同,下面给出最新的官方文档中的说明。
不受保护的寄存器只有三个,如下:

  • ADC寄存器
  • 计时器0/1/2
  • PIE寄存器

F28335第五篇——EALLOW和EDIS_第3张图片

更新2

通过阅读官方文档,我发现之前的书本上的说法是错误的。PF1-PF3并非所有寄存器都受到EALLOW保护。总结所有不受保护的寄存器如下:

  • PF0
    • ADC寄存器
    • 计时器0/1/2
    • PIE寄存器
  • PF1
    • 部分eCAN寄存器
    • eCANB Mailbox RAM
    • eCAP 寄存器
    • GPIO Data 寄存器
  • PF2
    • SPI 寄存器
    • SCI 寄存器
    • ADC寄存器
    • 外部中断寄存器
    • I2C寄存器
  • PF3
    • McBSP寄存器

EALLOW保护就是禁止CPU对于DSP寄存器的写操作,如下表

EALLOW位 CPU写操作 CPU读操作 JTAG写操作 JTAG读操作
0 禁止 允许 允许 允许
1 允许 允许 允许 允许

使用保护的寄存器包括:

  • 器件仿真寄存器
  • Flash寄存器
  • CSM寄存器
  • PIE向量寄存器
  • DMA寄存器
  • 系统控制寄存器
  • GPIO控制寄存器(包括GPIO中断寄存器)
  • 部分eCAN寄存器
  • Xintf寄存器
  • ePWM寄存器
注意:

以上是参考TI官方文档TMS320x2833x, 2823x System Control and Interrupts Reference Guide(2010年3月)。但是,官方文档自身也有矛盾的地方。例如:XINTF寄存器,DMA寄存器等。下面附上所有文档内容,如有纰漏,敬请批评,谢谢!
F28335第五篇——EALLOW和EDIS_第4张图片

F28335第五篇——EALLOW和EDIS_第5张图片

F28335第五篇——EALLOW和EDIS_第6张图片

F28335第五篇——EALLOW和EDIS_第7张图片

F28335第五篇——EALLOW和EDIS_第8张图片

你可能感兴趣的:(#,F28335)