Latest Post
Mango-IMX6Q Android 9.0 포팅가이드-01

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. 문서 및 소스 다운로드

https://www.nxp.com/design/software/embedded-software/i-mx-software/android-os-for-i-mx-applications-processors:IMXANDROID?&tab=Documentation_Tab

링크에서 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소스 다운로드 하기

https://www.nxp.com/design/software/embedded-software/i-mx-software/android-os-for-i-mx-applications-processors:IMXANDROID?&tab=Design_Tools_Tab

링크에서

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 파일을 보면서

컴파일을 하면 된다.

$ tar xf imx-p9.0.0_2.2.0-ga.tar.gz

아래와 같이 실행을 한다.

$ mkdir ~/bin

$ chmod a+x ~/bin/repo

$ export PATH=${PATH}:~/bin

$ source ~/imx-p9.0.0_2.2.0-ga/imx_android_setup.sh

소스를 다운로드를 한다. 약 3시간 걸린다.

다운로드가 완료가 되면, android_build 디렉토리가 생성이 되면서 다운로드 된 파일을 볼 수 있다.

$ cd android_build/

$ ls

Android.bp SCR-p9.0.0_2.2.0-ga.txt bootable compatibility developers external kernel packages prebuilts test vendor

EULA.txt art bootstrap.bash cts development frameworks libcore pdk sdk toolchain

Makefile bionic build dalvik device hardware libnativehelper platform_testing system tools

커널 소스는 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 보드 이름으로 컴파일 한다.

$ cd android_build

$ source build/envsetup.sh

$ lunch sabresd_6dq-eng

$ make -j 9 2>&1 | tee build-log.txt

“lunch sabreasd_6dq-eng” 하면 보드는 sabreasd_6dq이고, eng는 개발자 옵션을 넣어서 컴파일 하는 것이다. 좀 더 자세한 내용은 user guide를 살펴보기 바란다.

컴파일 시간이 약 1시간 이상 걸린다. 리눅스 PC 성능은 RAM 16GB 이상, 하드디스크는 300GB 이상 있는 것이 좋다.

컴파일이 완료되면 아래와 같이 메시지가 나옵니다.

#### build completed successfully (01:37:58 (hh:mm:ss)) ####

2.2.2. U-boot 컴파일

$ cd android_build

$ source build/envsetup.sh

$ lunch sabresd_6dq-eng

$ make bootloader -j4

컴파일 결과 아래와 같이 메시지가 나옵니다.

#### build completed successfully (02:27 (mm:ss)) ####

2.2.3. 커널 컴파일

$ export MY_ANDROID=/home/icanjji/work/imx6q/android-work/android9.0-work/android_build

경로는 각자 환경에 맞게 세팅한다.

$ cd ${MY_ANDROID}/vendor/nxp-opensource/kernel_imx

$ echo $ARCH && echo $CROSS_COMPILE

# Make sure you have those 2 environment variables set

# If the two variables have not set, please set the as:

$ export ARCH=arm

$ export CROSS_COMPILE=${MY_ANDROID}/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-

# Generate ".config" according to default config file under arch/arm/configs.

# to build the kernel Image for i.MX 6Quad, 6QuadPlus, 6DualLite, 6Solo, 6SoloLite,

6SoloX ,7Dual and 7ULP

$ make imx_v7_android_defconfig

$ make KCFLAGS=-mno-android

컴파일 하면 된다.

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로 인식을 했다.

U-Boot 2018.03-dirty (Sep 04 2020 - 20:10:34 +0900)

CPU: Freescale i.MX6Q rev1.3 996 MHz (running at 792 MHz)

CPU: Extended Commercial temperature grade (-20C to 105C) at 36C

Reset cause: POR

Model: Freescale i.MX6 Quad SABRE Smart Device Board

Board: MX6-SabreSD

DRAM: 2 GiB

Comments 0
:    :    :
이름 / 2014-11-20 / ★★★☆☆ [수정 / 삭제]

내용

Recent Comments
일방통행  |  ★★★★★
ISE 14.7 virtualbox를 설치했는데, ,iMPACT가 인식을 못하는데, 어케해야하나요?
min  |  ★★★★☆
These are the only Drives available to write images to: # major minor size name 1: 8 0 512805384 sda 2: 8 16 15558144 sdb Enter Device Number or n to exit: 2 Invalid selection! 왜 이런 오류가 나는 걸까요?
dino  |  ★★☆☆☆
NAND Scrub실행 후 에러가 나타납니다/ 조치방법을 알려주세요 에러내용 crz nand_erase_opts erase.addr=0x0, opt->offset=0x0, erase_ieng minfo_erases=0x20000 .....진행후 s3c-nand:ecc uncorrectable error detected---4개발생합니다 빠른 회신부탁드립니다 연락처:010-3752-6251 강희진
bluewind  |  ★★★★★
안녕하세요..구입했는데..회로도 부탁드립니다. percephy@naver.com 입니다.
조형철  |  ★★★★★
상기 Backlight 관련 회로를 구할 수 있을까요?
hwang  |  ★★★★★
구입한지 조금 됬는데 회로도 부탁합니다. rubens7777@paran.com 입니다.