#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...