2011년 6월 7일 화요일

S3C6410 Start Kit QT2.2.0 Application Developer Guide

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

제품 구매 : http://www.toolparts.co.kr
 

S3C6410 Start Kit QT2.2.0 Application Developer Guide


 

* Update history

- 2011.4.23 : 초기 Release


  이 메뉴얼은 Qtopia-2.2.0, Qt-Extendded-4.4.3 (Qtopia Phone Edition), QtE-4.7.0를 S3C6410 Start Kit 어플리케이션 개발에 대한 내용을 설명하는 메뉴얼 입니다.

1. Qtopia 2.2.0 Application Programming
1.1 My Calculator

이번 절에서는 Qtopia2.2.0 의 ARM 버젼의 예제 프로그램을 개발하는 절차와 실제로 몇가지 예제를 작성해 보도록 합니다. 아래는 이제부터 작성할 예제인 계산기가 실핼된 화면 입니다.

qtopia

개발용 PC에 Qt 예제 프로그램을 작성할 작업 디렉토리인 "qtopia2_apps" directory 를 생성 합니다.

# mkdir -p /opt/qtopia2_apps
# cd /opt/qtopia2_apps
# mkdir mycalc

(1) Qt 디자이너 실행

GUI 환경의 개발툴을 이용해서 Qt 프로그램을 작성해 보도록 합니다. Qt 디자이너를 이용해서 "main_form_base.ui" 파일을 생성 합니다.

# cd mycalc
# /opt/mini6410/qtopia-free-2.2.0/qt2/bin/designer main_form_base.ui

위의 명령을 실행하면 "New Form" 다이얼로그가 나오고 여기에서 "Widget" 을 선택합니다.

qtopia

(2) 프로그램 GUI 디자인

Qt 디자이너는 자동으로 ".ui" GUI 리소스 파일과 ".ui" 파일과 관련된 C++ 파일을 생성 합니다. 위젯을 생성한 후에 생성된 윈도(위젯)의 속성과 값들을 수정 합니다. 윈도의 크기는 개발보드의 LCD사이즈에 맞도록 적당한 크기로 변경 합니다.

qtopia

위에서 윈도 속성값들을 변경한 후에 윈도에 컨트롤들을 배치하고 속성값들을 수정 합니다.윈도 환경에서 Visual C++, Basic 등의 프로그램을 개발해본 개발자라면 굉장히 비슷하다고 여겨질 것입니다.
아래 그림처럼 컨트롤들의 속성을 수정 합니다.

qtopiaqtopia

qtopia

여기까지 컨트롤들에 대한 속성(Property) 설정까지는 완료 되었고 이제 컨트롤들에 이벤트 핸들러를 연결해 보도록 합시다.

(3) 이벤트 함수 추가

"=" 텍스트의 버튼 컨트롤에 Click Event를 연결해 보도록 합시다. Click Event는 사용자가 "=" 버튼을 마우스, 혹은 키보드로 놀렀을때 발생하는 이벤트 입니다. 이때 실제로 사용자가 버튼을 클릭 했을때 어떤 처리를 수행시키고 싶으면 버튼의 클릭 이벤트와 함수를 연결 시키면 됩니다. 이렇게 하기 위해서 버튼의 "Slot Editor" 를 실행 합니다. 흡사 윈도에서 비주얼C++ 개발할때 이벤트 핸들러를 작성하는것과 비슷 합니다. 단지 Qt에서는 이런 것들을 이벤트가 아닌 Slot와 Signal이라는 메커니즘을 통해서 구현 합니다. "MainForm" 위에서 오른쪽 마우스를 클릭하고 "Slot" 메뉴를 선택 합니다

qtopia

"New Slot" 버튼을 클릭한 후 Slot 이름을 "calcButtonClicked()" 와 "closeButtonClicked()" 를 추가 합니다.

 

qtopia

나중에 Click 이벤트에 대응하는 적절한 함수를 연결 해야 합니다.

"Close" 버튼에 이벤트 함수 연결하기 위해서 "Signal/Slot" qtopia아이콘을 선택하고 "Close" 버튼을 선택한 상태에서 드래그 하여 "TMainForm" 위에서 마우스 버튼을 Release합니다. 그려면 위에서 작성한 "Slot" 리스트 들이 아래와 같이 나타 납니다.

qtopia

"btnClose" 버튼과 "btnCalc" 버튼에 적절한 "Slot" 함수를 선택해서 연결 합니다.

(4) 이벤트 함수 구현

여기까지 인터페이스 디자인이 완료되었으면 이제 소스코드를 작성해 보도록 합니다.
main_form.h, main_form.cpp, main.cpp 3개의 파일이 필요 합니다.
간단하게 vi 에디터를 이용해서 main.cpp 를 수정해 보도록 합니다.

# vi main.cpp

vi 에디터에서 다음의 내용을 입력 합니다.

#include "main_form.h"
#include <qtopia/qpeapplication.h>

QTOPIA_ADD_APPLICATION("mycalc",TMainForm)
QTOPIA_MAIN


main.cpp 는 단순희 4줄의 매크로 확장 코드로 이루어진 간단한 main 함수 입니다. TMainForm 는 main window object 로 QApplication::exec () 를 실행 시키고 main event loop 로 진입 합니다. main_form.h 파일은 없으므로 새로 생성 해야 합니다.

main.cpp와 마찬가지로 vi 에디터를 이용해서 생성 합니다.

# vi main_form.h

#if !defined (__MAIN_FORM_H__)
#define __MAIN_FORM_H__
#include "main_form_base.h"
#include <qsocketnotifier.h>

class TMainForm: public TMainFormBase {
Q_OBJECT public: TMainForm(QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel) : TMainFormBase(parent,name,f) {}
virtual ~TMainForm() {}

public slots:
void calcButtonClicked();
void closeButtonClicked();

};

#endif


추가로 main_form.h을 포함하는 main_form_base.h 파일이 있는데 이 파일은 개발자가 생성하는 파일이 아니고 UI 디자이너 툴에서 자동으로 생성 시키는 파일 입니다. 이제 실제로 이벤트가 발생 했을 경우 처리하는 이벤트 핸들러 함수를 작성 합니다.

# vi main_form.cpp

#include "main_form.h"
#include <qlineedit.h>

void TMainForm::calcButtonClicked() {
m_result->setText( "" );
if (m_x->text().isEmpty() || m_y->text().isEmpty())
{
return;
}

bool ok = false;
int x = m_x->text().toInt(&ok);

if (!ok)
{
m_x->setText("");
return ;
}

ok = false;
int y = m_y->text().toInt(&ok);

if (!ok)
{
m_y->setText("");
return ;
}

m_result->setText( QString::number( x + y ) );

}

void TMainForm::closeButtonClicked()
{
close();
}


소스코드에 대해서 자세한 설명은 하지 않아도 어떤 내용인지 알 수 있을것 같습니다.

모든 소스코드들의 수정이 완료 되었으면 컴파일 하기전에 마지막으로 프로젝트 파일을 작성해야 합니다.

# vi mycalc.pro

CONFIG += qtopiaapp

CONFIG -= buildQuicklaunch
HEADERS = main_form.h
SOURCES = main_form.cpp main.cpp
INTERFACES = main_form_base.ui
TARGET = mycalc



CONFIG+=qtopiaapp : Qtopia 프로그램의 종류 입니다.
HEADERS and SOURCES : mycalc 프로젝트의 소스코드와 헤더 파일을 나열 합니다.
TARGET : 컴파일 후 생성되는 최종 실행 파일의 이름을 입력 합니다.

(5) x86용 컴파일 및 실행

PC버젼의 컴파일 스크립트인 "buildhost.sh" 를 실행 시킵니다. 참고로 "buildhost.sh" 파일은 PC버젼의 qt application의 컴파일을 편하게 하기 위해서 미리 만들어둔 스크립트 파일 입니다. 스크립트의 내용은 아래와 같습니다.

#!/bin/sh

source /opt/qtopia-free-2.2.0/setQpeEnv
qmake -o Makefile.host -spec qws/linux-generic-g++ *.pro
make -f Makefile.host clean
make -f Makefile.host



스크립트 파일에 실행 권한을 부여 합니다.

# chmod +x buildhost.sh

빌드 스크립트를 실행 합니다. 스크립트가 성공적으로 실행되기 위해서는 "/opt/ qtopia-free-2.2.0/" 에 qtopia 2.2.0 이 설치 되어 있어야 합니다. 만약 qtopia가 다른 경로에 설치되어 있다면 위의 스크립트 파일 내용중에서 "source /opt/qtopia-free-2.2.0/setQpeEnv" 부분을 적절하게 수정해 주면 됩니다.

# ./buildhost.sh

컴파일이 성공적으로 완료되면 mycalc 디렉토리에 mycalc 실행 파일이 생성 됩니다. 생성된 실행파일을 PC에서 실행시켜 봅니다. 아래 명령은 mycalc를 실행 시키기 전에 먼저 qtopia를 실행시키는 명령 입니다.

# cd /opt/qtopia-free-2.2.0/
# ./run&

qtopia를 실행시키고 난후에 몇가지 환경 변수를 등록하고 mycalc 어플리케이션을 실행 합니다. 환경 변수들은 리눅스 사용자 프로파일에 등록 시켜놓으면 편리 합니다.

# cd /opt/mini6410/qtopia2_apps/mycalc
# export QTDIR=/opt/qtopia-free-2.2.0/qtopia/image/opt/Qtopia/
# export QPEDIR=/opt/qtopia-free-2.2.0/qtopia/image/opt/Qtopia/
# export HOME=$QPEDIR/root/
# export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBARAY_PATH
# ./mycalc

qtopia

(6) ARM용 컴파일 및 실행
x86용 컴파일할때와 마찬가지로 컴파일을 편리하게 하기 위해서 우리는 "buildarm.sh" 스크립트를 미리 만들어 두었습니다. 이 스크립트를 실행하여 ARM버젼으로 어플리케이션을 컴파일 합니다. 스크립트 파일의 내용은 아래와 같습니다.

# vi buildarm.sh

#!/bin/sh source

/opt/mini6410/qtopia-free-2.2.0/setQpeEnv
qmake -spec qws/linux-arm-g++ -o Makefile.target *.pro
make -f Makefile.target clean
make -f Makefile.target



스크립트 파일에 실행권한을 부여하고 스크립트를 실행하여 컴파일을 합니다.

# chmod +x buildarm.sh

빌드 스크립트를 실행 합니다. 스크립트가 성공적으로 실행되기 위해서는 "/opt/ qtopia-free-2.2.0/" 에 qtopia 2.2.0 이 설치 되어 있어야 합니다. 만약 qtopia가 다른 경로에 설치되어 있다면 위의 스크립트 파일 내용중에서 "source /opt/qtopia-free-2.2.0/setQpeEnv" 부분을 적절하게 수정해 주면 됩니다.

# ./buildarm.sh

개발용 PC에서 컴파일한 결과물을 SD메모리에 복사한다음 개발보드에 SD메모리를 삽입하고 실행파일을 Qtopia/bin 디렉토리에 복사한다음 실행 권한을 부여 합니다.

# cp /sdcard/mycalc /opt/Qtopia/bin/
# chmod +x /opt/Qtopia/bin/mycalc

