关于EALLOW之类的汇编宏定义

今天,在编写TMS320F28035程序的时候,添加了某个配置功能,但必须要Rude Retry才能运行,否则无法采用Realtime Mode来运行程序。
后来,恢复到上一个运行正常的版本后,一点点加入之前添加的内容,终于发现了问题。原来是配置寄存器的时候调用了DRTM,但是配置完后没有使能ERTM。在配置寄存器之后,补上了一个ERTM就解决了问题。一时的疏忽大意,导致查找了将近半个小时的错误。

总结一下TI在TMS320F28xx标准库里定义的一些汇编语言:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 全局中断使能
#define  EINT   asm(" clrc INTM")
 
// 全局中断禁止
#define  DINT   asm(" setc INTM")
 
// Enable RealTime Mode, 使能实时模式
#define  ERTM   asm(" clrc DBGM")
 
// Disable RealTime Mode, 禁止实时模式
#define  DRTM   asm(" setc DBGM")
 
// E Allow, 解除保护,使能特殊寄存器的修改
#define  EALLOW asm(" EALLOW")
 
// E Disable,恢复保护,禁止特殊寄存器的修改
#define  EDIS   asm(" EDIS")
 
// Emulator Stop,停止仿真,程序在此处会停住
// 类似端点的的功能
#define  ESTOP0 asm(" ESTOP0")

当DRTM后,处理器是不能进入实时模式的,除非勾选了Rude Retry。

关于DSP — 算是开始吧

写过51的程序,写过PIC,最近专注于TI的处理器方面。

51是基础,这点毋庸置疑,只要有人指引,入门可以很快很快很快,嵌入式开发的思想里面全都有。

现在做TMS320F2812和TMS320F28035,原先还可以算是DSP,但是由于偏重控制方面,现在已经归属在MCU范畴里了。

2812:

2812很经典,但是毕竟也老了,就像2407一样,从今年的芯片价格暴涨开始,是时候该被后浪拍在沙滩上了。新生代的处理器一个是向强大的处理能力上发展,一个是向更低的成本方向发展,因此28035应运而生。

28035:

新生代的低成本处理器向小型化,低功耗,供电简单,内置晶振的方向发展,28035完全满足这些要求,并且以CLA为卖点,带来了额外的并行浮点处理核心*。今后的主攻方向就是它了。

*这里的浮点是伪浮点,通过转成定点精度来计算,再转换为浮点数。

DSP:Digital Signal Processors,数字信号处理器

MCU:Micro Control Unit,微控制核心

CLA:Control Law Accelerator,控制率加速器