1.3-kernel探索of读取过程3

探索kernel3.18设备树读取过程以及driver的match过程3


通过前面两篇,根据log验证,基本上能看出来of的读取是通过of_platform_populate()这个函数来的,不过前一篇有一个mark,就是需要验证是否就是这个函数创建的节点,所以在platform.c文件的函数of_platform_bus_create里面打了一些log,根据log的情况显示,在有一段进入__of_match_node函数线里,是已经将所有节点都读取了的,其余的函数线都是child为null的。我现在把of_platform_bus_create函数里面的bus->fullname打印出来,看是否有线索。

从log的打印顺序来看bus->fullname/soc, 而 打印'mediatek,mtkfb'bus->fullname'/soc/mtkfb',所以可能是of_platform_populate函数里面的of_node_get(root)读取的

总的来说还是比较奇怪的,因为讲道理bus上的of节点(device_node节点)创建一次应该就够了,为什么还要不停的扫描呢?一定是有原因的,要么就是也在匹配,要么就是do_call_init函数调用的fn有一定的顺序

通过这3篇的探索,大致上定位到of的init位置了。
由于边探索边写记录,会有一点措手不及,现在需要花时间复盘,重新组织文字,目的是读起来更流畅。te函数里面的of_node_get(root)```读取的

你可能感兴趣的:(1.3-kernel探索of读取过程3)