openwrt 添加驱动程序到openwrt

来源:互联网 发布:知乎 wordpress 编辑:程序博客网 时间:2024/04/29 22:56
1.建立源文件
1.1在./package/kernel下建立example文件
mkdir example
1.2进入example文件,建立Makefile
内容如下:


#Kernel module example
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=example
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk

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)"


define KernelPackage/example
  SUBMENU:=Other modules
  TITLE:=Support Module for example
  FILES:=$(PKG_BUILD_DIR)/example.ko
  AUTOLOAD:=$(call AutoLoad,81,example) 
endef

define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)/              
$(CP) -R ./src/* $(PKG_BUILD_DIR)/
endef


define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) CONFIG_EXAMPLE=m modules
endef
$(eval $(call KernelPackage,example))




1.3在example下建立src目录
mkdir src
在src目录下创建Makefile文件,如下:
obj-${CONFIG_EXAMPLE}+= example.o




在创建Kconfig文件
config EXAMPLE
    tristate "Just a example"
    help
    This is a example, for debugging kernel model.
    If unsure, say N.



增加example.c文件

#include <linux/init.h>

#include <linux/module.h>
#include <linux/kernel.h>
/* hello_init ---- 初始化函数,当模块装载时被调用,如果成功装载返回0 否则返回非0值 */
static int __init hello_init(void)
{
    printk("I bear a charmed life.\n");
    return 0;
}
/* hello_exit ---- 退出函数,当模块卸载时被调用 */
static void __exit hello_exit(void)
{
    printk("Out, out, brief candle\n");
}
module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");


.##########################################

然后 make menuconfig  

kernel modules ------>

other modules------>

< >   kmod-example

0 0
原创粉丝点击