RICK BOURGEOIS

CodeWarrior mini-flexbus memory test method

Discussion created by RICK BOURGEOIS on Jan 31, 2011
Latest reply on Feb 1, 2011 by RICK BOURGEOIS

Dear friends of the Freescale Forum,

 

Although I am grateful for the intelligent tools that Freescale has developed for compiling very efficient code, sometimes I am frustrated when the intelligence prevents me from executing redundant tasks like testing my static ram array attched to the mini-flex bus.

During the development stage I discovered that if compiling under global optimization of 4 the intelligence would prevent me from taking a value, writing to memory and reading it back again.

It would ignore the code altogether because I guess it felt it was reduntant.

To circumvent the intelligence I wrote the following code:

uint_16 test_memory(void){  mem_slct[0] = (uint_8 *)0x100ffff0 ; mem_slct[1] = (uint_8 *)0x101ffff2 ; mem_slct[2] = (uint_8 *)0x102ffff4 ; mem_slct[3] = (uint_8 *)0x103ffff6 ; mem_slct[4] = (uint_8 *)0x104ffff7 ; mem_slct[5] = (uint_8 *)0x105ffffa ; mem_slct[6] = (uint_8 *)0x100ffffc ; mem_slct[7] = (uint_8 *)0x107ffffe ;   for(num_chips = 0;num_chips < 8; num_chips ++ ) {  mem_pointer = mem_slct[num_chips];   select_ram_page(mem_pointer);  old_memory[num_chips] = *mem_pointer;  mem_pointer++;  test_data = *mem_pointer;  mem_pointer --;  *mem_pointer =0x55;  test_data = *mem_pointer;  *mem_pointer = old_memory[num_chips];    if( test_data != 0x55 )   break;   }   select_ram_page(0);   return (num_chips); }

 I used global variables so that I could view the results in the IDE.

I had to actually use the mem_pointer so that it wouldn't be optimized out of use.

 

During our first production run of a 52259 based product we ran into defects where address and data lines were disconnected. Sometimes a defect of this nature can go undetected if the memory location affected isn't reached.

I now need to come up with a full memory test (not just a few locations) that will be able to indicate when a defect is discovered.

I will post my code when finished but I am open to suggestions.

 

Thanks

Outcomes