如何查看Linux静态加载了哪些内核

chenchengnet 2010-01-04 02:16:14
大家好,

我在Linux中加了I2C驱动,就是i2c-pca-platform,静态加载的,为什么运行了内核后,在proc/devices中看不到这个驱动的名字呢,驱动的名字是“i2c-pca-platform”。但是,的确是有一个主设备号码是89的 叫“I2C”的驱动。

同样,我加了网络芯片DM9000的驱动,网络都可以传了,也看不到名叫"dm9000"的设备。在程序中,device_driver的名字就是叫”dm9000“

谁能解释么??

谢谢大家了
...全文
748 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
鹅凰嶂幽云 2011-07-24
  • 打赏
  • 举报
回复
我好像遇到差不多的问题,在make menuconfig选上了自己添加的菜单,但是启动的时候看不到加载驱动的信息。是否还要设置一些信息?
fineshang 2010-01-12
  • 打赏
  • 举报
回复
cat /dev 查看节点存在不存在就好了嘛。还有就是编译内核时make menuconfig里面查一下。
xuwukong 2010-01-12
  • 打赏
  • 举报
回复
在device.c里的device名应该和driver名一致才行吧
充电宝111 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chenchengnet 的回复:]
引用 4 楼 wenxy1 的回复:
我想,应当没有专门查看build-in kernel的设备驱动的命令。
实际上kernel启动后,用 dmesg可以查看这些日志,从而可以得出kernel里驱动了哪些硬件。

有一个问题是 我在程序中写 platform_driver中的 .driver中的.name=“i2c-pca-platform”

那么是不是 就应该 对应的内核加载的这个驱动 就叫作“i2c-pca-platform”??

我把驱动 编译进去了,就像上面说的 用printk输出到控制台,也看到了输出信息,但是找不到叫“i2c-pca-platform”的驱动
倒是 有一个驱动叫做"I2C"
[/Quote]

如果是动态加载的设备,名字是udev根据他的conf里面的规则来起的
chenchengnet 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wenxy1 的回复:]
引用 6 楼 chenchengnet 的回复:
引用 5 楼 deep_pro 的回复:
突然想到 最简单的办法就是你的驱动主动printk一下啊
  有没有自然就清楚了

我现在就是 这么做的。
有一个问题是 我在程序中写 platform_driver中的 .driver中的.name=“dm9000”

那么是不是 就应该 对应的内核加载的这个驱动 就叫作“dm9000”

.name只是驱动的一个名字。
[/Quote]
如果我是动态加载驱动,那么在程序中写platform_driver中的 .driver中的.name=“dm9000”
内核加载后,使用lsmod查看,就应该要有 名叫dm9000的模块了 是吧
天亮后说晚安 2010-01-05
  • 打赏
  • 举报
回复
lsmod 查看
Kyph 2010-01-05
  • 打赏
  • 举报
回复
还真没有见到过有这样的命令,能单独将静态加载的模块列举出来
lsmod和lspci都是用来查看相应模块的,而不仅仅是静态模块。
只有从dmesg中查找
hallowwar 2010-01-05
  • 打赏
  • 举报
回复
学习了。
Wenxy1 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenchengnet 的回复:]
引用 5 楼 deep_pro 的回复:
突然想到 最简单的办法就是你的驱动主动printk一下啊
有没有自然就清楚了

我现在就是 这么做的。
有一个问题是 我在程序中写 platform_driver中的 .driver中的.name=“dm9000”

那么是不是 就应该 对应的内核加载的这个驱动 就叫作“dm9000”
[/Quote]
.name只是驱动的一个名字。
Wenxy1 2010-01-04
  • 打赏
  • 举报
回复
printk(KERN_EMERG “i2c-pca-platform” ); /* 用这个试试 */
chenchengnet 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wenxy1 的回复:]
我想,应当没有专门查看build-in kernel的设备驱动的命令。
实际上kernel启动后,用 dmesg可以查看这些日志,从而可以得出kernel里驱动了哪些硬件。
[/Quote]
有一个问题是 我在程序中写 platform_driver中的 .driver中的.name=“i2c-pca-platform”

那么是不是 就应该 对应的内核加载的这个驱动 就叫作“i2c-pca-platform”??

我把驱动 编译进去了,就像上面说的 用printk输出到控制台,也看到了输出信息,但是找不到叫“i2c-pca-platform”的驱动
倒是 有一个驱动叫做"I2C"
chenchengnet 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 deep_pro 的回复:]
突然想到 最简单的办法就是你的驱动主动printk一下啊
有没有自然就清楚了
[/Quote]
我现在就是 这么做的。
有一个问题是 我在程序中写 platform_driver中的 .driver中的.name=“dm9000”

那么是不是 就应该 对应的内核加载的这个驱动 就叫作“dm9000”
deep_pro 2010-01-04
  • 打赏
  • 举报
回复
突然想到 最简单的办法就是你的驱动主动printk一下啊
有没有自然就清楚了
Wenxy1 2010-01-04
  • 打赏
  • 举报
回复
我想,应当没有专门查看build-in kernel的设备驱动的命令。
实际上kernel启动后,用 dmesg可以查看这些日志,从而可以得出kernel里驱动了哪些硬件。
Wenxy1 2010-01-04
  • 打赏
  • 举报
回复
build-in kernel的驱动,像PCI设备,可以用命令 lspci 来查看相应的设备。
要是内核模块用 lsmod, modinfo来查看有关信息。
deep_pro 2010-01-04
  • 打赏
  • 举报
回复
这个我还不会,
我想你可以把驱动中一些独有函数导出
看看导出符号表system.map里有没有来判断

编译进内核的模块就不能靠module_init来启动了,需要__initcall
我以前成功的例子http://hi.baidu.com/deep_pro/blog/item/94ee8d0f784d9a206159f306.html
rzsheng 2010-01-04
  • 打赏
  • 举报
回复
静态加载是指编译到内核吗?

insmod?

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