OpenWRT 增加內(nèi)核模塊及應(yīng)用方法

進(jìn)入package目錄刁憋,創(chuàng)建模塊目錄

cd mcp/branches/V1.1-beta1/mcp/package

mkdir example

進(jìn)入example目錄滥嘴,創(chuàng)建Makefile文件和代碼路徑

cd example

touch Makefile

mkdir src

Makefile具體內(nèi)容如下:

# 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

DEPENDS:=@TARGET_octeon

TITLE:=Support Module for example

AUTOLOAD:=$(call AutoLoad,81,example)

FILES:=$(PKG_BUILD_DIR)/example/example.$(LINUX_KMOD_SUFFIX)

endef

define Build/Prepare

mkdir -p $(PKG_BUILD_DIR)

$(CP) -R ./src/* $(PKG_BUILD_DIR)/

endef

define Build/Compile

$(MAKE) -C "$(LINUX_DIR)" \

CROSS_COMPILE="$(TARGET_CROSS)" \

ARCH="$(LINUX_KARCH)" \

SUBDIRS="$(PKG_BUILD_DIR)/example" \

EXTRA_CFLAGS="-g $(BUILDFLAGS)" \

modules

endef

$(eval $(call KernelPackage,example))

進(jìn)入src目錄至耻,創(chuàng)建代碼路徑和相關(guān)源文件

cd src

mkdir example

cd example

touch example.c Kconfig Makefile

example.c具體內(nèi)容如下:

#include

#include

#include

/* hello_init ---- 初始化函數(shù)若皱,當(dāng)模塊裝載時(shí)被調(diào)用,如果成功裝載返回0 否則返回非0值 */

static int __init hello_init(void)

{

printk("I bear a charmed life.\n");

return 0;

}

/ * hello_exit ---- 退出函數(shù)尘颓,當(dāng)模塊卸載時(shí)被調(diào)用 */

static void __exit hello_exit(void)

{

printk("Out, out, brief candle\n");

}

module_init(hello_init);

