カーネル再構築について
手順は通常のカーネル再構築と同じですが、
uClinux H8/300Hに固有な部分が数点あリます。
ので、その部分の解説です。
コンフィグレーション
ごく普通に、make config/menuconfig/xconfigで、設定してください。
ただし、menuconfig以外は使ったことがないので、途中でエラーになる可能性もあります。
uClinux H8/300Hに固有な項目は次のものがあります。
- Target Selection
ターゲットを選択します。該当する物がない場合は、genericを選んでください。
- Platform Depend Setup
Target Selectionでgenericを選んだ場合に出てきます。
ターゲットの詳細を設定します。
- CPU
ターゲットボードのCPUを選択します。
- Clock Frequency
CPUに供給されるクロックの周波数を入力します。
1000で割った値を入力してください。
- Kernel execute from
ROM/RAMのどちらで動かすか選択してください。
- ROM disk memory block device
ROM Diskです。標準のルートデバイスなので、基本的には必要です。
- Cirrus Logic cs8900 ethernet
移植していないので、動きません。
- SMC 9194 ethernet
同じく、動きません。
- NE2000/NE1000 ISA ethernet
設定項目が追加されています。
- NE2000 (or Compatible) Base Address
ベースアドレスを設定してください。
- NE2000 (or Compatible) Used IRQ
NICの割り込み出力が接続されているIRQを設定してください。
- Hitachi SCI serial support
CPU内蔵のSCIドライバです。入れない場合、メッセージが何も出てこなくなります。
- Serial Console Channel
カーネルからのメッセージを流すSCIのチャネル番号を入力してください。
- Console Baudrate
コンソールのボーレートを設定します。
ちなみに、コンソールに使わないチャネルは、9600BPSで初期化されます。
- Watchdog Timer Support
使えません。内蔵WDTは周期が短すぎて使えないので、
このまま消えてなくなるかもしれません。
他は、普通のlinuxカーネルと同じ機能です。
<h2>ldscriptの修正
arch/h8300/platform/h8300h/{terget名}/{rom,ram}.ldです。
MEMORYセクションをターゲットに合わせて修正してください。
領域の定義は、次のようになってます。
- rom.ld
vector | ベクタテーブルです |
rom | ROM領域です |
erom | ROM領域の最終アドレスを定義します |
ram | RAM領域です |
eram | RAM領域の最終アドレスを定義します |
特に変わった所はありません。
- ram.ld (for aki3068net)
ram | カーネル用コード+データ領域です |
rdisk | ディスクイメージ用領域です |
uram | ユーザー領域です |
eram | RAM領域の最終アドレスを定義します |
iram | CPU内蔵RAMを定義します |
CPU内蔵RAMは、ブートローダーとの連動用です。
カーネルコンフィグレーションで変更できるようになればいいんですが、
今の所、直接変更する必要があります。
コンパイル
ごく普通に、
make dep
make clean
make linux
でカーネルが出来ます。
圧縮したカーネルを作っても、展開して起動する手段を用意していないので、
意味がありません。
ここで出来てくるのはcoffのバイナリなので、SRECやRaw Binaryが必要な場合は、
手動でobjcopyを実行してください。
Project Page
Yoshinori Sato