2.复制你的范例驱动到刚刚建立的DoneLin_Driver文件夹中,我的范例名字叫global_mem_two.c:
3.在DoneLin_Driver文件夹中建立两个新文本文件:Kconfig 和 Makefile
4.修改DoneLin_Driver文件夹下的Kconfig文件,输入以下内容:
menu "DoneLin-driver "
comment "global_mem_two-driver "
config GLOBAL_MEM_TWO tristate "global_mem_two DriTst" help this is global mem 2 test programming
endmenu
5.接着修改DoneLin_Driver的另一个文件Makefile,输入以下内容:
obj-$(CONFIG_GLOBAL_MEM_TWO) += global_mem_two.o
6.修改上一层目录(Driver目录)中的Kconfig文件,声明自己的源代码:在"menu "Device drivers""下面加入如下内容:
source "drivers/DoneLin_Driver/Kconfig"##...add my tst driver module
7.修改arch/arm/Kconfig
同样,跟在driver/Kconfig一样,在"menu device drivers"下面加入同样的语句:
source "drivers/DoneLin_Driver/Kconfig"
就是说:在arch/arm/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/DoneLin_Driver/Kconfig"
在drivers/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/hello/Kconfig"(不知为什么arch/arm/Kconfig中竟然含有Drivers里Kconfig内容的一个复本,实验证明只对drivers/Kconfig中修改内容无效。)
8.修改Drivers目录下的Makefile,在如图位置,加入:
obj-$(CONFIG_GLOBAL_MEM_TWO) += DoneLin_Driver/#ADD FOR TEST add_for_test add for test测试的驱动
8.都修改好,保存好之后,回到linux内核根目录,make menuconfig,奇迹出现了,我自己的linux驱动程序出现在内核的device drivers选项里面了:
选择global_mem_tow_DriTst为m,表示编译成模块,编译成ko文件
然后,保存退出,make, make zImage, make modules即可生成新的内核和新的modules,
完成了,
开发板得成功运行 uboot 。linux得启动ftp服务 或者nfs服务。uboot 可以支持ftp 或者nfs下载。开发板和pc之间有两个连接:1.得用网线连接 开发板 和pc。2.用linux的 minicom 软件和开发板进行 串口通讯。不是一两句话能解决的。串口通讯也可以传输文件搜索这个文章:使用uboot + minicom串口协议下载镜像文件
1、先写Makefile编译出***.ko文件模板如下,保存到命名为Makefile文件里,放到你代码的同级目录下
TARGET=my_proc.ko
LINUXDIR=/lib/modules/$(shell uname -r)/build
PWD=$(shell pwd)
obj-m :=
obj-m += my_proc.o
all: $(TARGET)
$(TARGET): $(OBJS)
make -C $(LINUXDIR) SUBDIRS=$(PWD) modules
clean:
rm -f modules.order Module.symvers $(TARGET) *.mod.c *.o
rm -rf .tmp_versions .mod* Module.markers
2、make
3、root权限下用命令插入模块
insmod my_proc.ko
4、可以用你写的应用程序打开、 *** 作模块了
5、查看模块命令
lsmod
cat /proc/modules
modinfo my_proc.ko
6、root下卸载模块
rmmod
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)