嵌入式核心及驅動開發之學習筆記(五) 編寫字元驅動步驟總結
1,實現模組載入和解除安裝入口函式
module_init(chr_dev_init);
module_exit(chr_dev_exit);
2,在模組載入入口函式中
a, 申請主裝置號 (核心中用於區分和管理不同字元裝置)
register_chrdev(dev_major, "chr_dev_test", &my_fops);
b,建立裝置節點檔案 (為使用者提供一個可操作到檔案介面--open())
struct class *class_create(THIS_MODULE, "chr_cls");
struct device *device_create(devcls, NULL, MKDEV(dev_major, 0), NULL, "chr2");
c, 硬體的初始化
1,地址的對映
gpx2conf = ioremap(GPX2_CON, GPX2_SIZE);
2,中斷到申請
3,實現硬體的暫存器到初始化
e,實現file_operations
const struct file_operations my_fops = {
.open = chr_drv_open,
.read = chr_drv_read,
.write = chr_drv_write,
.release = chr_drv_close,
};