이 매뉴얼은 JK전자(JK Electronics) 에 의해서 번역, 수정, 작성 되었고 소유권 또한
JK전자(JK Electronics)
의 것입니다. 소유권자의 허가를 받지 않고 무단으로 수정, 삭제하거나 배포 할 수 없습니다.

 

S5PV210 SDK 개발보드 Linux Developer Guide


 
* Update history

- 2012.2.23 : 초기 Release


 


1. Environment Setup

1.1 Installation Fedora9

S3C6410 Startkit 의 모든 예제와 컴파일 과정은 VMWare에 설치된 Fedora9 머신에서 실행 하였습니다. 다른 리눅스 환경에서는 테스트 되지 않았습니다. 폐도라 리눅스의 전체 설치 과정은 여기 Installation Fedora9 을 참조하시기 바랍니다.

1.2 Add a new user

부트로더와 커널등을 컴파일 하고 크로스 컴파일러 설치 작업등을 수행할 일반 계정을 생성 합니다.

Step1: Open the "Users and Groups Manager"



Step2: User Management window appears

s3c6410

Step3: Point toolbar "Add User" button to add new users, and set the password:

s3c6410

Point "OK" return, you can see has add "plg" users, while /home directory also add for plg user directory, as shown:

s3c6410

Point Add User button, the window to add new users, according to the prompts on it.


1.3 Access to Windows system files

버츄얼 머신에 설치된 Fedora9 시스템에서 HOST PC인 윈도우즈 파일시스템에 접근 해야 할 필요성이 있는데 한가지 방법은 Host와 Guest OS간의 네트워크를 이용하는 방법과 VMWare의 shared file 기능을 이용하는 방법입니다. 자세한 설정 과정은 다음을 참조하세요.

s3c6410

Step1: In Windows set the shared folder "share_f9" (Example)

s3c6410

Step2: In Fedora9 operating system:

s3c6410

Open figure window:

s3c6410

In Service type select "Windows share"

s3c6410

Enter the desired share Windows Host IP Address and the name of the shared folder:

s3c6410

Click "Connect" prompt window will appear as follows:

s3c6410

Do not care, direct "Connect" can be, you can see Windows Shared the contents of the document, and in this operation other directories as you can, like to use it.

s3c6410

터미널 창의 커맨드 라인에서 접근 하는 방법도 있습니다.

s3c6410

Shared디렉토리와의 연결 해제 방법은 아래 그림과 같이 Fedora 메뉴에서 "Unmount Volume" 을 실행 하면 됩니다.

s3c6410

Samba를 이용하는 방법보다는 리눅스를 VMWare에 설치 하였다면 VMWare의 Shared Folder 를 이용하는 방법이 더 간단 합니다.

1.4 Configure NFS Services

다음의 NFS 서시스 설정 과정은 단지 레펀런스만 하시기 바랍니다. 많은 리눅스 시스템들이 아래에서 설명하는 절차에 의해서 동일한 결과를 내지 않을 수 있습니다. 심지어 동일한 버젼과 Fedora 9 에서 조차도 사용자의 설치 환경에 따라서는 되지 않을 수도 있습니다. 설정 과정중 오류 사항은 인터넷 등 다른 참조 자료를 활용 하시기 바랍니다.

Step1: Set the shared directory

 

"root" 계정으로 로그인한 상태에서 아래 명령들을 실행 하세요.

# gedit /etc/exports

NFS서비스 profile 을 수정 합니다.

/opt/FriendlyARM/tiny210/linux/root_qtopia_qt4 *(rw,sync,no_root_squash)

/opt/FriendlyARM/tiny210/linux/root_qtopia_qt4 : NFS로 공유할 디렉토리 경로 입니다.

* : client 에서 이 디렉토리를 마운트 하도록 허용 합니다.
rw : read and write 권한
no_root_squash : client에서 이 디렉토리를 마운트 했을때 host의 완전한 root 권한을 허용 하도록 합니다.

/opt/FriendlyARM/tiny210/linux/root_qtopia_qt4 디렉토리는 미리 생성이 되어 있어야 합니다.

Step2: Start NFS Services

