H8/3052Fに移植されました
2010/05/12
あなたは
人目のお客様です.
2010/05/08に神保町のIIJで行われた
カーネル/VM探検隊
の
第四回
に参加してきました.感想については
ブログの記事
を参照.
で,そこで知り合っていろいろお話しさせていただいた
ささのたかよしさん
が,早くも
秋月電子製AKI-H8 3052 LAN開発キット
に移植してくれました.ありがとうございます!
本人の了承もいただきましたので,せっかくなのでここで公開させていただきます.
ソースコードの内容は以下になります.
- kozos-3052-experimental/osbook_03.orig ... osbook_03.zipを展開したもの
- kozos-3052-experimental/osbook_03.3069 ... 上記をgcc-4.2.4向けに修正したもの(H8/3069)
- kozos-3052-experimental/osbook_03.3052 ... 上記をH8/3052向けに改造したもの
修正の内容は以下です.
- ベースのコードは「(OS自作本編第3回)Ubuntu,Fedora,Cygwinで動作確認した」のものになっています.
- こちらのボードは外付けで128KBのSRAMを持っています.内蔵RAMは8KB(H8/3069Fは16KB)になります.
- 移植者のささのたかよしさんの開発環境は以下です.
OpenBSDでの開発実績も得られたことになります.
- OpenBSD-4.6/amd64
- h8write+OpenBSD用パッチ(自作)
- GNU binutils 2.19.1
- GCC 4.2.4
- 以下の修正が行われています.(いただいたメールより転載)
- メモリマップの見直し
- bootloaderに外付けRAMの初期化部分を追加
H8/3052の内蔵SRAMは8KBしかないため、外付けRAMを使用しないと
KOZOSをロードしても起動できません。よって、外付けのSRAMを
使用することを前提とします。
SRAM初期化部分とメモリチェックのコードは、H8/3069F向けの
dram.cを改造して載せています。
(「(H8移植編その2第3回)DRAM上で動かそう」参照)
- SCI周辺の調整
SCIレジスタの操作手順は変わりません。
ただし、ポート数が2つに減っており、I/Oアドレス及びSCIに
供給するクロックが異なっています(20MHz→25MHz)。
SCIポート数の減少に伴い、割り込みベクタも調整しています。
- コンパイルエラーの修正
使用した開発環境がgcc-4.2.4であるため、
os/kozos.cのthread_setintr()でコンパイルエラーが発生します。
作業の都合上、これは修正しています。
また、char型変数の符号の扱いに伴うwarningが出ていますが、
これはKOZOSはgcc-3.4系を使うことを想定しているという
理由により、敢えて修正していません。
- SRAMの初期化部分は、H8用簡易モニタのソースを参考にしています。
- 移植編その4の記事ではタイマーを使用していますが、
H8/3052のタイマーは16bitタイマーしか存在しないため、
この機種でタイマーを使用する場合この部分も手を入れる必要が生じます
(同じ16bitタイマーでも、H8/3052←→H8/3069間で微妙な差異があったはずです)。
こちらのボードの価格は8200円と少々高価ですが,秋月のボードはH8/3052のほうだと
USBやLANの開発ボードが充実しているので,いろいろ試してみたいかたはこちらの
ほうが拡張性があっていいかもしれません.上記修正以外は,そのままでいけている
みたいです.
またOpenBSDやgccのバージョン4系での実績がとれたことは有意だと思います.
移植していただいたささのたかよしさんによれば,Interface誌の付録基板のARMボードも
ターゲットにいいのではないかとのことです.実際,僕的にARMって興味あるん
ですよね...でも時間あるかな...
(arduino移植もやりたいし,SH2対応も整理したいし,TCP/IP実装やGDB対応やROM化も
進めたいし,本も書きたいし,やりたいこといっぱいだ)
メールは kozos(アットマーク)kozos.jp まで