【开发随想】如何快速入手一个Linux开源项目
发布时间:2024年01月23日
参考资料
- 官网:
官网上通常都有项目的介绍、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来确定,用户态也有类似的手段。
如本文对你有些许帮助,欢迎大佬支持我一下,您的支持是我持续创作的不竭动力
支持我的方式
文章来源:https://blog.csdn.net/qxhgd/article/details/135320297
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!