修改rc.local实现开机自动运行程序,概率性出现内核oops错误。
我在linux2.6.27.8下写了驱动程序和应用程序,并通过修改rc.local实现开机自动加载驱动模块和运行程序。目前存在3%的概率出现开机启动后加载应用程序的过程中,内核出oops,Unable to handle NULL pointer。
应用程序看了很多遍看不出问题,而且还是小概率事件。一般错误为内核page操作错误(感觉是缺页)。
请教各位大虾,是什么问题啊? 说明一下我的开机自运行的程序包括:加载FPGA的驱动,加载FPGA的应用程序(读文件通过驱动接口写入FPGA)、boa、创建共享内存的进程。
是不是跟FPGA加载频繁调用驱动接口write(调用copy_from_user)有关呢?同样的程序,为什么概率性出现问题? 1、竞争问题?保护 全局变量
2、硬件干扰?如果是 已集成的板子的话,将板子卸下来,各种线路什么的,都相对宽松。 我的加载FPGA的应用程序和创建共享内存的应用程序都是单线程的,而且运行完就结束了。
这种情况下,是不是就不涉及到全局变量的竞争问题?
另外,同样的问题发生在几块板子上都存在,是不是可以排除硬件干扰? 高手们给些建议吧。这个问题已经纠结我半个月了。:'( 怎么没人回帖啊?自己顶。 另外,FPGA加载是串行加载,比较耗时,感觉跟这个进程关系很大。
页:
[1]