Trigger_Huang 发表于 2011-04-11 12:36

回复 7# mch_kot

    请参考我提出的三步的顺序。
    sudo dmesg -c是清除所有的信息……
   所以在insmod之前先清除一下,然后再insmod的话,打印信息就看得清楚一些……

mch_kot 发表于 2011-04-11 13:34

回复 11# Trigger_Huang


    这个不是.ko的模块,是.o的文件。不知道可以吗?.ko的文件如何生成呢?
我尝试加载了一下,insmod: error inserting ' mt9v011.o': -1 operation not permitted
我以为是没有权限的问题,加上sudo出现的错误为:insmod: error inserting ' mt9v011.o': -1 Invalid module format

Trigger_Huang 发表于 2011-04-11 18:23

回复 12# mch_kot


    .o 文件???你不是说要编写模块嘛?? 模块编译后就是ko文件啊……

accessory 发表于 2011-04-12 05:53

我也晕了。驱动不都是.KO 么?LZ写的是驱动么?用什么打印输出的? PRINTF? PRINTK?

mch_kot 发表于 2011-04-12 08:55

回复 14# accessory


    编写好的.c驱动通过make不就生成.o了吗?我以前也听说过.ko,但在driver中只能看到.o,而不知道.ko在哪里啊?小弟初学驱动,请高手多多指点

mch_kot 发表于 2011-04-12 08:59

回复 13# Trigger_Huang


    编写好的.c驱动通过make不就生成.o了吗?我以前也听说过.ko,但在driver中只能看到.o,而不知道.ko在哪里啊?小弟初学驱动,请高手多多指点
我的整个流程是:将该驱动名称添加到.konfig和makefile中,在makemenuconfig中选中,然后make uImage,最后生成了镜像,将镜像置于开发板上,然后运行开发板,在串口超级终端中查看打印信息。
我也知道该有模块,但模块怎么形成呢?我不知道哪里有问题,或是还缺少哪些步骤?

Trigger_Huang 发表于 2011-04-12 19:45

回复 16# mch_kot


   既然是编译成KO文件,就没必要修改Makefile以及Kconfig了,随便在一个目录写好模块代码,再写个Makefile文件, 当前目录下make就能生成ko,然后再当前目录下sudo insmod name.ko 就可以了

obj-m := name.o
all:
    make -C ${KERNEL_PATH} M=`pwd` modules
clean
      make -C ${KERNEL_PATH} M=`pwd` modules clean

Trigger_Huang 发表于 2011-04-12 19:50

回复 17# Trigger_Huang


   对了,如果是运行在ARM开发板上,还要在Makefile中添加 ARCH=arm CROSS_COMPILE=arm-linux-   export ARCH, CROSS_COMPILE
最后将生成的KO下载到开发板上,然后运行你的rootfs中的命令insmod就能看到你的模块在开发板上运行了。

mch_kot 发表于 2011-05-05 16:48

回复 17# Trigger_Huang


    可是我这个驱动是一个摄像头驱动,本身的位置在driver/media/video下,而且需要i2c总线,把它单独编译出来可以吗?

mch_kot 发表于 2011-05-10 16:26

回复 18# Trigger_Huang


    谢谢你的建议,按照你的建议我现在已经把模块弄好了,而且先dmesg -c 了,然后insmod
但我再 dmesg的时候发现没有任何内容,
root@beagleboard:/# dmesg -c
root@beagleboard:/# insmod mt9p031.ko
root@beagleboard:/# dmesg

这是什么问题啊?
页: 1 [2] 3
查看完整版本: 跪求各位了!