第一章 Gitのインストールと使用(Fedora 9に基づいて)
GitはLinuxカーネル開発用のバージョン制御工具で、汎用のバージョン制御工具と違い、Gitは分散リポジトリのバージョンライブラリの方式を採用し、サーバー側のソフトウェアサポートが必要なく、ソースコードの公表やと交流非常に便利となる。Gitの高速反応速度はLinux kernelのような大なプロジェクトに対しては一番の優位性である。そしてGitの最も優れたのはマージトラッキング(マージトレース)機能である。
カーネル開発チームはGitでカーネル開発のバージョン制御システムとして使うことを決める時、ワールド・オープンソース•コミュニティから反対声が多くある:Gitが理解し難くすぎる。Gitの内部動作メカニズムから見ればそうかもしれないが、開発と伴って、Gitの正常使用はフレンドリーシナリオコマンドより簡単実行され、Gitの使用は段々簡単となり、内部開発プロジェクトを管理するに使用されても、Gitは強力なツールである。現在有名なプロジェクトはGitで項目開発を管理する、例えばwine、 U-bootなど。http://www.kernel.org/gitを参照する
1.1 Gitソースコードをダウンロード
ダウンロードアドレス:http://www.kernel.org/pub/software/scm/git/
本マニュアル作成時、最新バージョンは1.6.6
1.2 Gitをインストール
(1) #tar xvzf git-1.6.6.tar.gz
(2) #cd git-1.6.6
(3) #./configure --prefix=/usr/local
説明:インストールパス設定、git は/usr/localディレクトリ下にインストールされる
(4) #make
(5) #make install
1.3 ボージョン番号をチェック
#git –version
git工具を説明する
第二章 superviviと開発環境
2.1 superviviについて
2.1.1 最新のsuperviviとパーティションテーブル
Superviviはviviに基づき改善したbootloaderであり、使用は簡単、初心者向きのシステム・ダウンロード、システム書き込み、製品量産化など優位性がある。
システムソフトウェアをサポートするために、最新バージョンsuperviviダウンロード先http://www.dragonwake.com/download/arm9-download/linux-2.6.32.2/linux-images.zip(解凍後、supervivi-128Mが最新版)
本文作成時の最新バージョンは0945で、Linux-2.6.32.2以後のソフトウェアの書き込みをサポートできる。
Superviviは Linuxシステムにパーティション制御があり、Supervivi-0945-2Kのパーティション情報は、次の通り:
2.1.2 開発ボードのsuperviviバージョンの識別方法
Superviviが出荷時NOR Flashはプリインストールされ、mini2440開発ボードのスイッチS2はNOR側に切り替えて、下図の通り通電・起動する。ボードのLED1は点滅状態になりますそしてシリアルポートは下記の情報を出力する。superviviが正常起動と確認できる。
注:superviviモードではLCDに出力がない、従ってsuperviviは開発ボードがLCDタイプを自動識別できず、LCDを初期化しない。
また、SuperviviはNAND Flashで起動する時、開発ボートのK1-K6の任意ボタンを押すと、メニューに入る。
シリアルポートの出力は下図を参照。
Superviviのシリアルポート出力情報[i] オプションで、superviviのバージョンは0945-2Kと標識する。0945は年間周期、2Kは2KページのNand Flashに適用と意味する。そして弊社生産の128M/256M/1GB Nand Flashバージョンに適用する、バージョンは0945-12な場合、512 byteページサイズのNand Flashに適用する、64M Nand Flashバージョンにもサポートする。
2.1.3 開発ボードのsuperviviリカバリーとアップデート
誤操作でNOR Flashのsuperviviファイル破損、またはupdate出来ない場合、ユーザーマニュアル付録2を参照する
注:ソフトウェアをnand flashに書き込むため、NOR Flash上の superviviを最新バージョンに更新する必要がある。
2.1.4 supervivi機能一覧
注:DNWプログラムを使用し、USBを通じてプログラムダウンロード機能を実現できる
機能[x]:Nand Flashにデフォルトのパーティションをし、Linuxシステムのみで有効。
機能 [v]:USBを通じてLinux bootloaderをNand Flashの bootloaderパ—ティションにダウンロードする
機能[k]:USBを通じてLinuxカーネルをNand Flashのkernelパ—ティションにダウンロードする
機能[y]:USBを通じてyaffsファイル•システム•イメージをNand Flashの rootパ—ティションにダウンロードする
機能[a]:USBを通じてユーザープログラムをNand Flashにダウンロードし、基本的にユーザープログラムはbinというような実行可能ファイルで、例えば2440test(4K以上の制限をサポートする必要がある)、uCos2(開発ボードにあるuCos2は nand flash起動をサポートする)、U-Boot など;勿論、他の任意サイズのbinプログラムも実行可能。
機能[n]:USBを通じてWinCEの起動プログラムNbootをNand FlashのBlock0にダウンロードする
機能[l]:USBを通じてWinCE起動の時のブートLogo(bmpフォームの画像)
機能[w]:USBを通じてWinCE発行マッピングNK.binを Nand Flashにダウンロードする
機能[d]:USBを通じてプログラムを指定しメモリアドレスにダウンロードする (DNW のConfiguration->Optionオプションを通じて実行アドレスを指定する)、実行する。本開発場オードに対してSDRAMの物理開始アドレスは 0x30000000で、終了アドレスは0x34000000で、サイズは64Mbytesで、その他 BIOS自身は 0x33DE8000以上のスペースを占めるため、BIOSのUSBダウンロード機能を使用する時、アドレスは0x30000000 - 0x33DE8000の間に指定される。
機能[z]: USBを通じてLinuxカーネルイメージファイルzImageをメモリにダウンロードし、ダウンロードアドレスは0x30008000である。
機能[g]: メモリ上のLinux カーネルイメージを実行、機能 [z]と合わせ使用される。
機能[f]:Nand Flashフォーマット、実行すると、Nand Flashのデータを全て消去する。(ユーザーズマニュアルの手順に従い初期化出来る)
機能 [b]:システムを起動し、linuxまたは winceをロードする時、コマンドを実行し、起動システムを自動識別出来る。
機能[s]:linux起動パラメーターを設定し、サブメニューの説明を参照する
機能[u]:全体Nand Flashの内容をバックアップし、USBを通じてPCにアップロードし、ファイルとして保存され、PCシステムによく使われるGhostツールのようなものである。
功能[r]:バックアップしたファイルを使用し、Nand Flashに回復する
機能[i]:バージョン情報
機能[q]: viviのコマンドshell モードに戻る。
下図を参照する
shell 画面でmenuコマンドを入力すると、メニューに戻る
2.1.5 他のオープンソースのbootloaderを使用
S3C2440はNAND Flash起動をサポートするため、開発ボードのS2スイッチをNAND側に切り替える場合、NOR FlashをOFF。本ボードはNOR Flashを保留し、BootloaderをNOR Flashに保存し、Nand Flashを管理(プログラミング/バックアップ)し、開発の効率も向上させる。開発中、Nand Flashの内容を破壊する場合もある、この時はJTAGツールを使用しNand Flash中の Bootloaderを初期化する必要がある。JTAGの手順は複雑且つ遅くて、NOR Flashのbootloaderを通じて、superviviは主にUSBの高速ダウンロード特性を使用し、Nand Flashに対するプログラミング機能を実現する。
上記のsupervivi機能一覧表により、[a]機能を使用し、他のbootloaderをNand Flashの開始アドレスBlock 0に便利的にプログラミング出来る。他のbootloaderは大きくない場合、例えばオープンソースU-Boot、または付属DVDで提供したvbootや nbootなど、[v]機能項目を使用し、プログラミングできる。結果は同じで、プログラムはNand FlashのBlock 0開始アドレスにプログラミングする。
2.1.6 最新のsuperviviについて
(1)最新のSuperviviは大容量カーネルパーティションをサポート、最大は5M
(2)最新のSuperviviは大寸法WindowsCE起動画像をサポート、最大に解像度1024x768の24ビットカラー画像、または280x800解像度の16ビットトゥルーカラー画像をサポートする
(3)最新のSuperviviを使用し、最新のWindowsCE5/6システムをプログラミングでき、起動時にシステムは一回のみ実行し、nandから起動する時は起動画面に止まる場合、superviviのバージョンが古いのは原因だと思われる。
(4)最新のSuperviviは多種Nand Flashタイプをサポートする
supervivi‐64Mは 64M nand flashバージョンの開発ボードに適用し、具体的なnand flashモデルは:
‐ HY27US08121 韓国ヒュンダイ会社生産
‐ K9F1208 韓国サムスン会社生産
Supervivi‐128Mは 128M/256M/512M/1GB nand flashバージョンの開発ボードに適用し、具体的なモデルは:
‐ K9F1G08: 128M
‐ K9F2G08 : 256M
‐ K9F4G08: 512M
‐ K9K8G08: 1GB
2.2 開発プラットフォームについて
Fedora 9について
Fedora 9は簡単なインストール/設定でき、root権限を取得できる。(大部分の開発はroot権限に基づく)、Fedora 10と以後のバージョンでは複雑な設定が必要とする。Linuxの初心者では使い難くて、またFedora 8と以前のバージョンは機能が古い。従って、一番汎用性が高いFedora 9を使用する。マニュアルの手順に従い、Fedora 9をインストールし、開発ソフトウェアパッケージを利用し、大半の機能を使用出来る。
2.3 クロスコンパイラについて
2.3.1 取得先
クロスコンパイラarm-linux-gcc 4.3.2のダウンロード先:
http://www.codesourcery.com/sgpp/lite/a ... release644
下図を参照する
ここでのバージョンは2008q3無料バージョンで、Lite Editionと呼ばれ、主にコマンドラインに基づいて、移植開発に対して十分である。ダウンロード先:
http://www.codesourcery.com/sgpp/lite/a ... elease1033
本マニュアルでは2008q3を使用する。
オープンソースソフトウェアを移植する時、他のライブラリを依存する場合もある。例えばpng、zlib、 jpegなど。これらの汎用ライブラリもコンパイラに移植し、付属DVDのコンパイラのバージョンに統合した。
本コンパイラはクロスコンパイルでarmv5システムの構造のコマンドセットを生成し、使用するs3c2440はARM920Tシリーズに所属し、ARMV4のシステムの構造に基づき、armv4コマンドセットをサポートするコンパイラを使用する。そのため、コンパイラ(主にgccとg++)にシステムの構造パラメータを指定し、汎用のarm-linux-xxx形式の実行可能なスクリプトにネーミングし、arm-linux-gccのスクリプトは下記の通り:
2.3.2 ABIとEABIについて
codesourcery社が提供するコンパイラはEABI標準のコンパイラで、古いABIインターフェースコンパイラ、例えばarm-linux-gcc 2.95.3などがコンパイルした実行可能のファイルは実行できない。
1、ABIとは
ABI、application binary interface (ABI) アプリケーションバイナリインタフェース
A。アプリケーション<->オペレーションシステム;
B。アプリケーション<-> (アプリケーションが使用する)ライブラリ
C。アプリケーションの各コンポーネント間
APIと類似の機能で、プログラム間のコードを統合させ、ABIの機能はプログラムをバイナリ(レベル)互換性を実現する
2、OABIとEABI
OABIのOは ゛Old゛、゛Lagacy゛、古い、OABとは古いABIである
EABIの Eは゛Embedded゛、即ち新しい ABIである
EABIは GNU EABI
OABIと EABIはARMCPUに通用する
3、EABIの優位性
A. ソフトウェア浮動小数点とハードウェアは浮動小数点機能の共用
B. システムの呼び出す効率はより高い
C. 今後のツールをサポート
D. ソフトウェア浮動小数点の場合、EABIのソフトウェア浮動小数点の効率はOABIより高い
4、OABIとEABIの区別
二つABIの区別は下記の通り:
A.callルール(パラメータ伝送と戻り値取得の方法)
B.システムの呼び出す数とアプリケーションがシステムの読み出す方法
C.ターゲットファイルのバイナリフォーマット、プログラム•ライブラリーなど
D.システム構造のパディングと(padding/packing)アラインメント。
----------続く