Код
static unsigned char BOARD_GetRemap( void )
{
unsigned int *remap = (unsigned int *) 0;
unsigned int *ram = (unsigned int *) AT91C_ISRAM;
// Try to write in 0 and see if this affects the RAM
unsigned int temp = *ram;
*ram = temp + 1;
if (*remap == *ram) {
*ram = temp;
return BOARD_RAM;
}
else {
*ram = temp;
return BOARD_FLASH;
}
}
{
unsigned int *remap = (unsigned int *) 0;
unsigned int *ram = (unsigned int *) AT91C_ISRAM;
// Try to write in 0 and see if this affects the RAM
unsigned int temp = *ram;
*ram = temp + 1;
if (*remap == *ram) {
*ram = temp;
return BOARD_RAM;
}
else {
*ram = temp;
return BOARD_FLASH;
}
}
При определении ремапа пишут не в *remap, а в *ram. Таким образом есть существенная вероятность неправильной работы. Плата периодически вела себя странно при старте, но никак не предполагали, что именно поэтому. Проверьте, пожалуйста, ничего я не напутал? Ведь тысячи же, наверное, людей пользовались этим пакетом. Неужели крохотная програмка так и осталась до сих пор неисправленной? По крайней мере с IAR EWB 6.10 она идет в комплекте.