用vivi模拟向内核中加入自己的驱动模块

本文详细介绍了如何在Vivi系统中添加自定义模块,包括创建必要的文件和目录结构、修改配置文件以及如何编译和测试这些更改。

 

本文为《向vivi中添加自己的命令》的续写

 

由于viviLinux的配置机制相同,而且vivi的编译时间比linux少的多,为了节省时间我们以vivi为例,加入自己的模块。内核模块的加入与vivi的相当,这里以test.c等程序来模拟内核模块下的驱动程序,除此之外,两者大概要做的都是:修改顶层vivi/Makefile、修改vivi/drivers/Makefile、修改vivi/drivers/test/Makefile、修改vivi/drivers/test/cpu/Makefile、修改vivi/arch/Config.in、修改vivi/drivers/test/Config.in

 

步骤一:

vivi源码路径下drivers创建文件夹test名在此文件夹下创建如下目录结构:(创建件可用touch命令)

# cd /home/su/vivi

# mkdir drivers/test

#cd drivers


# mkdir test/cpu

# cd test

# touch Config.in Makefile test.c test_client.c test_ioctl.c test_proc.c test_queue.c

# touch cpu/Makefile cpu/cpu.c

 

步骤二:

修改所有.c源文件,输入类似如下内容,比如在test_client.c输入:

#include <printk.h>

void test_client(void)

{

       printk("/ntest_client/n");

}

 

步骤三:

修改drivers/test/Config.in

#   TEST driver configuration

mainmenu_option next_comment

comment    'TEST Driver'

 

bool 'TEST support' CONFIG_TEST

if [ "$CONFIG_TEST" = "y" ]; then

    tristate 'TEST user-space interface' CONFIG_TEST_USER

    bool 'TEST CPU' CONFIG_TEST_CPU

fi

endmenu

 

步骤四:

修改arch/config.in

在文件最后加入行:

    source drivers/test/Config.in

 

步骤五:

修改drivers/test/Makefile

L_TARGET := test.a

obj-$(CONFIG_TEST) += test.o test_queue.o test_client.o

obj-$(CONFIG_TEST_USER) += test_ioctl.o

obj-$(CONFIG_PROC_FS) += test_proc.o

subdir-$(CONFIG_TEST_CPU) += cpu

include $(TOPDIR)/Rules.make

clean:

    rm -f *.[oa] .*.flags

 

步骤六:

修改drivers/test/cpu/Makefile

SUB_DIR    :=

MOD_SUB_DIR   :=

ALL_SUB_DIRS  :=

L_TARGET   := test_cpu.a

obj-$(CONFIG_TEST_CPU)   += cpu.o

include $(TOPDIR)/Rules.make

clean:

    rm -f *.[oa] .*.flags

 

步骤七:

修改drivers/Makefile

在此文件的include $(TOPDIR)/Rules.make之前加入:

subdir-$(CONFIG_TEST) += test

 

步骤八:

修改顶层Makefile

在此文件的DRIVERS-$(CONFIG_MTD) += drivers/mtd/mtd.o之后加入以下两行:

DRIVERS-$(CONFIG_TEST)  += drivers/test/test.a

DRIVERS-$(CONFIG_TEST_CPU) += drivers/test/cpu/test_cpu.a

 

步骤九:

新建文件include/testdriver.h,并输入如下内容:

#ifdef CONFIG_TEST

    extern void test(void);

    extern void test_queue(void);

    extern void test_client(void);

#endif

#ifdef CONFIG_TEST_USER

    extern void test_ioctl(void);

#endif

#ifdef CONFIG_PROC_FS

    extern void test_proc(void);

#endif

#ifdef CONFIG_TEST_CPU

    extern void cpu(void);

#endif

 

步骤十:

修改lib/command.c,在函数command_mytest中加入如下代码:

#ifdef CONFIG_TEST

    test();

    test_queue();

    test_client();

#endif

#ifdef CONFIG_TEST_USER

    test_ioctl();

#endif

#ifdef CONFIG_PROC_FS

    test_proc();

#endif

#ifdef CONFIG_TEST_CPU

    cpu();

#endif

 

步骤十一:

配置:make clean之后make menuconfig并选中新加入的配置选项

编译:make

烧录:load flash vivi x

测试:进入vivi,执行命令:mytest

可看到打印出类似下面的语句:

test_client

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值