下面就是增加核心模組的方法了
進入package目錄,建立模組目錄
cd backfire/package
mkdir example
進入example目錄,建立makefile檔案和**路徑
cd example
touch makefile
mkdir src
makefile具體內容如下:
#
## this is free software, licensed under the gnu general public license v2.
# see /license for more information.
#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:=example driver
depends:=@linux_2_6
files:=$(pkg_build_dir)/*.$(linux_kmod_suffix)
kconfig:=
endef
define kernelpackage/example/description
kernel module to example
endef
extra_kconfig:= \
config_example=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/prepare
mkdir -p $(pkg_build_dir)
$(cp) ./src/* $(pkg_build_dir)/
endef
define build/compile
$(make) -c "$(linux_dir)" \
$(make_opts) \
modules
endef
$(eval $(call kernelpackage,example))
3.進入src目錄,建立**路徑和相關原始檔
cd src
touch example.c kconfig makefile
example.c具體內容如下:
#include #include #include /* hello_init ---- 初始化函式,當模組裝載時被呼叫,如果成功裝載返回0 否則返回非0值 */
static int __init hello_init(void)
/* hello_exit ---- 退出函式,當模組解除安裝時被呼叫 */
static void __exit hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
module_license("gpl");
module_author("zhangjiefeng");
kconfig具體內容如下:
config example
tristate "just a example"
help
this is a example, for debugging kernel model.
if unsure, say n.
makefile具體內如如下:
obj-$(config_example) += example.o
回到主路徑 backfire/,編譯選項配置儲存並編譯
make menuconfig
kernel modules --->
other modules --->
kmod-example
選項設定為m,儲存退出
然後編譯該模組:
make package/example/compile
5.編譯出的檔案可以在主路徑的以下路徑找到
./staging_dir/target-mips_r2_uclibc-0.9.30.1/root-lantiq/lib/modules/2.6.32.33/example.ko
./build_dir/linux-lantiq_ar9/example/ipkg-lantiq/kmod-example/lib/modules/2.6.32.33/example.ko
./build_dir/linux-lantiq_ar9/example/example.ko
./build_dir/target-mips_r2_uclibc-0.9.30.1/openwrt-sdk-lantiq-for-linux-x86_64-gcc-4.3.3+cs_uclibc-0.9.30.1/staging_dir/target-mips_r2_uclibc-0.9.30.1/root-lantiq/lib/modules/2.6.32.33/example.ko
./build_dir/target-mips_r2_uclibc-0.9.30.1/root-lantiq/lib/modules/2.6.32.33/example.ko
注:我們使用./build_dir/linux-lantiq_ar9/example/example.ko
OpenWRT 增加核心模組及應用方法
進入package目錄,建立模組目錄 cd mcp branches v1.1 beta1 mcp package mkdir example 進入example目錄,建立makefile檔案和 路徑 cd example touch makefile mkdir src makefile具體內容如...
為 OPENWRT 編譯額外的核心模組
舉個例子,如果想在路由器上跑 openwrt 並未包含的 rtl8188eu 驅動模組該怎麼辦呢?在這裡給出一種快捷但是比較 dirty 的辦法 否則應該自己寫個 package 首先得有編譯韌體時留下的 kernel 的原始碼,包括編譯過程中生成的一些檔案。下面假定 openwrt 的原始碼目錄在...
增加驅動模組到核心樹
現在要把下面的驅動模組新增到核心樹中 module param.ko num.c include include include include static int num 0 static char string this is a test static int array 3 static ...