아직은 Qtopia환경에 실행 아이콘이 등록되지 않는 상태이므로 명령행에서 실행해 보도록 하겠습니다.

# cp /bin/run_my_qtopia /bin/run_mycalc
# vi /bin/run_mycalc

run_mycalc 파일의 마지막 줄의
exec $QPEDIR/bin/qpe 를 exec $QPEDIR/bin/mycalc 로 수정하고 아래 명령을 수행 합니다.

# chmod +x /bin/run_mycalc
# run_mycalc&

(7) mycalc 프로그램을 Qtopia 환경에 아이콘으로 등록해서 실행
앞절에서는 명령행에서 프로그램을 실행시키는 방법에 대해서 알아 보았고 이번에는 Qtopia실행 환경에서 아이콘으로 등록해서 실행하는 방법에 대해서 알아보도록 합니다. Fedora9의 "/usr/share/icons/hicolor/48x48/apps" 디렉토리에 몇가지 재미있는 아이콘들이 있습니다. 그 중에서 우리는 "gnome-sudoku.png" 파일을 mycalc 프로그램의 실행 아이콘으로 사용해 보도록 합시다. 개발용 PC에서 아래 명령을 입력 합니다.

# cd /usr/share/icons/hicolor/48x48/apps/
# cp gnome-sudoku.png /opt/mini6410/qtopia2_apps/mycalc/mycalc.png

먼저 mycalc에 대한 desktop 파일을 작성 합니다.

# cd /opt/mini6410/qtopia2_apps/mycalc/
# vi mycalc.desktop

[Translation]
File=QtopiaSettings
Context=mycalc
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate hyphenation

[Desktop Entry]
Exec=mycalc
Icon=mycalc
Type=Application
Name[]=My Calculator
CanFastload=0



개발용 PC에서 작성된 mycalc.png, mycalc.desktop 파일을 SD메모리에 복사한후 SD메모리를 개발보드에 삽입한후 다음 명령을 실행 합니다.

# cp /sdcard/mycalc.desktop /opt/Qtopia/apps/Applications/
# cp /sdcard/mycalc.png /opt/Qtopia/pics/

파일 복사가 완료되면 개발보드를 재부팅 합니다.

qtopia

얼 입니다.

2. Qtopia2.2.0 에서 프로그램 그룹 등록 방법

이번 절에서는 Qtopia 2.2.0에 "MyApps" 라는 프로그램 그룹을 생성시키고 우리가 작성한 어플리케이션들을 새로 생성한 그룹에 포함시키도록 해 봅시다.
먼저 "/opt/mini6410/qtopia2_apps/MyApps" 디렉토리를 생성하고 생성된 디렉토리안에 ".directory" 파일을 작성 합니다.

# mkdir -p /opt/mini6410/qtopia2_apps/MyApps/

# cd /opt/mini6410/qtopia2_apps/MyApps/
# vi .directory

[Translation]
File=QtopiaApps
Context=MyApps
[Desktop Entry]
Name[]=MyApps
Icon=MyApps


프로그램 아이콘인 "MyApps.png" 파일이 있어야 합니다. 그리고 "MyApps" 프로그램 그룹에 포함시킬 어플리케이션 파일들을 추가 합니다.

# cd /opt/mini6410/qtopia2_apps/
# cp ./serialport/serialport.desktop ./MyApps
# cp ./led-testing/led-testing.desktop ./MyApps
# cp ./button-testing/button-testing.desktop ./MyApps
# cp ./adc-testing/adc-testing.desktop ./MyApps
# cp ./mycalc/mycalc.desktop ./MyApps
# cp ./pwm-testing/pwm-testing.desktop ./MyApps

"MyApps' 디렉토리를 압축 합니다.

# cd /opt/mini6410/qtopia2_apps/
# tar cvzf MyApps.tgz MyApps

압축한 파일을 SD 메모리에 복사한 후 아래 명령으로 개발보드에 다시 복사 합니다.

# cd /opt/Qtopia/apps/
# tar xvzf /sdcard/MyApps.tgz

마지막으로 프로그램 그룹 아이콘 파일인 MyApps.png 파일을 개발보드의 "/opt/Qtopia/pics/" 디렉토리에 복사한 후에 개발보드를 다시 시작하면 프로그램 그룹에 "MyApps" 그룹치 추가되어 있는 것을 확인 할 수 있습니다.

qtopia





       
       

Qt 4.7 포팅 가이드

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

제품 구매 : http://www.toolparts.co.kr
 

S3C6410 Start Kit QT 4.7.0 Porting Guide


 

* Update history

- 2011.4.18 : 초기 Release


  이 메뉴얼은 Qtopia-2.2.0, Qt-Extendded-4.4.3 (Qtopia Phone Edition), Qt 4.7.0를 S3C6410 Start Kit 개발보드에 포팅하는 일반적인 방법에 대한 내용을 설명하는 메뉴얼 입니다.

1. Qt4.7

이번 절에서는 Qt의 최신버젼인 Qt4.70을 어떻게 크로스 컴파일을 해서 개발보드에서 실행 시킬수 있는지에 대해서 배워 보도록 합니다.

qt-everywhere-opensource-src-4.7.0.tar.gz : Qt4.7.0 official source code

1.2 Qt4.7.0 official source code

Nokia에서 베포한 공식 소스 코드를 설치 합니다.
"/opt/mini6410" 디렉토리가 생성이 되어 있지 않다면 먼저 디렉토리를 생성한 후 tar 명령을 실행 해야 합니다.

# cd /opt/mini6410
# tar xvzf /opt/qt-everywhere-opensource-src-4.7.0.tar.gz

1.3 Cross compile Qt4.7.0

크로스 컴파일을 하기전에 아래 명령들을 실행 시킵니다.

# cd /opt/mini6410/qt-everywhere-opensource-src-4.7.0
# echo yes | ./configure -prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon

configuration 수행시 주요한 파라미터 설정들에 대한 설명 입니다.

-embedded arm: arm 용 embedded 버젼으로 설정
-xplatform qws/linux-arm-g++: arm-linux
-qt-mouse-tslib: 사용할 터치 스크린 라이브러리를 지정 합니다.
-prefix /opt/Qt4.7: Qt4.7이 설치될 디렉토리를 "/opt/Qt4.7" 로 지정 합니다.

다음 명령으로 Qt4.7을 컴파일 하고 설치 합니다.

# make && make install

참고로 && 명령 기호는 "make" 명령시 성공적으로 완료되어야만 "make install" 을 실행하도록 합니다.

1.4 Qt4.7.0을 개발보드에 설치

개발용 리눅스 PC에서 아래 명령을 수행 합니다.

# cd /opt
# tar cvzf qt4.7.tgz Qt4.7

"qt4.7.tgz" 파일을 SD카드에 복사한 후 개발보드에서 SD메모리를 삽입하고 다음 명령을 수행 합니다.

# rm /usr/local/Trolltech/QtEmbedded-4.7.0-arm/ -rf
# cd /opt
# tar xvzf /sdcard/qt4.7.tgz

주의 : 앞의 configuare 수행에서 Qt 4.7의 설치 디렉토리를 "/opt/Qt4.7" 로 지정 하였기 때문에 개발보드에 설치시 반드시 "/opt/Qt4.7" 에 설치 되로록 해야 합니다.

이제 개발보드에 설치된 Qt 4.7을 실행해 보도록 합시다.

1.5 Qt4.7.0을 개발보드에서 실행

Qt4.7를 실행하기 전에 반드시 Qtopia2.2.0 or Qt-Extended4.4.3 의 모든 프로세스들을 종료하고 실행 해야 합니다. Qtopia2.2.0을 종료하는 방법은 Qtopia2.2.0 GUI화면의 "Setting" 탭에서 "Off" 아이콘을 누르면 아래와 같은 화면이 실행 됩니다. "Terminate Server" 을 선택해서 Qtopia2.2.0를 종료 합니다.


qtopia

Qtopia2.2.0을 종료시키는 다른 방법으로는 startup script 인 "/etc/ init.d/rcS" 에서 qtopia startup 관련 아이템들을 주석처리하거나 삭제한 후 개발보드를 리부팅 하는 방법도 있습니다.

Qt4.7 예제 프로그램들을 그러면 어떻게 실행시켜야 할까요 ?"/opt/Qt4.7/examples/" 디렉토리에 Qt 4.7 샘플예제들이 있습니다.

# /opt/Qt4.7/demos/embedded/fluidlauncher/fluidlauncher

위의 명령을 바로 실행 시키면 Qt4.7에 대한 환경변수가 설정되어 있지 않아서 아마도 에러가 발생하면서 실행되지 않을 것입니다. 우리는 프로그램 실행을 쉽헤 하기 위해서 "/bin/setqt4env" 에 환경변수를 설정하는 스크립트를 만들어 놓았습니다.

# vi /bin/setqt4env

#!/bin/sh

if [ -e /etc/friendlyarm-ts-input.conf ] ; then
. /etc/friendlyarm-ts-input.conf
fi

true ${TSLIB_TSDEVICE:=/dev/touchscreen}
TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_TSDEVICE export TSLIB_CONFFILE
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_DISPLAY=:1
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin

if [ -c /dev/touchscreen ]; then
export QWS_MOUSE_PROTO="Tslib MouseMan:/dev/input/mice"
if [ ! -s /etc/pointercal ] ; then
rm /etc/pointercal
/usr/bin/ts_calibrate
fi
else
export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
fi

export QWS_KEYBOARD=TTY:/dev/tty1
export HOME=/root



작성된 스크립트에 실행 권한을 부여 합니다.

# chmod +x /bin/setqt4env

이제 다시 Qt 4.7 프로그램을 실행시켜 봅시다.

# . setqt4env
# cd /opt/Qt4.7/demos/embedded/fluidlauncher/
# ./fluidlauncher -qws

setqt4env 스크립트 수행시 setqt4env 앞의 "." 는 현재 쉡 세션에서만 환경변수를 유지 하라는 의미 입니다.

qtopia




       
       

Qt-Extendded-4.4.3 (Qtopia Phone Edition) 포팅 가이드

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

제품 구매 : http://www.toolparts.co.kr
 

S3C6410 Start Kit Qt-Extendded-4.4.3 (Qtopia Phone Edition) Porting Guide


 

* Update history

- 2011.4.18 : 초기 Release


  이 메뉴얼은 Qtopia-2.2.0, Qt-Extendded-4.4.3 (Qtopia Phone Edition), Qt 4.7.0를 S3C6410 Start Kit 개발보드에 포팅하는 일반적인 방법에 대한 내용을 설명하는 메뉴얼 입니다.

1. Qt-Extended 4.4.3

Qt-Extended4.4.3 를 PC버젼과 ARM버젼으로 컴파일 하는 방법과 ARM개발보드에서 실행하는 방법에 대해서 설명 합니다. 참고로 Qt-Etended는 4.4.3에서 더이상 노키아에서 지원을 하지 않을 예정이고 Qt SDK 라이브러리에 통합 된다고 합니다.

qt-extended-opensource-src-4.4.3.tar.gz : Qt-Extended4.4.3 source code


1.1 Installs Qt-Extended4.4.3 source code

