FAQ

[CCS + JTAG] F28x MCU의 브레이크포인트 활용

싱크웍스 2026.04.09 16:06:14 조회수 117


[내부 RAM 영역은 무한정 브레이크 포인트 설정 가능]

초기 개발단계에서 보통 F28X MCU의 내부 RAM 영역에 코드를 넣고 실행하면서 실시간으로 디버깅을 진행하곤 합니다. MCU의 내부 RAM 영역은 JTAG 에뮬레이터와 같은 하드웨어 디버거가 직접 접근할 수 있는 영역에 해당됩니다.


따라서, 디버깅을 위해 설정하는 브레이크포인트는 "소프트웨어 브레이크 포인트"로 처리되며, 이를 좀 더 자세히 보면, 사용자가 브레이크 포인트를 설정한 코드의 앞쪽에 F28X CPU의 임베디드 브레이크 포인트 명령어인 "ESTOP0"를 JTAG 에뮬레이터가 직접 삽입하는 방식으로 처리됩니다.


내부 RAM 영역에서 코드를 실행하면서 디버깅 중이라면 JTAG 에뮬레이터가 직접 접근 가능한 영역이므로, 브레이크 포인트를 갯수의 제한없이 자유롭게 활용할 수 있습니다.



[내부 FLASH 영역은, 총 2개의 브레이크 포인트 설정 가능]

하지만, 내부 FLASH 영역에 코드를 저장하고 FLASH 영역에서 코드를 실행하고 있다면, 문제가 발생됩니다.


내부 FLASH 메모리 영역은 메모리 분류 상 ROM 영역으로 볼 수 있습니다. 필드에서 특별한 절차(방법)을 이용해서 내용을 삭제하고 다시 프로그래밍 할 수 있다 뿐이지 대분류 상으로 보면 ROM 영역 입니다. 그리고, 내부 FLASH 메모리 영역에 접근할 수 있는 주체는 F28X CPU 뿐 입니다. JTAG 에뮬레이터가 직접 접근할 수 없습니다. 설사 직접 접근이 가능하다 하더라도 FLASH 영역은 쉽게 내용을 삭제하거나 기록된 내용을 새로운 내용으로 값을 변경할 수 있는 영역이 아닙니다.


그래서, 사용자의 프로그램이 내부 FLASH 메모리 영역에서 실행 중이라면, 코드에 설정하는 브레이크 포인트는 소프트웨어 브레이크 포인트가 아닌 "하드웨어 브레이크 포인트"로 분류되며 칩의 하드웨어 자원을 브레이크 포인트 용으로 활용해서 해당 동작을 지원하게 됩니다. 이 때 사용되는 하드웨어 자원이 Analysis Unit이며 F28X CPU는 총 2개의 AU를 가지고 있습니다. 즉, 내부 FLASH 영역에서 코드를 실행하고 있어서 하드웨어 브레이크 포인트를 활용해야 한다면 전체 코드에서 설정 가능한 브레이크 포인트의 갯수는 총 2개로 제한됩니다.


특정 코드 줄에 하나를 설정하고 다른 코드 줄에 또 하나를 더 설정 가능합니다. 여기에 추가로 브레이크 포인트를 설정하고자 한다면, 앞서 설정한 것들 중 1개를 지워야 합니다.



[총 2개의 브레이크 포인트 조차 사용 못하는 경우가 있습니다.]

내부 FLASH 영역에서 코드를 실행하는 조건에서도 이론적으로 총 2개의 하드웨어 브레이크 포인트를 설정하고 코드를 디버깅 할 수 있습니다. 그런데, 이 2개밖에 안되는 브레이크 포인트 최대 갯수를 디버거가 조용히 줄이고 있는 경우가 있습니다.


Code Composer Studio(CCS)의 디버거 옵션 설정(Debugger Properties) 중 "Program / Memory Load Options" 카테고리를 보면 "Halt at program exit for TI compiler" 라는 옵션과 "Enable CIO function use" 라는 옵션을 볼 수 있습니다. 이 옵션이 설정되어 있다면 가용 가능한 브레이크 포인트가 추가로 제한될 수 있습니다. 옵션 설정에 따라 총 2개가 아니라 1개 혹은 1개도 설정할 수 없게 될 수도 있습니다. 




