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;
'임베디드 개발 > TMS320F2838x (C28x)' 카테고리의 다른 글
CCS, Code Composer Studio ] 재사용 용이한 Portable Project 만들기 (device_support 와 driverlib 모두 사용) (2) | 2022.11.27 |
---|---|
TMS320F28388D ] SD카드 읽기/쓰기 (0) | 2022.11.24 |
CCS ] 코드 수행시간 계산하기 (1) | 2022.11.16 |
CCS ] C2000ware 다른 버전 선택하기 (0) | 2022.10.19 |
CCS ] Cannot determine URI for [project-name]/[file-path]/[file-name] 오류 해결하기 (0) | 2022.09.29 |