qt-extended-opensource-src-4.4.3.tar.gz 파일을 "/opt" 디렉토리에 복사 합니다. "/opt/mini6410/qt-extended4.4.3" 디렉토리를 생성하고 이동한 후에 압축을 해제 합니다.

# mkdir -p /opt/mini6410/qt-extended4.4.3
# cd /opt/mini6410/qt-extended4.4.3
# tar xvzf /opt/qt-extended-opensource-src-4.4.3.tar.gz

1.2 Compile Qt-Extended4.4.3 for X86

X86에디션을 위한 빌드디렉토리를 생성 합니다.

# mkdir -p /opt/mini6410/qt-extended4.4.3/buildx86


컴파일을 수행하기 전에 먼저 아래와 같이 컨피규레이션을 수행 합니다.

# export LC_CTYPE="en_US"
# export LANG="en_US"
# export LANGUAGE="en_US"

# cd /opt/mini6410/qt-extended4.4.3/buildx86
# echo yes | ../qt-extended-4.4.3/configure \
-ui-type mobile \
-release \
-clean \
-sound-system alsa \
-build-qt \
-no-sxe \
-no-ssl \
-no-v4l2 \
-no-vpn \
-no-phonon \
-no-libamr \
-dynamic-rotation \
-mediaengines cruxus \
-remove-mediaengine gstreamer,helix \
-pictureflow \
-remove-module bluetooth,drm \
-no-dbus \
-no-dbusipc \
-add-displaysize 240x320 \
-extra-qt-embedded-config "-qt-freetype -no-webkit -no-dbus -qt-gfx-transformed -qt-gfx-linuxfb" \
-extra-qt-config "-no-webkit" \
2>&1 | tee ../qtopiaconfig.log

컨피규레이션을 수행할때 처음에는 언어 설정을 "en_US" 로 합니다. 왜냐하면 Fedora9 의 기본 인코딩 설정이 "en_US.UTF-8" 로 되어 있기 때문 입니다. 언어 설정은 나중에 Qt-Extended4.4.3 compile script 에서 다시 설정 할 수 있습니다. 명령행 인자의 더 자세한 설명은 "../qt-extended-4.4.3/configure -help" 로 확인 하시기 바랍니다. 아래 명령으로 실제로 컴파일을 하고 설치 합니다.

# bin/qbuild 2>&1 | tee ../qtopiamake.log
# bin/qbuild image


"2>&1 | tee ../XXX.log" 의 의미는 컴파일 결과믜 모든 내용을 파일로 저장 한다는 의미 입니다.

1.3 Run Qt-Extended4.4.3 for X86

컴파일이 완료된 Qt-Extended4.4.3는 "runqtopia" 스크립트로 실행 할 수 있습니다.


# cd /opt/mini6410/qt-extended4.4.3/buildx86
# bin/runqtopia


Qt-Extended4.4.3가 PC에서 실행된 화면 입니다.

qtopiaqtopia

1.4 Compile Qt-Extended4.4.3 for ARM

ARM 개발보드용 컴파일을 위한 빌드디렉토리를 생성 합니다.

# mkdir -p /opt/mini6410/qt-extended4.4.3/buildarm


컴파일을 수행하기 전에 먼저 아래와 같이 컨피규레이션을 수행 합니다.

# export LC_CTYPE="en_US"
# export LANG="en_US"
# export LANGUAGE="en_US"

# cd /opt/mini6410/qt-extended4.4.3/buildarm
# echo yes | ../qt-extended-4.4.3/configure \
-ui-type mobile \
-xplatform linux-arm-g++ \
-arch arm \
-release \
-clean \
-prefix /opt/Qtopia4.4.3 \
-sound-system oss \
-build-qt \
-no-sxe \
-no-ssl \
-no-v4l2 \
-no-vpn \
-no-phonon \
-no-libamr \
-dynamic-rotation \
-mediaengines cruxus \
-remove-mediaengine gstreamer,helix \
-pictureflow \
-remove-module bluetooth,drm \
-no-dbus \
-no-dbusipc \
-add-displaysize 240x320 \
-extra-qt-embedded-config "-embedded arm -xplatform qws/linux-arm-g++ -no-cups -nomake examples -nomake demos -qt-libjpeg -qt-libmng -qt-libpng -no-dbus -depths 16,32 -qt-gfx-linuxfb -qt-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -qt-kbd-tty -no-kbd-usb -no-kbd-sl5000 -no-kbd-yopy -no-kbd-vr41xx -no-kbd-qvfb -qt-mouse-tslib -no-webkit -no-openssl -no-phonon -no-phonon-backend -no-nas-sound -no-exceptions -svg" \
-extra-qt-config "-no-webkit" \
2>&1 | tee ../qtopiaconfig.log

컨피규레이션을 수행할때 처음에는 언어 설정을 "en_US" 로 합니다. 왜냐하면 Fedora9 의 기본 인코딩 설정이 "en_US.UTF-8" 로 되어 있기 때문 입니다. 언어 설정은 나중에 Qt-Extended4.4.3 compile script 에서 다시 설정 할 수 있습니다. 명령행 인자의 더 자세한 설명은 "../qt-extended-3.4.3/configure -help" 로 확인 하시기 바랍니다. 아래 명령으로 실제로 컴파일을 하고 설치 합니다.

컴파일을 수행하기 전에 최신이 컴파일러를 사용하기 위해서 몇가지 소스 코드를 수정해야 합니다. 그렇지 않고 그냥 컴파일을 하면 아래와 같이 Syntax 에러가 발행 합니다.

/opt/mini6410/qt-extended4.4.3/qt-extended-4.4.3/src/libraries/qtopia/qphoneprofile.cpp:1026:1: error: 'QPhoneProfile::Schedule::Schedule' names the constructor, not the type

컴파일 에러를 해결하기 위해서 qphoneprofile.cpp 파일의 1026 라인을

QPhoneProfile::Schedule::Schedule &QPhoneProfile::Schedule::operator=(const Schedule &other)

아래와 같이 수정 합니다.

QPhoneProfile:: Schedule &QPhoneProfile::Schedule::operator=(const Schedule &other)

그리고 나서 컴파일을 합니다.

# bin/qbuild 2>&1 | tee ../qtopiamake.log
# bin/qbuild image

컴파일이 성공적ㅇ로 완료되면 "/opt/mini6410/qt-extended4.4.3/buildarm/image" 디렉토리에 바이너리 파일이 생성 됩니다.

1.5 Run Qt-Extended4.4.3 for ARM

위에헛 컴파일한 이미지 파일을 압축 하고 SD 메모리 카드에 복사 합니다.


# cd /opt/mini6410/qt-extended4.4.3/buildarm/
# tar cvzf image.tgz image


SD메모리 카드를 개발보드에 삽입하고 개발보드에 압축을 해제해서 설치 합니다.

# rm /opt/Qtopia4.4.3 -rf
# cd /opt
# tar xvzf /sdcard/image.tgz
# mv /opt/image /opt/Qtopia4.4.3


qt-extended4.4.3을 실행하기 위해서는 Qtopia2.2.0 or Qt4.7의 실행을 종료 하고 실행 해야 합니다. Qt 2.2.0을 종료하는 방법은 "3.4.4 Qt4.7.0을 개발보드에서 실행" 절을 참조하시기 바랍니다.

실행을 편하게 하기 위해서 "run_my_qtopia4" 스크립트를 미리 작성해 두었습니다.

# vi /bin/run_my_qtopia4

#!/bin/sh

if [ -e /etc/friendlyarm-ts-input.conf ] ; then
. /etc/friendlyarm-ts-input.conf
fi

true ${TSLIB_TSDEVICE:=/dev/touchscreen}

TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_TSDEVICE
export TSLIB_CONFFILE
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal

export QTDIR=/opt/Qtopia4.4.3
export QPEDIR=/opt/Qtopia4.4.3
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH

if [ -c /dev/touchscreen ]; then
export QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}"
if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
rm /etc/pointercal
fi

else

export QWS_MOUSE_PROTO="USB:/dev/input/mice" >/etc/pointercal
fi

export QWS_KEYBOARD="TTY:/dev/tty1"
#export QWS_DISPLAY="Transformed:mmWidth66:mmHeight114:Rot90:0"

FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)

case "$FB_SIZE" in 800,480)

export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1" ;; 480,272)
export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1" ;; *)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1" ;; esac
export LANG="en_US"
export HOME=/root/Qtopia4Home

if [ ! -e $HOME ]; then
mkdir -p $HOME;
fi
if [ ! -e /usr/share ]; then
mkdir /usr/share;
fi
if [ ! -e /usr/share/zoneinfo ]; then
ln -s /opt/Qtopia/etc/zoneinfo /usr/share/;
fi
if [ ! -e $HOME/Settings/Trolltech/qpe.conf ]; then
mkdir -p $HOME/Settings/Trolltech/
cp $QPEDIR/etc/default/Trolltech/qpe.conf

$HOME/Settings/Trolltech/qpe.conf -f
fi

export QTOPIA_PHONE_DUMMY=1
exec $QPEDIR/bin/qpe



run_my_qtopia4 스크립트 수행 내역 입니다.

a) 터시 스크린 라이브러리 tslib parameters를 설정 합니다.
b) Set Qtopia environment variables
- QTDIR, QPEDIR : Qtopia Image path configuration
- QWS_MOUSE_PROTO : touch screen devices
- QWS_KEYBOARD : Hard Key points to the development board for the tty device.
c) set the environment variable configuration
- QWS_DISPLAY LCD display parameters, according to the different screen resolution, set a different DPI, the text size of the display medium.
d) GSM Modem을 사용하지 않는 경우에 QTOPIA_PHONE_DUMMY = 1 설정은 필요하지 않습니다.
e) 마지막으로 Qtopia를 실행 합니다.

"run_my_qtopia4" 파일에 실행 권한을 부여하고 시스템 부팅시 자동으로 시작 되도록 하기 위해서는 "/etc/init.d/rcS" 파일에 등록을 합니다.

# chmod +x /bin/run_my_qtopia4
# vi /etc/init.d/rcS

"/bin/qtopia &" 의 내용(Qtopia 2.2.0 실행) 부분을 "/bin/run_my_qtopia4 &" 로 수정 합니다. 이렇게 하면 시스템 부팅시 자동으로 "Qt-Extended4.4.3" 가 실행 됩니다.


       
       

Qt 2.2.0 포팅 가이드

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

제품 구매 : http://www.toolparts.co.kr
 

S3C6410 Start Kit QT 2.2.0 Porting Guide


 

* Update history

- 2011.4.18 : 초기 Release


  이 메뉴얼은 Qtopia-2.2.0, Qt-Extendded-4.4.3 (Qtopia Phone Edition), Qt 4.7.0를 S3C6410 Start Kit 개발보드에 포팅하는 일반적인 방법에 대한 내용을 설명하는 메뉴얼 입니다.

1. Qt/Qtopia 소개
1.1 What is Qt

Qt 는 1995년에 TrollTech에서 개발하고 2008년에 NOKIA에 의해서 좀더 강력하게 개선된 cross-platform C + + graphical user interface library 입니다.

