linux驱动报错

加载linux驱动时显示 Unable to handle kernel NULL pointer dereference at virtual address 00000000

原因:驱动中使用了空指针
解决办法:查找驱动程序中的指针问题,确保没有使用空指针

我遇到的原因:没有定义platform_driver结构体中的driver成员的name属性,导致空指针报错。

注意:platform_driver结构体中的driver成员的name属性是指明该驱动的名称,该属性是必须存在的,of_match_table和id_table是用来匹配设备的,第一个是用设备树的方法,第二个是传统方法。

1
2
3
4
5
6
7
8
struct platform_driver key_driver = {
.driver = { //驱动程序的属性,用来匹配设备(设备树方法)
.name = "MyPlatformKey", //报错因为没有定义该属性
.of_match_table = key_of_match,
},
.probe = Keyprobe, //probe元素,匹配成功后执行
.remove = Keyremove, //remove元素,卸载后执行
};