- 🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)
- 🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd
- 🌐系列专栏:开发随想
- 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注✨、点赞👍、收藏📂、评论。
- 如需转载请参考转载须知!!
【开发随想】如何入手一个开源项目
- 参考资料
- 方法论
- 阅读文档
- 动手编译
- IDE研读代码
- 关键数据结构
- 关键流程
- 上环境调试
- 查看及增加打印
参考资料
- 官网:
官网上通常都有项目的介绍、quick start guide、mannual等信息; - github、gitlab:
code、issue/PR、readme等信息; - wiki
大型的项目,通常有自己的wiki。 - slack
团队沟通利器,用于文件共享、技术讨论、频道等; - google
懂的都懂;
方法论
阅读文档
- 通过阅读相关文档,建立项目及模块的总体概念,可关注模块框图之类信息。
动手编译
- 通过查看编译过程的日志,结合代码,可以看出模块的产出(ko、bin、so等以及在文件系统中的目录),编译命令(涉及功能宏等)、模块的依赖关系、各目录的组织结构等;
IDE研读代码
关键数据结构
- 如某芯片方案的WiFi驱动中,可能会涉及STA结构体,通过该结构体,可以看出芯片所支持的STA的参数,多个STA结构的组织,STA数目的限制等信息。
关键流程
- main函数或其他类似函数
通过main函数,可以找到模块的准备工作,主要的初始化工作等。 - 模块与外界的交互
可关注对外提供的接口,以及使用的外部接口、头文件、配置文件等信息,借此可以了解模块间的关系。 - 状态机
尤其涉及协议模块,状态机必不可少,如DHCP状态机、STA关联过程状态机等,配合相关规范,可以对业务流程有深入的认识; - 配置流程和转发流程
– 涉及嵌入式设备,大概率要涉及配置流程和转发流程,在研读代码过程中,要重点关注这两条线索。
– 配置流程可关注下不同媒介的配置流程,打通从媒介到底层的全过程;
– 转发流程,可以从中断开始看,一直看到报文上协议栈或到某个模块为止。
上环境调试
- 一般的开源软件,都有对应的调试命令。如openwrt中的uci、ubus等。
- 除了一般的命令外,还有一些proc、sysfs等用于调试的文件系统,可用于查看系统信息、或可动态修改一些开关、阈值等信息。
- 注意一些配置文件的使用及对应线索,如openwrt中的/etc/config/wireless文件。
查看及增加打印
- 如果对某些流程不是很确定,可以通过修改现有日志的打印级别,或者加日志来进一步确认。
- 对于函数调用关系,如果存在多调一的情况,内核中可通过dump_stack来确定,用户态也有类似的手段。
如本文对你有些许帮助,欢迎大佬支持我一下,您的支持是我持续创作的不竭动力
支持我的方式