Testing All-X in RAM
Safety Manual for MPC5777M, Rev. 1.1
NXP Semiconductors 85
^ (0xc4 & $data_lex8[27])
^ (0x0d & $data_lex8[26])
^ (0xa4 & $data_lex8[25])
^ (0x37 & $data_lex8[24])
^ (0x64 & $data_lex8[23])
^ (0x16 & $data_lex8[22])
^ (0x94 & $data_lex8[21])
^ (0x29 & $data_lex8[20])
^ (0xea & $data_lex8[19])
^ (0x26 & $data_lex8[18])
^ (0x1a & $data_lex8[17])
^ (0x19 & $data_lex8[16])
^ (0xd0 & $data_lex8[15])
^ (0xc2 & $data_lex8[14])
^ (0x2c & $data_lex8[13])
^ (0x51 & $data_lex8[12])
^ (0xe0 & $data_lex8[11])
^ (0xa2 & $data_lex8[10])
^ (0x1c & $data_lex8[9])
^ (0x31 & $data_lex8[8])
^ (0x8c & $data_lex8[7])
^ (0x4a & $data_lex8[6])
^ (0x4c & $data_lex8[5])
^ (0x15 & $data_lex8[4])
^ (0x83 & $data_lex8[3])
^ (0x9e & $data_lex8[2])
^ (0x43 & $data_lex8[1])
^ (0xc1 & $data_lex8[0]);
my $ecc = $data_ecc ^ $addr_ecc;
my $ecc_tcm = $data_ecc ^ $addr_ecc ^ $addr_ecc_tcm ^ 0x55;
my $ecc_flash = $data_ecc ^ 0xff;
return($ecc);
}
##printf "addr = 0x%08x\n", $addr;
##printf "data_be = 0x%08x_%08x\n", $data_be0, $data_be1;
##printf "addr_ecc = 0x%02x\n", $addr_ecc;
##printf "data_ecc = 0x%02x\n", $data_ecc;
##printf "ecc = 0x%02x\n", $ecc;
##printf "ecc_tcm = 0x%02x\n", $ecc_tcm;
##printf "ecc_tcm_fix = 0x%02x\n", $ecc_tcm_fix;
##printf "ecc_flash = 0x%02x\n", $ecc_flash;
#----- end per script -----
This script finds the first N addresses with 2 bits set and 2 bits cleared in the address ECC contribution.
Usage is as follows:
• find_allx_addr address [number]
• address – starting address to start searching from
• number – number of addresses to find, default is 1