在使用linux的ramoops驱动模块时,在编译完加载时,会发现驱动加载不成功。明明直接使用的内核代码,为什么会出现这样的情况呢?
首先看一下ramoops的初始化代码:
180 static int __init ramoops_init(void)
181 {
182 return platform_driver_probe(&ramoops_driver, ramoops_probe);
183 }
184
185 static void __exit ramoops_exit(void)
186 {
187 platform_driver_unregister(&ramoops_driver);
188 }
189
190 module_init(ramoops_init);
180行开始的ramoops_init函数是不是有点奇怪?直接就调用了probe函数。标准的platform驱动程序的流程是这样的:
怎么看起来好像缺少platform_device的定义和注册,到底是不是因为这个呢?我们来看一下Document/ramoops.txt的相关说明:
38 2. Setting the parameters
39
40 Setting the ramoops param