嵌入式linux 内核驱动程序模块编译及其操作流程

2019-07-13 02:53发布


   本笔记,是介绍嵌入式linux的驱动程序模块不同于运行于用户的应用程序,现在介绍的是运行于内核态的驱动程序的编译及运行流程,不介绍如何编写。此程序的运行,基于mini2440开发板 step 1:       编写一个运行于内核的驱动程序
      随便写一个最简单的程序,并命名为 amwjie72.c
_______________________________________________________________
|
|     #include
|     #include
|
|     static int __init module_init(void)
|     {
|         printk("Hello,  module is installed ! ");
|         return 0;
|     }
|
|     static void __exit module_cleanup(void)
|     {
|        printk("Good-bye,  module was removed! ");
|     }
|
|     module_init(module_init);
|     module_exit(module_cleanup);
|     MODULE_LICENSE("GPL");
|______________________________________________________________

step 2:
      把编写的 amwjie72.c 拷贝到内核根目录
      /drivers/char下

step 3:
      修改  char  目录下的 Kconfig 文件,使其在配置内核的时候
      能进行选择。
 ______________________________________________________________ 
|        
|    config AMWJIE72
|           tristate "first module"
|           help
|             for more information,please sent E-mail to 
|              amwjie72@163.com
|______________________________________________________________

step 4:
      回到linux内核的根目录下,执行
      make menuconfig
      ---> Device Drivers ---> Character devices 
         --->first module
 
      选为 M 后。再保存退出
      
     【注】 此步,必须在根目录下有一个内核的配置文件.
step 5:
      在linux内核根目录下,/drivers/char  打开Makefile 
      加入如下:
_______________________________________________________________
|
|   obj-$(AMWJIE72)   +=amwjie72.o
|______________________________________________________________
     把内核配置信息与真正的源代码联系起来
step 6:
      在内核根目录下
      执行
      make modules
      在内核根目录下/drivers/char 下会生成amwjie72.ko模块文件
      此文件,可下载到开发板上运行
 
      【注】:1> 在修改Kconfig 文件时 AMWJIE72 可随意命名,
                 但要与Makefile文件里的括号内一致,以此建立联系
              
              2> amwjie72.ko 文件下到开发板要想运行起来,还必须
                 要所用内核包括对该模块文件的支持,即要将内核
                 编译后,再下载进去。
step 7:
      编译内核                   
      在内核根目录下执行
      make zImage
      在内核根目录下/arch/arm/boot 下会生成zImage文件
step 8:
      将 zImage 与 amwjie72.ko 拷贝到 windows 环境下
step 9:
      将 开发板 置于 NOR FLASH 启动方式
      进入BIOS 界面后,选择 [k] 功能,用 DNW 来传送内核(zImage) 
      BIOS 会自动烧写内核到Nand Flash 分区中
step 10:
      用 rz 命令,并用串口发送 amwjie72.ko文件到开发板
step 11:
      用 chmod 命令来改变文件权限
      执行
      chmod +x amwjie72.ko

step 12:
      再将模块文件复制到/lib/modules/2.6.29.4-FriendlyARM目录
step 13
      使用如下两个命令来装载和卸载模块
   
      1>: modprobe amwjie72 
      2>: rmmod    amwjie72
    
      【注】 如上两命令,不再需要加“.ko” 尾缀了

       【[注]】:
                如要再修改驱动程序模块,无须再次编译内核
                只要修改了驱动程序后。再重复step 6,10,11,12