您的位置:首页 > 其它

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

2009-05-21 19:04 288 查看
本文为《向vivi中添加自己的命令》的续写

由于vivi和Linux的配置机制相同,而且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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: