2016-11-20 16 views
-1

필자는 phyCORE-MPC5200- 소형 보드에 MPC5200 v2.2, Core v1.4를 가지고 있습니다. DRAM 64MB, 플래시 16MB. RTOS VxWorks 6.9.왜 U-Boot (DENX)가 부팅 루프에 있고 "프로그램 검사 예외"가 발생합니까?

임베디드 시스템을 부팅 할 때 문제가 발생하며 U-Boot/uboot (DENX)가 "Program Check Exception"이라는 이미지를로드하려고 시도 할 때 부팅 루프에 머물러 있습니다.

개발하는 동안 디버깅을 위해 TFTP 서버를 사용하여 RAM에 직접 vxWorks 바이너리를로드합니다 (U-Boot 명령 : 'tftpboot 0x100000 vxWorks.bin'). 이 경우 모든 것이 잘 작동합니다. 릴리즈를 위해 순수 * .bin VxWorks 파일 (8,07MB (8.462.808 바이트) 크기)이 압축되어 U-Boot 호환 이미지 파일 (부트 로더 특정 헤더 정보 포함)로 압축되고 결과 크기가 5, 25MB (5.509.763 바이트). 이미지 파일은 압축되지 않고 RAM에로드되는 플래시에 저장됩니다 (U-Boot 명령 : 'bootm 0xff800000'). 그 후 위에서 언급 한 예외가 발생하여 루프가 재부팅됩니다 (아래 스크린 샷 참조).

준비된 이미지의 크기가 5MB 미만인 경우 U-Boot가 오류없이로드한다는 것을 이미 조사했습니다. 어쩌면 압축되지 않은 파일 크기가 문제가 될 수도 있습니다. (8메가바이트에서?)

enter image description here

당신이 어떤 생각을 가지고 있습니까, 어떻게이 문제가 해결 될 수 있는가?

+0

텍스트 이미지를 게시하지 마십시오! – Olaf

+0

bootm 명령을 사용할 때 U-Boot에서 8MB의 한계로 인해 문제가 발생했습니다. 이 아이디어를 무시하려면 어떻게해야합니까? – Chris

+0

나는 'bootm'의 압축 해제 단계라는 것을 조사했다. TFTP (및 'cp'명령)를 통해 비 압축 바이너리와 압축 된 이미지를 플래시에 복사했습니다. 그런 다음 bootm을 사용하여 압축 된 이미지를 다시 부팅 해 보았습니다. 예상 된 크래시 및 재설정 후 RAM의 비 압축 데이터 ('bootm'기준)와 플래시의 비 압축 바이너리 데이터 ('cmp'명령 사용)를 비교할 수있었습니다. 정확히 8MB 후 데이터가 더 이상 일치하지 않습니다! 두 번째 테스트에서 'bootm'이 문제없이 부팅 할 수있는 압축되지 않은 이미지를 만들었습니다. 어떤 아이디어? – Chris

답변

1

U-boot (2011.06부터)는 "bootm_mapsize"환경 변수를 제공하여 커널 이미지 부팅에 필요한 공간을 변경합니다.

그러나 u- 부팅은 실제로 오래된 것처럼 보입니다. &에는이 내용이 포함되어서는 안됩니다.

CONFIG_SYS_BOOTMAPSZ을 정의 (8 < < 20)/* 리눅스의 초기 메모리 맵 */

: 당신의 U-부팅에서

나는이 값이 설정되어 이해는 파일 "/ CONFIGS을/포함" 이 값을 변경하여 & u-boot를 다시 컴파일하여 문제를 해결할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

+0

이 힌트를 가져 주셔서 감사합니다. 행동에 영향을 미치는지 확인해 보겠습니다. 처음에는 위의 매개 변수가 우리 버전에는 없지만 대신 CFG_BOOTMAPSZ에 해당한다는 것을 알 수있었습니다. – Chris