mini2440动态加载hello.ko模块

1. 环境

采购回来的mini2440开发板,uname -a显示为

[root@FriendlyARM /]# uname -a
Linux FriendlyARM 2.6.32.2-FriendlyARM #8 Fri Jan 3 19:49:00 CST 2014 armv4tl unknown

2. 内核编译要用配置文件config_mini2440_t35,我的mini2440的显示器是T35的。

[root@localhost linux-2.6.32.2]# cp config_mini2440_t35 .config

[root@localhost linux-2.6.32.2]# make zImage

3. 准备hello文件夹,放在/development/onedriveroneweek/hello/driver

vi hello.c

  

 1 #include <linux/kernel.h> 2 #include <linux/module.h> 3 4 static int __init mini2440_hello_module_init(void) 5 { 6 printk("Hello, Mini2440 module is installed ! "); 7 return 0; 8 } 9 10 static void __exit mini2440_hello_module_clean(void) 11 { 12 printk("Good-bye, Mini2440 module was removed ! "); 13 } 14 15 module_init(mini2440_hello_module_init); 16 module_exit(mini2440_hello_module_clean); 17 MODULE_LICENSE("GPL"); 18

vi Makefile

  
  1
obj-m := hello.o 2 KERNELDIR := /development/linux-2.6.32.2 3 PWD := $(shell pwd) 4 5 modules: 6 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 7 8 .PHONEY: clean 9 clean: 10 rm -f hello.mod.c hello.o modules.order 11 rm -f hello.ko hello.mod.o Module.symvers

执行make命令,启动tftpd服务器器,将hello.ko下载到mini2440中

[root@FriendlyARM /]# tftp -r hello.ko -g 192.168.1.3
[root@FriendlyARM /]# insmod ./hello.ko
Hello, Mini2440 module is installed !

[root@FriendlyARM /]# rmmod hello
Good-bye, Mini2440 module was removed !
rmmod: module 'hello' not found

 最后一行,提示信息应该是个错误,应该使用命令rmmod hello.ko,但这个命令看不到mini2440_module_clean的打印信息。

 4. FAQ

<Q1> ERROR: Kernel configuration is invalid.
<A1> make oldconfig && make prepare

<Q2> WARNING: Symbol version dump /development/linux-2.6.32.2/Module.symvers
is missing; modules will have no dependencies and modversions.
<A2> cd /development/linux-2.6.32.2
make modules

<Q2> hello: version magic '2.6.32.2 mod_unload modversions ARMv5 ' should be '2.6.32.2-FriendlyARM mod_unload ARMv4 '
<A2> make menuconfig
General setup --->
()Local version - append to kernel release
FriendlyARM

<Q3>
[root@localhost linux-2.6.32.2]# vim .config
[root@localhost linux-2.6.32.2]# make menuconfig
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
make: *** [menuconfig] Error 2
<A3> yum -y install ncurses-devel.i386

原文地址:https://www.cnblogs.com/harvis/p/3691561.html