1. 개발 환경
리눅스 PC 우분투 16.04 64bit 운영체제에서 개발을 한다.
빌드에 필요한 Package는 https://source.android.com/setup/build/initializing 참조해서 설치를 해야 한다.
Mango-IMX6Q 보드는 i.MX6 Quad를 사용하고 있다.
회로도, 하드웨어 매뉴얼이 필요하다.
회로도는 help@crz-tech.com으로 요청하면 된다.
하드웨어 매뉴얼은 http://crztech.iptime.org:8080/Release/mango-imx6q/Doc/Hardware/
에서 다운로드 받으면 된다.
다른 자료는 http://crztech.iptime.org:8080/Release/mango-imx6q/ 에서 다운로드 받으면 된다.
2. 문서 및 소스 다운로드
링크에서 android_p9.0.0_2.2.0-ga_docs.zip 파일을 다운로드 받는다.
다운로드 받으려면, nxp 홈페이지에 회원가입해야 한다.
압축을 풀면 Android_Release_Notes.pdf를 보면 i.MX6Quad Platform을 지원한다고 되어 있다.
관련 된 소스와 문서는 아래와 같이 정의가 되어 있다.
이제 포팅 할 준비가 되었다.
2.1. 안드로이드 Pie 9.0, 커널,u-boot소스 다운로드 하기
링크에서
imx-p9.0.0_2.2.0-ga.tar.gz를 다운로드 받는다.
해당 소스를 리눅스 PC 작업할 디렉토리에 다운로드 받는다.
압축을 푼다.
이제부터 android_p9.0.0_2.2.0-ga_docs 디렉토리에 Android_User's_Guide.pdf 파일을 보면서
컴파일을 하면 된다.
아래와 같이 실행을 한다.
소스를 다운로드를 한다. 약 3시간 걸린다.
다운로드가 완료가 되면, android_build 디렉토리가 생성이 되면서 다운로드 된 파일을 볼 수 있다.
커널 소스는 vendor/nxp-opensource/kernel_imx/ 디렉토리에 있다.
u-boot 소스는 vendor/nxp-opensource/uboot-imx/ 디렉토리에 있다.
2.2. U-boot, kernel, 안드로이드 컴파일 하기
안드로이드, 커널, u-boot 컴파일 해 보자.
2.2.1. Android 컴파일
Mango-IMX6Q 보드와 유사한 sabresd 보드 이름으로 컴파일 한다.
“lunch sabreasd_6dq-eng” 하면 보드는 sabreasd_6dq이고, eng는 개발자 옵션을 넣어서 컴파일 하는 것이다. 좀 더 자세한 내용은 user guide를 살펴보기 바란다.
컴파일 시간이 약 1시간 이상 걸린다. 리눅스 PC 성능은 RAM 16GB 이상, 하드디스크는 300GB 이상 있는 것이 좋다.
컴파일이 완료되면 아래와 같이 메시지가 나옵니다.
2.2.2. U-boot 컴파일
컴파일 결과 아래와 같이 메시지가 나옵니다.
2.2.3. 커널 컴파일
컴파일 하면 된다.
2.3. U-boot 수정
u-boot를 Mango-IMX6Q에 맞게 수정해야 한다.
순서는 RAM-> Serial(Debug) -> Display(HDMI,10.1인치) -> 이더넷
2.3.4. RAM 살리기
Mango-IMX6Q는 512MB*4EA DDR3 장착되어 있다.
RAM 설정 파일은 board/freescale/mx6sabresd/mx6q_4x_mt41j128.cfg에 정의가 되어 있다.
Sabresd 보드는 1GB RAM이므로 설정 값을 변경한다.
같은 Sabreauto 보드에 설정값이 2GB RAM이다. 복사를 해 온다. 만약 같은 것이 없으면, 메모리 데이터 시트와 i.MX6Q RAM 설정 부분을 보면서 모두 맞추어야 한다.
board\freescale\mx6sabreauto\imximage.cfg 파일에 RAM 설정 부분을 가지고 와서 똑같이 맞춘다.
컴파일 해서 RAM이 제대로 살아났는지 확인 해 보자.
테스트 결과 RAM은 2GB로 인식을 했다.
내용