module_exit(hello_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("zhangjiefeng");

Kconfig具體內(nèi)容如下:

config EXAMPLE

tristate "Just a example"

default n

help

This is a example, for debugging kernel model.

If unsure, say N.

Makefile具體內(nèi)如如下:

obj-m := example.o

回到主路徑 mcp/branches/V1.1-beta1/mcp/走触,編譯選項(xiàng)配置保存并編譯

make menuconfig

Kernel modules --->

Other modules --->

kmod-example

選項(xiàng)設(shè)置為M,保存退出

然后編譯該模塊:

make package/example/compile

編譯出的文件可以在主路徑的以下路徑找到

./staging_dir/target-mips64_eglibc-2.10.1/root-octeon/lib/modules/2.6.30.9/

./build_dir/linux-octeon/example/ipkg-octeon/kmod-example/lib/modules/2.6.30.9/

./build_dir/linux-octeon/example/example/

文件名為:example.ko

注:我們使用./build_dir/linux-octeon/example/example/example.ko

用戶態(tài)工具添加方法

進(jìn)入package目錄疤苹,創(chuàng)建工具目錄

cd mcp/branches/V1.1-beta1/mcp/package

mkdir example1

進(jìn)入example1目錄互广,創(chuàng)建Makefile文件和代碼路徑

cd example1

touch Makefile

mkdir src

該Makefile具體內(nèi)容如下:

#User mode tool example

include $(TOPDIR)/rules.mk

include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=example1

PKG_RELEASE:=1

PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/example1

SECTION:=utils

CATEGORY:=Base system

TITLE:=Build for example1 commands

endef

define Package/example1/description

This package contains an utility useful to use example1 commands.

endef

define Build/Prepare

mkdir -p $(PKG_BUILD_DIR)

$(CP) ./src/* $(PKG_BUILD_DIR)/

endef

target=$(firstword $(subst -, ,$(BOARD)))

MAKE_FLAGS += TARGET="$(target)"

TARGET_CFLAGS += -Dtarget_$(target)=1 -Wall

define Build/example1/compile

$(MAKE) -C "$(LINUX_DIR)" \

CROSS_COMPILE="$(TARGET_CROSS)" \

ARCH="$(LINUX_KARCH)" \

SUBDIRS="$(PKG_BUILD_DIR)" \

EXTRA_CFLAGS="$(BUILDFLAGS)"

endef

define Package/example1/install

$(INSTALL_DIR) $(1)/sbin

$(INSTALL_BIN) $(PKG_BUILD_DIR)/example1 $(1)/sbin/

endef

$(eval $(call BuildPackage,example1))

進(jìn)入src目錄,創(chuàng)建相關(guān)源文件

cd src

touch example1.c Makefile

example1.c 具體內(nèi)容如下:

#include

int main(void)

{

printf("Hello, world\n");

return 0;

}

Makefile文件具體內(nèi)容如下:

.NOTPARALLEL:

#OCTEON_ROOT=$(PWD)/src/

CC=~/openwrt/main/staging_dir/toolchain-mips64_gcc-4.4.1_eglibc-2.10.1/usr/bin/mips64-openwrt-linux-gnu-gcc

CFLAGS=-mips64r2 -mabi=64 -march=octeon -mtune=octeon

LFLAGS=

.PHONY: all

all: example1

example1:example1.c

${CC} ${CFLAGS} ${LFLAGS} -W -g -Wall -Wno-unused-parameter -DUSE_RUNTIME_MODEL_CHECKS=1 \

-o $@ example1.c

回到主路徑 mcp/branches/V1.1-beta1/mcp/卧土,編譯選項(xiàng)配置保存并編譯

make menuconfig

Base system --->

example1

選項(xiàng)設(shè)置為M惫皱,保存退出

然后編譯該模塊:

make package/example1/compile

編譯出的文件可以在主路徑的以下路徑找到

./staging_dir/target-mips64_eglibc-2.10.1/root-octeon/sbin/

./build_dir/linux-octeon/example1/ipkg-octeon/example1/sbin/

./build_dir/linux-octeon/example1/

文件名為:example1

注:我們使用./build_dir/linux-octeon/example1/example1

根據(jù)OpenWrt安裝介紹,將內(nèi)核模塊和用戶態(tài)工具在板子上運(yùn)行尤莺,到這就簡(jiǎn)單了往下我就不貼了旅敷。

本文由http://www.wifidog.pro/2015/01/30/openwrt%E6%B7%BB%E5%8A%A0%E6%A8%A1%E5%9D%97.html 整理編輯,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颤霎,一起剝皮案震驚了整個(gè)濱河市媳谁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌友酱,老刑警劉巖晴音,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缔杉,居然都是意外死亡段多,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)壮吩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)进苍,“玉大人加缘,你說(shuō)我怎么就攤上這事【醢。” “怎么了拣宏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)杠人。 經(jīng)常有香客問(wèn)我勋乾,道長(zhǎng),這世上最難降的妖魔是什么嗡善? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任辑莫,我火速辦了婚禮,結(jié)果婚禮上罩引,老公的妹妹穿的比我還像新娘各吨。我一直安慰自己,他們只是感情好袁铐,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布揭蜒。 她就那樣靜靜地躺著,像睡著了一般剔桨。 火紅的嫁衣襯著肌膚如雪屉更。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天洒缀,我揣著相機(jī)與錄音瑰谜,去河邊找鬼。 笑死树绩,一個(gè)胖子當(dāng)著我的面吹牛萨脑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播葱峡,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼砚哗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了砰奕?” 一聲冷哼從身側(cè)響起蛛芥,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎军援,沒(méi)想到半個(gè)月后仅淑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胸哥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年涯竟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庐船,死狀恐怖银酬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情筐钟,我是刑警寧澤揩瞪,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站篓冲,受9級(jí)特大地震影響李破,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壹将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一嗤攻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诽俯,春花似錦妇菱、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)密任。三九已至颜启,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浪讳,已是汗流浹背缰盏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淹遵,地道東北人口猜。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像透揣,于是被迫代替她去往敵國(guó)和親济炎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容