2013-10-24 2 views
0

부트 로더 코드와 앱 코드가있는 이전 프로젝트를 유지 관리하고 있습니다. 그들은 잘 작동했지만 앱 코드에 몇 가지 기능을 추가하면 (if 문이 거의 없음), 필자는 부트 로더 코드가 어떻게 든 장치에 덮어 쓰여지고 있음을 알게되었습니다. pickit 프로그래머를 사용하여로드하면 앱 코드가 독립적으로 잘 작동합니다.앱 코드에서 if 문을 추가하여 부트 로더가 손상됨 * HELP !! *

실제로 16 진수 파일을 체크 아웃하여 메모리 위치의 변경 사항을 확인했습니다. hex_diff.png 첨부를 참조하십시오.

[W/O 경우 문] : 020000040000FA : 060000007CEF7DF0120010 : 060008009DEF51F0120013 : 060018009DEF51F0120003 : 010FFF00AB46

[W/IF 문] : 020000040000FA : 0600000039EF7EF0120052 : 06000800E7EF51F01200C9 : 06001800E7EF51F01200B9 : 010FFF00AB46

다른 차이점 가운데, 그림 abo에서이 메모리 범위의 영역 ve는 앱 코드에 if 문을 몇 개 추가해도 전혀 변경되지 않아야합니다. OXFFFF가이

[질문] 나는이 디버깅에 대해 이동하는 방법을 잘 모르겠습니다 보호 = CODEPAGE의 NAME = 부트 로더 START = 0x0으로의 끝 : 내 링커 파일에서 나는 명확하게 영역을 부트 스트랩 코드를 가지고 있다고 정의 발행물. 누군가이 문제가 발생 했습니까? 그렇지 않다면 몇 가지 리드가 있습니까?

미리 도움을 주셔서 감사합니다.

[편집] MPLABX의 v1.85 컴파일러 C18의 v3.44 MPLink의 v4.45 마이크로 컨트롤러 : PIC18F46J50

+0

프로그래밍 환경, 관련된 언어 및/또는 아키텍처, '부트 로더'및 '마이크로 칩'이외의 다른 정보를 공유 할 수 있습니까? – Pedantic

+0

MPLABX v1.85 컴파일러 C18 v3.44 MPLink v4.45 마이크로 컨트롤러 : PIC18F46J50 – user2917406

+0

@ 페데 넌트 확실한 것! – user2917406

답변

0
당신은 당신이 동일한 컴파일러 버전을 사용하는 오래된 프로젝트이기 때문에 경우에 확인 할 수 있습니다

이전과 완전히 동일한 최적화 수준

다른 버전간에 컴파일러의 동작이 약간 변경된 것을 확인했습니다. 또한 최적화 수준이 변경되면 휘발성 문구가 누락 된 경우 코드의 동작에 특히 영향을 줄 수 있습니다.