2010-12-09 1 views
2

이 질문에 가장 좋은 장소는 아닐지 모르지만 마이크로 칩 포럼을 시도했지만 아직 응답을받지 못했습니다. 나는 HID 부트 로더 프로젝트를 PIC24FJ64GB002를 사용하여 제작 한 프로토 타입 보드에서 작업하도록 노력하고 있습니다. 내 보드에서 작동하도록 예제 HID Bootloader 프로젝트를 수정하고 예제 HID Mouse 프로젝트를 수정하여 보드에서도 작동합니다. 내 장치를 부트 로더 코드로 프로그래밍하면 마이크로 칩 부트 로더 Windows 프로그램이 장치를 찾아 "장치가 연결되었습니다."라고 표시합니다. 그러나 내 장치에 마우스 프로그램의 16 진수 파일을로드하려고하면 성공적으로 완료되지만 마우스 프로그램이 실행되지 않는다고 말합니다. 올바른 링커 스크립트를 사용하고 있는지 확실하지 않습니다. 누구든지이 작업을 수행하고 부트 로더 프로젝트와로드 가능한 프로젝트에 어떤 링커 스크립트를 사용해야하는지 알고 있습니까?PIC24 펌웨어 부트 로더가로드 된 프로그램을 시작하지 않음

+0

이것은 올바른 링커 스크립트를 사용했다는 우려를 해소하기 위해 pic 시뮬레이터에서 실행할 수 있습니까? –

답변

2

마이크로 칩 HID 부트 로더와 마이크로 칩 HID 마우스 앱을 사용하여 브레드 보드 된 PIC24FJ64GB002를 얻을 수있었습니다.

할 일은 부트 로더와 응용 프로그램에 올바른 링커 스크립트를 사용하는 것입니다.

부트 로더 링커의 변경 :
MEMORY
{
...
program (xr) : ORIGIN = 0x400, LENGTH = 0x1000
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
...
}
__CODE_BASE = 0x400;

앱 링커의 변경 :
MEMORY
{
...
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
program (xr) : ORIGIN = 0x14C0, LENGTH = 0x96E8
...
}
__CODE_BASE = 0x200;

는 부트 로더를 통해 응용 프로그램을로드 한 후, 당신은 장치를 다시 설정해야합니다. 부트 로더의 main() 시작 부분에있는 다음 코드는 부트 로더가 응용 프로그램으로 점프하게하는 원인입니다.

mInitSwitch2(); 
if((sw2==1) && ((RCON & 0x83) != 0)) 
{ 
    __asm__("goto 0x1400"); 
} 
+0

응용 프로그램 링커 파일의'__CODE_BASE'에 대한 의견을 말씀해 주시겠습니까? – abhiarora