Linux核心驅動基礎框架

2021-10-19 10:17:07 字數 2563 閱讀 4933

#include

//file_operations 宣告

#include

//module_init module_exit 宣告

#include

// __init __exit 巨集定義宣告

#include

//class device 宣告

#include

//copy_from_user 標頭檔案

#include

//裝置號 dev_t 宣告

#include

//ioremap iounmap 標頭檔案

static

struct class *pin_class;

static

struct device *pin_class_dev;

static dev_t devno;

//裝置號

static

int major =

231;

//主裝置號

static

int minjor =0;

//次裝置號

static

char

*module_name =

"pin"

;//模組名

volatile

unsigned

int* gpfsel0 =

null

;volatile

unsigned

int* gpset0 =

null

;volatile

unsigned

int* gpclr0 =

null

;static

int pin_open (

struct inode *inode,

struct file *file)

static

int pin_read (

struct file *file1,

char __user *buf, size_t count, loff_t *ppos)

static

int pin_write (

struct file *file1,

char __user *buf, size_t count, loff_t *ppos)

else

if(usercmd ==0)

else

return0;

}static

struct file_operations pin_fops =

;int __init pin_drv_init

(void

)void __exit pin_dev_exit

(void

)module_init

(pin_drv_init)

;//入口

module_exit

(pin_drv_exit)

;module_license

("gpl v2"

);

cd /home/whao/linux-rpi-

4.14

.y/drivers/

char

/

cp ~

/pin4driver.c .

vi makefile
加入

obj-m                           +

= pindriver.o

cd /home/whao/linux-rpi-

4.14

.y/

arch=arm cross_compile=arm-linux-gnueabihf- kernel=kernel7 make modules
scp drivers/

char

/pin4driver.ko [email protected]

.1.7

:/home/pi

開發板端

sudo insmod pindriver.ko
chmod 666

/dev/pin

#include

#include

#include

#include

void

main()

else

}

arm-linux-gnueabihf-gcc pintest.c -o pintest
將pintest傳送到開發板

scp pintest [email protected]

.1.7

:/home/pi

檢視核心列印資訊

dmesg

Linux核心中LED驅動框架

朱有鵬老師驅動開發學習筆記 1 讀寫led裝置屬性檔案 led裝置屬性的show和store方法 led裝置驅動程式 操作led硬體裝置 2 led classdev結構體定義 struct led classdev 3 編寫led驅動程式其實就是填充led classdev結構體內的成員,並在模組...

Linux核心混雜裝置驅動程式設計框架

struct miscdevice 向核心註冊乙個混雜裝置 misc register 註冊的混雜裝置物件位址 從核心解除安裝混雜裝置 misc deregister 混雜裝置物件位址 int main 採用輪詢方式獲取狀態 while 1 close fd return 0 include inc...

linux字元裝置驅動基礎框架

include include include include include include include define count 1 define name chr key0 define atomic value 0 定義巨集是否使用原子變數來限定在乙個時刻只能有乙個應用程式訪問驅動 st...