1. 与内核版本不一致 嵌入式开发时,模块编译时需要制定内核的路径,内核的版本信息会加入到模块文件中,如果目标板上运行的内核与模块中包含的内核版本对不上,加载就会出错,报如下错误: insmod invalid format 可通过modinfo查看ko文件中包含的内核版本信息 2. 内核没有编译,缺少文件 "no symbol version for module_layout",重新编译内核后,再编译模块即可. 3.模块文件被破坏 有次开发模块时,把ko文件放到了外接的flash
1,首先保证make menuconfig选项配置: [*] Enable loadable module support ---> [*] Module unloading 2,在lib下缺少modules目录和相应内核版本目录(我的是3.8.0),提示: rmmod: chdir(/lib/modules): No such file or directory 解决办法: <fl2440>: ls hello.ko hello.ko <fl2440>: ls lib
man insmod: INSMOD(8) insmod INSMOD(8) NAME insmod - Simple program to insert a module into the Linux Kernel SYNOPSIS insmod [filename] [module options...] DESCRIPTION insmod is a trivial program to insert a module into the kernel. Most users will wa
register_chrdev:Linux2.6.30之前所用,不用定义cdev:但 如果是register_chrdev 注册的话,这个时候,分配的次设备号,是从0~255,这样子的话,就分配的范围太广泛了,浪费严重,register_chrdev_region的话,是指定一个区域,比如说是0~1,才属于相对应的file_operations,多节约,多环保: int register_chrdev(unsignedintmajor,constchar*name,structfile_oper