切换到openwrt/package/kernel文件夹下,创建一个文件夹driver_code,文件夹内容如下。
driver_code/
|-- Makefile
`-- src
|-- Makefile
`-- driver_code.c
- driver_code/Makefile:用于告诉openwrt源码驱动源码内容。
- driver_code/src/Makefile:用于编译驱动源码。
- driver_code/src/driver_code.c:驱动源码
文件内容
driver_code/Makefile
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=driver_code
PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0
include $(INCLUDE_DIR)/package.mk
define KernelPackage/driver_code
SUBMENU:=Other modules
TITLE:=driver code module
FILES:=$(PKG_BUILD_DIR)/driver_code.ko
AUTOLOAD:=$(call AutoLoad,30,driver_code,1)
KCONFIG:=
endef
define KernelPackage/driver_code/description
This is a driver code module
endef
MAKE_OPTS:= \
$(KERNEL_MAKE_FLAGS) \
M="$(PKG_BUILD_DIR)"
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
$(MAKE_OPTS) \
modules
endef
$(eval $(call KernelPackage,driver_code))
driver_code/src/Makefile
obj-m += driver_code.o
driver_code/src/driver_code.c
#include <linux/module.h>
#include <linux/kernel.h>
//insmod会执行该函数
static int __init helloworld_init(void)
{
printk("helloworld driver init !\n");
return 0;
}
//声明出入口函数
module_init(helloworld_init);
MODULE_AUTHOR("YANG");
MODULE_LICENSE("GPL");
选择软件
Kernel modules --->
Other modules --->
<*> kmod-driver_code...................................... driver code module