一、
1、標頭檔案
include/linux/fs.h
2、api
靜態申請裝置號
int register_chrdev_region(dev_t, unsigned, const char *);
動態分配裝置號
int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
3、登出裝置號
void unregister_chrdev_region(dev_t, unsigned);
二、靜態申請裝置號例項
1、驅動源**
#include
#include
#include
#include
static int hello_major = 248; // 主裝置號
static int hello_minor = 0; // 次裝置號
static int number_of_devices = 1; // 裝置的數量
static __init char_driver_init(void)
printk(kern_info "char_driver_init\n");
return 0;
}static __exit char_driver_exit(void)
module_init(char_driver_init);
module_exit(char_driver_exit);
module_license("gpl");
module_version("v1.0");
module_author("[email protected]");
module_description("char driver module");
module_alias("char driver module");
2、makefile
ifeq ($(kernelrelease),)
kerneldir ?= /lib/modules/$(shell uname -r)/build
pwd := $(shell pwd)
all:
$(make) -c $(kerneldir) m=$(pwd) modules
clean:
$(make) -c $(kerneldir) m=$(pwd) clean
else
obj-m := char_reg.o
endif
3、驗證
1)make
2)sudo insmod char_reg.ko
3)cat /proc/devices
xiezhi@sdtpad-desktop:~/xiezhi/linux_drivers/char_reg$ cat /proc/devices
character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttys
5 /dev/tty
5 /dev/console
5 /dev/ptmx
5 ttyprintk
6 lp
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
99 ppdev
108 ppp
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
216 rfcomm
226 drm
248 hello
250 mei
251 hidraw
252 usbmon
253 bsg
254 rtc
4)sudo rmmod char_reg
Linux驅動開發之DRM驅動
qq群 852283276 b站 主頁 drm 驅動程式開發 開篇 drm 驅動程式開發 vkms 最簡單的drm應用程式 single buffer drm 驅動是如何建立 fb device 的 linux中的drm 介紹 linux graphic dri 顯示子系統 介紹1 xilinx d...
linux驅動開發之demo
linux版本 uname r 2.6.18 1.2798.fc6 編譯 進入模組 所在目錄 make c usr src kernels 2.6.18 1.2798.fc6 m pwd modules 載入 insmod test.ko 檢視主裝置號 自動分配為no 253 dmesg 建立裝置 ...
linux裝置驅動之PCIE驅動開發
pcie pci express 是intel提出的新一代的匯流排介面,目前普及的pcie 3.0的傳輸速率為8gt s,下一代pcie 4.0將翻番為16gt s,因為傳輸速率快廣泛應用於資料中心 雲計算 人工智慧 機器學習 視覺計算 顯示卡 儲存和網路等領域。pcie插槽是可以向下相容的,比如p...