a0ccd623c6
git-svn-id: file:///srv/dev-disk-by-uuid-17e88007-4d0c-45e0-8757-cacfcc458630/repositories/svn/Diplomarbeit@110 9fe90eed-be63-e94b-8204-d34ff4c2ff93
173 lines
6.2 KiB
C
173 lines
6.2 KiB
C
/* ---------------------------------------------------------------------------
|
|
* testeeprom.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, Mar 11, 2008, MMi
|
|
* Creation.
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* System include files
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
#include "lpc23xx.h"
|
|
#include "types.h"
|
|
|
|
|
|
/* FreeRTOS includes */
|
|
#include "FreeRTOS.h"
|
|
#include "Task.h"
|
|
/* ---------------------------------------------------------------------------
|
|
* Application include files
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
#include "testeeprom.h"
|
|
#include "eeprom.h"
|
|
#include "SerOut.h"
|
|
#include "dio.h"
|
|
/* ---------------------------------------------------------------------------
|
|
* Local constant and macro definitions
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* Global variable definitions
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
/* Use same Arrays as Flash Test to minimize Memory usage */
|
|
// \MARK ARRAYS NOT NECESSARY ON OLIMEXBOARD
|
|
#if ((PINSET_TESTER == 1) || (PINSET_TESTER == 2))
|
|
UINT8 eepromResponseString[3000];
|
|
UINT8 eepromTestString[3000];
|
|
#endif
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* Local variable definitions
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
UINT16 adres_var[2];
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* Local function definitions
|
|
* ---------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
BOOLEAN testeepromStart(void)
|
|
{
|
|
BOOLEAN eepromTestResult;
|
|
|
|
eepromTestResult = doeepromTest();
|
|
|
|
return (eepromTestResult);
|
|
}
|
|
|
|
BOOLEAN doeepromTest (void)
|
|
{
|
|
BOOLEAN testFailed= FALSE;
|
|
|
|
// \MARK TEST NOT NECESSARY ON OLIMEXBOARD
|
|
#if ((PINSET_TESTER == 1) || (PINSET_TESTER == 2))
|
|
/*Local Variable Declaration */
|
|
UINT8 testByte;
|
|
UINT8 testString[] = "Dit is een oefening";
|
|
UINT16 index;
|
|
UINT8 oneByte = 0;
|
|
|
|
sendString (COM2, TRUE, testMessage,
|
|
"\tWrite Byte 0x34 to Adress 256", Dummy, Dummy);
|
|
eepromWrite (256, 0x34); /* Write one Byte to EEPROM */
|
|
eepromRead (256, &testByte); /* Read written Byte from EEPROM */
|
|
testFailed = (testByte != 0x34); /* compare read and written Bytes */
|
|
if (testFailed == FALSE)
|
|
{
|
|
sendString (COM2, FALSE, testMessage,
|
|
"\t DONE", Dummy, Dummy);
|
|
dioWrite (0, 1, TRUE);
|
|
}
|
|
else
|
|
{
|
|
sendString (COM2, FALSE, testMessage,
|
|
"\t FAILURE", Dummy, Dummy);
|
|
dioWrite (0, 0, TRUE);
|
|
}
|
|
|
|
if (!testFailed) /* If no Test fail up to here */
|
|
{
|
|
sendString (COM2, TRUE, testMessage,
|
|
"\tWrite 10 Bytes to Adress 511", Dummy, Dummy);
|
|
eepromWriteBuffer( 511, testString, 10);
|
|
/* Write Teststring to EEPROM with */
|
|
/* width of 10 Bytes */
|
|
eepromReadBuffer( 511, eepromResponseString, 10);
|
|
/* Read written String from EEPROM */
|
|
|
|
for (index = 0; index < 10; index++)
|
|
{ /* Compare both Strings */
|
|
if (eepromResponseString[index] != testString[index])
|
|
{ /* If Strings are not equal */
|
|
testFailed = TRUE; /* Set Test Result to FALSE */
|
|
}
|
|
}
|
|
if (testFailed == FALSE)
|
|
{
|
|
sendString (COM2, FALSE, testMessage,
|
|
"\t DONE", Dummy, Dummy);
|
|
dioWrite (0, 3, TRUE);
|
|
}
|
|
else
|
|
{
|
|
sendString (COM2, FALSE, testMessage,
|
|
"\t FAILURE", Dummy, Dummy);
|
|
dioWrite (0, 2, TRUE);
|
|
}
|
|
}
|
|
|
|
if (!testFailed) /* If no Test fail up to here */
|
|
{
|
|
sendString (COM2, TRUE, testMessage,
|
|
"\tWrite 3000 Byte to Adress 500", Dummy, Dummy);
|
|
int loopcnt;
|
|
for (loopcnt=0; loopcnt < 3000; loopcnt++)
|
|
{ /* Fill flashTestString */
|
|
eepromTestString[loopcnt] = oneByte++;
|
|
}
|
|
eepromWriteBuffer( 500, eepromTestString, 3000);
|
|
/* Write flashTestString to EEPROM */
|
|
/* with width of 3000 Bytes */
|
|
eepromReadBuffer( 500, eepromResponseString, 3000);
|
|
/* Read written String from EEPROM */
|
|
|
|
for (index = 0; index < 3000; index++)
|
|
{ /* Compare both Strings */
|
|
if (eepromResponseString[index] != eepromTestString[index])
|
|
{ /* If Strings are not equal */
|
|
testFailed = TRUE; /* Set Test Result to FALSE */
|
|
}
|
|
}
|
|
if (testFailed == FALSE)
|
|
{
|
|
sendString (COM2, FALSE, testMessage, "\t DONE", Dummy, Dummy);
|
|
dioWrite (0, 5, TRUE);
|
|
}
|
|
else
|
|
{
|
|
sendString (COM2, FALSE, testMessage, "\t FAILURE", Dummy, Dummy);
|
|
dioWrite (0, 4, TRUE);
|
|
}
|
|
}
|
|
#endif
|
|
return (!testFailed); /* Return Test Result */
|
|
}
|