부트 로더 (RTX가없는), RTX가있는 응용 프로그램 이미지의 두 부분으로 소프트웨어를 분할했습니다. 그러나 부트 로더가 RTX로 응용 프로그램 이미지를로드하지 못했습니다. 플래시 설정은 다음과 같습니다IAP 부트 로더가 RTX 응용 프로그램 이미지를로드하지 못했습니다.
-------------------------------------------------------------------- start address size IROM 1: 0x08000000 0x2800 - Bootloader (without RTX) IROM 2: 0x08002800 0xD000 - Application Image (with RTX)
내가 시험 3 가지 방법이 있습니다 (1) RTX하지 않고 다른 응용 프로그램을 사용합니다. 부트 로더가 앱을 성공적으로로드 할 수 있습니다.
(2) RTX 프로젝트 IROM 설정으로 응용 프로그램을 변경하십시오. 응용 프로그램 프로젝트 IROM 시작 주소를 0x08002800에서 0x08000000으로 변경합니다. 그리고 주소 0x08000000에서 플래시로 응용 프로그램 이미지를 다운로드합니다. 이미지가 0x08000000에서 성공적으로 실행될 수 있습니다.
(3) 응용 프로그램 이미지 IROM 시작 주소 설정은 0x08002800입니다. 플래시에 부트 로더와 앱 이미지를 다운로드 한 후 Keil의 앱 프로젝트를 단계별로 디버깅합니다. "osTimerthread stack overflow"오류가 있음을 발견했습니다. 그런 다음 주 스레드 스택도 오버플로됩니다. 스택 크기를 늘리려고했지만 작동하지 않습니다. RTX 커널 전환에서 앱이 멈추는 것을 발견했습니다. 모든 스레드는 대기 중 상태이며 실행되지 않습니다.
Ps, Keil에서 디버깅 할 때 테스트 항목 (2)에도 커널 초기화 중에 스택 오버플로 오류가 있습니다. 아이템 (2)은 지금까지 잘 작동합니다. 그래서 나는 여기서 필요한 모든 정보를 넣었습니다.
감사합니다. ** (1) ** 부트 로더가 시스템 클럭을 구성했습니다. 그것은 startup.s에서 할 첫 번째 일이기 때문에. 그리고 응용 프로그램의 startup.s도 그것을 다시 초기화합니다. ** (2) ** 그리고 내 게시물에서 RTX OS 커널이 실행 중이지만 무한 루프 전환 작업에 있습니다. 모든 작업은 "READY"상태 였지만 OS 커널은 그 중 하나를 "RUNNING"상태로 만들 수 없습니다. 따라서 주 스레드와 사용자 스레드를 호출 할 기회가 없었습니다. –