| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438 |
- /* Basic NOR flash tests... */
- #include <stdio.h>
- #include "lx_api.h"
- #define DEMO_STACK_SIZE 4096
- /* Define the ThreadX object control blocks... */
- #ifndef LX_STANDALONE_ENABLE
- TX_THREAD thread_0;
- #endif
- UCHAR thread_0_stack[DEMO_STACK_SIZE];
- /* Define LevelX structures. */
- LX_NOR_FLASH nor_sim_flash;
- ULONG buffer[128];
- ULONG readbuffer[128];
- /* Define LevelX NOR flash simulator prototoypes. */
- UINT _lx_nor_flash_simulator_erase_all(VOID);
- UINT _lx_nor_flash_simulator_initialize(LX_NOR_FLASH *nor_flash);
- /* Define thread prototypes. */
- void thread_0_entry(ULONG thread_input);
- /* Define main entry point. */
- int main()
- {
-
- /* Enter the ThreadX kernel. */
- #ifndef LX_STANDALONE_ENABLE
- tx_kernel_enter();
- #else
- thread_0_entry(0);
- #endif
- }
- /* Define what the initial system looks like. */
- #ifndef LX_STANDALONE_ENABLE
- void tx_application_define(void *first_unused_memory)
- {
- /* Create the main thread. */
- tx_thread_create(&thread_0, "thread 0", thread_0_entry, 0,
- thread_0_stack, DEMO_STACK_SIZE,
- 1, 1, TX_NO_TIME_SLICE, TX_AUTO_START);
- }
- #endif
- /* Define the test threads. */
- void thread_0_entry(ULONG thread_input)
- {
- ULONG i, j, sector;
- UINT status;
- ULONG *word_ptr;
-
- /* Erase the simulated NOR flash. */
- _lx_nor_flash_simulator_erase_all();
-
- /* Initialize LevelX. */
- _lx_nor_flash_initialize();
-
- /* Test 1: Simple write 100 sectors and read 100 sectors. */
- printf("Test 1: Simple write-read 100 sectors...........");
-
- lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
-
- /* Write 100 sectors.... */
- for (i = 0; i < 100; i++)
- {
- for (j = 0; j < 128; j++)
- buffer[j] = i;
-
- status = lx_nor_flash_sector_write(&nor_sim_flash, i, buffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
-
- /* Read back 100 sectors... */
- for (i = 0; i < 100; i++)
- {
-
- status = lx_nor_flash_sector_read(&nor_sim_flash, i, buffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- for (j = 0; j < 128; j++)
- {
-
- if (buffer[j] != i)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
- }
- _lx_nor_flash_close(&nor_sim_flash);
- printf("SUCCESS!\n");
- /* Test 2: Write same sector 120 times. */
- printf("Test 2: Write same sector 120 times.............");
-
- /* Reinitialize... */
- _lx_nor_flash_simulator_erase_all();
-
-
- lx_nor_flash_initialize();
- lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- for (j = 0; j < 128; j++)
- buffer[j] = 0xFFFFFFFF;
-
- /* Write same sector 120 sectors.... */
- for (i = 0; i < 120; i++)
- {
- for (j = 0; j < 128; j++)
- buffer[j] = i;
-
- status = lx_nor_flash_sector_write(&nor_sim_flash, 7, buffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- status = lx_nor_flash_sector_read(&nor_sim_flash, 7, readbuffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- for (j = 0; j < 128; j++)
- {
-
- if (buffer[j] != readbuffer[j])
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
-
- /* Write other sectors just to have additional sectors to manage. */
- if (i == 1)
- lx_nor_flash_sector_write(&nor_sim_flash, 1, buffer);
- if (i == 16)
- lx_nor_flash_sector_write(&nor_sim_flash, 16, buffer);
- if (i == 32)
- lx_nor_flash_sector_write(&nor_sim_flash, 32, buffer);
- if (i == 48)
- lx_nor_flash_sector_write(&nor_sim_flash, 48, buffer);
- if (i == 64)
- lx_nor_flash_sector_write(&nor_sim_flash, 64, buffer);
- if (i == 80)
- lx_nor_flash_sector_write(&nor_sim_flash, 80, buffer);
- if (i == 96)
- lx_nor_flash_sector_write(&nor_sim_flash, 96, buffer);
- if (i == 112)
- lx_nor_flash_sector_write(&nor_sim_flash, 112, buffer);
- }
- status = lx_nor_flash_defragment(&nor_sim_flash);
-
- status = lx_nor_flash_sector_read(&nor_sim_flash, 7, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 119)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 1, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 1)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 16, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 16)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 32, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 32)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 48, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 48)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 64, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 64)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 80, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 80)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 96, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 96)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 112, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 112)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_defragment(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
-
- /* Point at the simulated NOR flash memory. */
- word_ptr = nor_sim_flash.lx_nor_flash_base_address;
-
- status = lx_nor_flash_close(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- printf("SUCCESS!\n");
-
- /* Test 3: Corrupt block 0, simulate a power interruption during erase of block 0,
- after the erase, but before the free bit map and erase count is setup. */
- printf("Test 3: Block erase-initialize interrupted......");
- word_ptr[0] = 0xFFFFFFFF;
- word_ptr[3] = 0xFFFFFFFF;
- /* Open the flash and see if we recover properly. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if ((status != LX_SUCCESS) ||
- (nor_sim_flash.lx_nor_flash_free_physical_sectors != 111) ||
- (nor_sim_flash.lx_nor_flash_mapped_physical_sectors != 9))
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- status = lx_nor_flash_close(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- /* Corrupt block 0, simulate a power interruption during erase of block 0,
- after the erase, and after the free bit map setup, but before erase count is setup. */
- word_ptr[0] = 0xFFFFFFFF;
- /* Open the flash and see if we recover properly. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if ((status != LX_SUCCESS) ||
- (nor_sim_flash.lx_nor_flash_free_physical_sectors != 111) ||
- (nor_sim_flash.lx_nor_flash_mapped_physical_sectors != 9))
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_close(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- printf("SUCCESS!\n");
- /* Test 4: simulate a power interruption after a new block is allocated but before
- anything else can be done. */
- printf("Test 4: Power interrupted new block allocation..");
- word_ptr[3] = word_ptr[3] & ~((ULONG) 1);
- /* Open the flash and see if we recover properly. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if ((status != LX_SUCCESS) ||
- (nor_sim_flash.lx_nor_flash_free_physical_sectors != 110) ||
- (nor_sim_flash.lx_nor_flash_mapped_physical_sectors != 9))
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- status = lx_nor_flash_close(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- /* Simulate a power interruption after a new block is allocated but before
- anything else can be done. */
- word_ptr[(16*128)+3] = 0x7C00;
- /* Open the flash and see if we recover properly. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if ((status != LX_SUCCESS) ||
- (nor_sim_flash.lx_nor_flash_free_physical_sectors != 109) ||
- (nor_sim_flash.lx_nor_flash_mapped_physical_sectors != 9))
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_close(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- /* Simulate a power interruption after a new sector is allocated, after data
- had been copied, and the superceeded bit is clear, but before the new entry can be
- setup. */
- word_ptr[3] = 0x7FFC;
- word_ptr[(16*128)+6] = word_ptr[(16*128)+6] & ~((ULONG) 0x40000000);
-
- /* Open the flash and see if we recover properly. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if ((status != LX_SUCCESS) ||
- (nor_sim_flash.lx_nor_flash_free_physical_sectors != 108) ||
- (nor_sim_flash.lx_nor_flash_mapped_physical_sectors != 9))
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- lx_nor_flash_close(&nor_sim_flash);
-
- /* Simulate a power interruption after a new sector is allocated, after data
- had been copied, and the superceeded bit is clear, the new entry is setup, but the old entry
- has not been invalidated. */
- word_ptr[3] = 0x7FF8;
- word_ptr[6] = 0xC0000070;
- for (i = 0; i < 128; i++)
- {
- word_ptr[(3*128)+i] = 0x70;
- }
-
- /* Open the flash and see if we recover properly. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if ((status != LX_SUCCESS) ||
- (nor_sim_flash.lx_nor_flash_free_physical_sectors != 107) ||
- (nor_sim_flash.lx_nor_flash_mapped_physical_sectors != 9))
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 7, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 119)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 1, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 1)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 16, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 16)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 32, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 32)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 48, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 48)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 64, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 64)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 80, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 80)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 96, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 96)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 112, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 112)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_defragment(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
-
- status = lx_nor_flash_defragment(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- status = lx_nor_flash_sector_read(&nor_sim_flash, 7, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 119)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 1, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 1)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 16, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 16)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 32, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 32)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 48, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 48)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 64, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 64)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 80, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 80)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 96, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 96)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 112, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 112)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- /* Read in reverse order to see if caching helps! */
- status = lx_nor_flash_sector_read(&nor_sim_flash, 112, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 112)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 96, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 96)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 80, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 80)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 64, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 64)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 48, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 48)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 32, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 32)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 16, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 16)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 1, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 1)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_read(&nor_sim_flash, 7, readbuffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- if (readbuffer[0] != 119)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- status = lx_nor_flash_sector_release(&nor_sim_flash, 7);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_sector_release(&nor_sim_flash, 8);
- if (status != LX_SECTOR_NOT_FOUND)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- status = lx_nor_flash_defragment(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- status = lx_nor_flash_close(&nor_sim_flash);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- printf("SUCCESS!\n");
- printf("Test 5: Randow write/read sector................");
- /* Erase the simulated NOR flash. */
- _lx_nor_flash_simulator_erase_all();
- /* Open the flash. */
- status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
- if (status != LX_SUCCESS)
- {
-
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- /* Write 100 sectors.... */
- for (i = 0; i < 100; i++)
- {
- for (j = 0; j < 128; j++)
- buffer[j] = i;
-
- status = lx_nor_flash_sector_write(&nor_sim_flash, i, buffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
-
- /* Read back 100 sectors... */
- for (i = 0; i < 100; i++)
- {
-
- status = lx_nor_flash_sector_read(&nor_sim_flash, i, buffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- for (j = 0; j < 128; j++)
- {
-
- if (buffer[j] != i)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
- }
-
- /* Now, perform 1000 sector writes to randomly selected sectors, each time
- reading first to make sure the previous contents are valid. */
- for (i = 0; i < 1000; i++)
- {
-
- /* Pickup random sector. */
- sector = (rand() % 100);
- /* Read that sector. */
- status = lx_nor_flash_sector_read(&nor_sim_flash, sector, buffer);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
-
- for (j = 0; j < 128; j++)
- {
-
- if ((buffer[j] & 0x0000FFFF) != sector)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
- /* Include the itteraction in the buffer to generate a new write. */
- for (j = 0; j < 128; j++)
- {
-
- buffer[j] = (buffer[j] & 0x0000FFFF) | (i << 16);
- }
-
- status = lx_nor_flash_sector_write(&nor_sim_flash, sector, buffer);
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- }
-
- status = lx_nor_flash_close(&nor_sim_flash);
-
- if (status != LX_SUCCESS)
- {
- printf("FAILED!\n");
- #ifdef BATCH_TEST
- exit(1);
- #endif
- while(1)
- {
- }
- }
- printf("SUCCESS!\n");
- #ifdef BATCH_TEST
- exit(0);
- #endif
- /* All done! */
- while(1)
- {
- }
- }
|