porting tizen on odroid (1/2) - skkunyx.skku.ac.kr/wp-content/uploads/2014/11/tizen-porting... ·...

Post on 24-Aug-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SKKU Embedded Software Lab.

54

1

Compile kernel

Porting Tizen on ODROID (1/2)

SKKU Embedded Software Lab.

54

2

• Hardware check

• Configure platform

• Bootloader

• Building a kernel

• Building a Tizen platform

• Platform image flash

• Platform configuration

• Trouble shooting

Index

SKKU Embedded Software Lab.

54

3

Hardware check

SKKU Embedded Software Lab.

54

4하드웨어 구성 & 연결

AC어댑터

Odroid VU 터치 연결

HDMI케이블

AC어댑터

WiFI 모듈 or Bluetooth 모듈

U-ART

SD카드

USB

SD카드 리더기

오드로이드 U3

SKKU Embedded Software Lab.

54

5하드웨어 구성 & 연결

전원이 들어 오는지 확인

SKKU Embedded Software Lab.

54

6

• SD카드 리더기를 통해, SD카드 내 파일 확인

SD카드 확인

SKKU Embedded Software Lab.

54

7

• UART 연결을 위한 드라이버 설치– UART 인터페이스 드라이버

– CP210xVCPInstaller_x64.exe

UART 드라이버 설치

SKKU Embedded Software Lab.

54

8

• Putty – SD카드 내의 putty.exe 실행

• Putty 설정– 장치관리자 -> 포트에서 포트 번호 확인

Putty 를 통한 UART 연결

SKKU Embedded Software Lab.

54

9

1. 전원 / HDMI 분리

2. SD카드 장착

3. 전원 연결 후 HDMI 연결

동작 테스트

SKKU Embedded Software Lab.

54

10

파티션 구성

SKKU Embedded Software Lab.

54

11

• 타이젠 파티션 구성– Mmcblk0p1 ~ mmcblk0p7 까지 7개 파티션

– 일반적으로 파티션 정보를 저장하기 위해 사용되는 MBR(Master Boot Record)는 4개의 Primary partition만 생성 가능

파티션 정보

PartitionMountPoint

Option Description

/dev/mmcblk0p1 /csa Rw Configuration Saved Area

/dev/mmcblk0p2 /boot Ro 커널 이미지

/dev/mmcblk0p3 - - 예약 파티션

/dev/mmcblk0p4 /mnt/csc RwCustomer Software Configuration , 기본 언어, 시간 정보 등

/dev/mmcblk0p5 / Ro 플랫폼

/dev/mmcblk0p6 /opt Rw 데이터, 어플리케이션, 앱 라이브러리 등

/dev/mmcblk0p7 /opt/media rw 유저 공간

SKKU Embedded Software Lab.

54

12

• PC에 SD카드 리더기 연결

Vmware와 SD카드 리더 연결

SKKU Embedded Software Lab.

54

13

• Gparted 등의 프로그램을 통해 GUI 기반 파티션 설정– gparted 프로그램 설치

• sudo apt-get install gparted

– 처음 0~2mb 를 제외하고 파티션 생성

• 부트로더 및 MBR을 위한 공간

파티션 설정

SKKU Embedded Software Lab.

54

14

• 기존 파티션 삭제

파티션 설정

SKKU Embedded Software Lab.

54

15파티션 설정

Uboot를 위한 공간 확보

SKKU Embedded Software Lab.

54

16

부트로더

SKKU Embedded Software Lab.

54

17

• 부팅 과정– Rom(In SOC) -> bl1 -> bl2(->uboot.bin)

U-boot bootloader

SKKU Embedded Software Lab.

54

18

• U-boot 파일 구성

• 하드커널 다운로드– https://github.com/hardkernel/U-Boot/raw/odroid-v2010.12/sd_fuse/bl1.HardKernel

– https://github.com/hardkernel/U-Boot/raw/odroid-v2010.12/sd_fuse/bl2.HardKernel

– https://github.com/hardkernel/U-Boot/raw/odroid-v2010.12/sd_fuse/tzsw.HardKernel

– https://github.com/hardkernel/U-Boot/raw/odroid-v2010.12/sd_fuse/sd_fusing.sh

• 타이젠 다운로드– http://download.tizen.org/live/Tizen:/Common/arm-wayland/armv7l/u-boot-2015.01-18.4.armv7l.rpm

추가적인 바이너리 다운로드

하드커널 에서 제공하는 서명된 파일삼성에서 제공하는 Tizen용U-boot 핵심 바이너리

u-boot-2015.01-18.4.armv7l.rpm

SKKU Embedded Software Lab.

54

19

• SD카드와 리더기를 연결 후 디바이스 노드 확인– ls /dev/sd*

– 일반적으로 하드디스크 (/dev/sda*) 다음인 sdb로 설정됨

• 쉘 스크립트 실행 권한 부여– chmod +x sd_fusing.sh

