LINUX I2C驱动偶尔出现段错误原因之一
来源:互联网 发布:怎么举报网络博客 编辑:程序博客网 时间:2024/05/17 07:59
LINUX I2C驱动偶尔出现段错误原因之一
第一篇博客,来个好的开端。
在自己写 触摸屏 I2C 驱动程序(Linux 3.14)的时候,加载的时候会偶尔出现段错误,
我们都知道在加载驱动的时候会调用 i2c_register_Driver最终找到代码,通过 OOPS 代码回溯知道其最终会调用 of_driver_match_device 如下
static inline int of_driver_match_device(struct device *dev, const struct device_driver *drv){ return of_match_device(drv->of_match_table, dev) != NULL;}const struct of_device_id *of_match_device(const struct of_device_id *matches, const struct device *dev){ if ((!matches) || (!dev->of_node)) return NULL; return of_match_node(matches, dev->of_node);}match = __of_match_node(matches, node);for (; matches->name[0] || matches->type[0] || matches->compatible[0]; matches++) {}static const struct of_device_id gt818_of_match[] = { { .compatible = "fs4412,gt818", }, {},};.of_match_table = gt818_of_match,
驱动的 of_match_table 传入,加载时,进行匹配,如果没有空{} ;会造成越界,段错误;
所以,一开始对于 of_device_id 最后会有 {},感觉多余,但是现在来看不是多余的,为了代码安全,一定要加上
很小的一个初级知识点,不过不常见,特此记录。
阅读全文
0 0
- LINUX I2C驱动偶尔出现段错误原因之一
- linux i2c 驱动之一
- linux动态链接库出现段错误的原因分析
- Spark偶尔出现错误问题
- linux下运行程序后出现段错误的原因和解决案例
- linux下运行程序后出现段错误的原因和解决案例
- Linux下运行C++程序出现“段错误(核心已转储)”的原因
- 死递归:“段错误”产生的可能原因之一
- linux i2c-gpio 模拟i2c时序出现oops错误
- linux开发常见段错误问题原因
- Linux设备驱动程序架构分析之一个I2C驱动实例
- Qt中出现段错误的原因分析
- linux编译pam时出现段错误
- gslX680驱动中出现“i2c i2c-0: sendbytes: NAK bailout.”错误
- 段错误原因
- 段错误原因收集
- 段错误原因小结
- XP出现"内存不能read "的错误原因之一
- ZOJ-3804---YY's Minions (模拟)
- 骑记APP——IOS版登录流程体验报告
- 青蛙的约会(扩展欧几里德)
- 编程练习2——05
- 容斥原理
- LINUX I2C驱动偶尔出现段错误原因之一
- mybits 注解
- 统计一条语句中的空格、字母、数字的个数
- 【排序算法总结】选择排序
- Deploy Location!
- 编程练习2——06
- github上如何修改语言设置
- Js学习第九天
- Vuforia Features Vuforia特点