Wikiに引越し中です。最新情報はWikiにあります。http://www.tokuda.net/cgi-bin/fswiki/
以下の情報は古いです。上に示したWikiページを御覧ください。
アットマークテクノ社のArmadillo-9, Armadillo-210でNetBSD/evbarm (日本語) を動作させるページ。
2005-11-12から2005-11-13にかけて本家のソースツリーにArmadillo-9対応コードが取り込まれました。今後はパッチなしにArmadillo-9が動作するようになります。またArmadillo-210についても動作しているようです (Embedded Techonology 2005にて確認)。
マルチユーザモードで動作しています。ブートログ (boot_sd0a.txt)。比較的安定して動作していると思います (それほど強烈な負荷をかけて運用していないもので)。
動いているもの (デバイスドライバがあるもの)
まだ動かないもの
root fs (ルートファイルシステム) としては次の三つのやりかたがあります。
動作しないデバイスのデバイスドライバや各種情報など、皆様の御協力をお願いします。
メーリングリストサーバが復活しました。(2005-11-26現在)。
アットマークテクノ社にもArmadillo製品の汎用的な話題を扱うメーリングリストがありますが、Armadillo-9でNetBSDを動かす話題に特化したarmadillo-devというメーリングリストがあります。
この開発用メーリングリストに参加したい場合には、次のようなメールを送信してください。
購読にあたっての注意事項は次のとおりです。
迷惑メールを避けるために上に示したメールアドレスは@を[at]で置き換えています。実際にメールを送信する際には@で読み換えてください。
購読にあたっては、次のようなやり方でも (うまくいく人には) よいでしょう。
% echo "subscribe armadillo-dev" | mail majordomo[at]nagoya.bug.gr.jp
各種バイナリファイル、ソース差分、NetBSDに移植された開発ツールを掲載しています。
20050809-UTCでcheckoutしたソースに2005-08-10にMLで流れたソース差分を適用したkernelバイナリです。
Armadillo-9を動作させるためのソースが本家のソースツリーに取り込まれました。関連するsource-changesのメールを次に示します。
以下のファイルは古いものです (参考としての残してあるだけです)。最新の-currentに全て取り込まれています。
以下のファイルは古いものです。最新のソースツリーでbuildすれば最新のバイナリが得られるはずです。他にはreleng.netbsd.orgからバイナリを取得する方法があります。
バイナリ一式をhttp://tokuda.ddo.jp/NetBSD/2005/09/20050924/で公開しています。
カーネルのアップデートやファームウェアの書き換えに使用するツール群はArmadillo-9の標準添付品や本家のダウンロードサイトにはWindowsとLinux版しかありません。これらのツールをNetBSDに移植したものが公開されています。
([armadillo-dev 10] より)
インストールに関する情報です。
メーリングリストなどで提供された情報を定期的にまとめて掲載する予定です。
本体内蔵のフラッシュのkernel領域にhermitを使って直接書き込む方法とコンパクトフラッシュ (以下CFとする) の特定の場所に配置する方法の二通りがあります。
kernelはELF形式ではなくbinary形式である必要があります。
具体的には、objdump -S -O binary netbsd netbsd.binなどとする必要があります。
また、hermitはkernelが0xc0018000に配置されることを前提としているため、kernelを0xc001800にロードするように設定する必要があります。
実際には、evbarm/conf/mk.armadillo9でこの記述をしてやります。
SYSTEM_FIRST_OBJ= armadillo9_start.o SYSTEM_FIRST_SFILE= ${THISARM}/armadillo9/armadillo9_start.S KERNEL_BASE_PHYS=0xc0018000 KERNEL_BASE_VIRT=0xc0200000 SYSTEM_LD_TAIL_EXTRA+=; \ echo ${OBJCOPY} -S -O binary $@ $@.bin; \ ${OBJCOPY} -S -O binary $@ $@.bin; \ echo /usr/bin/gzip $@.bin; \ /usr/bin/gzip $@.bin EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.bin@}
([armadillo-dev 1] より)
armadillo9_machdep.cのinitarm()でシリアルの初期化 (consinit()) が実行され、シリアルコンソールへの文字出力が可能になりますが、initarm()以前のarmadillo9_start.Sの中でもシリアルコンソールへの文字出力が可能のようです。hermitによってシリアルが初期化されているのが幸いしているそうです。
具体的な実装例はarmadillo_start.Sの先頭で次のようにします。
/* set temporary stack pointer */ adr sp, Ltable ldr sp, [sp] /* initialize UART1 */ bl init_UART1 (中略) mov r5, #0x4e /* N */ bl write_UART1 (中略) init_UART1: stmfd sp!, {r4-r5, lr} mov r4, #0x80000000 add r4, r4, #0x008c0000 ldr r5, [r4, #0x08] orr r5, r5, #0x10 str r5, [r4, #0x08] /* enable FIFO */ mov r5, #0x01 str r5, [r4, #0x14] /* disable interrupt */ ldmfd sp!, {r4-r5, pc} write_UART1: stmfd sp!, {r4, lr} mov r4, #0x80000000 add r4, r4, #0x008c0000 str r5, [r4, #0x00] ldmfd sp!, {r4, pc}
([armadillo-dev 4] より)
現在のNetBSD/evbarmではKERNEL_BASE_PHYSとKERNEL_BASE_VIRTの下位20bitが等しいことを前提として固有の初期化部分 (*_start.S) が実装されているようです。
下位20bitということは1MbytesなのでpteはL1を1Mbytes単位のセクションで作れば大丈夫なのですが、Armadillo-9の場合はhermitが0xc001800にロード&ジャンプをしてしまいます。
解決方法として考えられるのは、
の三つの方法が考えられ、現在の実装では3の方法 (自分をコピー) をしています。
([armadillo-dev 16] より)
しかしこれでは大きなサイズのkernelを使用した場合に問題があります。
たとえば2Mbytesのkernelをロードした場合、kernelの後半部分は0xc0200000に重なってしまい、何も考えずに0xc001800のコードをコピーするとkernel後半部分を破壊してしまいます。
そこで、上位バンクの0xc4200000にコピーしてから0xc0200000に再コピーするようにする方法をとることで、大きなサイズのkernelを利用可能にしています。
([armadillo-dev 19] より)
PCMCIAドライバ (eppcic) によって内蔵CFスロットをサポートされました。
([armadillo-dev 38] より)
各種カードについて報告されたものは次のとおりです。
各カードの詳細は次のとおりです。
([armadillo-dev 39] より)
動作確認の報告結果から
という傾向があるようです。ただし、この傾向は今後のドライバへの改良で変わる可能性があります。