DeviceTree

SD の 2012.12 号の Linux カーネル観光ガイドという連載記事にて arm の起動云々に関する記事を発見。つうか DeviceTree て最近も何かにひっかかって断片的なメモが手元に残っているのを見つけているんですが、何だったのかは完全に忘却の彼方に去ってしまっておられます。
ちなみに自分 weblog を検索してみたら以下な記事が出てきてます。

これはこれで記憶にない。つうかこれ、gdb ネタとしてもなかなかアレなので色々確認入れてみる方向にて。
つうかそもそも 3.7 なカーネルで DeviceTree を使った起動のサポートが始まるらしいので色々な意味でエッヂなナニですな。色々精査というか確認してみたいのでとり急ぎこちらにメモを残しておくってことで。

  • Documentation/devicetree 配下なドキュメント確認
  • *.dtsi は arch/arm/boot/dts 配下にある模様
    • raspberrypi なナニは bcm2835-rpi-b.dts になってるみたい
  • OMAPpedia の Device Treeも要確認
  • ソース掘削始点は arch/arm/kernel/devtree.c の setup_machine_fdt() が setup_arch() から呼び出されるあたりな模様
    • of_scan_flat_dt(early_init_dt_scan_chosen, boot_command_line); あたりで云々
      • early_init_dt_scan_chosen は手続きらしいので中身確認
  • 基本的には dts* は dtc (DeviceTreeCompiler?) で dtb (DeviceTreeBlob) に変換される
    • dtb は FlattenedDeviceTrees (FDT) と呼ばれることもある
    • カーネルはこれを読みこんで unflatten_device_tree 手続きで tree を作る模様

とりあえず

別途確認、とゆーことにて。