• Fusing – sudo ./sd_fusing.sh /dev/sdb

Fusing

SKKU Embedded Software Lab.

54

20Bootloader 동작 확인

U-boot Kernel

Rootfs

SKKU Embedded Software Lab.

54

21

커널 빌드

SKKU Embedded Software Lab.

54

22

• 커널 컴파일을 위한 설정– 필수 라이브러리 설치

• Terminal에서 다음과 같은 명령어 입력

• sudo apt-get install libncurses5-dev build-essential

기본 환경 설정

SKKU Embedded Software Lab.

54

23

• Gerrit (https://review.tizen.org/gerrit/#/) 에서 kernel 확인

커널 다운로드

SKKU Embedded Software Lab.

54

24

• Kernel 소스코드 다운로드– git clone tizen:platform/kernel/linux-3.10

• Branch 설정– List 확인

• “git branch –a” -> 대상 소스파일이 있는 디렉토리에서 실행

– Tizen barnch 로 체크

• git checkout tizen

커널 다운로드

SKKU Embedded Software Lab.

54

25

• Cross Tool Chain – X86 환경에서 Arm 아키텍처 컴파일 가능

– arm-linux-gnueabi-gcc-4.5.tar.gz 파일 사용

• 사용자가 원하는 위치에 압축 해제

Ex) /home/”USER_NAME”/tool/arm-linux-gnueabi-gcc-4.5

– 64bit 시스템과의 호환성을 위해 관련 라이브러리 설치

• Sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 zlib1g:i386

크로스 컴파일 설정

SKKU Embedded Software Lab.

54

26

• 크로스 컴파일 설정 (2가지 방법)1. 수동 설정 – 컴파일 시마다 쉘에서 해당 값 export 수행

• export ARCH=arm

• export CROSS_COMPILE=/”Tool chain 위치”/arm-linux-gnueabi-gcc-4.5/bin/arm-linux-gnueabi-

2. Makefile 수정

• 컴파일에 관한 각종 환경 설정이나 빌드 옵션

• 커널 디렉토리에서 “gedit Makefile” 를 통한 설정 파일 수정

• 파일 내에서 ARCH, CROSS_COMPILE 항목을 아래와 같이 수정

크로스 컴파일 설정

SKKU Embedded Software Lab.

54

27

• Defconfig– 커널 설정 값이 저장되어 있는 config 파일

– ./arch/arm/configs/ 에 존재

– 일반적인 tizen 기기용 설정 파일은 tizen_defconfig

• Odroid 용 defconfig 적용– make tizen_odroid_defconfig

설정 파일 적용

SKKU Embedded Software Lab.

54

28

• Make menuconfig 를 사용하여 커널 설정 변경

커널 설정

SKKU Embedded Software Lab.

54

29

• Tizen configuration 파일에서 기본 CPU governo는performance로 오드로이드 환경에서는 온도가 너무 높아지는 문제 발생• CPU Power Management -> CPU Frequency scaling -> Default

CPUFreq governor 선택

• Performance 에서 ondemand로 변경

CPU Governor 변경

SKKU Embedded Software Lab.

54

30

• Odroid 의 WiFi 모듈인 RTL8192을 지원하도록 수정– Networking support -> Wireless

• 80211 protocol 지원

– Device Driver -> Network device support -> Wireless LAN

• 무선랜 드라이버 설정

WiFi 지원

SKKU Embedded Software Lab.

54

31

• Bluetooth를 uart 인터페이스로 사용할 수 있도록 설정– Networking support > Bluetooth subsystem support

– Bluetooth device drivers

Bluetooth 지원

SKKU Embedded Software Lab.

54

32

• Rfkill 활성화– 리눅스 커널의 서브시스템으로 컴퓨터의 무선장치들에 대해 확

인, 활성화, 비활성화 할 수 있도록 해주는 인터페이스를 제공

– Networking support

Bluetooth 지원 2

SKKU Embedded Software Lab.

54

33

• Tizen DDK 버전과 mali GPU driver간의 버전 차이 발생

– 현재 Tizen linux kernel 3.10의 최근 commit 에서 r4p0 버전이default 로 변경됨

– 하지만 Tizen 2.2 버전용 DDK(Open GL 가속)는 r3p2 버전에dependency를 가짐

GPU Driver

SKKU Embedded Software Lab.

54

34

• 기본 GPU 드라이버 버전 번경

Change Default GPU Driver [1/3]

SKKU Embedded Software Lab.

54

35Change Default GPU Driver [2/3]

-Graphics support

-ARM GPU configuration

-Mali-400 support

SKKU Embedded Software Lab.

54

36Change Default GPU Driver [3/3]

R4P0 버전에서 R3P2 버전으로 변경

-Select MALI Ver

SKKU Embedded Software Lab.

54

37

• zImage 생성– sudo make zImage –j 4

