驅動開發 字元裝置1

2021-07-11 14:01:14 字數 1745 閱讀 9186

函式的呼叫

open

syscall_define3()

sys_open(char *filename,inflag)

do_sys_open()

do_file_open()

path_openat

do_tmpfile \return fd

finish_open

do_dentry_open

open = inode->fops->open

1. open使用者空間呼叫軟中斷時會產生乙個軟中斷

- 檢視軟中斷號

cd /usr/include/i386-linux-gnu/asm/unistd_32.h

13__nr_open 5

2. - cd

、 /usr/include/asm-generic/unistd.h

707#define __nr_open 1024 __syscall(__nr_open,sys_open)

3.cd /usr/include/i386-linux-gnu/bits/syscall.h

- #define sys_open nr_open
int alloc_chrdev_region(dev_t \*dev,unsigned baseminor,unsigned count,const

char \*name);

//引數

//dev_t *dev 申請裝置號

//unsigned baseminor 申請的第乙個次裝置號

//unsigned count 申請次裝置號的個數

//const char *name 裝置或驅動的名字

static

inline

void __iomem *ioremap(phys_add_t offset,unsiged long size)

inline

mdev -s-> sys/class/目錄/檔案 -> /dev/檔案

sysfs:核心和使用者互動的統一介面

cat uevent –>

ls /dev/console l

需要在class的目錄下建立類名(目錄的名字)

class_create

struct class *cls;

class_create(this_module,」fs4412」);

在類名下建立節點

device_create

建立類的返回值

null

裝置號傳的資料 (void)

建立裝置名

device_create(cls,null,devno,null,」led」);

銷毀裝置

void device_destory();

銷毀類

void class_destory();

.owner = this_module //指向當前模組

次裝置號的識別

1. iminor

static

inline

unsigned iminor(const

struct inode *inode);

驅動 linux裝置驅動 字元裝置驅動開發

preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...

字元裝置驅動開發

一 驅動模組的載入和解除安裝 linux 驅動有兩種執行方式,第一種就是將驅動編譯進 linux 核心中,這樣當 linux 核心啟動的時候就會自動執行驅動程式。第二種就是將驅動編譯成模組 linux 下模組擴充套件名為 ko 在 linux 核心啟動以後使用 insmod 命令載入驅動模組。在除錯...

字元裝置驅動 1

字元裝置驅動 1 成於堅持,敗於止步 linux 字元裝置驅動結構 cdev 結構體 在 linux 2.6 核心中使用 cdev 結構體描述字元裝置,cdev 結構體的定義如 所示。1 struct cdev 2 cdev 結構體的 dev t 成員定義了裝置號,為 32 位,其中高 12 位為主...