全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2405
推到 Plurk!
推到 Facebook!

如何在USB1.1隨身碟中 新增一筆.txt檔案

 
sam198666
一般會員


發表:1
回覆:0
積分:0
註冊:2006-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-13 17:07:46 IP:140.130.xxx.xxx 訂閱

各位前輩好

小弟目前在研究usb資料存取的部分,目前是用P89C61這颗晶片來控制SL811進行usb的資料存取

現在遇到一個困難,一直無法解決,我手邊的程式已經讀取到了隨身碟裡面的一筆txt檔案的資料,而我從學長那邊得知usb1.1的BPB,FDB,FAT等的格式是一樣的,所以我對著相同的host addr進行寫入的動作,雖修改了該檔案的內容,可是內容全變成了FF,學姊的解釋是,並沒有將檔案存取進去,所以裡面的資料變成空值

以下是我用來讀取到隨身碟內txt檔的程式,現在不清楚是什麼樣的問題,因為這支程式也只能讀取到第一支存進隨身碟的txt資料,其他都讀取不到

void readsector(unsigned long sectoraddr,unsigned int ramaddr) //read sector=512 byte ,bulk=64 byte
{ // do 8 times ,bulk save to sl811hs ram 0x40~0x7f,0x80~0xbf,0xc0~0xff
unsigned int i;
re_read10:
addUFIcommand(0,2,0x80);
addUFICBWCB(0x28,sectoraddr/(0x1000000),sectoraddr%(0x1000000)/(0x10000),sectoraddr%(0x1000000)%(0x10000)/(0x100),sectoraddr%(0x1000000)%(0x10000)%(0x100),1);
UFIout(0x10,0x1f); //start cbw command Bulk-only transport page 13
UFIin(0x40,0x40); //1 bulk data save to sl811hs ram 0x40~0x7f
UFIin(0x80,0x40); //2 bulk data save to sl811hs ram 0x80~0xbf
UFIin(0xc0,0x40); //3 bulk data save to sl811hs ram 0xc0~0xff
for(i=0x40;i<=0xff;i ) //save to ram
{
rd_host(i);
wrramdata((ramaddr i)-0x40,host_data);
}
UFIin(0x40,0x40); //4 bulk data save to sl811hs ram 0x40~0x7f
UFIin(0x80,0x40); //5 bulk data save to sl811hs ram 0x80~0xbf
UFIin(0xc0,0x40); //6 bulk data save to sl811hs ram 0xc0~0xff
for(i=0x40;i<=0xff;i ) //svae ro ram
{
rd_host(i);
wrramdata((ramaddr 0x80) i,host_data);
}
UFIin(0x40,0x40); //7 bulk data save to sl811hs ram 0x40~0x7f
UFIin(0x80,0x40); //8 bulk data save to sl811hs ram 0x40~0x7f
for(i=0x40;i<0xc0;i ) //svae ro ram
{
rd_host(i);
wrramdata((ramaddr 0x140) i,host_data);
}
UFIin(0x30,0x0d); //bulk in CSW ,//Bulk-only transport page 14
rd_host(0x30 0x0c);
if(host_data==0x01)
{
getSENSE();
goto re_read10;
}
}

sectoraddr是傳0開始累加的變數進來

另一部分我需要再另外新增一筆txt檔案至隨身碟內,卻不知如何新增

do
{
readsector(i,addr);
rdramdata(addr);
i ;
}
while(ramdata!=0xeb); //0xeb is recoder of each disk start byte

這部分的程式可以讓我讀取到隨身碟內的BPB表,但是我用

rdramdata(addr 0x0f);
j=ramdata*256;

rdramdata(addr 0x0e);
fatsize=j=j ramdata;

FAT1addr=j i-1;

算出了FAT表位置,讀出來的資料卻不是我想要的資料,同樣的我也找不到FAT2和FDB表,不知道是哪邊出了問題麻煩各位前被幫我指點一下,小弟感激不盡

系統時間:2024-09-09 17:18:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!