乙個極簡單的 塊裝置驅動 的編寫

2021-06-20 22:06:47 字數 1532 閱讀 3541

目標平台:loongson 1b

目標系統:1b-linux-3.0

目標開發板架構:mipsel架構

實現平台:ubuntu 13.04 

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ramdisk_size (1024*1024)

static define_spinlock(ramdisk_lock); // 申請自旋鎖

static int major;

static struct gendisk *ramblock_disk;

static struct request_queue *ramblock_queue;

static unsigned char *ram_buff;

static const struct block_device_operations ramdisk_fops = ;

// 關鍵:offset, len

static void ramblock_do_request(struct request_queue * q)

}//關鍵: 塊裝置的的初始化:

1) 塊裝置註冊

2) 請求佇列的繫結

3) 設定塊容量

4) 註冊塊裝置

static int simp_blkdev_init(void)

關鍵:1) 登出裝置號

2) 釋放ramblock所佔的內容

3)銷毀佇列

4)釋放記憶體

static void simp_blkdev_exit(void)

module_init(simp_blkdev_init);

module_exit(simp_blkdev_exit);

module_author("");

module_description("block dev ");

module_license("gpl");

之後的步驟如下:

a)make 一下,生成ramdisk.ko;

b)編譯好了之後,就可以安裝驅動了,在linux下是這麼做的,sudo insmod ramdisk.ko;

c)安裝好了,利用ls /dev/ram*, 就會發現在/dev下有個新結點,即/dev/ramdisk;

d)進行分割槽處理, sudo fdisk /dev/ramdisk,簡單處理的話就建立分割槽, 生成/dev/ramdisk;

e)建立檔案系統,sudo mkfs.ext3 /dev/ramdisk;

f)有了上面的檔案系統,就可以進行mount處理,不妨sudo mount /dev/ramdisk  /mnt;

g)上面都弄好了,大家就可以copy、delete檔案試試了,是不是很簡單。

字元裝置驅動1 乙個簡單的字元裝置驅動示例

1.註冊主次裝置號 register chrdev region 和 alloc chrdev region 2.註冊字元裝置驅動 cdev init 初始化,cdev add 新增,註冊裝置驅動,cdev alloc 申請空間,cdev del 登出驅動 3.建立驅動的裝置檔案 class cre...

乙個LED驅動的編寫

include include include include include include include include include include include define gpm4con 0x110002e0 volatile unsigned long baseaddr 0 位址...

塊裝置驅動的引入

塊裝置只能以快為單位接收輸入和返回輸出。假設我應用程式也是open read write,塊裝置裡面也是給它提供open read write函式,然後來操作硬體 我們舉例來驗證 1.硬碟 硬碟的格式像光碟一樣乙個乙個盤面 然後這一面上有乙個乙個的環像跑到一樣的東西,這一環一環一樣的東西稱為柱面 跑...