From ce5d1de9689392946aec2f48cac8672defbd70b7 Mon Sep 17 00:00:00 2001 From: David Voswinkel Date: Sun, 24 May 2009 20:28:10 +0200 Subject: [PATCH] o get mmap image working --- tools/ffsample/linux/Makefile | 3 +- tools/ffsample/linux/diskio.c | 63 ++++++++++++++++++++++------------ tools/ffsample/linux/ff.h | 10 +++--- tools/ffsample/linux/fftest | Bin 35967 -> 36243 bytes tools/ffsample/linux/main.c | 12 ++++--- 5 files changed, 56 insertions(+), 32 deletions(-) diff --git a/tools/ffsample/linux/Makefile b/tools/ffsample/linux/Makefile index ca02a6a..4b88c72 100644 --- a/tools/ffsample/linux/Makefile +++ b/tools/ffsample/linux/Makefile @@ -14,4 +14,5 @@ $(bin): $(objs) gcc $(cflags) -c $< - +clean: + rm $(bin) *.o diff --git a/tools/ffsample/linux/diskio.c b/tools/ffsample/linux/diskio.c index 8c2824b..d26f5ad 100644 --- a/tools/ffsample/linux/diskio.c +++ b/tools/ffsample/linux/diskio.c @@ -19,6 +19,18 @@ filesize 4194304 */ + +/* +mkfs.vfat 3.0.1 (23 Nov 2008) +disk00.vfat has 64 heads and 32 sectors per track, +logical sector size is 512, +using 0xf8 media descriptor, with 8192 sectors; +file system has 2 12-bit FATs and 4 sectors per cluster. +FAT size is 6 sectors, and provides 2036 clusters. +Root directory contains 512 slots. +Volume ID is 7b45fab8, no volume label. +*/ + /* Interface ** Scratch Buffer @@ -46,9 +58,18 @@ return 1 byte /* Initialize Disk Drive */ /*-----------------------------------------------------------------------*/ -#define IMAGE_NAME "disk00.vfat" +#include +#include +#include +#include +#include +#include +#include -int image_addr; + +#define IMAGE_NAME "disk01.vfat" + +int *image_addr; DSTATUS disk_initialize (BYTE drv) { if (drv) return STA_NOINIT; /* Supports only single drive */ @@ -57,13 +78,24 @@ DSTATUS disk_initialize (BYTE drv) { /* map image */ + int fd = open(IMAGE_NAME, O_RDWR); + if (fd == -1) { + perror("Error opening file for writing"); + exit(EXIT_FAILURE); + } - int fd = open(IMAGE_NAME,); - int size = fseek(END); - fseek(0); - - image_addr = mmap(0,fd,) + + int size = lseek(fd,0,SEEK_END); + lseek(fd,0,SEEK_SET); + printf("Open Image (size %i)\n",size); + //image_addr = mmap(0,fd,) + image_addr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (image_addr == MAP_FAILED) { + close(fd); + perror("Error mmapping the file"); + exit(EXIT_FAILURE); + } Stat &= ~STA_NOINIT; /* When device goes ready, clear STA_NOINIT */ return Stat; @@ -94,24 +126,13 @@ DRESULT disk_read ( BYTE c, iord_l, iord_h; if (drv || !count) return RES_PARERR; if (Stat & STA_NOINIT) return RES_NOTRDY; - - printf("disk_read: sector=%i count=%i\n",sector,count); DWORD offset = sector * 512; - DWORD size = count * 512; + int size = count * 512; - printf("disk_read: addr=%p offset=%i size=%i\n",image_addr,offset,size); + printf("disk_read: sector=%li count=%i addr=%p size=%i\n",sector,count,image_addr + offset,size); memcpy(buff,image_addr + offset,size); - - /* Issue Read Setor(s) command */ - /* - write_ata(REG_COUNT, count); - write_ata(REG_SECTOR, (BYTE)sector); - write_ata(REG_CYLL, (BYTE)(sector >> 8)); - write_ata(REG_CYLH, (BYTE)(sector >> 16)); - write_ata(REG_DEV, ((BYTE)(sector >> 24) & 0x0F) | LBA); - write_ata(REG_COMMAND, CMD_READ); - */ + //printf("%x %x %x %x\n",buff[0],buff[1],buff[2],buff[3]); return RES_OK; } diff --git a/tools/ffsample/linux/ff.h b/tools/ffsample/linux/ff.h index 9f160ec..9d779bd 100644 --- a/tools/ffsample/linux/ff.h +++ b/tools/ffsample/linux/ff.h @@ -25,7 +25,7 @@ #ifndef _FATFS #define _FATFS -#define _WORD_ACCESS 1 +#define _WORD_ACCESS 0 /* The _WORD_ACCESS option defines which access method is used to the word / data in the FAT structure. / @@ -64,7 +64,7 @@ /* To enable string functions, set _USE_STRFUNC to 1 or 2. */ -#define _USE_MKFS 1 +#define _USE_MKFS 0 /* To enable f_mkfs function, set _USE_MKFS to 1 and set _FS_READONLY to 0 */ @@ -72,7 +72,7 @@ /* To enable f_forward function, set _USE_FORWARD to 1 and set _FS_TINY to 1. */ -#define _DRIVES 2 +#define _DRIVES 1 /* Number of volumes (logical drives) to be used. */ @@ -81,13 +81,13 @@ /* 512 for memroy card and hard disk, 1024 for floppy disk, 2048 for MO disk */ -#define _MULTI_PARTITION 0 +#define _MULTI_PARTITION 1 /* When _MULTI_PARTITION is set to 0, each volume is bound to the same physical / drive number and can mount only first primaly partition. When it is set to 1, / each volume is tied to the partitions listed in Drives[]. */ -#define _CODE_PAGE 932 +#define _CODE_PAGE 858 /* The _CODE_PAGE specifies the OEM code page to be used on the target system. / When it is non LFN configuration, there is no difference between SBCS code / pages. When LFN is enabled, the code page must always be set correctly. diff --git a/tools/ffsample/linux/fftest b/tools/ffsample/linux/fftest index bd06933cbc785b426f22c9c2fe8d6e7519e6a3a0..5f2beede4cbdef6b1172856f4e75ca524d4fb4f6 100755 GIT binary patch delta 14315 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 delta 13046 zcmbVz3tUxI_WwDD10E2$pgiQETo46B5fv3t1jOSjO?=!5^ZkI-G7Y)dL%P_N8Ln4K z+dXjV*Vs%mnOa(ynmUEa575l0aSV$RjhcG}6^qi;xc~3k=Uf5p_y7Gr|NHT<_uA{R z*IsMwwIAomUXfho($?NSJ4$3FSrCMl_1mJCdeyEFgxVF`Hivnph=Qf1neHhJF$rPdo-Z3LY7cHy$56-SG6lR+6H=(4~4R^synNy04nsZm{+PmNd z>;oy1m3sI`&AST|23Y=1R%k>4(D8oumPa~k^BC51T|xdMxsM8~b62m+EfAIztXauS z@@TeA4q@-eUY;TilpT>n2fPec8j=6Xm9T>(ypB5kT3xc@1uHBTJQYuWc2mwDXtI4j z+u9;K2t9A(@q(uW!Om{GT&|KY3OpTs(du{+91j15?6l`E2}I`p4ZXb3cEQ@znmuRM zij0f0vLYLQX8vKt_7k$=81AZA)a~D*v~DgN>Ag}?=CaqlM@z*ytigL?(`$bRY`>l=#^S&JN^p=623p7jf7 znZ9A(qkqGoD-9*lY`O1PpElTlpl<}W%Qwfend|6#%%OOwH*6DPWb|f}V;oO%GV?1&=%{0ug{HfCr+Bywk zV+XA{ud5>ZI7AG~KhGvLPjZi;Gk<0${sCS2-2)*3lE01Z@t-ZZZZR<+UE25?8y{ek zhTmeJ20ScP-(;yhr%7XOv(laeCByBC{XLUJDeTvZA9~FerT@Op#suw?&b6`2K|`c# zKe4{S@lO zWc$NnL@PTN*3SZDaiJIf{-w|tf6o`L#oycOSJ~B857mLdE>+vDYO7dW)Sgas?N1l_ z84jrJn<}3O0CanOce~nVb%4U!PYK!e-57P}0yGkXi+9GypY1dku zK0%nEL_y=Ikzt>8*A)FMNmS%WjANCo01350}~Sr_EZ~+i;MeJX?k#g?r&XR>emjtHHm z3PMR`fmgNa@@Re>D9=R9Yml-@k$ruVFj(qYX=ZC8jXudb`0XXOJ#u9au@L60B_BHv zcrb%;K;LJvWZ2aP_+(RM!4zK05Df<^NrpIq%{InQodgnafk|+V(a5X8WC9bsFdi;I z?GDq@ECKHQ4Y=Q|jUt3nkKhuVE{UBshFdODmQq_u9O6MUVgq&O(e82~Fc1KuIR!#J zufXFrwT&A`)-*J7K*7XUTf1`qHxiV_?O~=a!7Dfm(HG}kUv04#wFqWJAQ2Ucbj#FC@~U|z$lU(SOEc{l;_bviQWu@H1NbuvD{$G_9d87zYbGtO~xSfr+W;u#Bk8F0BfAJQq21sRSXA% z!~(WE@cd7lkYixv7Mr@ynF^uB)Az%q^)Q^%1Dp`V zg5&(9K#6@7AF(t55f88Kqs@!cso~L)LLI%wjp?vfcAY?Ia8IB*o7!ksi2~~;`I~SZ z)d*^2H{u3ZE??@boHpVI(VJbZwVN8Pmqc!0)SGN`Vq_Zkv8K)(+Hm5!>i3+x%kG#q zj${2OsGFceS+<{DZK9>QwmL%=VE|Se?=PJfFyeS=zrZ{P#)+F*;=tIr|8ZnU4M%O+ za56@ObjF$n-Y-3Wfh8v-Ny=@OmvBOQr-=<6R45I)#1(og#2d-mrco4Z-Q<-{y=P!P*V z>LV5Y0Fis81*0G?w_D;jov~i*<)KTu?QZDW7B(zFTJtrVG^~7bSsU5ywzcRsGUjn^ zA?$cEypVdVjYe|oJ6fYXI|4ZlGfFqO{p(JQn*|m-JYfXcu&pdRj0iJmE#_dL1|D-z zi(?^njy#QnFxZZ53hSQSKP(U$LJhlm`^0f<_N*4@i~y7Me_`QQ_?8N;@<0y1jh&O4~N9^rvJ(7tR!W&bmd$2RZ6n7;tca2og$sR!lsTM z+;aw8gx;I6((;rV{2eURu(_#5>G2=fQ>o!n;}@(vHA>38%#NgPmu{V7e;5-h^*qZgW9CF!zNF5$3(X;9 zYlI=+{n-Lz9E;AeAID4xI*VTQg%K$PXtlvPf!#NDh#1J88aqt7c!upA+eh5aJ{=oB zHyJrbThskJ{5|!H4hcvQB%wJUJ1)CGTT0b|WmGbU!d}RvdB~u$Rc#ZkszWMP+r{P} zAdtgfPwOq2OW8+h3p3RpxQX=qLsPumxdaoICpBb=SGA;8OF=N?p2=PA9KjZj3laOU z!f}23wR2liUeT8UZRw`$qBVHevG2x>3$OW%wpdLzb-&vKW$GU4!0#Lzn;s^e_=e@A z$4aZuvyJJI$wSZH(a?+xaf%2tKId&UYPsgWa=Ynv?(iVmkKiCO;50jvo*eu~uC5kT z$kz^=X{YlUiS^A0meyWmBQqj{rqIHm9(8NM$9R^l%9tG2A1b;7(#=~>na^~Tq6L9N zULEo!`zoWq6m^=3nW6K&PV-?^3yBz^iEFf4N-EQ`v{(dk_9!)ICaxno=(0E;`MoXN5}>KVhq~ zGNtVo*xOl=(zBRSS#v|Jnu-*BrW+l8T6>aZOc<9~%@c>V&v=-}9hQTmTHJAOAJL{U z#i)5I+czO_@(76H20dgrnBm3k0vO4PV41^pnr?NZ+mTZ|T(G=$iIbftSdyA0{d%66 z)yViO$k=d|wdjmM%ljFdsn~g(FLqU!M_6r(DOou8iR_Yi#&{n4I)3kko zIy(c5T`ld@@^pt}bGI7x3|&E>8`)4YiO)37R$hOndqc?(HfmyjY1Ij~aAKTAJMz}? zX@#7E3QZ^PI-C{lrgC?TjOK~ql(p!TVD?5Q@VwA$0Rc@JJzl?uYCIatt(Dm}NWxgn z^SDTCa)q&p=KJkxIn_MOJuvr)dlnlxsh>qNX<0Uc^^`kU%gMrAL^N3dL*LLb2AZn- zscr2^z0Wf?wb+h-ooDI;H7*xlX*RZ$LSM?7CSUt>|5Ej6sp(LjZTkM=qNCWQTQJl4 zHa!rwD=s?3H}2(h?c>36kiW|5I>&htdnDRYXjG)pXHoZV z$;GqA6xj=5s1 zc*l)tf>7735N>az3Uuf0c{LsU&1iiUCG>lhZ{QmfXe-&6XD!+r(k`1V98>fV$k2{kJtZz2E)NkLMmGFkWce!)SH6TEa!cmdoyoi(M_Rvy^rCb zdNXf~y5D@sU8Aj|reh6`l4#wZcg*2U{MgmmOr_LfQ@0?950e7d&08!S+=7t7F-zQ7 zRM&lm4oAk}pl1wlnlX^_WAl)~1(A&HS#R(hJ7{N@FmwkM1)aT9&;$F*zlX#@}2d%Xd z;nLx9xVkfI8y3}SwOw%b04M1pSnl=kOsK={H~@b|TJrYb%*}HuRS>&-Xnva7xLKN` zpjwTfAuvRl!dnk;#3$X5Avw@)`*-!SX#2edP^@z#GPi#Bs#kFg`vdh94ZS)2|0Y_K z>~WXm(O`t)?yPS)HAbz^|A6-Jbbn*m}_RR9bD%+BxD|Yo-G`$ znHe7ceamXY_kuD!EV})!`C}&W?e+znS!t=~A)!wM6nq`-$%kWjv63$9RBU?6PaNO6 zm7ie|T6ADW2%lq)Nj9(jh-gPDTR*u^ zr%dpD1$F2~%}=sEQ>R#r4nk^2NQ2>k=UcL;g0~zc**sL;XY!mHwel2ts!^*x<3(*f zFHSY`qV5te&iu%W`kTCH=+;CGjefjn3gm^OA1_*l^P)9#Brn^h^Ww&QUff=Zf($sP zq!IL8L-&z_qRF9rR|4$l}IwM;{XS9?x|^SNXm1(;JrYdpx5?1-2FoXSx0EP|lgGx;vc z1fo38CTEWfI`kh|aW!^z+9AfW$BDPu7umxj)azORyp2HU8bt}$S=7t{lE-y6WoCSM zGKt*#{_n)(ZB{mOthkY#oEhbnPE>{L+RWgQS-)t4cf%B21;^`{Z5&hIDVhwwu(Vl8 zfmwK++7T#OB=a9^=?;b!Dh@J5u`ZoHQ#$|`|LRH*Ku1x&WvFvXD3OwFR*KKdP(2@!UE>J)omK7 z{Lp*s*qlTu;Af6;{>;2g%f0-60OlZDYl@e`8VDh#v%RK)Qph(IUz>VJ-4+vm^j>!L zfk@*Ps`uK9NHRIf`0co&t4jNWli#q!oPNIV6H(ne7|NobSl#Skwk{_uCW+3B&@Jaj zv>S0lURLrrvII4~_HV6BWAEk!>mH`?;^Qc9C74A05??E`LFF7Rowb18LXMMKrUd1-&JynN3}gn)>Xw z8u1b$j=zWaO}sgvNH=f{&#HRHEn^=p2$j}dV&@j5jZD_bUWJsdb_vrl&u~oVNhVxk z(-w~PUal*!fNfhiP`t&CE{usuAoFDIB&RzlwP6Dy@acIce2yF^--MpUwY2lK79wmS z0)#~h@m^<1iy}rmhE28G3z2U3Zvjh37=C#g0wzKLI42P&CitQRDXf~kvuKz!EdliutsB@j}|O6KUHP4|aRGj-EtiTVjU2{Pq8j_GX5b2=uIV>;XD zBf?m~6blqBP8xZ=vHbV%~o`^x+Koo?+cWy!Qz|3xNnz5%@-2g98$ zVySw&7_VRGP4X?VIS$*e3@nA#TJf(`y1~Zw&S0r}3-NJ_RW9w*i>P#1e|ZwYT9=0S z;bhW8i)(Wf$zY!^i)Fi)^%r?fG_qfp8I@f?b7a)=APa4}Ar$wxP1d5O;Pq?qdd)7s zxPoW$YW26VI2uW~c@dfy(U%rww?v^ZfB^8_@;G{bnxw$`}a6o~8 z0-MqPn-3s7E+5t_w~xoxty|f^+icIH@6VjB8u3FHR2T={)i`_@8ioEzDUakB z1!MoDVL3v6Zh<-fQDgsgK5TW~E_U>x#W=fFgs<2tjS%Ln$Tcp{Us;%I>~A)%U-`%* z#-+K&yfyi&mlPD_E>ARO=I0upSYtM>Gw0`~8{_5_9RKMLsVmVe30>~Ce|v9Dw$zZ2oW zFJ5dH;3-vBoqk9THb+cHJ zw7Nn2!;)72o%yaY4lURuD|jIyG=PSt#EOlw@^iauO(ja)b_s3I;FB|yO@QfewVN$i z6FFfmYS_E-ul+($%8)`|{7j0I667#sMdCo`Q&GL(U+1Rm$2FS%e<;kttw$h^K-@TDx%jtFG>)7 zpx~cBHD{w-R8lbej?hNyf0(; zYuQ_%A?*reb{Ys$;te2L*^;MvG2bVBhmvLJ-gfK)x6)d$5LAMP0))bihSsnYeqqPN zUTpr8J?N_;VVNLQQBdkXqh2zU#0bTOD&*v<74QpZ-1B4uJ`tkMUwz8gGX={*3VZvh zSWgPz6n5^Ze!Mo3i5vQfTUq}N_^^;o-w^BBKVJ~uM{6&(WrM%?75gu=Ehs?3<82LS z`-WWx^;#BG6f5pyX+^PKTaXZUc(YYS(Vm0;BnY$FwxS0tWN^~bLk|=(w+3tDAcJc# zjT!=ARSibA#g7cG!MxxTOoQoTS#9EJFilRpYK6r$m=32xmOw7h8tByvI)DQ-m}b3Z zXbq;LBz|OP{5<&AwPa7W>*+_u6c%c6Np&SGtT<6h`Xif)0;ng8`%3#RvOgCmTIT#w zR#Lzy;nUqZlv@A~*5P`T9{^sc!;L6I{v<2((GSr(P-X${11}QX26%C42mCAGA{$b! zj`u{FVV9NPbT~j1EJ9itQl~DkFAyHj%F0@uAOYpN=VT>Q$BzWOAMkV?pN>-8CM%@~ zAyQy6U>lPadhbE-OqBK)5Lr4ueQ`76MOpFI@ek4KfSi|PWrfc9i~q?totgocW5Ze4z910DKd0Ps|=tU^ifTmqxx3h2Fxufa$|13VDJL&~>2i z4p~{Q3-|~yy@Cqn1P0+GV0uYKCKut`e*<>^WZ{~t0r1z=vT_8C)ZzDlU#gK6+KduR zU%L6#%F1OO{uS^oz}t1$0xIDJEVC5X#L$gY(|^=~KVaIAfe#9V2tk0`^z1K6!9oIH zU-xPt1qfsBf@c7BuNI;dDC7X92~AxXg%FFd3=Q&rSt&vfJ)yvA!1P%&DMWA)V0ZKr zya}-TXGDeF1;0r!ECvto@3`OTgr_yG5-_DHR3U$?pHO`l!8yP=Fe$Aq)ZzKN@Yeu; zcm$tZORU`*YzaY@-LOYiRFp&>iPHU}{)Pk2I4CQPU?V(z==fnHVi-7riEj@0<8*jB z;LhKn&j(zrhfDxMCJ%5n_$O-g7NHOgZj1WELsr1CuZ{6bolBK6`9u4#j`h!4{z^ivLh;YR-okrk8 zuF-!aFbuHaLs^*wpAdf(;686+)}tgi9_0>F2qjq{kzm~C_6Bc&1r5n)aQ{f)1i%yY z5%?p9vjN{ctfc`Gm;*Qm7C8r6f|uRJZvp(r_hf};KjAk6KJzzOnSy~4ybbUnC_sT> zA&p)}!(w!Zf@`=Fm7^eV!|$T9@qJmL*-Zit13tD_R_J?Yf~x?R)6E@zr0@x1)PFRf zbAT%$Z!t>h?|cW|0s(?>4Go_ljd<%C-T+*H7=8#i>OjV9>THqjfEVtTm0xsxPr&W_ zWTi!iBLJ_3ym>kt19+Ev(nttm!1VtO4hADJQ3n}la4%v#@jpl=0;bDK%0r~_eFPt_ zIQ*v*V$ia61xp`E96oY*im=XI9mSrp^=F4{1#H^p>d?GJs~=vzGGAD}a^1s=@^hCg t7xES@dt}YJTsFZzij~>7`>uXCZyg%f=dUctWn;ITU{PgJY*tz3{{i|{I3xf7 diff --git a/tools/ffsample/linux/main.c b/tools/ffsample/linux/main.c index 61ceb52..cc25337 100644 --- a/tools/ffsample/linux/main.c +++ b/tools/ffsample/linux/main.c @@ -54,7 +54,8 @@ DWORD get_fattime () struct tm * ptm; time ( &rawtime ); ptm = gmtime ( &rawtime ); - return ((DWORD)(ptm->tm_year - 80) << 25) + + return ((DWORD)(ptm->tm_year - 80) << 25) | ((DWORD)(ptm->tm_mon +1) << 21) | ((DWORD)ptm->tm_mday << 16) | ((DWORD)ptm->tm_hour << 11) @@ -114,9 +115,10 @@ FRESULT scan_files (char* path) DIR dirs; FRESULT res; int i; - + if ((res = f_opendir(&dirs, path)) == FR_OK) { i = strlen(path); + printf("Ok\n"); while (((res = f_readdir(&dirs, &finfo)) == FR_OK) && finfo.fname[0]) { if (finfo.fattrib & AM_DIR) { acc_dirs++; @@ -130,7 +132,7 @@ FRESULT scan_files (char* path) } } } - + printf("scan_files ret\n"); return res; } @@ -157,7 +159,7 @@ void _put_rc (FRESULT rc) "MKFS_ABORTED", "TIMEOUT" }; - printf("rc=%u FR_%s\n", (WORD)rc, str[rc]); + printf("rc=%i FR_%s\n", (WORD)rc, str[rc]); } static @@ -173,7 +175,7 @@ void put_rc (FRESULT rc) for (p = str, i = 0; i != rc && *p; i++) { while(*p++); } - xprintf("rc=%u FR_%s\n", (WORD)rc, p); + printf("rc=%u FR_%s\n", (WORD)rc, p); }