추가로 "Debugger Options" 카테고리(이전 CCS 버전의 경우, "Auto Run and Launch Options")에도 브레이크 포인트 갯수 점유와 관련된 옵션이 있습니다. Auto Run Options 이 해당 옵션 항목이며, CPU Reset 이나 프로그램 Load, Restart 명령을 CCS에서 실행했을 때 사용자 프로그램의 지정된 심볼(기본값 : main 함수 시작위치)까지 자동으로 실행되게끔 할 수 있습니다. 다만, 이 옵션의 경우는 CPU Reset 이나 프로그램 Load, Restart 동작 전 브레이크 포인트 설정 후, 해당 심볼까지 자동 실행을 마치고 나면 앞서 설정된 브레이크 포인트는 자동으로 제거됩니다.





총 댓글 0
로그인을 하셔야 댓글을 등록하실 수 있습니다.
번호 제목 작성자 날짜
번호 제목 날짜 작성자 조회
20 [CCS + JTAG] F28x MCU의 브레이크포인트 활용 이미지첨부 있음 인기글 2026.04.09 싱크웍스 117
19 [안내] F2838x MCU 모듈, 트레이닝 키트에서 TI 예제 실행하기 이미지첨부 있음 인기글 2024.03.11 싱크웍스 1018
18 [안내] F28X 칩에 내장된 주변회로 종류와 회로 버전을 확인하는 방법 이미지첨부 있음 인기글 2023.01.16 싱크웍스 391
17 [홈페이지] 크롬 브라우저에서 기술자료 다운로드 링크 무응답 현상 이미지첨부 있음 인기글 2021.01.20 싱크웍스 622
16 [에뮬레이터] SDS200i (XDS200-ISO) JTAG 에뮬레이터 펌웨어 업데이트 (v1.0.0.9) 인기글 2020.01.03 싱크웍스 2170
15 [CCS] Code Composer Studio v4, v5, v6 정식버전으로 업데이트 하는 방법 파일첨부 있음 이미지첨부 있음 인기글 2018.11.19 싱크웍스 5010
14 [에뮬레이터] XDS200 에뮬레이터 업데이트 (1) 파일첨부 있음 이미지첨부 있음 인기글 2016.01.11 싱크웍스 1180
13 [개발환경] TDS510USB-C2K USB 드라이버 설치 방법 (Windows 8/8.1 이상) 이미지첨부 있음 인기글 2015.03.19 싱크웍스 2475
12 [개발환경] CCS V5.5에서 플래시 프로그래밍 준비 (TMS320F28377D) 인기글 2014.04.30 싱크웍스 703
11 [개발환경] CCS 설치 후 'Failed to create the Java Virtual Machine' 에러 시 이미지첨부 있음 인기글 2014.03.06 싱크웍스 231
10 [개발환경] CCS V5에서 플래시 라이팅하기 인기글 2012.01.27 싱크웍스 846
9 [에뮬레이터] CCS버전에 따른 TDS560USB-PLUS 드라이버 설치 안내 인기글 2011.09.30 싱크웍스 492
8 [인터럽트] Illegal_ISR로 빠지게 되는 이유는 어떤 것이 있는가요? 인기글 2011.07.04 싱크웍스 471
7 [메모리] 내부 FLASH 메모리에 Lock이 걸리면 어떻게 해야 하나요? 인기글 2011.06.24 싱크웍스 510
6 [개발환경] CCS와 지원되는 운영체제(O/S) - CCSv3.3 (32-bit O/S), CCSv4.2 (32/64-bit O/S) 인기글 2011.06.17 싱크웍스 519
5 [ADC] ADC 회로 외부(External) 참조 전압 사용 방법 (F28335) 이미지첨부 있음 인기글 2011.06.17 싱크웍스 617
4 [개발환경] Initialized RAM warning 경고 해결방법 (CCSv3.3) 이미지첨부 있음 인기글 2011.06.10 싱크웍스 263
3 [메모리] CMD 파일에서 할당한 메모리 영역이 부족할 경우, 대처법 인기글 2011.06.10 싱크웍스 564
2 [개발환경] CodeSense(코드자동완성기능)가 동작하지 않을 경우, 해결방법 이미지첨부 있음 인기글 2011.06.10 싱크웍스 361
1 [개발환경] Target Halted During Flash Operation 경고 해결방법 인기글 2011.06.10 싱크웍스 218

비밀번호 인증

비밀번호를 입력해 주세요.

닫기
 


 

비밀번호 인증

글 작성시 설정한 비밀번호를 입력해 주세요.

닫기