Fedora시스템에서는 기본적으로 파이어월 때문에 NFS 서비스가 올바르게 실행 되지 않습니다. 그래서 먼저 Firewall 을 중지하고 실행 해야 합니다. 명령 라인에서 "lokkit" 명령을 이용해서 Firewall 구성을 시작 합니다.

s3c6410

"Disabled" 를 선택하고 "OK" 를 누룹니다. 그리고 나서 NFS 서비스를 시작 합니다.

# /etc/init.d/nfs start

NFS 서비스가 제대로 시작되었는지 다음과 같이 local 영역을 먼저 마운트 합니다.
# mount -t nfs localhost: /opt/FriendlyARM/tiny210/root_qtopia_qt4 /mnt/

다음은 NFS 서비스를 종료 시키는 명령 입니다.
# /etc/init.d/nfs stop

NFS서비스를 시스템 부팅시에 자동으로 실행하면 좀더 편리 합니다.
# serviceconf

s3c6410

Step3: NFS Start System
초기 리눅스 개발시에는 개발보드가 부팅시에 root filesystem 을 NFS를 통해서 Linux host PC 의 root 파일 시스템을 참조하도록 하는것이 편리 합니다. superboot 메뉴에서 Linux 부팅 파라미터에 다음같이 하면 됩니다.



console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.111:/opt/FriendlyARM/tiny210/root_qtopia_qt4 ip=192.168.1.70:192.168.1.111:192.168.1.111:255.255.255.0:tiny210.arm9.net:eth0:off


각각의 IP주소에 대한 설명 입니다.

192.168.1.70 : 타겟 개발보드의 IP Address
192.168.1.111 : Linux HOST IP Address
192.168.1.111 : 타겟 개발보드의 Gateway
255.255.255.0 : Subnet mask
eth0 : Linux HOST PC의 네트워크 인터페이스 이름, 마지막으로 Linux HOST PC의 호스트 이름은 어떤 이름이든 문제가 되지 않습니다.

s3c6410

"b" 명령어로 개발보드의 root 파일 시스템은 NFS 서버의 디렉토리에 마운트 되면서 시작 하게 됩니다.

s3c6410


2. Install cross-build compiler

임베디드 리눅스의 부트로더, 커널, QT 등을 컴파일 하기 위해서는 개발용 Linux PC에 ARM용 크로스 컴파일러를 설치 해야 합니다. 이 개발보드를 위해서는 arm-linux-gcc-4.5.1 컴파일러를 설치 해야 합니다. 이 컴파일러는 armv6 Instruction set and support hardware floating-point operations 등을 지원 합니다. 자세한 설치 방법은 아래와 같은 절차대로 하시면 됩니다.

Step1 : CD-ROM/Linux/arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 의 파일을 개발용 PC의 /tmp 디렉토리에 복사 합니다. 그리고 나서 다음 명령을 입력 합니다.

# cd /tmp
# tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /

이 명령어는 arm-linux-gcc 컴파일러를 /opt/FriendlyARM/toolschain/4.5.1 에 설치합니다.

Step2 : 설치 디렉토리를 사용자 계정 shell 파일에 추가 합니다.

# gedit /root/.bashrc
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin

s3c6410

터미널 창을 종료하고 다시 로그인 한 다음 "arm-linux-gcc -v" 명령을 실행 하면 아래과 같은 메세지가 나와야 합니다.

s3c6410

2.1 Install source code and tool

다음과 같은 소스와 툴 들을 설치 합니다.

- Linux kernel source code
- Qtopia-2.2.0 platform source code (x86 and arm platform is divided into two versions)
- Arm-qt-extended-4.4.3 platform source code (that is Qtopia4, divided into two versions of x86 and arm)
- QtE-4.7.0 platform source code (arm version)
- Busybox-1.17 source code
- Linux source code programming examples
- Target file system directory
- Target file system image creation tools (including yaffs2 )
- GUI Linux logo creation tools logomaker

2.1.1 Unpacking the source code

먼저 "/opt/FriendlyARM/tiny210/linux" 디렉토리를 생성 합니다. 모든 소스 코드는 이 디렉토리에 압축을 해제해서 설치를 진행 할 것입니다.
# mkdir -p /opt/FriendlyARM/tiny210/linux