(1) cross-platform features
Qt라이브러리는 소스코드의 수정없이 Qt가 지원하는 여러 플랫폼에서 컴파일만 다시 하면 사용 할 수 있고, 자동으로 컴파일된 플랫폼에 맞는 GUI Interface를 지원 합니다. 아래 플랫폼들은 현재 Qt에서 지원하고 있는 플랫폼 리스트들 입니다.

- Linux/X11: X Window System (such as Solaris, AIX, HP-UX, Linux, BSD). Support for KDevelop and Eclipse IDE integration.
- Mac: Apple Mac OS X. Cocoa-based framework. Supports Universal Binary. Support to Xcode editing, compiling, and testing.
- Windows: Microsoft Windows. Support the Visual Studio integration.
- Embedded Linux: Embedded Linux. You can remove unused components compile and function.
  Through their own window system QWS, without relying on X Window System, directly into the Linux frame buffer.
  Can reduce memory consumption. And to provide a virtual frame buffer QVFb, easy embedded on the desktop testing.
- Windows CE/Mobile: Windows CE.
- Symbian: Symbian platform.
- Meego: Meego.

(2) Object-Oriented
Qt Qt good package mechanism makes a very high degree of modularity, reusability, well, for users to develop, it is very convenient. Qt provides a known signals/slots to replace the security type of callback, which makes interoperability between the various components becomes very simple.

(3) Rich API
Qt가 처음 개발되었을 때는 단지 잘 구조화된 C++ graphics library 였습니다. 하지만 이후에 많은 것들이 업그레이드 되고 통합되어져서 최근에는 Database, OpenGL library, multimedia database, network, script library, XML library, WebKit library 등을 지원하고 있고 코어 라이브러리 또한 프로세스간 통신, multi-threading module 등을 지원하고 있습니다. 그리고 Qt는 "Code Less; Create More; Deploy Anywhere." 의 목적을 가지고 개발되어 지고 있습니다.

Qt development resources:
1) Qt development tools Download: http://qt.nokia.com/
2) Qt development documents: http://doc.qt.nokia.com/

1.2 What is Qtopia 2.2

Qtopia는 Qt cross-platform library 를 베이스로한 소프트웨어 플랫폼 입니다. 주로 embedded Linux system, PDA or mobile phone 등에서 사용되어 지고 있습니다. Qtopia는 games and multimedia, ynchronization framework, PIM applications, Internet applications , development environment, input method, Java integration, localization support, personalization options, and wireless support 기능들을 개발자가 최대한 개발 시간을 단축 시킬수 있도록 윈도와 비슷한 운영 플랫폼을 지원합니다. 최초의 Qt 개발 회사는 TrollTech 이었는데, TrollTech 은 2008년도에 Nokia에 이해서 인수되어 졌고, 그 이후에 Qtopia는 Qt Extended로 이름이 변경 되었습니다. Nokia는 최근에 Qt Extended 의 가장 최신 버젼인 Qt Extended 4.4.3 을 릴리즈 하였습니다.

2 Qt 개발환경 설치

2.1 Installing Linux operating system

Qt개발 환경을 꾸미기 전에 아래 2가지가 기본적으로 필요합니다. 여기서 테스트한 개발용 PC의 환경은 VMware에 설치된 Fedora9 환경 입니다. 다른 환경에서는 테스트 되지 않아서 에러가 발생 할 수 있습니다.
1) Install Fedora9
2) install some arm cross-compiler

2.1.1 Installation Fedora9

Fedora9의 자세한 설치 방법은 Install Fedora 9 문서를 참조하세요.

2.1.2 Install Cross-compiler

개발보드와 함께 제공된 CD에서 "arm-linux-gcc-v6-vfp-20101103.tgz" 파일을 개발용 리눅스 PC의 "/opt" 에 복사 합니다. 그리고 나서 tar 압축을 해제 합니다. 리눅스 개발 환경설정에서 이미 크로스 컴파일러를 설치 하였다면 이 과정은 다시 하지 않아도 됩니다.

# cd /
# tar xvzf /opt/arm-linux-gcc-v6-vfp-20101103.tgz


컴파일러가 어느 디렉토리에서나 실행 될 수 있도록 합니다. 아래 처럼 명령해에서 export를 하면 매번 로그인 할때마다 실행해 주어야 하는 불편함이 있습니다. 가능 하면 사용자의 프로파일에 추가하도록 합니다. ".bash_profile" 등. 프로파일 이름은 개발용 PC의 환경에 따라서 달라 질 수 있습니다.

# export /opt/FriendlyARM/toolschain/4.5.1/bin/:$PATH

컴파일러와 Path 설정이 잘 되었는지 확인 합니다.

# arm-linux-gcc -v

3. Qtopia2.2.0 Compile

Qtopia2.2.0 의 X86 과 ARM version 을 어떻게 컴파일 해서 실행시키는지 알아 봅니다. 컴파일 하는데 필요한 파일 리스트 드립니다.

qtopia-free-src-2.2.0.tar.gz : Qtopia2.2.0 official original package source code
qtopia2.2.0.friendlyarm.patch : Used to repair Qtopia2.2.0 compile error in Fedora9 patch

3.1 Qtopia for X86

3.1.1 qtopia2.2.0 소스코드 설치 for X86

# cd /opt
# tar xvzf qtopia-free-src-2.2.0.tar.gz


3.1.2 qtopia2.2.0 컴파일 for X86

configure 와 make 2가지를 실행해야 합니다. configure하는 명령어가 많이 기네요.

# cd /opt/qtopia-free-2.2.0/
# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif' -qpe '-edition pda -displaysize 240x320' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
# make


Fedora9 에서는 원본 소스를 그대로 컴파일 하면 아래와 같은 에러가 발생 합니다. 에러를 없애기 위해서는 약간의 패치가 필요 합니다.

 

/opt/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h: 214: warning: typedef in this statement is ignored
/opt/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h: 230
: Error: 'QWSInputMethod' not declared
/opt/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h: 237:
error: 'QWSGestureMethod' undeclared
make [1]: *** [allmoc.o]
error 1


위와 같은 컴파일 에러가 발생하는 이유는 Qtopia2.2.0 가 약간은 오래된 몇년전의 버젼이고 Fedora9 리눅스의 기본 gcc 컴파일러는 4.3 버젼으로 옛날 버젼의 C/C++ 문법을 지원하지 않기 때문에 발생하는 것입니다. 그래서 오래된 버젼의 C/C++ 문법을 사용하는 Qtopia2.2.0 의 소스코드를 수정해 주어야 합니다.

3.1.3 qtopia2.2.0 컴파일 에러 Patch

제공 CD의 "qtopia2.2.0.friendlyarm.patch" 파일을 개발용 PC의 "/opt" 디렉토리에 복사하고 다음 명령을 실행 시킵니다.

# cd /opt/qtopia-free-2.2.0
# patch -p1 < /opt/qtopia2.2.0.friendlyarm.patch

패치가 완료되면 다시 컴파일을 위해서 configure 를 합니다.

# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif' -qpe '-edition pda -displaysize 240x320' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
# make
# make install

configure 파라미터에 대한 자세한 설명은 명령행에서 "./configure - help " 를 하면 자세한 설명이 나옵니다.

3.1.4 qtopia2.2.0 실행

PC환경에서 qtopia2.2.0를 실행 시키기 위해서는 Qtopia simulator qvfb가 필요하고, QTDIR 등의 약간의 환경변수도 설정 해야 합니다. 그래서 run 스크립트 파일일 미리 작성해 놓았습니다. 그 내용을 보면 아래와 같습니다.

# cd /opt/qtopia-free-2.2.0
# vi run

run 스크립트 파일의 내용 입니다.

#!/bin/sh

./qt2/bin/qvfb -width 480 -height 272 -depth 16 &
cd qtopia/image
mkdir root 2>/dev/null || true

export HOME=$PWD/root cd opt/Qtopia
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBARAY_PATH
export QTDIR=$PWD export QPEDIR=$PWD
export KDEDIR=$PWD/../kde

sleep 3
qpe


위의 내용을 입력하고 저장 합니다. 그리고 나서 run 스크립트 파일에 실행 권한을 부여하고 실행 합니다.

# chmod +x ./run
# ./run


qtopia2.2.0 시뮬레이터가 실행된 화면 입니다.



X86버젼의 Qtopia에 대한 컴파일 과정과 실행과정은 설명하였으므로 다음은 ARM용(S4C6410 Start Kit)용 에 대한 컴파일 과정과 실행 방법에 대해서 설명 하도록 하겠습니다.

3.2 Qtopia for ARM

3.2.1 qtopia2.2.0 소스코드 설치 for ARM

# mkdir /opt/mini6410
# cd /opt/mini6410
# tar xvzf /opt/qtopia-free-src-2.2.0.tar.gz
# cd /opt/mini6410/qtopia-free-2.2.0
# patch -p1 < /opt/qtopia2.2.0.friendlyarm.patch

3.2.2 qtopia2.2.0 컴파일 for ARM

configure 수행

# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g++-exceptions -no-qvfb -xplatform linux-arm-g++ -tslib' -qpe '-edition pda -displaysize 480x272 -xplatform linux-arm-g++ -luuid' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'

컨피규어 파라미터중 tslib에 대한 설정이 없는 것은 이미 관련 라이브러리와 헤더 파일이 소스에 포함 되어 있기 때문에 빠진 것입니다. 나머지 자세한 파라미터에 관한 내용은 ./configure - help 의 내용을 참조 하시기 바랍니다.

컴파일 하고 설치 합니다.

# make
# make install


컴파일이 성공적으로 끝나면 "/opt/mini6410/qtopia-free-2.2.0/qtopia/image" 에 결과 이미지 파일이 생성 됩니다.

3.2.3 Run qtopia2.2.0 on development board

크로스 컴파일한 qt 바이너리 이미지를 압축 해서 SD메모리 카드로 복사 합니다.

# cd /opt/mini6410/qtopia-free-2.2.0/qtopia/image
# tar cvzf opt.tgz op
t

개발보드에 SD메모리 카드를 삽입하고 개발보드의 터미널에서 다음 명령을 입력 합니다.

# killall qpe qss quicklauncher
# rm /opt -rf
# tar xvzf /sdcard/opt.tgz


"run_my_qtopia" 라는 이름으로 실행 스크립트를 생성 합니다.

# vi /bin/run_my_qtopia

#!/bin/sh

export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QTDIR=/opt/Qtopia
export QPEDIR=/opt/Qtopia
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO="TPanel:/dev/input/mice"
export QWS_KEYBOARD=TTY:/dev/tty1
export HOME=/root

exec $QPEDIR/bin/qpe


"run_my_qtopia" 스크립트를 실행 합니다.

run 스크립트에서 첫번째로 tslib parameters 에 대한 설정이 필요 합니다. "TSLIB_TSDEVICE" 환경 변수는 터치 스크린 디바이스 드라이버 파일 입니다. S3C6410 Start Kit 개발보드는 터치 구현을 위해서 다음과 같이 3개의 디바이스 드라이버를 제공 합니다. 일반적으로는 "/dev/touchscreen-1wire" 로 설정 하면 됩니다. 나머지 2개는 특별한 하드웨어가 필요 합니다.

First-line touch screen: TSLIB_TSDEVICE = /dev/touchscreen-1wire
ADC touch screen use: TSLIB_TSDEVICE = /dev/touchscreen
touch screen with serial: TSLIB_TSDEVICE = /dev/ttySAC3

