用cubieboard3运行一个简单的模块

环境:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值