summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/test/fat/Makefile3
-rw-r--r--firmware/test/fat/ata-sim.c8
-rw-r--r--firmware/test/fat/main.c27
-rw-r--r--firmware/test/fat/test.sh2
-rwxr-xr-xfirmware/test/fat/test16.sh135
5 files changed, 166 insertions, 9 deletions
diff --git a/firmware/test/fat/Makefile b/firmware/test/fat/Makefile
index 781f8afcdb..2bb5babe64 100644
--- a/firmware/test/fat/Makefile
+++ b/firmware/test/fat/Makefile
@@ -3,8 +3,9 @@ DRIVERS = ../../drivers
3EXPORT = ../../export 3EXPORT = ../../export
4 4
5INCLUDE = -I$(EXPORT) 5INCLUDE = -I$(EXPORT)
6
6RINCLUDE = -I$(FIRMWARE)/include 7RINCLUDE = -I$(FIRMWARE)/include
7DEFINES = -DTEST_FAT -DDEBUG -DCRT_DISPLAY -DDISK_WRITE 8DEFINES = -DTEST_FAT -DDEBUG -DCRT_DISPLAY -DDISK_WRITE -DHAVE_FAT16SUPPORT
8 9
9CFLAGS = -g -Wall $(DEFINES) -I. $(INCLUDE) $(RINCLUDE) -DLITTLE_ENDIAN 10CFLAGS = -g -Wall $(DEFINES) -I. $(INCLUDE) $(RINCLUDE) -DLITTLE_ENDIAN
10SIMFLAGS = -g -Wall $(DEFINES) -I. $(INCLUDE) 11SIMFLAGS = -g -Wall $(DEFINES) -I. $(INCLUDE)
diff --git a/firmware/test/fat/ata-sim.c b/firmware/test/fat/ata-sim.c
index cc3eb15209..d8ed079759 100644
--- a/firmware/test/fat/ata-sim.c
+++ b/firmware/test/fat/ata-sim.c
@@ -2,12 +2,13 @@
2#include <stdlib.h> 2#include <stdlib.h>
3#include <string.h> 3#include <string.h>
4#include "debug.h" 4#include "debug.h"
5#include "panic.h"
6 5
7#define BLOCK_SIZE 512 6#define BLOCK_SIZE 512
8 7
9static FILE* file; 8static FILE* file;
10 9
10void panicf( const char *fmt, ... );
11
11int ata_read_sectors(unsigned long start, int count, void* buf) 12int ata_read_sectors(unsigned long start, int count, void* buf)
12{ 13{
13 if ( count > 1 ) 14 if ( count > 1 )
@@ -51,10 +52,9 @@ int ata_write_sectors(unsigned long start, int count, void* buf)
51 return 0; 52 return 0;
52} 53}
53 54
54int ata_init(char* filename) 55int ata_init(void)
55{ 56{
56 if (!filename) 57 char* filename = "disk.img";
57 filename = "disk.img";
58 /* check disk size */ 58 /* check disk size */
59 file=fopen(filename,"rb+"); 59 file=fopen(filename,"rb+");
60 if(!file) { 60 if(!file) {
diff --git a/firmware/test/fat/main.c b/firmware/test/fat/main.c
index 5420199f92..200ea18706 100644
--- a/firmware/test/fat/main.c
+++ b/firmware/test/fat/main.c
@@ -9,13 +9,14 @@
9#include "dir.h" 9#include "dir.h"
10#include "file.h" 10#include "file.h"
11 11
12extern int ata_init(char*);
13extern void ata_read_sectors(int, int, char*);
14
15void dbg_dump_sector(int sec); 12void dbg_dump_sector(int sec);
16void dbg_dump_buffer(unsigned char *buf, int len, int offset); 13void dbg_dump_buffer(unsigned char *buf, int len, int offset);
17void dbg_console(void); 14void dbg_console(void);
18 15
16void mutex_init(void* l) {}
17void mutex_lock(void* l) {}
18void mutex_unlock(void* l) {}
19
19void panicf( char *fmt, ...) 20void panicf( char *fmt, ...)
20{ 21{
21 va_list ap; 22 va_list ap;
@@ -26,6 +27,24 @@ void panicf( char *fmt, ...)
26 exit(1); 27 exit(1);
27} 28}
28 29
30void debugf(const char *fmt, ...)
31{
32 va_list ap;
33 va_start( ap, fmt );
34 fprintf(stderr,"DEBUGF: ");
35 vfprintf( stderr, fmt, ap );
36 va_end( ap );
37}
38
39void ldebugf(const char* file, int line, const char *fmt, ...)
40{
41 va_list ap;
42 va_start( ap, fmt );
43 fprintf( stderr, "%s:%d ", file, line );
44 vfprintf( stderr, fmt, ap );
45 va_end( ap );
46}
47
29void dbg_dump_sector(int sec) 48void dbg_dump_sector(int sec)
30{ 49{
31 unsigned char buf[512]; 50 unsigned char buf[512];
@@ -660,7 +679,7 @@ int main(int argc, char *argv[])
660 679
661 srand(clock()); 680 srand(clock());
662 681
663 if(ata_init("disk.img")) { 682 if(ata_init()) {
664 DEBUGF("*** Warning! The disk is uninitialized\n"); 683 DEBUGF("*** Warning! The disk is uninitialized\n");
665 return -1; 684 return -1;
666 } 685 }
diff --git a/firmware/test/fat/test.sh b/firmware/test/fat/test.sh
index 9b1036b69c..5056fb8c67 100644
--- a/firmware/test/fat/test.sh
+++ b/firmware/test/fat/test.sh
@@ -6,6 +6,7 @@ RESULT=result.txt
6 6
7fail() { 7fail() {
8 echo "!! Test failed. Look in $RESULT for test logs." 8 echo "!! Test failed. Look in $RESULT for test logs."
9 chmod a+rw $RESULT
9 exit 10 exit
10} 11}
11 12
@@ -142,3 +143,4 @@ buildimage 128
142runtests 143runtests
143 144
144echo "== Test completed successfully ==" 145echo "== Test completed successfully =="
146chmod a+rw $RESULT
diff --git a/firmware/test/fat/test16.sh b/firmware/test/fat/test16.sh
new file mode 100755
index 0000000000..bc12fd837c
--- /dev/null
+++ b/firmware/test/fat/test16.sh
@@ -0,0 +1,135 @@
1#!/bin/sh
2
3IMAGE=disk.img
4MOUNT=/mnt/dummy
5DIR=$MOUNT/q
6RESULT=result.txt
7
8fail() {
9 echo "!! Test failed $RETVAL. Look in $RESULT for test logs."
10 chmod a+rw $RESULT
11 exit
12}
13
14check() {
15 /sbin/dosfsck -r $IMAGE | tee -a $RESULT
16 [ $RETVAL -ne 0 ] && fail
17}
18
19try() {
20 echo COMMAND: fat $1 "$2" "$3"
21 echo COMMAND: fat $1 "$2" "$3" >> $RESULT
22 ./fat $1 "$2" "$3" 2>> $RESULT
23 RETVAL=$?
24 [ $RETVAL -ne 0 ] && fail
25}
26
27buildimage() {
28 /sbin/mkdosfs -F 16 -s $1 $IMAGE > /dev/null;
29 mount -o loop,fat=16 $IMAGE $MOUNT;
30 echo "Filling it with /etc files";
31 mkdir $DIR;
32 find /etc -type f -maxdepth 1 -exec cp {} $DIR \;
33 for i in `seq 1 120`;
34 do
35 echo apa > "$DIR/very $i long test filename so we can make sure they.work";
36 done;
37 umount $MOUNT;
38}
39
40runtests() {
41 rm $RESULT
42
43 echo ---Test: create a long name directory in the root
44 try mkdir "/very long subdir name"
45 check
46 try mkdir "/very long subdir name/apa.monkey.me.now"
47 check
48
49 echo ---Test: create a directory called "dir"
50 try mkdir "/dir"
51 check
52
53 echo ---Test: create a 10K file
54 try mkfile "/really long filenames rock" 10
55 check
56
57 try mkfile /dir/apa.monkey.me.now 10
58 check
59 try chkfile "/really long filenames rock" 10
60 try chkfile /dir/apa.monkey.me.now 8
61
62 echo ---Test: create a 1K file
63 try mkfile /bpa.rock 1
64 check
65 try chkfile /bpa.rock 1
66
67 echo ---Test: create a 40K file
68 try mkfile /cpa.rock 40
69 check
70 try chkfile /cpa.rock 40
71
72 echo ---Test: create a 400K file
73 try mkfile /dpa.rock 400
74 check
75 try chkfile /dpa.rock 400
76
77 echo ---Test: create a 1200K file
78 try mkfile /epa.rock 1200
79 check
80 try chkfile /epa.rock 1200
81
82 echo ---Test: rewrite first 20K of a 40K file
83 try mkfile /cpa.rock 20
84 check
85 try chkfile /cpa.rock 20
86
87 echo ---Test: rewrite first sector of 40K file
88 try mkfile /cpa.rock 0
89 check
90 try chkfile /cpa.rock
91 try chkfile /bpa.rock
92
93 LOOP=25
94 SIZE=700
95
96 try del "/really long filenames rock"
97
98 echo ---Test: create $LOOP $SIZE k files
99 for i in `seq 1 $LOOP`;
100 do
101 echo ---Test: $i/$LOOP ---
102 try mkfile "/q/rockbox rocks.$i" $SIZE
103 check
104 try chkfile "/q/rockbox rocks.$i" $SIZE
105 check
106 try del "/q/rockbox rocks.$i"
107 check
108 try mkfile "/q/rockbox rocks.$i" $SIZE
109 check
110 try ren "/q/rockbox rocks.$i" "/q/$i is a new long filename!"
111 check
112 done
113
114}
115
116echo "--------------------------------------"
117echo "Building test image (4 sector/cluster)"
118echo "--------------------------------------"
119buildimage 4
120runtests
121
122echo "--------------------------------------"
123echo "Building test image (8 sectors/cluster)"
124echo "--------------------------------------"
125buildimage 8
126runtests
127
128echo "----------------------------------------"
129echo "Building test image (64 sectors/cluster)"
130echo "----------------------------------------"
131buildimage 16
132runtests
133
134echo "== Test completed successfully =="
135chmod a+rw $RESULT