본문 바로가기
임베디드 개발/TMS320F2838x (C28x)

DSP ] EALLOW / EDIS / DINT / EINT/ ERTM / DRTM / ESTOP0

by eteo 2022. 11. 17.

MMR(Memory Mapped Register : Address를 부여받은 레지스터) 영역은 일반적으로 Protect가 걸려있다.

 

해당 protected 영역에 접근하려면 이 보호막을 제거했다가 다시 걸어줘야 하는데 그 때 쓰이는 명령어가 EALLOW와 EDIS 이다.

 

어셈블리 명령이기 때문에 원래는

 

asm("EALLOW");

asm("EDIS");

 

라고 써야하지만 어딘가 다음과 같이 인라인으로 정의되어 있기 때문에 그냥 EALLOW, EDIS 라고 쓰면 된다. 이외에 다른 인라인 어셈블리 명령어들도 있다.

 

#define EINT __asm(" clrc INTM")	// 전역 인터럽트 on
#define DINT __asm(" setc INTM") 	// 전역 인터럽트 off
#define ERTM __asm(" clrc DBGM")	// 리얼타임 디버깅 전역 인터럽트 on
#define DRTM __asm(" setc DBGM")	// 리얼타임 디버깅 전역 인터럽트 off
#define EALLOW __asm(" EALLOW")		// protected 영역 보호 해제
#define EDIS __asm(" EDIS")			// protected 영역 보호
#define ESTP0 __asm(" ESTOP0")		// 에뮬레이션 stop

 

ex.

DINT;
EALLOW;
SysCtrlRegs.HISPCP.bit.HSPCLK = 1;
EDIS;
EINT;
ERTM;