首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ZedBoard学习-为Linux内核打补丁进阶篇

ZedBoard学习-为Linux内核打补丁进阶篇

前两天刚把补丁用手动的方式实现了,但问题远没有结束……今天谁知又遇到个补丁要打,而且同样的结果:打不上!!!那么老办法就开始吧,不过这次比较悲剧的是这个补丁不仅仅就是为了实现一个小功能或修改某项特性,光代码就有上千行,哪有那个闲功夫,一个个去手动修改内核源代码?

还记得上次是从内核源代码的角度入手:采取措施让内核支持这项特性;没办法这次只能从补丁入手:采取措施让补丁可以成功使用。
正像前篇文章所总结的那样:定位问题以知道是做什么的为基础;解决问题以知道是怎么做的为基础。按照我们整体把握以定位问题,深入细节以解决问题的思路,定位就不用说了,很显然就是补丁和目标源代码不和谐以致不能应用。下面就开始解决问题。
一:深入细节:
     分析补丁代码与内核源中目标代码,知道它是怎么实现对内核源代码进行修改的
     1、补丁代码分析:
diff --git a/drivers/Kconfig b/drivers/Kconfig
old mode 100644
new mode 100755
index fe2d57f..8898670
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -138,4 +138,6 @@ source "drivers/virt/Kconfig"  /* 红色标记代码表示在目标代*/
                                                                 /*码第138行向下,修改前有4行,修改后有6*/
source "drivers/devfreq/Kconfig"         /* 蓝色标记代码为目标代码中的原文*/

+source "drivers/pl/Kconfig"   /* 紫色标记代码要在目标代码中对应位置添加或删除的代码*/
+
Endmenu
diff --git a/drivers/pl/Makefile b/drivers/pl/Makefile
new file mode 100755
index 0000000..e9db4d3
--- /dev/null
+++ b/drivers/pl/Makefile
@@ -0,0 +1,4 @@        /* 新建文件为空只有从第0行修改,对应-0 +1 ,其它的均为-n +n */
+
+ccflags-$(CONFIG_PMODS_DEBUG)  += -DDEBUG
+
+obj-$(CONFIG_LEDBRIGHTNESS) += led-brightness.o
2、目标代码分析:
[wicoboy@localhost ~]$ cd linux-xlnx/
[wicoboy@localhost ~]$ vi drivers/Kconfig
打开目标文件,为方便对比在底行模式下用:set nu显示出行号,找到source "drivers/virt/Kconfig"所在行
139 source "drivers/remoteproc/Kconfig
140
141 source "drivers/rpmsg/Kconfig"
142
143 source "drivers/virt/Kconfig"
144
145 source "drivers/devfreq/Kconfig"
146
147 source "drivers/extcon/Kconfig"               //147158是我们手上拿到的补丁生成后,
148                                                               //文件又被修改的内容. 正是因为这上
149 source "drivers/memory/Kconfig"            // 个原因导致补丁不能顺利打
150
151 source "drivers/iio/Kconfig"
152
153 source "drivers/vme/Kconfig"
154
155 source "drivers/pwm/Kconfig"
156
157 source "drivers/pmods/Kconfig"
158
159 endmenu
二、解决问题:
既然弄懂了补丁是怎么实现其功能的,那么问题就迎刃而解了。新的解决方案就出来了,将补丁中的
@@ -138,4 +138,6 @@ source "drivers/virt/Kconfig"   

source "drivers/devfreq/Kconfig"

+source "drivers/pl/Kconfig"                     
+
Endmenu
修改为:
@@ -143,4 +143,6 @@ source "drivers/virt/Kconfig"

source "drivers/devfreq/Kconfig"

+source "drivers/pl/Kconfig"                     
+
source "drivers/extcon/Kconfig"
来源:wicoboy的博客
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表