[Mini2440] 最简单的内核模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Mini2440] 最简单的内核模块相关的知识,希望对你有一定的参考价值。

一 什么是内核模块

  Linux 内核是模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码。这些代码被一并组合在一个单独的二进制镜像中,即所谓的可装载内核模块中,或简称为模块。支持模块的好处是基本内核镜像尽可能的小,因为可选的功能和驱动程序可以利用模块形式再提供。模块允许我们方便地删除和重新载入内核代码,也方便了调试工作。而且当热插拔新设备时,可通过命令载入新的驱动程序。

  模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。

  总之,模块是一个为内核或其他内核模块提供使用功能的代码块。

 

二 编写一个最简单的内核模块

  最简单的一个内核模块:

simplest_module.c :

#include <linux/init.h>
#include <linux/module.h>

static int __init mod_init(void)
{
        printk(KERN_INFO "simplest module init ok!\n");
        return 0;
}

static void __exit mod_exit(void)
{
        printk(KERN_INFO "simplest module exit ok!\n");
}

module_init(mod_init);
module_exit(mod_exit);

MODULE_LICENSE("GPL");

Makefile :

obj-m += simplest_module.o
KERNEL
= /home/user/workspace/mini2440/linux-2.6.32.2 all: make -C $(KERNEL) M=`pwd` modules clean: make -C $(KERNEL) M=`pwd` modules clean

其中

  

以上是关于[Mini2440] 最简单的内核模块的主要内容,如果未能解决你的问题,请参考以下文章

Linux下编写互相通信的驱动模块并将其加入到内核中

内核搭建完整的mini2440开发板驱动开发环境(仿照JZ2440驱动开发环境搭建)

linux内核printk调试手段,[Mini2440] 内核调试手段之 printk

[Mini2440 - 011] 配置编译 linux-2.6 内核

u-boot.2012.10——mini2440(启动流程分析)

mini2440 官方linux-2.6内核文件zImage编译