搜索
bottom↓
回复: 50

从单片机到Linux系列博客之十九:如何高效的阅读Linux源码

  [复制链接]

出0入30汤圆

发表于 2020-2-4 11:52:51 | 显示全部楼层 |阅读模式
如何阅读代码还要单独写一篇文章?难道不是随便用一个IDE就可以了吗?回到上一篇文章里介绍的那个问题,需要修改uboot里board_mmc_init函数里的writel(0x66666666,REG_MFP_GPD_L) ,对于初学者如何在uboot代码里找到这句话呢?
因为Uboot和Kernel里有非常多数量的文件,另外为了支持多种芯片,在整个目录里存在大量的同名文件、同名函数。所以如果用一般的IDE把整个工程目录加载进去,然后阅读代码,会相当的不方便,你很难理清楚各个函数之间的调用关系。我曾经尝试过在Windows下用SourceInsight去看内核源码,实在看不下去,而且由于文件太多经常卡住。在网上也看到有人通过一些脚本去精简文件数量再配合SourceInsight的,我也尝试过,感觉也不是很好用。见到过几个高手是直接通过VIM阅读,效率很高,我经过几天的摸索,稍微入了一点门,在这里给初学者做个分享,希望对大家有所帮助。           
完整文章见附件pdf:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2020-2-4 12:54:27 | 显示全部楼层
学习学习,谢谢楼主

出0入0汤圆

发表于 2020-2-4 13:15:52 来自手机 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2020-2-4 13:44:41 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2020-2-4 14:34:16 来自手机 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2020-2-4 17:27:05 | 显示全部楼层
学习一下,感谢

出0入0汤圆

发表于 2020-2-4 17:39:48 | 显示全部楼层
来借鉴一下~~

出0入0汤圆

发表于 2020-2-4 18:00:10 | 显示全部楼层
楼主的教程解答了很多疑问啊,顶起

出0入0汤圆

发表于 2020-2-4 18:26:55 来自手机 | 显示全部楼层
学习一下,感谢楼主

出0入0汤圆

发表于 2020-2-4 18:58:05 | 显示全部楼层
进来学习

出0入42汤圆

发表于 2020-2-4 19:20:06 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2020-2-4 19:20:14 | 显示全部楼层
学习一下,多谢楼主

出0入0汤圆

发表于 2020-2-4 21:47:01 | 显示全部楼层
很有用

出0入0汤圆

发表于 2020-2-4 21:52:12 | 显示全部楼层
楼主的的文章有没有在哪个网站上连载

出0入0汤圆

发表于 2020-2-4 22:08:58 来自手机 | 显示全部楼层
谢谢分享。

出0入0汤圆

发表于 2020-2-4 22:13:09 | 显示全部楼层
下载学习下,感谢分享

出0入0汤圆

发表于 2020-2-4 23:08:46 | 显示全部楼层
趁还放假有时间多看下,这LINUX学了好多年,一直在门外徘徊进不了。

出0入8汤圆

发表于 2020-2-4 23:48:02 | 显示全部楼层

谢谢楼主分享!

出0入30汤圆

 楼主| 发表于 2020-2-5 08:25:28 | 显示全部楼层
solojimes 发表于 2020-2-4 21:52
楼主的的文章有没有在哪个网站上连载

www.topsemic.com 个人博客

出0入30汤圆

 楼主| 发表于 2020-2-5 08:28:27 | 显示全部楼层
renpeng009672 发表于 2020-2-4 18:00
楼主的教程解答了很多疑问啊,顶起

我也是小白,只是把遇到的疑问解决办法总结了出来。

出0入30汤圆

 楼主| 发表于 2020-2-5 08:28:50 | 显示全部楼层
spark123 发表于 2020-2-4 23:08
趁还放假有时间多看下,这LINUX学了好多年,一直在门外徘徊进不了。

逐步深入

出0入0汤圆

发表于 2020-2-5 09:36:20 | 显示全部楼层
现在有空,学习,学习,谢谢楼主

出0入0汤圆

发表于 2020-2-5 09:52:00 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2020-2-5 11:10:57 来自手机 | 显示全部楼层
这个我还在大三时候就搞过,个人感受除了装逼没卵用,用eclipse 看还行

出0入4汤圆

