【开发随想】如何快速入手一个Linux开源项目

发布时间:2024年01月23日
  • 🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)
  • 🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd
  • 🌐系列专栏:开发随想
  • 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!! 👉关注?、点赞👍、收藏📂、评论。
  • 如需转载请参考转载须知!!

参考资料

  • 官网:
    官网上通常都有项目的介绍、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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。