본문 바로가기

Tizen

[Tizen Porting] #7 U-boot에 커널 이미지 올리기

#7 U-boot에 커널 이미지 올리기



이번 포스팅에서는 U-boot를 컴파일 하고 난 뒤에 커널 이미지를 올리는 방법을 알아보도록 하겠습니다.


이전에 올렸던 #5 리눅스 커널 빌드 #6 U-boot 다운로드 및 컴파일 이 모두 끝난 상태에서 진행하시기 바랍니다.


리눅스 커널 빌드가 끝나면 <source folder>/arch/arm/boot 디렉토리에 zImage가 생기게 됩니다.



minicom을 실행한 뒤에 타겟 보드에 전원을 넣게 되면 다음과 같은 이미지를 확인할 수 있는데 이 부분에서 fastboot로 커널 이미지를 퓨징하도록 하겠습니다.



Kernel이미지를 플래시하기 전에 u-boot 설정들을 확인해주도록 합시다.

Exynos4412 # printenv



일단 다른 부분은 건너뛰고 bootscript와 bootargs 부분만 보도록 하겠습니다.


bootscript의 source 40008000이라고 적힌 부분은 커널이 위치하는 시작주소입니다. 40008000이 아닐 경우 kernel을 제대로 불러오지 못합니다. 혹시나 다르게 설정이 되어있다면 다음 명령어를 통해 바꿔주도록 합시다.

Exynos4412 # setenv bootscript source 40008000


다음은 bootargs입니다. ODROID-X2의 경우 시스템의 콘솔메세지를 전달해주는 경로가 tty1번입니다. tty를 통해 사용자와 시스템이 통신하기 때문에  부분이 다르게 설정되어 있다면 시스템에서 보낸 메세지를 받을 수 없습니다. 또한 하드웨어에서 ttySAC1 USART Serial 포트로 메세지를 보내기 때문에 ttySAC1, baudrate 115200으로 맞춰주어야 합니다.

이 부분이 잘못되어 있다면 다음 명령어를 통해 수정해주도록 합시다.

Exynos4412 # setenv bootargs "console=tty1 console=ttySAC1,115200n8"


다음은 OTG 케이블로 타겟 보드와 호스트 PC를 연결한 뒤에 다음 명령어를 실행합니다.혹시나 fastboot가 설치되어 있지 않으신 분은 에러가 날 수 있으니 fastboot를 타겟 보드에 설치후에 명령어를 실행하시기 바랍니다.

Exynos4412 # fastboot


fastboot가 정상적으로 실행되었다면 minicom을 통해 다음 화면을 확인할 수 있습니다.




이후에 호스트PC에서 다음 명령어를 실행하여 zImage를 전송해주도록 합시다. 명령을 실행할 때 kernel 소스를 받아놓은 디렉토리로 이동하여 실행하시기 바랍니다.

fastboot 명령어를 실행할 때에는 반드시 SuperUser 권한으로 실행해주시길 바랍니다.

$ sudo fastboot flash kernel zImage


정상적으로 실행이 되었다면 호스트PC에서 다음 메세지를 확인할 수 있습니다.


그리고 타겟 보드에서는 다음 메세지를 확인할 수 있습니다.


이제 다음 명령어를 통해 타겟PC를 재부팅 시켜주도록 합시다.

$ sudo fastboot reboot


재부팅을 시키고 나면 이전에 발생했던 kernel Image를 확인할 수 없다는 에러는 없어지게 됩니다. 그리고 다음과 같이 콘솔메세지가 뜨는 것을 확인할 수 있습니다.



하지만 커널 부팅 중에 에러가 발생하면서 더 이상 부팅이 진행되지 않는 것을 확인하였습니다.


다음 포스팅에서는 이 문제를 해결하는 방법에 대해 알아보도록 하겠습니다.