임베디드 개발/TMS320F2838x (C28x)
DSP ] EALLOW / EDIS / DINT / EINT/ ERTM / DRTM / ESTOP0
eteo
2022. 11. 17. 21:16
반응형
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;
반응형