[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] 最简单的内核模块的主要内容,如果未能解决你的问题,请参考以下文章
内核搭建完整的mini2440开发板驱动开发环境(仿照JZ2440驱动开发环境搭建)
linux内核printk调试手段,[Mini2440] 内核调试手段之 printk
[Mini2440 - 011] 配置编译 linux-2.6 内核