1. 將模板 mydrv 放到 openwrt 原始碼特定目錄 openwrt/package/kernel/下
2. 配置對該驅動的編譯支援
$ cd openwrt
$ make menuconfig
# 選擇 kernel modules -> other modules -> kmod-mydrv
# 按 y 選中
# 儲存退出
3. 字元裝置驅動軟體包 makefile 介紹include $(topdir)/rules.mk
include $(include_dir)/kernel.mk
include $(include_dir)/package.mk #以上三個用來關聯openwrt
pkg_name:=mydrv #字元裝置驅動模組名稱
pkg_release:=1
#版本號
define kernelpackage/mydrv #核心模組
submenu:=other modules #進行歸類
title:=mydrv #標題
files:=$(pkg_build_dir)/mydrv.ko #模組檔案
kconfig:=
endef
define kernelpackage/mydrv/description
this is a mydrv drivers #描述
endef
make_opts:= \ #編譯前指定工具和核心arch等
arch="$(linux_karch)" \
cross_compile="$(target_cross)" \
subdirs="$(pkg_build_dir)"
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,mydrv))
src 目錄下的 makefile :obj-m += mydrv.o
告訴核心新增的模組目標檔名稱為 mydrv.o
4. 編譯驅動包
$ cd openwrt
$ make package/kernel/mydrv/compile v=99
#如果make有問題,試試root使用者
編譯得到的韌體在目錄openwrt/bin/ramips/packages/base/
下,名稱為kmod-mydrv_3.18.29-1_ramips_24kec.ipk
5. 載入驅動模組到核心及其解除安裝
# 將模組拷貝到 widora
$ opkg install kmod-mydrv_3.14.25-1_ramips_24kec.ipk
# 安裝完成後在目錄 `/lib/modules/3.18.29/`下可以找到驅動
$ insmod mydrv.ko #載入
$ rmmod mydrv.ko #解除安裝
6. 驅動開機自動載入
$ cd /etc/modules.d
$ vi 61-mydrv #61表示不使用外接usb類的自啟動程式,分隔符『-』後面接驅動模組名稱!
# 在建立的該檔案中寫入: mydrv 即驅動的名稱。
# 最後,必須保證 mydrv.ko 驅動模組檔案放在`/lib/modules/3.14.25/`中
$ reboot
$ lsmod #令查詢當前已經載入的驅動模組
2. 配置 openwrt 支援軟體包的編譯
$ cd openwrt
$ make menuconfig
3. 應用程式軟體包原始碼介紹#include
#include
#include
#include
#include
#include
#include
int main(int argc , char** argv)
//函式測試
write(fd,&num,1);
read(fd,&num,1);
ioctl(fd,1,1);
close(fd);
return
0; }
4. 編譯應用程式軟體包$ cd openwrt
$ make
$ make
$ make
package/index v=99
5. 應用程式的安裝和使用# 將程式拷貝到 widora
openwrt字元裝置驅動開的概述
本此博文的主要目標在於 對linux核心,驅動有初步的認識 1 應用程式使用庫提供的open函式開啟代表led的裝置檔案 2 庫根據open函式傳入的引數執行swi指令,該指令會引起cpu的異常,進入核心。3 核心的一場處理函式根據這些引數找到相應的驅動程式,返回乙個檔案控制代碼給庫,進而返回給應用...
openwrt之字元裝置驅動開發
應用程式 庫 核心 驅動程式的關係 以驅動led為例 應用程式使用庫提供的 open 函式開啟代表 led 的裝置檔案。庫根據 open 函式傳入的引數執行swi指令,該指令會引起 cpu 異常,進入核心。核心的異常處理函式根據這些引數找到相應的驅動程式,返回乙個檔案控制代碼給庫,進而返回給應用程式...
arm linux驅動開發之字元裝置驅動開發
1 先要了解裝置函資料結構 2 然後將驅動註冊到核心中 define chrdevbase major 200 主裝置號 define chrdevbase name chrdevbase 裝置名 static char readbuf 100 讀緩衝區 static char writebuf 1...