說明:
應(yīng)用使用USB的MSC類實現(xiàn)一個光驅(qū),然后模擬出一個光盤赖舟,實現(xiàn)ISO9660文件系統(tǒng)蓬戚。
參考:
VSF里已經(jīng)實現(xiàn)了模擬FAT32的文件系統(tǒng),代碼在這里:
https://github.com/versaloon/vsf/blob/master/vsf/component/fakefat32/fakefat32.c
其中宾抓,實現(xiàn)了fakefat32_fs_op和fakefat32_mal_drv子漩,分別是文件系統(tǒng)操作接口和塊設(shè)備訪問接口。
用戶需要指定的是一個root目錄結(jié)構(gòu)石洗,比如這樣的:
https://github.com/versaloon/vsf/blob/master/vsf/example/vsfusbd/fakefat32_fs.h
然后fakefat32模塊幢泼,自動把這個目錄結(jié)構(gòu)實現(xiàn)為一個塊設(shè)備,可以通過USB實現(xiàn)的MSC接到電腦劲腿,訪問模擬出來的這些文件和目錄旭绒。
.mal.fakefat32.sector_size = 512,
.mal.fakefat32.sector_number = 0x00001000,
.mal.fakefat32.sectors_per_cluster = 8,
.mal.fakefat32.volume_id = 0x0CA93E47,
.mal.fakefat32.disk_id = 0x12345678,
.mal.fakefat32.root[0].memfile.file.name= "ROOT",
.mal.fakefat32.root[0].memfile.d.child = (struct vsfile_memfile_t *)fakefat32_root_dir,
fakefat32的初始化。
.mal.mal.drv = &fakefat32_mal_drv,
.mal.mal.param = &usrapp.mal.fakefat32,
塊設(shè)備初始化焦人。
.mal.mal2scsi.malstream.mal = &usrapp.mal.mal,
.mal.mal2scsi.cparam.block_size = 512,
.mal.mal2scsi.cparam.removable = false,
.mal.mal2scsi.cparam.vendor = "Simon ",
.mal.mal2scsi.cparam.product = "VSFDriver ",
.mal.mal2scsi.cparam.revision = "1.00",
.mal.mal2scsi.cparam.type = SCSI_PDT_DIRECT_ACCESS_BLOCK,
塊設(shè)備轉(zhuǎn)SCSI設(shè)備。這類重父,設(shè)備類型可以改為SCSI_PDT_CD_DVD花椭,來實現(xiàn)光盤。
題目:
fakefat32是現(xiàn)成的房午,可以模擬FAT32文件系統(tǒng)矿辽。那模擬一個光驅(qū)和光盤,實現(xiàn)一個ISO9660文件系統(tǒng)試試郭厌,要支持長文件名袋倔。