– “-j 4” 는 커널 빌드 시 사용할 스레드의 개수

• 일반적으로 빌드하는 컴퓨터 스레드 개수의 1.5배 정도로 설정

커널 빌드

SKKU Embedded Software Lab.

54

38

• 디바이스 트리– 하드웨어를 서술하기 위한 데이터 구조와 언어

– 부팅 단계에서, 플랫폼에 적합한 하드웨어 장치들을 자동적으로읽어 초기화 수행

– 각 디바이스를 노드 형태로 관리

– 파일 구성

• dtsi : 플랫폼 common 요소

• dts : 특정 보드 specific

• dtb : 바이너리 파일

디바이스 트리 생성

SKKU Embedded Software Lab.

54

39

• Device Tree 생성– make exynos4412-odroidu3.dtb

• 최종 zIamge 생성– cat arch/arm/boot/zImage arch/arm/boot/dts/exynos4412-

odroidu3.dtb > ./zImage

– 커널의 root 디렉토리에 zImage 생성

커널 빌드

SKKU Embedded Software Lab.

54

40

• 커널 이미지를 SD카드의 첫 번쨰 파티션(BOOT)로 복사– 디렉토리를 생성하고, 마운트

• Mkdir boot

• Sudo mount /dev/sdb1 ./boot/

– zImage 복사

• Cp ./zImage ./boot/

커널 이미지 적재

SKKU Embedded Software Lab.

54

41동작 체크

SKKU Embedded Software Lab.

54

42

Platform Image Flash

SKKU Embedded Software Lab.

54

43

• 일반적으로 3개의 파일로 구성– Tizen download 사이트에서 releases 버전 download 가능

– http://download.tizen.org/releases/

Tizen Platform Image

App 데이터 저장3번째 파티션

rootfs2번째 파티션

User 영역4번째 파티션

SKKU Embedded Software Lab.

54

44

• SD카드 리더기를 vmware와 연결

• dd 명령어를 이용– sudo dd if=./platform.img of=/dev/sdb2 bs=512k

– sudo dd if=./data.img of=/dev/sdb3 bs=512k

– sudo dd if=./ums.img of=/dev/sdb4 bs=512k

이미지 플래시

Sdb2가 없는 경우 “ls /dev/sd*” 명령어로 확인 가능

SKKU Embedded Software Lab.

54

45

• Gparted를 이용한 파티션 복구– 파티션 전체 이미지를 플래시 하였기 때문에 파티션 크기가 정

상적으로 나타나지 않음

– sudo gparted

– 해당 파티션에서 우측 클릭 후 “check” 항목 선택 후 상단의 v 표클릭하여 check 실시

파티션 리사이즈

파티션 여유공간이 제대로 나타나지 않음

SKKU Embedded Software Lab.

54

46

• 2,3,4 번째 파티션에 대한 check 작업 수행

파티션 리사이즈

파티션 크기가 정상적으로 복구됨

SKKU Embedded Software Lab.

54

47동작 체크

SKKU Embedded Software Lab.

54

48

Platform 수정

SKKU Embedded Software Lab.

54

49

• Tizen의 기본 파티션 구성과 다르게 4개의 파티션만생성 하였으므로, 수정 필요

• 플랫폼 파티션 내부의 데이터 수정을 위한 마운트– 원하는 경로에 platform 디렉토리 생성

• mkdir platform

– 플랫폼 파티션 마운트

• sudo mount /dev/sdb2 ./platform

Platform Mount 옵션 변경

SKKU Embedded Software Lab.

54

50Platform 작업 경로

현재 위치

향후 작업 위치

SKKU Embedded Software Lab.

54

51

• Systemd 마운트 파티션 변경– 경로 : <platform mount path>/usr/lib/systemd/system/local-

fs.target.wants– Special 파일 시스템이나 일반 저장장치를 마운트

– 마운트 서비스 삭제• csa 파티션은 사용하지 않으므로 마운트 서비스 삭제

– Csa.mount

• boot 파티션은 마운트할 필요가 없으므로 서비스 삭제– Boot.mount

마운트 옵션

Edit Edit

Edit

SKKU Embedded Software Lab.

54

52

• Systemd 마운트 장치 변경– 마운트 장치 변경

• Root 파티션 변경

– -.mount : /dev/mmcblk0p5 -> /dev/mmcblk0p2

• Data 파티션 변경

– Opt.mount : /dev/mmcblk0p6 -> /dev/mmcblk0p3

• Ums 파티션 변경

– Opt-usr.mount : /dev/mmcblk0p7 -> /dev/mmcblk0p4

마운트 옵션

SKKU Embedded Software Lab.

54

53

• Fstab 수정– 해당 파일에 기록된 내용에 따라 마운트 작업 수행

– 경로 : /etc/fstab

– 마운트 옵션을 모두 주석 처리

마운트 옵션

SKKU Embedded Software Lab.

54

54동작 체크

top related