S3C6410 보드에서 커널 4.6을 실행하려고 합니다.
포트를 완료하고 완전히 부팅하려면 보드의 NAND 플래시 및 SD 컨트롤러와 작동하도록 코어를 구성해야 했습니다.
커널을 포팅/크로스 컴파일하는 것은 이번이 처음이므로 정확한 해결책보다는 문제를 처리하고 진단하는 방법에 대한 조언을 더 찾고 있습니다.
내 보드는 커널 4.6을 부팅할 수 있지만 NAND 플래시나 SD 카드를 볼 수는 없습니다(그래서 rootfs가 없습니다).
실행할 수 있는 커널 제공
이 마더보드에는 "2.6.38-GZSD"가 함께 제공되며 일반 2.6.38과 비교할 때 다음이 포함됩니다.
관심 없는 일부 오디오/비디오/TV/LCD 터치스크린 드라이버
버튼/gpio/pwm/adc용 문자 장치 드라이버, 상관없음
yaffs2 파일 시스템(4.6으로 포팅했습니다)
이 보드에 대한 기계
gzsd4610
정의arch/arm/mach/mach-s3c64xx
NAND 드라이버는 에 있습니다
drivers/mtd/nand/s3c_nand.c
. Kernel 4.6에는 해당 플랫폼에 대한 NAND 및 ONENAND 드라이버가 있으므로 2.6.38에서 이전 드라이버를 포팅하는 대신 이를 사용하려고 합니다.
설정
보드에 내장된 부트로더를 통해 소프트웨어를 보드에 업로드했습니다. SD 카드에서 NAND 플래시 메모리로 u-boot 이미지, 커널 이미지, rootfs 이미지를 로드합니다.
직렬 포트를 통해 마더보드와 통신하고 있습니다.
저는 GCC 6.1.1을 사용하여 커널 4.6을 컴파일하고 있습니다. 2.6.38-GZSD 커널 컴파일. 직접 컴파일하려면 GCC 4 버전이 필요합니다.
저는 소스 코드 수정 없이 4.6 커널 소스를 사용하려고 합니다. 따라서 구성 UI를 통해서만 가능합니다( make nconfig
이 경우). 플랫폼을 설정하고 모든 관련 드라이버를 활성화했습니다(희망합니다).
GZSD6410이 메인라인에 없기 때문에 머신은 GZSD6410이 아닌 SMDK6410에 대해 설정되었습니다(2.6.38에서 포팅하려면 현재 가지고 있는 것보다 커널에 대한 더 많은 지식이 필요합니다). 나는 이것과 아마도 NAND 드라이버가 부팅 실패의 원인이라고 생각합니다.
현재 명령줄을 사용하고 있습니다.
init=/linuxrc console=ttySAC0,115200 root=/dev/mtdblock2 loglevel=7 earlyprintk
이에 비해 작동 중인 2.6.38-GZSD 커널의 명령줄은 다음과 같습니다.
init=/linuxrc console=ttySAC0,115200 root=/dev/mtdblock2
특정 질문(및 로그)
그것은 또한ONENAND 초기화 실패.
ONENAND 대신 NAND를 사용하려고 하면역시 실패했다.
그럼에도 불구하고 이로 인해 커널이rootfs를 마운트할 수 없고 패닉이 발생함.
이에 비해 2.6.38-GZSD를 사용한 성공적인 부팅 로그는 다음과 같습니다.이와 같이.