(1) Linux source code package 준비, "/tmp/linux" 디렉토리를 생성 합니다.

#mkdir /tmp/linux

CD-ROM안의 Linux 디렉토리의 모든 파일들을 /tmp/linux 에 복사 합니다.

(2) Unpacking the Linux kernel source code
"/opt/FriendlyARM/tiny210/linux" 을 워킹 디렉토리로 하여 아래 명령을 수행 합니다. "linux-2.6.35-" 이후의 파일 이름은 소스 베포 날짜 이므로 달라 질 수 있습니다.

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/linux-2.6.35-20111118.tar.gz


위의 명령으로 "linux-2.6.35" 디렉토리 안에 전체 커널 소스 코드가 생성 됩니다.

(3) Extract the target file system installation

#cd /opt/FriendlyARM/tiny210/linux
#tar xvzf /tmp/linux/rootfs_qtopia_qt4-
20111118.tgz

"rootfs_qtopia_qt4" 디렉토리가 생성되면 qtopia 파일 시스템 소스 파일들이 생성 됩니다. "rootfs_qtopia_qt4-" 이후의 파일 이름은 소스 베포 날짜 이므로 달라 질 수 있습니다.

(4) Unpacking the source code for embedded graphics system qtopia

"/opt/FriendlyARM/tiny210/linux" 을 워킹 디렉토리로 하여 다음 명령들을 실행 시킵니다.

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/x86-qtopia-20100420.tar.gz
# tar xvzf /tmp/linux/arm-qtopia-20101105.tar.gz


"x86-qtopia" 와 "arm-qtopia" 디렉토리가 생성되고 qtopia 관련 소스 파일들이 설치 됩니다. "x86-qtopia-" 이후의 파일 이름은 소스 베포 날짜 이므로 달라 질 수 있습니다.

(5) Extract the installation of embedded graphics system qt-extended-4.4.3 source code

"/opt/FriendlyARM/tiny210/linux" 을 워킹 디렉토리로 하여 명령들을 실행 시킵니다.

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/x86-qt-extended-4.4.3-20101003.tgz
# tar xvzf /tmp/linux/arm-qt-extended-4.4.3-20101105.tgz


위의 명령으로 "x86-qt-extended-4.4.3" and "arm-qt-extended-4.4.3" 디렉토리가 생성되고 qt-extendec 소스가 설치 됩니다.

(6) Extract the installation QtE-4.7.0 source code

"/opt/FriendlyARM/tiny210/linux" 을 워킹 디렉토리로 하여 명령들을 실행 시킵니다.

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/x86-qte-4.6.1-20100516.tar.gz
# tar xvzf /tmp/linux/arm-qte-4.7.0-20101105.tar.gz


"x86-qte-4.6.1" and "two arm-qte-4.7.0" 2개의 디렉토리가 생성되고 관련 소스파일 들이 설치 됩니다.

(7) Extract the source code to install busybox

