以ram模擬乙個分割槽為例
框架入口原始檔:armblock.c
(可根據入口原始檔,再按著框架到核心走一遍)
核心版本:linux_2.6.22.6 硬體平台:jz2440
以下是驅動** armblock.c :
#include #include以下是編譯驅動的makefile:#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
");
kern_dir = /work/systems/kernel/linux-2/linux-2.6.22.6all:
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 慢...
裝置驅動 塊裝置驅動程式
塊裝置驅動程式提供對面向塊的裝置的訪問,這種裝置以隨機訪問的方式傳輸資料,並且資料總是具有固定大小的塊。典型的塊裝置是磁碟驅動器,也有其它型別的塊裝置。塊裝置和字元裝置有很大區別。比如塊裝置上可以掛載檔案系統,字元裝置不可以。這是隨機訪問帶來的優勢,因為檔案系統需要能按塊儲存資料,同時更需要能隨機讀...