环境:
Linux zhz 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
cubieboard3 源代码SDK.CT3已经编译完成的android系统 :镜像。sun7i_android_sugar-cubietruck.img 。
模块路径:/home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count$
word_count目录下有2个文件如下:
Makefile word_count.c
word_count.c
源码如下
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/miscdevice.h>
#include <asm/uaccess.h>
// 初始化Linux驱动
static int __init word_count_init(void)
{
printk("word_count_init_success\n");
return 0;
}
// 卸载Linux驱动
static void __exit word_count_exit(void)
{
// 输出日志信息
printk("word_count_init_exit_success\n");
}
// 注册初始化Linux驱动的函数
module_init( word_count_init);
// 注册卸载Linux驱动的函数
module_exit( word_count_exit);
MODULE_AUTHOR("lining");
MODULE_DESCRIPTION("statistics of word count.");
MODULE_ALIAS("word count module.");
MODULE_LICENSE("GPL");
Makefile内容如下
################################################################################
#
# Common Variables that already set:
# LICHEE_KDIR
# LICHEE_MOD_DIR
# CROSS_COMPILE
# ARCH
#
#################################################################################
PWD:=$(shell pwd)
LICHEE_KDIR:=/home/work/CubieBoard2_SDK/lichee/linux-3.4
obj-m:=word_count.o
all:
echo $(PWD)
$(MAKE) ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C $(LICHEE_KDIR) M=$(PWD)
clean:
@rm -rf *.o *.ko .*.cmd *.mod.c *.order *.symvers .tmp_versions *~
进入/home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count$目录
执行make命令 编译如下打印消息
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C /home/work/CubieBoard2_SDK/lichee/linux-3.4 M=/home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count
make[1]: Entering directory `/home/work/CubieBoard2_SDK/lichee/linux-3.4'
LD /home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count/built-in.o
CC [M] /home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count/word_count.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count/word_count.mod.o
LD [M] /home/work/CubieBoard2_SDK/lichee/linux-3.4/drivers/word_count/word_count.ko
用ls命令查看
built-in.o Makefile modules.order Module.symvers word_count.c word_count.ko word_count.mod.c word_count.mod.o word_count.o
word_count.ko
是我们需要的模块
电脑链接CT3
命令如下
进入模块目录word_count
取的root权限
adb root
取的读写权限
adb remount
把word_count.kod推进/data/local
adb push ${PWD}/word_count.ko /data/local
进入android目录
adb shell
进入刚才推进的目录
cd /data/local
查看文件
ls
chrome-command-line
tmp
word_count.ko
多了 word_count.ko模块
插入模块
insmod word_count.ko
查看模块是否运行
root@android:/data/local # lsmod |grep word_count
word_count 555 0 - Live 0x00000000 (O)
dmesg查看模块的打印消息
|root@android:/data/local # dmesg |grep word_count
<7>word_count_init_success
卸载模块rmmod
root@android:/data/local # rmmod word_count
查看模块是否存在
root@android:/data/local # lsmod |grep word_count
一盘步骤
内核模块的操作过程
1.编写驱动模块
2.编写驱动程序的Makefile文件
3.进入当前目录用make 编译(RAM机子采用的 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-)
4.PC连开发板。把程序推进去开发板
5.加载模块 insmod
6.查看模块 lsmod
7.查看模块打印消息dmesg
8.卸载内核模快 rmmod