Qtopia실행 이미지가 위치한 "QTDIR", "QPEDIR" 환경 변수를 설정 합니다.
"QWS_MOUSE_PROTO", "QWS_KEYBOARD" 는 Qtopia 입력 디바이스 환경 변수 입니다.
마지막으로 실제로 Qtopia를 실행 시는 "qpe" 를 실행 합니다.

"run_my_qtopia" 파일에 실행 권한을 주고 시스템 부팅시 자동으로 Qtopia가 실행 될 수 있도록 "rcS" 파일을 수정 합니다.

# chmod +x /bin/run_my_qtopia
# vi /etc/init.d/rcS


원래의 내용

/bin/qtopia &


"run_my_qtopia" 를 실행 하도록 수정

/bin/run_my_qtopia &


시스템(개발보드)를 재부팅 하면 자동으로 내가 작성한 Qtopia가 실행 될 것입니다.


       
       

S3C6410 Start Kit OS Porting guide

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


제품 구매 : http://www.toolparts.co.kr

 

S3C6410 Start Kit OS Porting guide

 

* Update history

- 2011.1.13 : 초기 Release


 

1. Boot from SD memory

S3C6410은 SD 메모리 카드를 이용해서 부팅을 할 수가 있는데, 그러기 위해서는 Windows PC에서 Bootloader를 SD 메모리에 퓨징 해야 합니다. SD메모리에 퓨징을 한다는 의미는 그냥 파일을 복사하는 방식이 아니라 삼성에서 제공하는 "IROM_SD_Fusing_tool.exe" 프로그램을 이용해서 SD메모리에 부트로더를 퓨징 한다는 의미 입니다. SD메모리에 퓨징을 해도 SD메모리 상에는 어떤 파일도 보이지는 않습니다. 그리고 "SD-Flasher.exe" 또한 SD퓨징 툴로 삼성에서 제공하는 기본 프로그램에서 조금더 개선한 SD퓨징 툴 입니다. 그 차이점은 아래 표를 참조하시기 바랍니다.

비교 IROM_SD_Fusing_tool.exe SD-Flasher.exe
지원 OS Only supported Windows XP Can support WindowsXP/Vista/Windows7
지원하는 SD메모리 High speed SD 카드를 지원하는 버젼의 툴 사용시 선택적 지원 High speed SD와 일반 SD카드 모두 지원
Auto Scan SD Card SD메모리 드라이브를 사용자가 선택 해야 함 SD메모리 드라이브 자동 스캔

1.1 Programming bootloader to the SD card
1.1.1 Bootloader Introduction

* U-Boot
삼성전자의 S3C6410 USB 다운로드 기능을 지원하는데, 우리는 여기세엇 좀더 개선된 기능을 가진 모든 소스를 공개한 USB다운로드를 제공합니다.

(1) 좀더 개선되고 다양해진 다운로드 메뉴
(2) SD card boot configuration 개선
(3) yaffs2 파일시스템을 리눅스 부팅없이 바로 다운로드 가능
(4) Windows CE를 위한 Nboot 다운로드 기능 지원
(5) Windows CE OS이미지(NK.bin) 다운로드 지원
(6) Support original shell

