xidianunix 发表于 2012-05-06 21:18

修改rc.local实现开机自动运行程序,概率性出现内核oops错误。

我在linux2.6.27.8下写了驱动程序和应用程序,并通过修改rc.local实现开机自动加载驱动模块和运行程序。
目前存在3%的概率出现开机启动后加载应用程序的过程中,内核出oops,Unable to handle NULL pointer。
应用程序看了很多遍看不出问题,而且还是小概率事件。一般错误为内核page操作错误(感觉是缺页)。

请教各位大虾,是什么问题啊?

xidianunix 发表于 2012-05-06 22:50

说明一下我的开机自运行的程序包括:加载FPGA的驱动,加载FPGA的应用程序(读文件通过驱动接口写入FPGA)、boa、创建共享内存的进程。
是不是跟FPGA加载频繁调用驱动接口write(调用copy_from_user)有关呢?同样的程序,为什么概率性出现问题?

youjujun 发表于 2012-05-07 09:59

1、竞争问题?保护 全局变量

2、硬件干扰?如果是 已集成的板子的话,将板子卸下来,各种线路什么的,都相对宽松。

xidianunix 发表于 2012-05-07 12:47

我的加载FPGA的应用程序和创建共享内存的应用程序都是单线程的,而且运行完就结束了。
这种情况下,是不是就不涉及到全局变量的竞争问题?
另外,同样的问题发生在几块板子上都存在,是不是可以排除硬件干扰?

xidianunix 发表于 2012-05-07 12:48

高手们给些建议吧。这个问题已经纠结我半个月了。:'(

xidianunix 发表于 2012-05-07 20:48

怎么没人回帖啊?自己顶。

xidianunix 发表于 2012-05-07 20:56

另外,FPGA加载是串行加载,比较耗时,感觉跟这个进程关系很大。
页: [1]
查看完整版本: 修改rc.local实现开机自动运行程序,概率性出现内核oops错误。