Module 无法加载带有命令行参数的不执行任何操作模块

Module 无法加载带有命令行参数的不执行任何操作模块,module,linux-kernel,kernel,fedora,kernel-module,Module,Linux Kernel,Kernel,Fedora,Kernel Module,我们有一个非常简单的无所事事模块,如图所示: #include "linux/kernel.h" #include "linux/module.h" static unsigned int hwmode = 0; module_param(hwmode, uint, 0755); static int __init sig_mc_hw_init(void) { printk( " Inside init function, hwmode = %d\n", hw

我们有一个非常简单的无所事事模块,如图所示:

 #include "linux/kernel.h"
 #include "linux/module.h"

 static unsigned int hwmode = 0;    
 module_param(hwmode, uint, 0755); 

 static int __init sig_mc_hw_init(void) 
  {
   printk( " Inside init function, hwmode = %d\n", hwmode);
   return 0;
  }
 static void __exit sig_mc_hw_exit(void) 
  { 
   printk( " Inside exit function\n");
  }
  module_init(sig_mc_hw_init);
  module_exit(sig_mc_hw_exit);
            modprobe sig_mc_hw.ko 
我们可以对其进行modprobe,如图所示:

 #include "linux/kernel.h"
 #include "linux/module.h"

 static unsigned int hwmode = 0;    
 module_param(hwmode, uint, 0755); 

 static int __init sig_mc_hw_init(void) 
  {
   printk( " Inside init function, hwmode = %d\n", hwmode);
   return 0;
  }
 static void __exit sig_mc_hw_exit(void) 
  { 
   printk( " Inside exit function\n");
  }
  module_init(sig_mc_hw_init);
  module_exit(sig_mc_hw_exit);
            modprobe sig_mc_hw.ko 
但是,当我们给出一个输入命令行参数时,我们得到一个seg故障:

            modprobe sig_mc_hw.ko hwmode=0
dmesg表明我们还没有到达init()。我们如何调试它

通过升级内核头文件,我们从FedoraLinux版本2.6.34.10升级到了2.6.34.15。这样做还需要哪些其他文件

我们正在PowerPC上运行该模块。声明参数时是否需要缓存对齐或任何其他方法

        Thanks!
        Sarvani Chadalapaka
        HPC Systems Engineer
        Signalogic Inc
编辑时添加:

这是生成文件

TARGET := sig_mc_hw
EXTRA_CFLAGS := -I/root/adsp2/usr/src/linux/include/linux 
KDIR = /root/adsp2/usr/src/linux
PWD  = $(shell pwd)
export ARCH=powerpc
export CROSS_COMPILE=ppc_e500v2-target-linux-gnu-
export LINUXROOT=/root/adsp2/usr/src/linux

obj-m += ${TARGET}.o 

all:

       make -C $(KDIR) ARCH=powerpc CROSS_COMPILE=$(CROSS_COMPILE) M=${PWD} EXTRA_CFLAGS="$(EXTRA_CFLAGS)" modules
uname-a
命令显示以下内容:2.6.34.15-WR4.3.0.0#u标准#1 SMP PREEMPT Tue Jan 20 14:47:40 CST 2015 ppc GNU/Linux

modprobe命令显示:

     ~# modprobe -v sig_mc_hw.ko 
     ~#
     ~# modprobe -v sig_mc_hw.ko hwmode=0
        Segmentation fault 

使用了什么
uname-a
make
命令(和/或
Makefile
使用)?
modprobe-v…
有什么显示吗?谢谢你的补充信息。
modprobe-v sig_mc_hw
显示了什么?
modprobe-v sig_mc_hw hwmode=0显示了什么?很抱歉提出了所有问题,但是内核模块编程非常详细。
交叉编译
真的有必要吗?也就是说,您正在构建一个内核模块以在不同的内核/系统上运行?另外,您是否确定
额外\u CFLAGS
中的include只包含属于内核的头文件等?Rick,谢谢您的建议。请在我的帖子中找到编辑<代码>交叉编译
是必要的,因为我正在一台服务器上构建驱动程序,并将其加载到没有任何构建工具的ATCA板上。我需要将
-I/usr/include
放在
额外的\u CFLAGS
中,因为kernel.h和module.h就位于这里。我临时重命名了该位置上的所有其他include文件。您是否在开发服务器上通过交叉编译构建了运行在ATCA板上的内核?我询问的原因是
Makefile
中的目录不寻常。