塊裝置驅動框架

2022-08-24 16:51:16 字數 1706 閱讀 4275

以ram模擬乙個分割槽為例

框架入口原始檔:armblock.c

(可根據入口原始檔,再按著框架到核心走一遍)

核心版本:linux_2.6.22.6     硬體平台:jz2440

以下是驅動**  armblock.c :

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//ram_block_disk 獨立的磁碟裝置或則分割槽

static

struct gendisk *ram_block_disk;

//定義乙個request_queue 結構體

static

struct request_queue *ram_block_req;

//定義乙個自旋鎖

static

define_spinlock(ramblock_lock);

//定義乙個主裝置號

static

intmajor;

//磁碟大小

#define gendisk_size (1024*1024)

//快取起始位址

static unsigned char *gendisk_buffer;

//getgeo 獲得驅動器資訊

static

int gendisk_getgeo(struct block_device *dev, struct hd_geometry *geo)

static

struct block_device_operations gendisk_fops=;

//請求函式

static

void ram_block_req_fn(request_queue_t *q)

}static

int ram_block_init(void

)static

void ram_block_exit(void

)module_init(ram_block_init);

module_exit(ram_block_exit);

module_license(

"gpl

");

以下是編譯驅動的makefile:

kern_dir = /work/systems/kernel/linux-2/linux-2.6.22.6

all:

make -c $(kern_dir) m=`pwd` modules

clean:

make -c $(kern_dir) m=`pwd` modules clean

rm -rf modules.order

obj-m += armblock.o

塊裝置驅動程式框架

韋東山老師幫我們把框架搭建起來了,我們先來看一下 框架 檔案的讀寫 檔案系統 vfat,ext2,ext3,yaffs2,jffs2 把檔案的讀寫轉換為扇區的讀寫 ll rw block 扇區的讀寫 1.把 讀寫 放入佇列 2.呼叫佇列的處理函式 優化 調順序 合併 塊裝置驅動程式 硬體 硬碟,fl...

塊裝置驅動

若塊裝置驅動程式也按以下字元裝置驅動程式的簡單思想來寫 1.硬碟 磁碟的讀寫其實非常快,慢在機械結構讀寫裝置的定位上面,從乙個 磁頭 的某 柱面 某 扇區 讀到資料後 步驟 r0 跳到另乙個 磁頭 的某 柱面 的某 扇區 去寫 步驟 w 接著再跳回原 磁頭 相同柱面的下乙個 扇區 去讀 步驟r1 慢...

裝置驅動 塊裝置驅動程式

塊裝置驅動程式提供對面向塊的裝置的訪問,這種裝置以隨機訪問的方式傳輸資料,並且資料總是具有固定大小的塊。典型的塊裝置是磁碟驅動器,也有其它型別的塊裝置。塊裝置和字元裝置有很大區別。比如塊裝置上可以掛載檔案系統,字元裝置不可以。這是隨機訪問帶來的優勢,因為檔案系統需要能按塊儲存資料,同時更需要能隨機讀...