发表于 2020-2-5 12:00:25 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2020-2-5 12:42:27 | 显示全部楼层
用IDE的全部搜索也不错的呀

出0入0汤圆

发表于 2020-2-5 12:57:18 | 显示全部楼层
学习一下,谢谢楼主分享!

出0入30汤圆

 楼主| 发表于 2020-2-5 16:02:26 | 显示全部楼层
a105 发表于 2020-2-5 12:42
用IDE的全部搜索也不错的呀

自己习惯了一种就好

出0入30汤圆

 楼主| 发表于 2020-2-5 16:03:36 | 显示全部楼层
ele-madman 发表于 2020-2-5 11:10
这个我还在大三时候就搞过,个人感受除了装逼没卵用,用eclipse 看还行

萝卜白菜 各有所爱。

出200入0汤圆

发表于 2020-2-5 16:25:15 来自手机 | 显示全部楼层
学习一下,谢谢楼主分享

出0入0汤圆

发表于 2020-2-5 16:55:56 | 显示全部楼层
学习一下,写的很详细

出0入0汤圆

发表于 2020-2-5 17:59:02 | 显示全部楼层
插件很实用.

出0入4汤圆

发表于 2020-3-3 14:59:06 来自手机 | 显示全部楼层
好东西啊。。不过有没有vscode的插件。。。在vscode里面看。。跳转也是头疼。。

出0入0汤圆

发表于 2020-3-3 15:09:03 | 显示全部楼层
学习了,谢谢

出0入0汤圆

发表于 2020-3-3 15:19:19 | 显示全部楼层
LZ应该大字标出:vim环境搭建。

网上大把的文章。纯学习不推荐,除非工作环境有需要可以学。学习成本1~2month(熟练到超过原来的IDE的代码速度)。

工具而已,不要看了别人火箭上天就要学,洛阳铲照样能发扬国粹。

出0入30汤圆

 楼主| 发表于 2020-3-3 16:52:58 | 显示全部楼层
本帖最后由 wangwenxue 于 2020-3-3 16:54 编辑
luobote55 发表于 2020-3-3 15:19
LZ应该大字标出:vim环境搭建。

网上大把的文章。纯学习不推荐,除非工作环境有需要可以学。学习成本1~2mo ...



LZ应该大字标出:vim环境搭建。
-----不仅仅只是vim,主要是配合其他的几个插件。

网上大把的文章。纯学习不推荐,除非工作环境有需要可以学。学习成本1~2month(熟练到超过原来的IDE的代码速度)。
------ 网上大把的文章没错,我没看到完整写的非常详细全的。
------ 不是为了学而学,是因为确实用的到,至少对我而言是这样,我是因为用sourceinsight IDE觉得不爽才学的这个。你说的IDE指什么,可以分享一下,用来阅读分析Linux源代码的。

工具而已,不要看了别人火箭上天就要学,洛阳铲照样能发扬国粹。
-------  每个人都有自己的选择,对于我,如果我身边的人很优秀,他的火箭能上天,我的不行,我还真是想学习他的优点,

出0入0汤圆

发表于 2020-3-3 16:54:57 | 显示全部楼层
这个必须标记回去读一下……曾经读LINUX的摄像头驱动读的生不如死……

出0入30汤圆

 楼主| 发表于 2020-3-3 17:04:34 | 显示全部楼层
a105 发表于 2020-2-5 12:42
用IDE的全部搜索也不错的呀

全部搜索的问题在于,linux源码里有大量的同名函数,同名文件,你搜出来一大推,但是却不知道实际调用的是哪个

出0入30汤圆

 楼主| 发表于 2020-3-3 17:05:32 | 显示全部楼层
ele-madman 发表于 2020-2-5 11:10
这个我还在大三时候就搞过,个人感受除了装逼没卵用,用eclipse 看还行

不仅仅只是装逼,
任何事物都有存在的道理

出0入30汤圆

 楼主| 发表于 2020-3-3 17:06:31 | 显示全部楼层
kyq_linux 发表于 2020-3-3 14:59
好东西啊。。不过有没有vscode的插件。。。在vscode里面看。。跳转也是头疼。。 ...

VSCode 我用的不多,只是简单用过。

出0入30汤圆

 楼主| 发表于 2020-3-3 17:07:48 | 显示全部楼层