주의 : 삼성전자의 U-Boot는 현재 SDHC card (more than 2G's High-capacity SD cards) 를 지원하지 못합니디. 그래서 2GB이하의 SD메모리를 사용해야 합니다.

* Superboot
U-boot보다 좀더 사용자들에게 좀더 친숙하고 강력한 Superboot라는 부트 로더가 있습니다. 하지만 이것은 소스를 공개하지 않고 있습니다. 자세한 사항은 아래 비교표를 참조하세요.

Compare Item Superboot 개선된 U-boot Original U-boot
128M/256M DDR RAM 자동인식 Support Not support Not support
OS이미지가 RAM보다 클경우 지원 Support Not support Not support
Stepping loader 다운로드 via USB Support Support Support
Linux 커널 다운로드 via USB Support Support Support
Yaffs2 댜운로드 via USB Support Support Some support
UBIFS 다운ㄹ드 via USB Support Not support Not support
EBOOT.nb0 다운로드 Not necessary Not necessary Support
NK.bin 다운로드 via USB Support Not support Not support
NK.nb0 다운로드 via USB Not support Support Not support
Boot logo change 기능(WinCE) via USB Support(BMP 파일 포맷) Not support Some support(파일변환 필요)
Firmware 다운로드 Support Support Support
Firmware 실행 in memory Support Not support Not support
Startup parameters Support Support Support
Normal SD card 2G Support Support Support
High-speed large-capacity SD Support Not support Not support
Stepping loader 다운로드 via SD Support Not support Not support
Linux 커널 다운로드 via SD Support Not support Not support
Yaffs2 댜운로드 via SD Support Not support Not support
UBIFS 다운ㄹ드 via SD Support Not support Not support
NK.bin 다운로드 via USB Support Not support Not support
Boot logo change 기능(WinCE) via USB Support Not support Not support
Run the Linux in SD memory card Support Not support Not support
Run the Ubuntu in SD memory card Support Not support Not support
Run the Android in SD memory card Support Not support Not support
Run the Windows CE in SD memory card Support Not support Not support

1.1.1 Bootloader programming based on WindowsXP

SD메모리 카드 이용시 몇몇 노트북이나 데스크탑에 있는 메모리 리더기를 사용하지 마세요. 반드시 USB SD메모리 리더기를 사용하셔야 합니다. 추가적으로 SD-Flasher.exe 는 메모리 카드의 맨 앞부분의 130MB를 삭제하고 분할 합니다. 그래서 256MB이하의 SD 메모리는 사용 할 수가 없고 2GB메모리 카드를 권장 합니다. 그리고 "SD-Flasher.exe" 프로그램을 실행하기 전에 미리 FAT32로 SD메모리를 포맷 한 다음 실행해야 합니다.

Step1: CD/tools/SD-Flasher.exe 실행

s3c6410

Step2: Locations button s3c6410 to find the programming of the superboot, as shown in Figure

s3c6410

Step3. FAT32으로 포맷된 SD메모리를 USB 메모리 리더기를 통해서 PC연결 한 후 "Scan" 버튼을 누르면 자동으로 SD 메모리 드리이브를 찾아서 보여 줍니다.

s3c6410

Step4. 그리고 나서 "Fuse" 버튼을 누르면 superboot 가 SD 메모리에 Write 됩니다.

Superboot가 SD메모리에 잘 Write되었는지 확인하는 방법은 개발보드의 Switch2를 SDBOO모드로 설정하고 전원을 인가 했을때 개발보드의 LED1이 깜빡이면 정상적으로 동작하는 것입니다. 만약 LED1이 깜빡이지 않거나 Serial포트로 어떤 내용도 출력되지 않는다면 SD메모리에 Superboot가 제대로 Write되지 않은 것입니다. 이런 경우에는 위의 Step1 ~ 4가 제대로 이루어 졌는지 확인한 후 진행해야 합니다.


1.1.1 Bootloader programming based on Windows7

Windows Xp와 마찬가지로 SD메모리 카드 이용시 몇몇 노트북이나 데스크탑에 있는 메모리 리더기를 사용하지 마세요. 반드시 USB SD메모리 리더기를 사용하셔야 합니다. 추가적으로 SD-Flasher.exe 는 메모리 카드의 맨 앞부분의 130MB를 삭제하고 분할 합니다. 그래서 256MB이하의 SD 메모리는 사용 할 수가 없고 2GB메모리 카드를 권장 합니다.

Step1: CD/tools/SD-Flasher.exe 를 관리자 권한으로 실행하고 "ReLayout" 버튼을 클릭해서 SD 메모리 카드의 영역을 분할 합니다.

s3c6410

Step2: Locations button s3c6410 to find the programming of the superboot, as shown in Figure

s3c6410

Step3. FAT32으로 포맷된 SD메모리를 USB 메모리 리더기를 통해서 PC연결 한 후 "Scan" 버튼을 누르면 자동으로 SD 메모리 드리이브를 찾아서 보여 줍니다. 그리고 아래와 같이 "Available" 이 "No"로 된 SD메모리 카드는 사용 하실 수 없습니다.

s3c6410

Step4. "Available" 이 "No"로 될 경우에는 "ReLayout"을 다시 한번 합니다.

s3c6410

SD메모리의 파티션 분할이 완료가 되면 다시 한번 "Scan" 을해서 사용가능한 SD 메모리 카드를 검색 합니다.

Step5. "Fuse" 버튼을 눌러서 Superboot를 Write 합니다.

Superboot가 SD메모리에 잘 Write 되었는지 확인하는 방법은 "1.1.1 Bootloader programming based on WindowsXP" 의 경우와 동일 합니다.

1.2 OS Install

1.2.1 Quick install Windows CE system to NAND flash

개발보드는 공잘 출하시 Linux운영체제가 포팅 되어 있습니다. Windows CE운영체제로 OS를 업데이트 하기 위해서는 다음 절차에 따라서 진행 하면 됩니다.

Step1. 제공 CD의 Image 폴더안의 FriendlyARM.ini 파일의 "OS= CE6" 부분을 수정하고 나서 모든 파일들을 SD메모리 카드의 루트에 복사 합니다.

s3c6410

Step2. 개발보드에 SD메모리 카드를 삽입하고 Switch2를 SDBOO모드로 설정 합니다.
Step3. 개발보드의 전원을 인가하면 초기에 Buzzer소리와 함께 개발보드의 LED4가 깜박이고, 순차적으로 LED4 ~ 1번 순으로 점멸 합니다. OS 업데이트가 완료 될때까지의 시간은 약 20 ~30초 정도가 소요 됩니다.
Step4. 다운로드가 완료되면 LED1,2,3,4 이 깜빡입니다.
Step5. Switch2를 Nand 부트 모드로 전환하고 Reboot을 하면 업데이트된 OS 시스템이 실행 됩니다.

LED4 ~ 1번이 동시에 점멸을 하며 부저가 빠르게 울리면 FriendlyARM.ini 파일의 설정과 디렉토리 구성이 잘못되었다는 것입니다.

1.2.2 Quick install Android system to NAND flash

안드로이드 포팅도 WindowsCE의 경우와 많이 다르지는 않습니다.
Step1. 제공 CD의 Image 폴더안의 FriendlyARM.ini 파일의 "OS= Android" 부분을 수정하고 나서 모든 파일들을 SD메모리 카드의 루트에 복사 합니다.

1.2.3 Quick install Linu system to NAND flash

리눅스 포팅도 WindowsCE의 경우와 많이 다르지는 않습니다.
Step1. 제공 CD의 Image 폴더안의 FriendlyARM.ini 파일의 "OS= Linux " 부분을 수정하고 나서 모든 파일들을 SD메모리 카드의 루트에 복사 합니다.

1.2.4 Quick run Ubuntu system from SD memory

Ubuntun 시스템은 동작하는데 256MB의 RAM과 1GB정도의 저장 공간이 필요합니다. 그래서 Nand플래시에서 실행시키기 보다는 SD메모리에 설치하여 실행시키는 편이 낫습니다.

Step1. 제공 CD의 Image 폴더안의 FriendlyARM.ini 파일의 "OS= Ubuntu ", "Action= Run" 부분을 수정하고 나서 모든 파일들을 SD메모리 카드의 루트에 복사 합니다.
Step2. 개발보드에 SD메모리 카드를 삽입하고 Switch2를 SDBOO모드로 설정 하고 전원을 인가하면 SD메모리에서 Ubuntu 시스템이 시작 됩니다.

1.2.5 Configuration FriendlyARM.ini

위의 간단한 운영체제 설치과정은 Superboot에서 모든 처리를 해주기 때문에 가능 합니다. 여기에서는 좀더 자세한 FriendlyARM.ini 파일의 설정에 대해서 설명 합니다.

* FriendlyARM.ini 파일의 내용

# This line cannot be removed. By FriendlyARM (www.arm9.net)

 

# Notice: for the image filename include "ram128", "ram256" or "-s"

#

# "Ram128" means it is for the board with 128M RAM

# "Ram256" means it is for the board with 256M RAM

 

CheckOneButton = No

Action = install

OS = Linux

 

VerifyNandWrite = No

 

StatusType = Beeper | LED

 

#################### Linux #####################

Linux-BootLoader = Linux/u-boot_nand-ram128.bin

Linux-Kernel = Linux/zImage_n43

Linux-CommandLine = root = /dev/mtdblock2 rootfstype=yaffs2 init=/ linuxrc console=ttySAC0, 115200

Linux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4.img

Linux-RootFs-RunImage = Linux/rootfs_qtopia_qt4.ext3

 

################### WindowsCE6 #################

WindowsCE6-Bootloader = WindowsCE6\NBOOT_N43-RAM256.nb0

WindowsCE6-BootLogo = WindowsCE6\bootlogo.bmp

WindowsCE6-InstallImage = WindowsCE6\NK_n43.bin

WindowsCE6-RunImage = WindowsCE6\NK_n43.bin

 

################### Android ####################

Android-BootLoader = Android/u-boot_nand-ram128.bin

Android-Kernel = Android/azImage_n43

Android-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/ linuxrc console=ttySAC0,115200

Android-RootFs-InstallImage = Android/rootfs_android.ubi

Android-RootFs-RunImage = Android/rootfs_android.ext3

 

################### Ubuntu #####################

Ubuntu-BootLoader = Ubuntu/u-boot_nand-ram128.bin

Ubuntu-Kernel = Ubuntu/uzImage_n43

Ubuntu-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

Ubuntu-RootFs-InstallImage = Ubuntu/rootfs_ubuntu.ubi

Ubuntu-RootFs-RunImage = Ubuntu/rootfs_ubuntu.ext3

 

############### UserBin part #################

UserBin-Image = WindowsCE/NK.nb0

userBin-StartAddress = 50100000



* 각 설정 항목에 대한 상세한 설명

Item(Case insensitive) Description
CheckOneButton When the "Yes", You need to press the power on or reset the board before any key steps behind before it is implemented; When the "No"When turned on or reset automatically after the steps behind the general volume can be set when programming "No"
The default is "No"

USB다운로드 모드 or Superboot 메뉴로 진입하기 위해서는 "Yes" 로 설정해야 합니다.
Action

Set the action to be performed, you can: Install / Run / Null, Representing:

Install - InstalledNand Flash;

Run - Directly from theSDCard operation

Null - No Action; Set is empty, also said NULL

The default is "Install"

OS

Select to install or run the system, can: Linux/CE6/Ubuntu/Android/UserBin; Which UserBin Refers to the bare program or a single file image, such as uCos2, Rt-Thread Etc.

The default is "Linux"

VerifyNandWrite

When the "yes", The programming is complete, will perform validation, it will be more secure;

When the "No", The programming is complete, does not perform validation, this will be faster;

The default is "No", Is generally not a problem.

StatusType

The programming process of the state prompted for "LED", “Beeper" or
their combination (combination of symbol"|");

The default is "LED | Beeper"

* Linux system installation
Linux-BootLoader

SpecifyvLinuxSystem used Bootloader File image name such as:
Linux-BootLoader = Linux/u-boot_nand-ram128.bin (Default)

Linux-Kernel

Specify Linux used by the kernel file system image name

Such as:
Linux-BootLoader = Linux/zImage_n43 (Default)

Linux-CommandLine

Set Linux startup parameters, start or programmed for different ways to set different parameters.

When yaffs2 file system, the recommended parameters(Default) :

Linux-CommandLine =root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

 

When UBIFS file system, the recommended parameters are:
Linux-CommandLine = root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0, 115200

 

When you need to SD directly running, default parameters can be retained

 

Linux-RootFs-InstallImage

Specify the installation Linux File system used by the image name, you can yaffs2/UBIFS Format. Our definition:

"Img" Representative of the end of the image file yaffs2 Format;

"Ubi" Representative of the end of the file UBIFS Format;

"Ext3" Representative of the end of the image file EXT3 Format(Only fromSDCard operation)

Such as:Linux-RootFs-RunImage = Linux/root-qtopia-qt4.img (Default)

Linux-RootFs-RunImage

Designated from SD Card operation Linux used by the file system image name.

Such as:Linux-RootFs-RunImage = Linux/root-qtopia-qt4.ext3 (Default)

* Windows CE system installation
WindowsCE6-Bootloader

Specify WindowsCE6 System used bootloader file image name

Such as:WindowsCE6\NBOOT_N43-RAM128.nb0 (Default)

WindowsCE6-BootLogo

Specify WindowsCE6 splash screen file name used will be burned write Nand Flash, The file is ordinary bmp format can be up to 2M

Such as:WindowsCE6-BootLogo = WinowsCE6\BootLogo.bmp (Default)

WindowsCE6-InstallImage

Specify the installation WindowsCE6 image used by the kernel file name, the need for NK.bin format

Such as:WindowsCE6-InstallImage = WindowsCE6\NK_N43-i.bin (Default)

WindowsCE6-RunImage

Designated from SD Card operation WindowsCE used when the file system image, the need for Nk.bin format.

Such as:WindowsCE6-RunImage = WindowsCE6\NK_N43-i.bin (Default)

* Ubuntu system installation
Ubuntu-BootLoader

Specify Ubuntu system used bootloader file image name

Such as:Linux-BootLoader = Linux/u-boot_nand-ram128.bin (Default)

Ubuntu-Kernel

Specify Ubuntu used by the kernel file system image name

Such as:Ubuntu-BootLoader = Ubuntu/uzImage_N43 (Default)

Ubuntu-CommandLine

Set Ubuntu startup parameters, for different boot method, you need to set different parameters.

When UBIFS file system, the recommended parameters are: Linux-CommandLine = root=ubi0: FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200 (Default)

 

When you need toSDDirectly running, default parameters can be retained

Ubuntu-RootFs-RunImage

Designated from SD card operation Ubuntu file system used by the image name, the general size of the file is fixed

Such as:Ubuntu-RootFs-RunImage = Ubuntu/rootfs_ubuntu.ext3 (Default)

* Android system installation
Android-BootLoader

Specify Android system used bootloader file image name

Such as:Android-BootLoader = Android/u-boot_nand-ram128.bin (Default)

Android-Kernel

Specify Ubuntu used by the kernel file system image name

Such as:Android-BootLoader = Android/azImage_N43 (Default)

Android-CommandLine

Set Android startup parameters, start or programmed for different ways to set different parameters.

When yaffs2 file system, the recommended parameters(Default): Android-CommandLine = root =/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

When UBIFS file system, the recommended parameters are: Android-CommandLine = root=ubi0: FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

 

When you need to SD directly running, default parameters can be retained

Android-RootFs-InstallImage

Specify the installation Android file system used by the image name, you can yaffs2/UBIFS format.

Our definition:

"Img" Representative of the end of the image file yaffs2 format;

"Ubi" Representative of the end of the file UBIFS format;

"Ext3" Representative of the end of the image file EXT3 format(Only from SD Card operation)

Such as:Android-RootFs-InstallImage = Android/rootfs_android.ubi (Default)

Android-RootFs-RunImage

Designated from SD card operation Ubuntu file system used by the image name, the general size of the file is fixed

Such as:Android-RootFs-RunImage = Android/rootfs_android.ext3 (Default)

* User bin image installation
UserBin-Image

Specify the installation or running a single file system image file name, you can bin, nb0 other formats. When "Action" defined as "Install", It burned writes Nand Flash the block0 start place.

UserBin-StartAddress


When "Action" defined as "Run" when he was appointed SD Card in the single file system image will be added to set to a specific implementation of the memory address.

 


Note : ini 파일안에 주석을 넣고 싶으면 "#" 문자 이후에 넣으면 되고, 파일의 내용중 첫번째 라인의 #This line cannot be removed. By FriendlyARM (www.arm9.net) 부분은 삭제하거나 수정 마지막 ")" 문자 이후에 어떠한 문자나 공백도 있으면 안됩니다.

1.3 Superboot menu

시스템 시작시 Superboot 프로그램의 Bootloader 메뉴로 진입하기 위해서는 아래와 같은 설정이 필요합니다.
(1) SD 메모리 카드의 루트에 "mages\ FriendlyARM.ini" configuration 파일이 반드시 존재 해야 합니다.
(2) ini 설정파일의 "CheckOneButton = Yes" 옵션을 반드시 "Yes"로 설정 해야 합니다.
(3) SD 메모리를 개발보드에 삽입하고 PC와 UART 케이블을 연결 한 다음 개발보드에 전원을 인가합니다.
(4) 부팅이 시작되면 PC의 UART터미널에서 수초 이내에 "Space" Key 를 입력 합니다.

s3c6410

1.3.1 Install USB download driver

여기에서 설치하는 USB 드라이버는 dnw.exe 프로그램에서 USB를 통해서 타겟에 프로그램 이미지 등을 Write하는 용도로만 사용됩니다. CD 안의 "Tools\UsbDownload Driver\" 위치에 USB 드라이버 파일이 있습니다. PC와 개발보드에 USB 미니 케이블을 연결한 후 SD 부트 모드로 설정해서 전원을 인가하면 다음과 같이 USB 드라이버 설치 과정이 시작 됩니다.

USB 다운로드 드라이버가 정상적으로 설치가 되고 dnw.exe 를 실행 하면 아래와 같이 USB 상태가 "[USB:x]" 에서 "[USB:OK]" 로 변경 됩니다.
s3c6410

아래 그림은 PC의 장치관리자에 USB다운로드 드라이버가 정상적으로 설치 되었을 때이 장치관리자 상태 입니다.

s3c6410

1.3.2 Functional description of Superboot

s3c6410

Features[F]: 전체 Nand flash를 Erase

Features[V]: Nand Flash에 U-boot 와 같은 Linux bootLoader program을 다운로드

Features[K]: Linux, Android 커널을 Nand flash 에 다운로드

Features[Y]: yaffs2 file system image 다운로드

Features[U]: UBIFS file system image 다운로드

Features[A]: uCos2와 같은 펌웨어 프로그램을 Nand flash에 다운로드한 후 실행 시킵니다.

Features[N]: Nand Flash 의 Block0 에 Nboot 를 다운로드 합니다.

Features[L]: CE부팅 로고를 교체 합니다( bmp 이미지 포맷 ).

Features[W]: Nand Flash 에 Windows CE 이미지인 NK.bin 파일을 다운로드 합니다.

Features[B]: Nand Flash에 다운로드된 Linux, Wince 시스템을 실행시켜서 부팅 합니다.

Features[S]: Set Linux startup parameters

Features[D]: Download and run the firmware program

Features[I]:Superboot version display and development board information, Nand Flash actual size.


2. Download operating system

S3C2440까지는 USB 통신을 통해서 Linux, WinCE 등을 다운로드 하였지만 6410 부터는 SD 부팅 모드를 지원하여 좀더 쉽게 타겟 개발보드에 원하는 이미지를 다운로드 할 수 있는 방법이 있습니다.

2.1 Download operating system via USB

2.1.1 Install Linux system (Yaffs2 or UBIFS format)

(1) images\FriendlyARM.ini 설정 파일이 SD 메모리에 있는지 확인 합니다.
(2) FriendlyARM.ini 파일 CheckOneButton = Yes 내용을 설정 합니다.
(3) USB를 통해서 OS 다운로드를 진행 하려면 하이퍼터미널이 아니라 dnw.exe 를 통해서 명령들을 실행 해야 합니다.


Linux 시스템 관련 이미지 파일들은 "CD-ROM\images\Linux" 에 있습니다. 그리고 Linux system 설치 과정은 아래와 같습니다.

s3c6410

개발보드와 PC의 USB연결이 완료되면 아래와 같이 dnw 타이틀바의 USB 설정이 "[USB:X]" 에서 "[USB:OK]" 로 바뀝니다.

s3c6410

(1) Nand Flash format, command[F]

(2) Installation bootloader, command[V]

(3) Installation kernel file, command[K]

(4) Target file system installation(Yaffs2 or ubifs format), command[Y]Or[U]


아래의 Linux 시스템 설치 과정은 4.3인치 LCD 타멧에 UBIFS format Linux system 을 설치하는 예제 입니다.

Step1: Format Nand Flash
Nand 플래시를 포맷하는 동안 약간의 bad block이 발생 할 수 있습니다. 이것은 큰 문제점이 아니며 Linux 시스템을 설치하는 것에는 영향을 미치지 않습니다.

s3c6410

Step2 : Bootloader download
부트 로더는 타겟의 종류에 따라서 여러가지 버젼이 있습니다. 아래 파일중에서 자신의 타겟에 맞는 bootloader를 선택해서 설치 해야 합니다. 여기에서는 U-boot_nand-ram128.bin 파일을 예제로 하도록 합니다.

u-boot_sd-ram128.bin: Support SD start, for the memory 128M(DDR2)

u-boot_sd-ram256.bin: Support SD start, for the memory 256M(DDR2)

u-boot_nand-ram128.bin: Support NAND start, for the memory 128M(DDR2)

u-boot_nand-ram256.bin: Support NAND start, for the memory 256M(DDR2)

(1) 타겟과 PC에 UART와 USB를 연결 하고 시리얼 터미널을 확인 합니다.

[V]를 눌러서 U-boot.bin 을 다운로드 합니다.

(2) "USB Port -> Transmit/Restore" 메뉴에서 "u-boot.bin" 을 선택합니다.(The file is located in CD-ROM/images/Linux Directory)

s3c6410

(3) U-boot.bin 다운로드가 완료되고 메인메뉴로 복귀 합니다.

s3c6410

(4) Linux kernel download
타겟의 LCD종류에 따라서 다른 리눅스 커널 파일을 다운로드 해야 합니다.

zImage_n43 - For NEC 4.3" LCD( resolution 480x272 )

zImage_a70 - For Innolux 7" LCD( resolution 800x480 )

zImage_VGA1024x768 - Resolution of the output for 1024x768 VGA module adapter

"k" 명령어로 알맞은 커널 파일을 선택한 다음 다운로드 합니다.

s3c6410

"USB Port -> Transmit/Restore" 메뉴에서 올바른 zImage 를 선택합니다.(The file is located in CD-ROM/images/Linux Directory)

s3c6410

커널 다운로드가 완료되면 메인메뉴로 복귀 합니다.

s3c6410

(5) 리눅스 파일시스템 download
리눅스 파일 시스템에는 Qtopia-2.2.0,Qtopia4AndQtE-4.7.0, SMPlayer GUI 등과 수많은 예제 프로그램들이 포함되어 있습니다. 또한 Superboot는 리눅스 파일 시스템으로 yaffs2, ubifs 2가지 파일 시스템 다운로드를 모두 지원 합니다.

rootfs_qtopia_qt4.img : [Y] 명령어를 이용해서 yaffs2 파일 시스템을 Nand Flash에 다운로드 할 수 있습니다.

rootfs_qtopia_qt4.ubi : [U] 명령어를 이용해서 ubifs 파일 시스템을 Nand Flash에 다운로드 할 수 있습니다.

rootfs_qtopia_qt4.ext3: EXT3 파일 시스템 포맷을 이용해서 SD메모리 카드에서 리눅스 시스템을 실행 할 수 있습니다.

아래 예제는 [U] 명령어를 이용해서 ubifs 파일 시스템을 Nand Flash에 다운로드 하는 예제 입니다.

s3c6410

"USB Port -> Transmit/Restore" 메뉴에서 ubi 파일 시스템 이미지(rootfs_qtopia_qt4.ubi) 를 선택합니다.(The file is located in CD-ROM/images/Linux Directory)

s3c6410

UBI 파일시스템 다운로드가 완료되면 자동으로 리눅스 startup parameter 도 같이 설정이 됩니다.

s3c6410

파일 시스템 다운로드가 완료되면 타겟의 [B] 명령어를 이용해서 시스템 부팅을 시작 합니다.

2.1.2 Install Windows CE system

(1) images\FriendlyARM.ini 설정 파일이 SD 메모리에 있는지 확인 합니다.
(2) FriendlyARM.ini 파일 CheckOneButton = Yes 내용을 설정 합니다.
(3) USB를 통해서 OS 다운로드를 진행 하려면 하이퍼터미널이 아니라 dnw.exe 를 통해서 명령들을 실행 해야 합니다.


s3c6410

Description: Instal WinCE6 binary file is located in CD-ROM "\Images\WindowsCE6" directory.

 

WinCE6 설치 과정은 아래와 같습니다.

(1) Format Nand Flash, Corresponding to the command[F]

(2) Installation Bootloader , Corresponding to the command[N]

(3) Installation BootLogo (bmpFormat), Corresponding to the command[L]

(4) Installation WindowsCE Kernel image, the corresponding command[W]


리눅스 시스템 설치 과정과 마찬가지로 WinCE6설치 과정도 4.3 LCD 타켓을 기준으로 설명 합니다.

Step1: Format Nand Flash
Nand 플래시를 포맷하는 동안 약간의 bad block이 발생 할 수 있습니다. 이것은 큰 문제점이 아니며 Windows CE시스템을 설치하는 것에는 영향을 미치지 않습니다.

s3c6410

Step2 : Bootloader download
부트 로더는 타겟의 종류에 따라서 여러가지 버젼이 있습니다. 아래 파일중에서 자신의 타겟에 맞는 bootloader를 선택해서 설치 해야 합니다. 여기에서는 Nboot_n43-ram128.nb0 파일을 예제로 하도록 합니다. Windows CE시스템에서는 LCD의 Type을 자동식별이 되지 않아서 메모리별, LCD 종류별로 Bootloader(Nboot)를 선택해서 다운로드 해야합니다.

* 128M Memory size

NBOOT_N43-RAM128.nb0: NEC 4.3" LCD

NBOOT_A70-RAM128.nb0: 7" LCD

NBOOT_VGA1024x768-RAM128.nb0: 1024x768 LCD2VGA Adapter

 

* 256M Memory size

NBOOT_N43-RAM256.nb0: NEC 4.3" LCD

NBOOT_A70-RAM256.nb0: 7" LCD

NBOOT_VGA1024x768-RAM256.nb0: 1024x768 LCD2VGA Adapter


(1) 타겟과 PC에 UART와 USB를 연결 하고 시리얼 터미널을 확인 합니다.

"N" 명령어를 이용해서 Noot를 다운로드 합니다.

s3c6410

(2) "USB Port -> Transmit/Restore" 메뉴에서 "Nboot_n43-ram128.nb0" 을 선택합니다.

s3c6410

(3) Download programming BootLogo

"L" 명령어를 이용해서 부트로고를 다운로드 합니다. 24bit true color bmp file을 선택 합니다.

s3c6410

Nboot와 Boot로고 다운로드가 완료되고 메인메뉴로 복귀 합니다.


(4) Windows CE kernel download
타겟의 LCD종류에 따라서 다른 WinCE 커널 파일을 다운로드 해야 합니다.

NK_n43.bin - Support own touch-screen controller, suitable for NEC4.3" LCD, resolution of 480x272

NK_a70.bin -Support own touch-screen controller, suitable for 7" LCD, resolution of 800x480

NK_VGA1024x768.bin - Support own touch-screen controller, suitable for resolution of the output 1024x768 VGA Module Adapter

NK_n43-i.bin - Support precise touch line for NEC4.3" LCD resolution of 480x272

NK_a70-i.bin -Support precise touch line for 7" LCD resolution of 800x480


"w" 명령어로 알맞은 커널 파일을 선택한 다음 다운로드 합니다.

"USB Port -> Transmit/Restore" 메뉴에서 올바른 NK.bin 파일을 선택합니다.(The file is located in CD-ROM/Images/WindowsCE6 Directory)

s3c6410

NK.bin 파일 다운로드가 완료되면 자동으로 Windows CE 시스템이 부팅을 시작 합니다.

s3c6410

2.1.3 Install Android system (Yaffs2 or UBIFS format)

안드로이드 시스템 다운로드 과정은 리눅스 다운로드 과정와 거의 동일 합니다.

(1) images\FriendlyARM.ini 설정 파일이 SD 메모리에 있는지 확인 합니다.
(2) FriendlyARM.ini 파일 CheckOneButton = Yes 내용을 설정 합니다.
(3) USB를 통해서 OS 다운로드를 진행 하려면 하이퍼터미널이 아니라 dnw.exe 를 통해서 명령들을 실행 해야 합니다.

Linux 시스템 관련 이미지 파일들은 "CD-ROM\images\Android" 에 있습니다. 그리고 Linux system 설치 과정은 아래와 같습니다.

(1) Nand Flash format, command[F]

(2) Installation bootloader, command[V]

(3) Installation kernel file, command[K]

(4) Target file system installation(Yaffs2 or ubifs format), command[Y]Or[U]


아래의 Android 시스템 설치 과정은 4.3인치 LCD 타멧에 UBIFS format Android system 을 설치하는 예제 입니다.

Step1: Format Nand Flash
Nand 플래시를 포맷하는 동안 약간의 bad block이 발생 할 수 있습니다. 이것은 큰 문제점이 아니며 Linux 시스템을 설치하는 것에는 영향을 미치지 않습니다.

s3c6410

Step2 : Bootloader download
부트 로더는 타겟의 종류에 따라서 여러가지 버젼이 있습니다. 아래 파일중에서 자신의 타겟에 맞는 bootloader를 선택해서 설치 해야 합니다. 여기에서는 U-boot_nand-ram128.bin 파일을 예제로 하도록 합니다.

u-boot_sd-ram128.bin: Support SD start, for the memory 128M(DDR2)

u-boot_sd-ram256.bin: Support SD start, for the memory 256M(DDR2)

u-boot_nand-ram128.bin: Support NAND start, for the memory 128M(DDR2)

u-boot_nand-ram256.bin: Support NAND start, for the memory 256M(DDR2)

(1) 타겟과 PC에 UART와 USB를 연결 하고 시리얼 터미널을 확인 합니다.

[V]를 눌러서 U-boot.bin 을 다운로드 합니다.

(2) "USB Port -> Transmit/Restore" 메뉴에서 "u-boot.bin" 을 선택합니다.(The file is located in CD-ROM/images/Android Directory)

s3c6410

(3) U-boot.bin 다운로드가 완료되고 메인메뉴로 복귀 합니다.

s3c6410

(4) Android kernel download
타겟의 LCD종류에 따라서 다른 리눅스 커널 파일을 다운로드 해야 합니다.

azImage_n43 - For NEC 4.3" LCD( resolution 480x272 )

azImage_a70 - For Innolux 7" LCD( resolution 800x480 )


"k" 명령어로 알맞은 커널 파일을 선택한 다음 다운로드 합니다.

s3c6410

"USB Port -> Transmit/Restore" 메뉴에서 올바른 zImage 를 선택합니다.(The file is located in CD-ROM/images/Android Directory)

s3c6410

커널 다운로드가 완료되면 메인메뉴로 복귀 합니다.

s3c6410

(5) 안드로이드 파일시스템 download
안드로이드 파일 시스템으로 yaffs2, ubifs 2가지 파일 시스템 다운로드를 모두 지원 합니다.

rootfs_android.img : [Y] 명령어를 이용해서 yaffs2 파일 시스템을 Nand Flash에 다운로드 할 수 있습니다.

rootfs_android.ubi : [U] 명령어를 이용해서 ubifs 파일 시스템을 Nand Flash에 다운로드 할 수 있습니다.

rootfs_android.ext3: EXT3 파일 시스템 포맷을 이용해서 SD메모리 카드에서 안드로이드 시스템을 실행 할 수 있습니다.

아래 예제는 [U] 명령어를 이용해서 ubifs 파일 시스템을 Nand Flash에 다운로드 하는 예제 입니다.

s3c6410


"USB Port -> Transmit/Restore" 메뉴에서 ubi 파일 시스템 이미지(rootfs_android.ubi) 를 선택합니다.(The file is located in CD-ROM/images/Android Directory)

s3c6410

UBI 파일시스템 다운로드가 완료되면 자동으로 안드로이드 startup parameter 도 같이 설정이 됩니다.

s3c6410

파일 시스템 다운로드가 완료되면 타겟의 [B] 명령어를 이용해서 시스템 부팅을 시작 합니다.

 

2.2 Download operating system via SD Memory

위에서 설명한 USB를 이용한 다운로드 방법은 시간도 오래 걸리고 비 효율적인 방법으로 추천하지 않는 방법 입니다. 아래 에서부터 설명하는 SD 메모리를 이용해서 다운로드 하는 방법을 추천 합니다. SD메모리를 이용해서 다운로드 할 경우에는 SD메모리 카드에 부트로더, 커널, 파일시스템 등을 모두 복사해서 SD메모리에 넣어 두어야 합니다.

2.2.1 Install Linux system (Yaffs2 format)

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Install
OS

Linux

Linux-BootLoader

Linux/u-boot_nand-ram128.bin

Linux-Kernel

Linux/zImage_n43(Or to compile a kernel image)

Linux-CommandLine

root=/dev/mtdblock2 rootfstype = yaffs2 init=/linuxrc console=ttySAC0,115200

Linux-RootFs-InstallImage

linux/rootfs_qtopia_qt4.img

zImage 파일의 타겟 보드의 사양에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

zImage_x35 - Sony 3.5" LCD, resolution of 240x320

zImage_n43 - NEC 4.3" LCD resolution of 480x272

zImage_a70 - 7" LCD resolution of 800x480

zImage_L80 - Sharp 8" LCD LCD resolution of 640x480

zImage_VGA1024x768 - Resolution of the output for 1024x768 VGA Module Adapter

zImage_VGA800x600 - Resolution of the output for 800x600 VGA Module Adapter

zImage_VGA640x480 - Resolution of the output for 640x480 VGA Module Adapter

zImage_EZVGA800x600 - For simple VGA Adapter plate, output resolution 800x600

 


Step2 : 개발 보드의 S2 스위치를 "SDBOOT" 모드로 설정하고 개발보드에 SD 메모리 카드를 삽입 합니다.

Step3 : 개발 보드의 전원을 인가하면 부저 소리와 함께 LED4이 점멸이 시작 됩니다.

Step4 : 다운로드가 진행되는 동안 LED1 ~ LED3가 번갈아 가면서 점멸이 되고 다운로드가 완료됩니다.

2.2.2 Install Linux system (UBIFS format)

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Install
OS

Linux

Linux-BootLoader

Linux/u-boot_nand-ram128.bin

Linux-Kernel

Linux/zImage_n43(Or to compile a kernel image)

Linux-CommandLine

root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

Linux-RootFs-InstallImage

linux/rootfs_qtopia_qt4-i.ubi

zImage 파일의 타겟 보드의 사양에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

zImage_x35 - Sony 3.5" LCD, resolution of 240x320

zImage_n43 - NEC 4.3" LCD resolution of 480x272

zImage_a70 - 7" LCD resolution of 800x480

zImage_L80 - Sharp 8" LCD LCD resolution of 640x480

zImage_VGA1024x768 - Resolution of the output for 1024x768 VGA Module Adapter

zImage_VGA800x600 - Resolution of the output for 800x600 VGA Module Adapter

zImage_VGA640x480 - Resolution of the output for 640x480 VGA Module Adapter

zImage_EZVGA800x600 - For simple VGA Adapter plate, output resolution 800x600

 

 

2.2.3 Install Windows CE system

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Install
OS

WindowsCE6 (Can also "CE6" or "Wince6")

WindowsCE6-Bootloader

WindowsCE6\nboot_n43-ram128.nb0

WindowsCE6-BootLogo

WindowsCE6\bootlogo.bmp(Or custom bmp file)

WindowsCE6-InstallImage

WindowsCE6\NK_N43-i.bin (Or compiled a kernel image)

NK.bin 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

 

2.2.4 Install Android system (Yaffs2 format)

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Install
OS

Android

Android-BootLoader

Android/u-boot_nand-ram128.bin

Android-Kernel

Android/azImage_n43(Or to compile a kernel image)

Android-CommandLine

root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

Android-RootFs-InstallImage

Android/rootfs_android.img

azImage 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

 

2.2.5 Install Android system (UBIFS format)

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Install
OS

Android

Android-BootLoader

Android/u-boot_nand-ram128.bin

Android-Kernel

Android/azImage_n43(Or to compile a kernel image)

Android-CommandLine

root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200 androidboot.console=s3c2410_serial0

Android-RootFs-InstallImage

Android/rootfs_android.ubi

azImage 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

 

2.2.6 Install Ubuntu system (UBIFS format)

Ubuntu 파일 시스템 사이즈가 500MB가 넘기 때문에 타겟 보드의 Nand 플래시 용량이 1GB정도가 되어야 정상적으로 설치 할 수 있습니다.
Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Install
OS

Ubuntu

Ubuntu-BootLoader

Ubuntu/u-boot_nand-ram128.bin

Ubuntu-Kernel

Ubuntu/uzImage_n43(Or to compile a kernel image)

Ubuntu-CommandLine

root=ubi0:FriendlyARM-root ubi.mtd=2 rootfstype=ubifs init=/linuxrc console=ttySAC0,115200

Ubuntu-RootFs-InstallImage

Ubuntu/rootfs_ubuntu.ubi

uzImage 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

 

2.3 Run operating system from SD Memory

Superboot는 다양한 운영체제를 SD메모리에서 바로 실행 시킬 수 있습니다. 또한 2GB이하의 일반 SD카드와 SDHC 메모리 카드도 지원 합니다.

2.3.1 Run Linux system from SD Memory

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Run
OS

Linux

Linux-Kernel

Linux/zImage_n43(Or to compile a kernel image)

Linux-RootFs-InstallImage

Linux/rootfs_qtopia.ext3

zImage 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.


Step2: 개발 보드의 S2 스위치를 "SDBOOT" 모드로 설정하고 SD Card 를 삽입 한다음 전원을 인가하면 SD메모리에서 부팅이 됩니다.

2.3.2 Run Windows CE system from SD Memory

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Run
OS

WindowsCE6(Can also "CE6" or "WinCE6")

WindowsCE6-InstallImage

WindowsCE6\NK_n43-i.bin (Or to compile a kernel image)

NK.bin 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다. 그리고 아직은 SD메모리에서 부팅 할 경우에 부트 스크린은 지원하지 않고 있습니다.

 

2.3.3 Run Android system from SD Memory

안드로이드 시스템을 SD메모리 에서 바로 시작 하기위해서는 256MB 정도의 DDR RAM이 필요 합니다. 256MB이하의 개발보드에서는 NAND 플래시에서 시작 하도록 합니다.

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Run
OS

Android

Android-Kernel

Android/azImage_n43(Or to compile a kernel image)

Android-RootFs-InstallImage

Android/rootfs_android.ext3

azImage 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

2.3.4 Run Ubuntu system from SD Memory

우분투 시스템을 SD메모리 에서 바로 시작 하기위해서는 256MB 정도의 DDR RAM이 필요 합니다. 256MB이하의 개발보드에서는 NAND 플래시에서 시작 하도록 합니다.

Step1 : images\FriendlyARM.ini 설정 파일을 아래와 같이 수정 합니다.

 

Item(Case insensitive) Description
Action Run
OS

Ubuntu

Ubuntu-Kernel

Ubuntu/uzImage_n43(Or to compile a kernel image)

Ubuntu-RootFs-InstallImage

Ubuntu/rootfs_ubuntu.ext3

azImage 파일은 타겟 보드의 사양(LCD종류, 메모리 사이즈)에 따라서 아래 파일 이름들로 교체해 주어야 합니다.

 

2.4 USB download and run firmware program

우리는 CD-ROM/Firmware 디렉토리에 개발보드 테스트용 펌웨어 프로그램을 제공 합니다. 아직 여러 가지 기능은 제공하지 않고 단순희 UART통신을 통해서 "Hello, Mini6410" 을 출력하고 기본적인 LED를 On/Off 하는 예제 입니다. 이 예제를 실행하기 위해서는 개발보드와 PC를 USB 케이블과 UART케이블을 연결 합니다. 그리고 Superboot 메뉴에서 "[D] Start Download & Run" 명령을 실행 합니다. 자세한 사항은 아래 그림과 같은 절차를 따릅니다.

s3c6410

s3c6410

DNW.exe 메뉴에서 "Transmit/Restore" 기능을 이용해서 demo.bin 파일을 DDR RAM 영역( 0x50000000 )에 다운로드 하고 실행 합니다.

s3c6410