• 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

  • 相关阅读:
    Mac实用快捷键大全
    Java 12 新特性概述
    java sdk官网直接下载地址
    使用SqlBulkCopy类实现导入excel表格
    框架页面高度自动刷新Javascript脚本
    从MyEclipse到IntelliJ IDEA ——让你脱键盘,全键盘操作
    带你走进EJB--将EJB发布为Webservice(1)
    带你走进EJB--将EJB发布为Webservice(2)
    poj 3042 Grazing on the Run
    算法导论:比较排序算法笔记
  • 原文地址:https://www.cnblogs.com/harvis/p/3691561.html
Copyright © 2020-2023  润新知