OpenWrt添加驱动模块

xiaoxiao2021-02-27  443

1. 添加模块目录

在package/kernel/下执行命令: mkdir example

2. 建立Makefile

在package/kernel/example建立Makefile文件,命令:vim Makefile,内容如下:

#Kernel module example include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=example PKG_RELEASE:=1 include $(INCLUDE_DIR)/package.mk define KernelPackage/example SUBMENU:=Other modules TITLE:=Support Module for example FILES:=$(PKG_BUILD_DIR)/$(PKG_NAME).ko AUTOLOAD:=$(call AutoLoad,81,$(PKG_NAME)) endef EXTRA_KCONFIG:= \ CONFIG_$(PKG_NAME)=m EXTRA_CFLAGS:= \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ MAKE_OPTS:= \ ARCH="$(LINUX_KARCH)" \ CROSS_COMPILE="$(TARGET_CROSS)" \ SUBDIRS="$(PKG_BUILD_DIR)" \ EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) define Build/Compile $(MAKE) -C "$(LINUX_DIR)" \ $(MAKE_OPTS) \ modules endef $(eval $(call KernelPackage,$(PKG_NAME)))

3. 建立src目录

在package/kernel/example下建立src目录,命令:mkdir src,在src目录下建立Kconfig、Makefile和example.c文件。

3.1 Kconfig文件内容

config EXAMPLE tristate "Just a example" help This is a example, for debugging kernel model. If unsure, say N.

3.2 Makefile文件内容

obj-${CONFIG_EXAMPLE} += example.o

3.3 example.c文件内容

#include <linux/module.h> #include <linux/version.h> #include <linux/kmod.h> static int __init example_init(void) { printk("hello example lede init!\n"); return 0; } static void __exit example_exit(void) { printk("hello example lede exit!\n"); } module_init(example_init); module_exit(example_exit); MODULE_AUTHOR("hello world"); MODULE_DESCRIPTION("example driver"); MODULE_LICENSE("GPL");

4. 配置make menuconfig

在openwrt目录make menuconfig–>kernel module–>other module–>kmod-example选中,执行编译命令:make package/kernel/example/compile V=s

转载请注明原文地址: https://www.6miu.com/read-1499.html

最新回复(0)