Added Software projects

git-svn-id: file:///srv/dev-disk-by-uuid-17e88007-4d0c-45e0-8757-cacfcc458630/repositories/svn/Diplomarbeit@55 9fe90eed-be63-e94b-8204-d34ff4c2ff93
This commit is contained in:
Matthias
2008-12-23 10:34:08 +00:00
parent ee5a771818
commit 373a8c32b2
348 changed files with 86781 additions and 0 deletions
+244
View File
@@ -0,0 +1,244 @@
/* ---------------------------------------------------------------------------
* dosfs_test.c (c) 2008 Micro-key bv
* ---------------------------------------------------------------------------
* Micro-key bv
* Industrieweg 28, 9804 TG Noordhorn
* Postbus 92, 9800 AB Zuidhorn
* The Netherlands
* Tel: +31 594 503020
* Fax: +31 594 505825
* Email: support@microkey.nl
* Web: www.microkey.nl
* ---------------------------------------------------------------------------
* Description:
* ---------------------------------------------------------------------------
* Version(s): 0.1, Jul 29, 2008, MMi
* Creation.
* ---------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------
* System include files
* ---------------------------------------------------------------------------
*/
/* Compiler includes */
#include <string.h>
#include <stdlib.h>
#include "LPC23xx.h"
#include "types.h"
/* FreeRTOS includes */
#include "FreeRTOS.h"
#include "task.h"
/* ---------------------------------------------------------------------------
* Application include files
* ---------------------------------------------------------------------------
*/
#include "fat_test.h"
#include "fat_intern.h"
#include "fat_public.h"
#include "fat_diskio.h"
#include "mmc.h"
#include "SerOut.h"
#include "serial.h"
/* ---------------------------------------------------------------------------
* Local constant and macro definitions
* ---------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------
* Global variable definitions
* ---------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------
* Local variable definitions
* ---------------------------------------------------------------------------
*/
UINT8 ff_Write[0x200]; /* used with MMC Write Function */
UINT8 ff_Read[0x200];
UINT8 test_Write[0x200];
UINT8 test_Read1[0x200];
UINT8 test_Read2[0x200];
/* ---------------------------------------------------------------------------
* Local function definitions
* ---------------------------------------------------------------------------
*/
void ffTestStart (void)
{
UINT32 loopcnt;
MmcState_t CardStatus;
/* Clear Terminal Screen with VT100 Command */
serWrite(SerOutPort, sizeof("\x1B[2J"), "\x1B[2J"); /*WARNING don't care*/
MmcInitMedia(); /* Init Card and give Status */
/* Test that write and Read work */
CardStatus = disk_write (0, (pUINT8)ff_Write, 3, 1);
CardStatus = disk_read (0, (pUINT8)ff_Read, 3, 1);
for (loopcnt = 0; loopcnt < 0x200; loopcnt++)
{
if (ff_Write[loopcnt] != ff_Read[loopcnt])
{
debugPrint ("\n\rCompare ERROR");
break;
}
ff_Write[loopcnt] = 0;
ff_Read[loopcnt] = 0;
}
vTaskDelay(1000);
/* ---------------------------------------------------------------------------
* BEGINN FAT TEST SEQUENCE
* ---------------------------------------------------------------------------
*/
/* Mount SD-Card as virtual drive 0 */
FATFS volume_object;
debugPrint ("\n\r-----");
debugPrint ("\n\rMount Volume as Drive 0");
FAT_StatusOut (f_mount (0, &volume_object));
vTaskDelay (100);
/* FILE ACCESS TESTS
* Open a File. If file does not exist, create it
* Close File
* Delete File
*/
FIL file_1; /* create a blank File structure */
debugPrint ("\n\r-----");
debugPrint ("\n\rOpen, Close and Delete a File");
FAT_StatusOut (f_open (&file_1, "test.fil", (FA_CREATE_ALWAYS)));
FAT_StatusOut (f_close (&file_1));
FAT_StatusOut (f_unlink ("test.fil"));
vTaskDelay (100);
/* DIRECTORY ACCESS TESTS
* Create a subdirectory
* Open a File in the subdirectory. If file does not exist, create it
* Sync File
* Leave file opened
*/
debugPrint ("\n\r-----");
debugPrint ("\n\rCreate subdirs, create file in subdir, sync file, delete subdir");
FAT_StatusOut (f_mkdir ("subdir"));
FAT_StatusOut (f_mkdir ("deleteme"));
FAT_StatusOut (f_open (&file_1, "subdir/test.dat", (FA_READ | FA_WRITE | FA_CREATE_ALWAYS)));
FAT_StatusOut (f_sync (&file_1));
FAT_StatusOut (f_unlink ("deleteme"));
vTaskDelay (100);
/* FILE READ/WRITE TESTS
* Read MBR from Disc into an Array
* Open a file. If file does not exist, create it with read and write access
* Write MBR from Array in opened/created file
* Write MBR in already opened file from above (test.dat)
* Sync both files
* Set File Pointer for both files to offset 0x00
* Read both files and compare content with original MBR
* Close both files
*
* Shown with this is that the file system is capable of multifile access
* by usage of the fil information structure.
*/
UINT32 bytes_written;
UINT32 bytes_read;
FIL file_2; /* create a blank File structure */
debugPrint ("\n\r-----");
debugPrint ("\n\rOpen, write and read to files");
disk_read (0, (pUINT8)test_Write, 0, 1);
FAT_StatusOut (f_open (&file_2, "write.txt", (FA_WRITE | FA_READ | FA_CREATE_ALWAYS)));
FAT_StatusOut (f_write (&file_2, &test_Write, 0x200, &bytes_written));
FAT_StatusOut (f_write (&file_1, &test_Write, 0x200, &bytes_written));
FAT_StatusOut (f_sync (&file_2));
FAT_StatusOut (f_sync (&file_1));
FAT_StatusOut (f_lseek (&file_2, 0x00));
FAT_StatusOut (f_lseek (&file_1, 0x00));
FAT_StatusOut (f_read (&file_2, &test_Read1, 0x200, &bytes_read));
FAT_StatusOut (f_read (&file_1, &test_Read2, 0x200, &bytes_read));
for (loopcnt = 0; loopcnt < 0x200; loopcnt++)
{
if ((test_Write[loopcnt] != test_Read1[loopcnt])
|| (test_Write[loopcnt] != test_Read2[loopcnt]))
{
/* Strings are not equal */
debugPrint ("\n\rCompare Error");
break;
}
}
FAT_StatusOut (f_close (&file_2));
FAT_StatusOut (f_close (&file_1));
vTaskDelay (100);
/* RENAMING FILE AND DIRECTORY
* Create two files and two Directories
* Rename a File
* Rename a Directory
* Move a File
* Move a Directory
* Combine moving with renaming
* Close both files
*/
debugPrint ("\n\r-----");
debugPrint ("\n\rCreate, Rename and Move each a file and a directory");
FAT_StatusOut (f_open (&file_1, "rename1.old", (FA_CREATE_ALWAYS)));
FAT_StatusOut (f_open (&file_2, "rename2.old", (FA_CREATE_ALWAYS)));
FAT_StatusOut (f_mkdir ("renameme"));
FAT_StatusOut (f_mkdir ("movehere"));
FAT_StatusOut (f_rename ("rename1.old", "renamed1.new"));
FAT_StatusOut (f_rename ("renameme", "renamed"));
FAT_StatusOut (f_rename ("renamed1.new", "movehere/renamed1.new"));
FAT_StatusOut (f_rename ("renamed", "movehere/renamed"));
FAT_StatusOut (f_rename ("rename2.old", "movehere/renamed2.new"));
FAT_StatusOut (f_close (&file_1));
FAT_StatusOut (f_close (&file_2));
vTaskDelay (100);
/* CHANGING FILES
* Open a file. If not available, create it
* change Attributes (SET HIDDEN, set READ ONLY, clear ARCHIVE)
*/
debugPrint ("\n\r-----");
debugPrint ("\n\rChange Attributes");
FAT_StatusOut (f_open (&file_1, "attr.dat", (FA_READ | FA_WRITE | FA_CREATE_ALWAYS)));
FAT_StatusOut (f_chmod ("attr.dat", (AR_HID | AR_RDO), (AR_HID | AR_RDO | AR_ARC)));
FAT_StatusOut (f_close (&file_1));
vTaskDelay (100);
/* DO A SPEED TEST
* Fill write array with signs
* Open "speed.txt. If file does not exist, create it with write access
* Write Buffer x-Times to the speed.txt
*/
UINT8 character = 48;
debugPrint ("\n\r-----");
debugPrint ("\n\rSpeed Test");
for (loopcnt = 0; loopcnt < 0x200; loopcnt++)
{
ff_Write[loopcnt] = character;
}
FAT_StatusOut (f_open (&file_1, "speed.txt", (FA_WRITE | FA_OPEN_ALWAYS)));
for (loopcnt = 0; loopcnt < 20000; loopcnt++)
{
f_write (&file_1, &ff_Write, 0x200, &bytes_written);
}
FAT_StatusOut (f_close (&file_1));
debugPrint ("\n\rREADY!!!");
}