linux驱动开发 移植三星的kernel(二)_三星的kernel来源代码carema

2.落实到当前开发板

落实到当前开发板和当前内核中来分析,当前我们移植的目标开发板使用S5PV210的CPU,开发

板名字叫X210.我们在三星官方版本的内核中是找不到mach-x210.c的,所以我们又不想从零开始

去移植,因此我们的思路是在三星移植的mach-s5pv210目录下找一个mach-xx.c,这个开发板和我

们的X210开发板最为接近,然后以此为基础来移植。

经过查看,发现mach-s5pc110.c和mach-s5pv210.c和我们的X210开发板最为接近。我们一般确定

的一个原则是:看我们的开发板和三星官方的哪个开发板最为相似。我们的X210开发板抄的是三

星的SMDKV210,因此要找这个对应的那个文件。

结合mach-s5pv210目录下的Makefile来分析,得知.config中定义了CONFIG_MACH_SMDKV210

后,实际绑定的是mach-smdkc110.c这个文件。所以实际上mach-smdkv210.c这个文件根本没用

到。启示就是不要光看名字。

3.解决内核启动中的错误

内核启动后会有打印信息,打印信息中隐藏了问题所在。认真的去分析这个打印信息,从中找到对

的或者错误的一些信息片段,才能帮助我们找到问题,从而解决问题。

内核启动中的错误信息有一些特征:

Unable to handle kernel NULL pointer dereference at virtual address 00000060

Internal error: Oops: 5 [#1] PREEMPT (看到Oops说明内核已经死了)

出错的地方:

PC is at dev_driver_string+0xc/0x44

LR is at max8698_pmic_probe+0x150/0x32c

从以上错误信息中的PC和LR的值可以看出,程序是执行到dev_driver_string或者

max8698_pmic_probe(这两个是函数或者汇编中的标号)符号部分的时候出错了。

4.错误追溯及问题解决

max8698_pmic_probe看名字是max8698这个电源管理IC的驱动安装函数部分出错了,应该是我们

的开发板系统中配置了支持这个电源管理IC,于是乎启动时去加载他的驱动,结果驱动在加载执行

的过程中出错了OOPS了。

结合我们X210开发板的硬件实际情况来分析:我们X210开发板上根本就没有max8698这个电源管

理IC,既然硬件都没有驱动执行了肯定会出错。

在uboot中是直接改源代码屏蔽掉那个初始化函数解决的;在内核中不能这么干?因为linux kernel

是高度模块化高度可配置的,内核中每一个模块都是被配置项条件编译了的,因此要去掉某个模块

的支持,只需要重新配置去掉选项即可,不用改源代码。所以我们的关键就是要找它对应的配置

项。

make menuconfig,然后/搜索"MAX8698"这几个关键字

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值