最近接了一个软件模块, 看了几天云里雾里. 应用程序如何调到middleware再如何调到kernel space. 数据流向、数据结构、逻辑关系、整体框架一桩桩一件件混沌在一起. 如何把它理理清楚呢?
做了8年的项目管理, 什么visio、project、流程图、石川图、控制图、甘特图、思维导图..各种数据表现或者分析方式倒是熟练, 该用哪个最好呢? 管不了那许多, 不都是工具嘛, 原理相通, 捞一个起来:开干, 选的是思维导图.
思维导图尤善于分类、归纳与总结, 看起来一目了然. 开始了第一张图, 后面的越发不可收拾: 数据结构一张、C/S架构一张, 数据流一张..鉴于公司保密规定, 代码切不可外传, 基本规则还是要遵守的. 对, 鉴于职业道德, 贴一张V4L2的数据结构与IOCTL对应的思维导图, 这些个知识点具有保密除外责任, 网上一搜一箩筐, 但是以思维导图的形式呈现, 仅此一家, 绝无雷同.
图中细节估计大家也不感兴趣就不铺开了, 整体来看, 应该是有个面的概念, 以点博面, 通透. V4L2是什么? Video For Linux 2就是Linux内核对各种音频、视频和图片驱动的一种抽象, 整出了一个统一的规范去面对应用程序的调用, 应用程序也不用管具体的硬件驱动是怎样实现的,好的孬的都看不见. 打个通俗的比方, V4L2在Linux内核的位置就像是企业的中层, 由中层统一向高层汇报, 高层见不到下面的七嘴八舌良莠不齐, 毕竟高层也没有那么多时间和耐心, 统一汇总下, 由一个人来报. V4L2是一套良好的框架, 这点有些许不同;另外一点, V4L2只能在Linux内核中使用, 这点倒是谋合.
左右两边也只是列出一些主要的, 未能穷尽. 纵向有一些逻辑关系, 横向每一条对应关系都还能再细分成一张张图, 虽然网上资料颇多, 但是要理解通透, 再作为自己的知识体系讲出来, 还是要花不少时间进去.
不过可以和大家分享这样一条思路: 接触一个新东西的时候, 能迅速掌握知识点是一层境界;能系统理解知识点并转化成自己的知识体系二次输出又是另外一重境界, 这套理论也是最近get到的知识点, 分享并践行.