라이센스 문제로 인해 Kiel IDE에서 이식하기 위해 GNU 도구 체인을 사용하여 포팅 할 응용 프로그램이 있습니다. 성공적으로 설치, 빌드, 플래시 및 장치에서 응용 프로그램을 실행할 수있게되었습니다.STM32 구성되지 않은 경우 WWDG 인터럽트 실행
GNU 쪽의 응용 프로그램은 무한 루프 인 WWDG의 약한 연결된 IRQ 처리기에 갇혀있는 중입니다. 응용 프로그램은 WWDG를 활성화하지 않고 기본적으로 재설정 할 때 비활성화됩니다. 또한 구성 레지스터가 기본 시작 값에 있는지 확인했습니다.
컴파일러 이외의 유일한 차이점은 링커 및 시작 파일입니다. 그러나 두 도구 체인에서 사용되는 시작 파일과 링커 파일은 모두 STM에 의해 생성되는 기본값입니다.
어떤 원인 일 수 있습니까? 나는 여기서 끝내고있다.
stm32f103XX를 사용하면 다른 정보가 도움이되는지 알려 주시기 바랍니다.
EDIT : 아래의 설명을 사용하여 실제로 발생되는 HardFault_Handler라는 사실을 주장 할 수있었습니다. 는 I는 그
GDB BT 도움이 될 수있다 아래 경우 역 추적 출력 포함 가지고있는
0 HardFault_Handler()
1 (신호 처리기 불림)
2 0x720a3de을 ??()에 foo
3 0x80005534()
역 추적 중지 :이 프레임과 동일 이전 프레임
2 가지 임하지만 더 GDB 전문가, 나에게 눈에 띄는 없습니다 (손상된 스택?). 1) foo는 함수가 아닙니다. char의 const 배열입니다. 2) 0x0720a3de는 유효한 메모리 주소가 아닙니다. 플래시 주소 범위는 0x08000000부터 시작합니다.
정말 WWDG입니까? 또 다른'while (1);'은 최적화로 인해 코드를 공유하고있을 수 있습니다. 지도 파일에 해당 주소의 WWDG 만 표시됩니까? –
뭔가가있을 수 있습니다. .elf 파일에서 모든 기본 irq 기호가 동일한 주소를 가리키는 것으로 보입니다. 이는 WWDG_IRQ 이름이 디버거의 ues라는 것을 의미합니다. 나는 irq에 stong link 함수를 추가 할 것이고 그래서 어느 것이 정확히 범인인지 알아낼 수 있습니다. – gettingSmarter