Busybox is a lightweight linux command set of tools is used in this version of busybox-1.13.3. Download the latest version from their official website (http://www.busybox.net).

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/busybox-1.17.2-20101110.tgz


"Busybox-1.17.2" 디렉토리가 생성되고 관련 소스가 설치 됩니다.

(8) Extract the installation of Linux sample program

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/examples-mini210-20111118.tgz


"examples" 디렉토리가 생성되고 리눅스 에제 프로그램들이 설치 됩니다.

2.1.2 Create the target file system extract

일반적으로 "rootfs_qtopia_qt4-20111118.tgz" 을 사용하면 됩니다.

아래 명령어로 설치 할 수 있습니다.

# cd /opt/FriendlyARM/tiny210/linux
# tar xvzf /tmp/linux/rootfs_qtopia_qt4-20111118.tgz


"rootfs_qtopia_qt4" 디텍토리가 생성되고 거기에 알맞은 파일 시스템 소스가 설치 됩니다. 파일 시스템은 다음과 같은 기능을 제공 합니다.

- Automatic identification NFS or a local start
- Automatic recognition of ordinary or high-speed SD card (maximum support 32G) and USB flash drives
- Automatic detection of USB mouse or touch screen
- Support for USB mouse and touch-screen co-existence (from the beginning to support Linux-2.6.35)

2.1.3 Extract the installation file system image tools

- mkyaffs2image-128M : Nand 플래시가 128M/256M/512M/1GB 인 타겟 시스템용 파일 시스템 툴 입니다.

위이 2개 툴 이외에서 UBIFS, EXT3 파일 시스템 이미지 툴이 있습니다. 모든 툴 들은 아래 명령에 의해서 설치가 됩니다. "yymmdd" 는 패키지 일자에 따라서 달라질 수 있습니다.

# tar xvzf /tmp/linux/mktools-yyyymmdd.tar.gz -C /

위위 명령에 의해서 /usr/sbin 디렉토리에 mkyaffs2image, mkubimage, mkext3image 이미지 툴들이 설치 됩니다.

2.1.4 Unpacking LogoMaker

LogoMaker 툴은 리눅스 부트 시작 이미지를 바꿀수 있게 해주는 툴 입니다. 아래 명령으로 설치 할 수 있고 /usr/sbin 디렉토리에 설치가 됩니다. bmp, jpg, png image format 을 부트 로고로 사용 할 수 있습니다. 자세한 사용 방법은 이후의 절에서 다시 설명 합니다.

# tar xvzf /tmp/linux/logomaker.tgz -C /

s3c6410

3. Configure and compile the kernel
3.1 Kernel compile


리눅스와 안드로이드는 동일한 버젼의 커널과 소스를 사용하고 있습니다. 단지 OS에 따라서 커널 설정만 다를 뿐입니다.

# cd /opt/FriendlyARM/tiny210/android/ linux-2.6.35.7
# cp mini210_linux_defconfig .config

started compiling the kernel, you can also use the make command directly. 또한 make menuconfig 명령을 이용해서 커널 옵션들을 다시 설정 할 수 있습니다.

# make

s3c6410

컴파일이 완료되면 arch/arm/boot 디렉토리에 zImage 파일이 생성이 됩니다. 여기에 생선된 커널(zImage) 파일을 개발보드에 SD부팅을 이용해서 퓨징 하시면 됩니다.

3.2 Configue and compiling busybox

busybox 웹사이트에서 다운로드한 소스코드는 사용자의 목적에 따라서 설정을 다시 해서 컴파일 할 수 있습니다. 우리는 기본 설정인 fa.config 파일을 이용해서 컴파일 했습니다. busybox 소스코드가 있는 디렉토리로 이동하여 컴파일 합니다.


# cp fa.config .config
# make


s3c6410


4 Make target file system image

4.1 Make yaffs2 file system image

"/opt/FriendlyARM/tiny210/linux" 디렉토리로 이동하여 다음 명령을 수행 합니다. 


Nand Flash가 SLC Type(K9F2G/4Gxx) 인 경우에는 아래와 같이 Build 합니다.

# mkyaffs2image-128M rootfs_qtopia_qt4 rootfs_qtopia_qt4.img

Nand Flash가 MLC(K9F8Gxx) Type 인 경우에는 아래와 같이 Build 합니다.

# mkyaffs2image-mlc2 rootfs_qtopia_qt4 rootfs_qtopia_qt4_mlc2.img

5. Qtopia-2.2.0
5.1 Compile Qtopia-2.2.0

Qtopia-2.2.0을 컴파일 하는 방법은 앞에서 했던 커널이나 부트로더 컴파일 방법보다 좀더 복잡합니다. 아래에서 자세한 과정을 설명 합니다. x86, ARM 버젼의 "run" 스크립트는 아주 동일 합니다.

5.2 Compile and run x86 versions of Qtopia-2.2.0

작업 디렉토리로 이동 해서 빌드, 컴파일 하는시간은 시스템에 따라서 약간 차이가 있을수는 있지만 30분 정도가 소요 됩니다.


# cd /opt/FriendlyARM/tiny210/linux/x86-qtopia
# ./build-all

"build-all" 옵션으로 컴파일 하면 Complete Qtopia and embedded browser 가 모두 포함이 되어 컴파일이 되고,
"build-konq" 옵션으로 컴파일 하면 각각 모듈별로 컴파일 할 수 있습니다. 컴파일이 완료되고 실행을 시키는 것은 간단 합니다. 빌드가 완료된 디렉토리에서

# ./run

Qtopia가 실행된 화면 입니다.

s3c6410


s3c6410

5.3 Compile and run ARM versions of Qtopia-2.2.0

반드시 "arm-linux-gcc-4.4.1" 크로스 컴파일러를 이용해서 빌드 해야 합니다.

# cd /opt/FriendlyARM/tiny210/linux/arm-qtopia
# ./build-all
# ./mktarget


Produced for target root file system image file binary package, will generate "target-qtopia-konq.tgz"

컴파일된 Qtopia를 개발 보드에 설치 합니다.

#tar xvzf /home/plg/target-qtopia-konq.tgz -C /

s3c6410

"build-all" 이라는 스크립트를 이용해서 빌드 과정을 매우 간소화 시켰습니다. 전체 빌드가 아니라 항목별 빌드 하기 위해서는 "build-all" 파일을 수정해서 사용하시기 바랍니다.


6. QtE-4.7.0
6.1 compile and run ARM versions QtE-4.7.0

반드시 "arm-linux-gcc-4.5.1" 를 이용해서 빌드해야 합니다. 컴파일 하는 방법은 "Qtopia-2.2.0" 컴파일과 동일 합니다.

# cd /opt/FriendlyARM/tiny210/linux/arm-qte-4.7.0
# ./build-all


컴파일이 완료되면 타겟 개발보드에 설치 합니다.

#tar xvzf target-qte-4.7.0.tgz -C /

위의 명령을 이용해서 설치를 하면 /usr/local/Trolltech 디렉토리를 포함해서 설치가 됩니다. 이미 개발보드에 Trolltech 디렉토리가 존재 하고 있다면 삭제하고 다시 설치 하시기 바랍니다.
그리고 Qt4를 실행하기 위해서는 아래 그림과 같이 먼저 qt2를 종료하고 실행 해야 합니다.

s3c6410

위의 방법이외에 다르게 실행 할 수 있는  방법은 /etc/init.d/rcS 에 qtopia 시작 아디템을 등록 하는 것입니다.

아래 그림은 Qt4 가 실행된 화면 입니다.

s3c6410


7. Qt-Extended-4.4.3
7.1 compile and run X86 versions QtE-4.4.3

반드시 "arm-linux-gcc-4.5.1" 를 이용해서 빌드해야 합니다. 컴파일 하는 방법은 "Qtopia-2.2.0" 컴파일과 동일 합니다.

# cd cd /opt/FriendlyARM/tiny210/linux/x86-qt-extended-4.4.3
# ./build


X86버젼에서 실행하는 방법은 단순히 아래와 같은 명령어로 실행 할 수 있습니다.

# ./run

X86 PC에서 실행된 화면 입니다.

s3c6410

7.2 compile and run ARM versions QtE-4.4.3

반드시 "arm-linux-gcc-4.5.1" 를 이용해서 빌드해야 합니다. 컴파일 하는 방법은 "Qtopia-2.2.0" 컴파일과 동일 합니다.

# cd cd /opt/FriendlyARM/tiny210/linux/arm-qt-extended-4.4.3
# ./build


컴파일이 완료되면 개발보드에 설치 합니다.

#tar xvzf target-qtopia4.tgz –C /

위의 명령을 이용해서 설치를 하면 /opt/Qtopia4.4.3 디렉토리를 포함해서 설치가 됩니다. 이미 개발보드에 Qtopia4.4.3 디렉토리가 존재 하고 있다면 삭제하고 다시 설치 하시기 바랍니다.
그리고 Qt4를 실행하기 위해서는 아래 그림과 같이 먼저 qt2를 종료하고 실행 해야 합니다.

s3c6410

위의 방법이외에 다르게 실행 할 수 있는  방법은 /etc/init.d/rcS 에 qtopia 시작 아디템을 등록 하는 것입니다.

# qtopia4 &

아래 그림은 Qt4 가 실행된 화면 입니다.

s3c6410