ryoさんが昔作業していたstarを復活させて見ました。
元のコードはこれです。
こちらがいじったのはここにあります。
直したところは割り込み回りとか、細かいKPIの変更に対応などです。
割り込みはよく分からなかったのでプライオリティー無視で多重割り込み禁止で実装しました。 直しました。
STR9102で確認しているのでSTR81xxは直ってないところがあります。
確認はINSTALLのramdisk.fsでおこないました。
arm共通で使えるようにしたcfiサポートも入ってます。
star_dma.cを他のSOCのコードと同じようにマクロにしたいのですが、エラーになります。どこかに設定があるのだと思われますが、わかりません。 直りました。NetBSDは黒魔術がいろいろありあます。
FreeBSDでもこのSOCのサポートコード書いた人いたのですが、私が試した時には壊れていてまともにうごきませんでした。
umassはあまり調子よくないです。7種類のUSBメモリ/SDリーダーを試して一つしかまともに動きませんでした。 いろいろいじっていたら安定したような気がします。
ターゲットはSwitchにVSC7385を使っていて、ST9100はMACが二つありますが、Switchが1つしか接続ポートがないので、インターフェースは一つしか使えません。
VSC7385はSPIで制御できるようなのですが、制御用の線はつながってなくてEPROMで初期化しているようです。設定はLANの4ポートはそのままで、WANポートがVLANになっているようです。
ryoさんが作られたのは6の前くらいで、まだu-bootのイメージを作る仕組みとか入ってなかったのではないでしょうか。今はbuild.shでu-bootイメージが作れるので、ずいぶん楽にトライ&エラーがができます。
遅いですがarmアーキテクチャはv4で確立したと思うので、貴重だと思います。
flashにkernelを焼くARM-Bootのオペレーション
STR9100>tftpboot 0x00800000 netbsd.ub
STR9100>cp.b 0x00800000 0x10040000 0x00300000
rootfsはsd0(umass)で作ります。
INSTALLのkernelでsd0にインストールしてsd0がrootfsなkernelをflashに焼けば出来上がりです。
これをbootしたところネットワークが使えません。ARMBootがネットワーク初期化をしないとネットワークが使えないようです。
原因はレジスタの初期化と思われ、0x70000000からの0x100のレジスタをARMBootでネットワークアクセスした後にダンプしてその値をソースに突っ込んで設定するようにしました。