2007年12月21日金曜日

NetBSDでGPIOを使う(for ALIX) (2)

今回はベースとなるファイルがあるので気を楽にして取り組むことにする。とりあえず手元に用意するものは、

  • OpenBSDのglxpcib.c
  • NetBSD-currentのhead tree
  • OpenBSDのsys source tree
  • AMD CS5536のデータシート
  • 実機(ALIX)
だけ。NetBSD-currentのhead tree、おもむろにopenbsdのglxpcib.cをNetBSDのソースツリーのsrc/sys/arch/i386/pciの下にコピーする。このあたりに新しいファイルを追加したときには、src/sys/arch/i386/conf/files.i386にエントリーを追加する。これをしないとconfigしたときに認識してくれないし依存関係を記述することができない。とりあえず今回は


# AMD Geode CS5536 PCI-ISA bridge
device glxpcib: isabus, sysmon_wdog, gpiobus
attach glxpcib at pci
file arch/i386/pci/glxpcib.c glxpcib

と追加。デバイス名はopenbsdと同じglxpcib。sysmon_wdog, gpiobusは後で説明するけれど、NetBSDのwatchdogおよびgpio busの共通部分のフレームワークを使うことを意味している。glxpcibはpciバス上にアタッチされて、ドライバの実体はglxpcib.cである、という意味になる。

これで、kernelのconfigurationファイルにglxpcibという名前が出てきてもconfigコマンドが処理できるようになる。configファイルには、


glxpcib* at pci? dev ? function ? # AMD CS5536 PCI-ISA bridge w/ GPIO and WDT support
gpio* at glxpcib?
isa0 at glxpcib?


を追加。pciバス上にglxpcibを生成して、その上にisaバスとgpioバスを生やす、という意味になる。
今回はALIXというconfigファイルをつくってそれで作業することにする。
で、おもむろにsrc/sys/arch/i386/confの下でconfig ALIX; cd ../compile/ALIX; make depend; makeなどと打ち込むとエラーメッセージがばりばりと出てくるので(あたりまえ)、それを見ながら今後の方針を考えて作業をする、というのが移植作業の一般的な進み方(だとおもう)。

というわけで、glxpcib.cをどうやって調理するかは続きで。

0 件のコメント: