前言
内核作为一个承上启下的存在,对下有CPU架构、硬件电路、芯片IP等,对上有无穷无尽的应用,关系紧密的又有编译器,驱动等。
透彻理解内核的运作机制,对编码来说百利而无一害。但是如何理解透彻?从哪开始理解?加上Linux内核庞大代码量,频繁的更新,持续升级CPU架构等等,一直是个难题。当然,自己也遇到了同样的问题,结合此前的学习经验,认为代码的图示,或者现在称之为可视化,会对理解内核代码有一定帮助。
然后自己屁颠屁颠的赶紧去gitee、github、CSDN、知乎以及各种大模型包括Deepseek等平台,去查阅现有的可视化方法、代码和工具,发现都是丑陋、粗糙的令人发指。
当前的可视化多数是一些函数调用栈,或者数据结构的包含定义关系,要么过于细节,要么人工绘制的过于宏观,而且过于老旧,没有跟上最新的内核改动。就像下面这种:
)
因此我们缺乏一个可以实时动态更新的基于最新的Linux内核代码实现可视化的工具。
目标
准确、优雅、直观、实时、自动的对最新的Linux内核实现可视化。
具体分为几方面:
1)纵向启动方面,从bootrom、SPL、U-Boot、Kernel、应用启动的顺序进行可视化,阐述具体逻辑;
2)横向包括独立模块的实现逻辑,各个模块之间的交互关系的可视化;
需求
1)需要具备自动分析代码逻辑的能力;
2)需要理解内核全局与细节的能力;
3)需要美观严谨的绘制能力,且可以在自动生成的基础之上,后期也可以人工强制干预生成的可视化结果;
4)反向倒逼自己理解内核;正向可以作为有趣的、感兴趣的事情去把玩去摸索。