반응형
Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- nvarguscamerasrc
- lineedit
- l4t
- ssd 포맷
- camera
- mkfs.ext4
- RDEPENDS
- cpu frequency
- 티스토리챌린지
- bitbake
- server error
- LAYERS
- /dev/kmsg
- vpiimage
- gcc7
- libargus api
- bash
- boot process
- gstsample
- orin nx
- yocto
- libargus
- 봉화 숲속캠핑장
- nvidia
- linux
- Jetson
- udpsink
- meta-tegra
- vpi
Archives
- Today
- Total
DREAMER
[PIC16F18855] Broken Breakpoints 본문
728x90
반응형
IDE에서 Breakpoint를 설정하다보면 Broken Breakpoints로 불가하다고 뜨는 경우가 있다.
Breakpoints는 크게 hardware breakpoints와 software breakpoints로 나뉜다.
IDE 상에서는 동일하게 보일 수 있지만, 내부 동작에는 차이가 있다. 간단하게 알아보면,
[Hardware Breakpoints]
Hardware breakpoints는 프로그램을 중단하는데에 여러 방법이 있다. breakpoints 갯수는 MCU의 하드웨어에 따라 다르다.
MPLAB X IDE는 hardware breakpoints가 디폴트이다.
[Software Breakpoints]
software breakpoints는 Hardware Breakpoints보다 더 많은 곳에서 사용이 가능하지만, 프로그램 메모리 이벤트 중단에만 사용 가능하다. MPLAB IDE에서 사용하려면 Enable로 설정을 해야 하는데, MPLAB REAL ICE와 MPLAB ICD 3 디버거로만 가능하다고 한다. 그래서 현재로서는 테스트 불가하다.
[Hardware vs. Software Breakpoints]
Feature | Hardware Breakpoints | Software Breakpoints |
breakpoints 갯수 | MCU의 하드웨어 특성에 따라 제한 | 제한없음 |
Breakpoints 저장 위치 | Internal debug 레지스터 | Flash Program Memory |
Breakpoints 적용 | Program Memory / Data Memory | Program Memory only |
Breakpoints 설정 시간 | 최소시간 | Flash Memory 와 page size에 프로그램하는 시간 (oscillator speed에 의해 달라짐) |
Breakpoints skidding | 대부분의 장치 | 없음 |
내구성에 영향 | 없음 | 있음 (장치 내구성에 영향을 미치므로, software breakpoints 방식이 사용된 장치는 생산 부품으로 사용하지 않는 게 좋음) |
[Broken Breakpoints] - MPLAB hardware breakpoints
- 컴파일러는 함수 호출과 해당 함수의 첫 번째 실행 명령을 프로그램 메모리의 동일한 주소에 할당한다. 그러므로 함수 호출/선언의 breakpoints는 대부분 깨진다. 다음 방법으로 해결할 수 있다.
- breakpoints를 실행 가능한 행으로 이동시킨다.
- 프로그램 메모리에 줄 바꿈 점을 직접 추가한다.
- NOP()을 추가한다.
- 컴파일러가 코드 사이즈를 줄이기 위해 주변 장치 및 레지스터와 직접적으로 연관이 있지 않은 코드 line에는 breakpoints를 설정하지 못하도록 했을 수도 있다. 컴파일러 코드 최적화 옵션을 변경하여 해결할수 있다.
- Oprimization 옵션을 0으로 설정한다.
- 프로젝트를 닫거나 이동하여서 발생할 수 있으므로, 프로젝트를 열 때 clean & build하여 해결할 수 있다.
- Clean & Build
728x90
반응형
'프로그래밍 > MCU' 카테고리의 다른 글
[PIC16F18885] Build Environment Setup (0) | 2023.04.12 |
---|
Comments