CCS 디버깅의 가장 기본적인 과정은, 코드 한땀 한땀씩 수행해 보면서 변경되는 점을 확인하는 것과,
해당되는 조건에 걸렸을 때(주로 해당 코드 위치에 도달했을 때) 멈추도록 하는 수행(이하 Break point)을 행함으로써 이루어집니다.
먼저 간단한 예제 코드에서 레지스터와 데이터 값이 변경되는 것을 확인해 보도록 하겠습니다.
코드는 MSP430Ware 내에 있는 MSP430G2xx의 Port 인터럽트 관련인 msp430g2xx3_P1_02.c 파일에서 간단한 코드를 추가해서 수행했습니다.
먼저 코드를 보시겠습니다.
이 코드는 main() 함수와 Port_1() 인터럽트 서비스 루틴으로 이루어져 있습니다.
스위치 버튼 입력이 들어오면, MCU가 깨어나서 0~100까지 sum을 구하는 간단한 동작의 코드입니다.
초기화 수행에서 P1.3 스위치 버튼을 누르면 Port_1() ISR이 수행되도록 되도록 하였으며, 초기화 수행 이후 __bis_SR_register(LPM4_bits + GIE) 라는 함수(정확히는 bis 라는 어셈블리 명령어에 매칭되는 매크로라고 볼 수 있을 것입니다.)를 수행해서 글로벌 인터럽트를 인에이블 시킨 다음, LPM4라고 불리는 Sleep 에 진입합니다.
이후 인터럽트가 수행되면, P1.0에 붙어 있는 LED를 토글 시키고 main의 while() 문에서 처리해야 할 일이 있기 때문에 인터럽트 구문만 처리하고 sleep에 다시 진입하지 않도록 __bic_SR_register_on_exit(LPM4_bits)를 수행합니다. 이 함수를 수행하면 __bis_SR_register(LPM4_bits + GIE)를 만나기 전까지 main() 문에서 일을 처리해 줍니다.
이 코드를 직접 수행해서 Step into 또는 Step over 를 수행했을 때 동작을 통해 직접 디버깅을 어떻게 하는지 보여주는 예제로 작성되었습니다.
먼저 CCS의 디버깅 아이콘을 눌러서 컴파일 - 타겟 보드에 다운로드 - 디버깅까지의 동작을 GIF 파일로 보시겠습니다.
여기에서는 LaunchPad에서 MSP430 디버깅, 즉 Step into와 Step over, Run, Break point 잡는 법, Expression 확인하는 법 등을 알아 보았습니다.
<끝>
'[study]컴파일러툴.. > CCS' 카테고리의 다른 글
[CCS 디버깅] CCS에서 코드 수행 시간 계산 (0) | 2019.03.21 |
---|---|
CCSv6 이전 버전 사용 시 라이센스 관련 적용방법 (0) | 2019.03.17 |
MCU 컴파일과 디버깅, GUI의 신개념.. dev.ti.com.. 두번째.. (0) | 2018.08.30 |
MCU 컴파일과 디버깅, GUI의 신개념.. dev.ti.com.. (0) | 2018.08.30 |
CCS 프로젝트의 파일 구성.. (0) | 2017.12.15 |