love0679 发表于 2020-3-3 16:54
这个必须标记回去读一下……曾经读LINUX的摄像头驱动读的生不如死……

一看你就是过来人,我体会你的痛苦,曾经我也痛苦。。。

出0入0汤圆

发表于 2020-3-3 22:12:45 | 显示全部楼层
感谢大佬的分享

出0入0汤圆

发表于 2020-3-3 22:23:22 | 显示全部楼层
wangwenxue 发表于 2020-3-3 16:52
LZ应该大字标出:vim环境搭建。
-----不仅仅只是vim,主要是配合其他的几个插件。

LZ应该大字标出:vim环境搭建。
-----不仅仅只是vim,主要是配合其他的几个插件。
+++vim环境搭建,没有插件还能怎么搭?

网上大把的文章。纯学习不推荐,除非工作环境有需要可以学。学习成本1~2month(熟练到超过原来的IDE的代码速度)。
------ 网上大把的文章没错,我没看到完整写的非常详细全的。
------ 不是为了学而学,是因为确实用的到,至少对我而言是这样,我是因为用sourceinsight IDE觉得不爽才学的这个。你说的IDE指什么,可以分享一下,用来阅读分析Linux源代码的。
+++很惭愧,手头毛德操的内核源码分析积灰多年。内核代码一般看看的话,sourceinsight最新版本的话应该也够了(几年不用了,印象中是)。
+++我的意思是:加入你本身sourceinsight很熟练的话,再去学VIM,快捷键熟练到效率超过你原来sourceinsight熟练度,学习成本太大。当然也是看你想要什么。

工具而已,不要看了别人火箭上天就要学,洛阳铲照样能发扬国粹。
-------  每个人都有自己的选择,对于我,如果我身边的人很优秀,他的火箭能上天,我的不行,我还真是想学习他的优点,
++++ 工具,各有利弊,举的例子:VIM,quickfix好用,回车即定位,效率远超用鼠标的IDE。但是遇到批量小个单词复制粘贴,还是用notepad++、vs系列,竖列操作效率高。

出0入0汤圆

发表于 2020-3-3 22:28:30 | 显示全部楼层
分享点脚本吧:下述脚本我是放在.bash_rc里的,你也可以新建的脚本文件,用.bash_rc来调。
一个是快捷键,直接进到工程目录。
另一个SOURCEDIRS,是cscope的附加目录参数,其他还有些参数吧,用的。
GREP_OPTIONS,grep时略过.svn,提升效率。

#!/bin/sh

function cdv()
{
        cd /home/UserName/Device/trunk/

}

function cdvu()
{
        cd /home/UserName/Device/trunk/util_trunk

}

function cdd()
{
        cd /home/UserName/Device/trunk
}

function cdt()
{
        cd /home/UserName/tftpboot/tftp
}

export PATH=$PATH:/opt/CodeSourcery/Sourcery_G++_Lite/bin
export DVSDK_G6_TARGET_DIR=/home/UserName/Device/trunk
export G6_UTIL_LIB_DIR=/home/UserName/G6_util_lib/trunk
export SOURCEDIRS=$G6_UTIL_LIB_DIR/xxxxx:$G6_UTIL_LIB_DIR/cccccc
export LANG=zh_CN.UTF-8
export GREP_OPTIONS="--exclude-dir=\.svn"

出0入30汤圆

 楼主| 发表于 2020-3-3 22:46:13 | 显示全部楼层
luobote55 发表于 2020-3-3 22:23
LZ应该大字标出:vim环境搭建。
-----不仅仅只是vim,主要是配合其他的几个插件。
+++vim环境搭建,没有 ...

赞,取众工具之所长。关键还是自己用着舒服最重要。

出0入0汤圆

发表于 2020-3-4 10:01:47 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2020-3-4 10:36:39 | 显示全部楼层
昨天刚接了个LINUX项目  谢谢楼主分享

出0入0汤圆

发表于 2020-3-4 10:52:46 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2020-3-4 11:39:55 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2020-9-14 10:08:37 | 显示全部楼层
谢谢分享

出0入45汤圆

发表于 2020-9-16 11:01:47 | 显示全部楼层
谢谢楼主分享!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 16:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表