.info = stellaris_info
};
-
struct {
u32 partno;
char *partname;
{
{0x01,"LM3S101"},
{0x02,"LM3S102"},
+ {0x03,"LM3S1625"},
+ {0x04,"LM3S1626"},
+ {0x05,"LM3S1627"},
+ {0x06,"LM3S1607"},
+ {0x10,"LM3S1776"},
{0x19,"LM3S300"},
{0x11,"LM3S301"},
{0x12,"LM3S310"},
{0x39,"LM3S808"},
{0x32,"LM3S811"},
{0x33,"LM3S812"},
+ /*{0x33,"LM3S2616"},*/
{0x34,"LM3S815"},
{0x36,"LM3S817"},
{0x37,"LM3S818"},
{0x35,"LM3S828"},
+ {0x39,"LM3S2276"},
+ {0x3A,"LM3S2776"},
+ {0x43,"LM3S3651"},
+ {0x44,"LM3S3739"},
+ {0x45,"LM3S3749"},
+ {0x46,"LM3S3759"},
+ {0x48,"LM3S3768"},
+ {0x49,"LM3S3748"},
+ {0x50,"LM3S2678"},
{0x51,"LM3S2110"},
{0x52,"LM3S2739"},
{0x53,"LM3S2651"},
{0x76,"LM3S6537"},
{0x77,"LM3S6753"},
{0x78,"LM3S6952"},
+ {0x80,"LM3S2671"},
+ {0x81,"LM3S5632"},
{0x82,"LM3S6422"},
{0x83,"LM3S6633"},
{0x84,"LM3S2139"},
{0x86,"LM3S8738"},
{0x88,"LM3S8938"},
{0x89,"LM3S6938"},
+ {0x8A,"LM3S5652"},
{0x8B,"LM3S6637"},
{0x8C,"LM3S8933"},
{0x8D,"LM3S8733"},
{0x8E,"LM3S8538"},
{0x8F,"LM3S2948"},
+ {0x91,"LM3S5662"},
+ {0x96,"LM3S5732"},
+ {0x97,"LM3S5737"},
+ {0x99,"LM3S5747"},
+ {0x9A,"LM3S5752"},
+ {0x9B,"LM3S5757"},
+ {0x9C,"LM3S5762"},
+ {0x9D,"LM3S5767"},
+ {0xA0,"LM3S5739"},
{0xA1,"LM3S6100"},
{0xA2,"LM3S2410"},
{0xA3,"LM3S6730"},
{0xA4,"LM3S2730"},
{0xA5,"LM3S6420"},
{0xA6,"LM3S8962"},
+ {0xA7,"LM3S5749"},
+ {0xA8,"LM3S5769"},
+ {0xA9,"LM3S5768"},
{0xB3,"LM3S1635"},
{0xB4,"LM3S1850"},
{0xB5,"LM3S1960"},
{0,"Unknown part"}
};
-char * StellarisClassname[2] =
+char * StellarisClassname[5] =
{
"Sandstorm",
- "Fury"
+ "Fury",
+ "Unknown",
+ "DustDevil",
+ "Tempest"
};
/***************************************************************************
return status;
}
-
/* Send one command to the flash controller */
int stellaris_flash_command(struct flash_bank_s *bank,u8 cmd,u16 pagen)
{
if((ver != 0) && (ver != 1))
{
LOG_WARNING("Unknown did0 version, cannot identify target");
- return ERROR_FLASH_OPERATION_FAILED;
+ return ERROR_FLASH_OPERATION_FAILED;
}
if (did1 == 0)
target_write_u32(target, FLASH_CRIS, 0);
return ERROR_FLASH_OPERATION_FAILED;
}
+
+ bank->sectors[banknr].is_erased = 1;
}
return ERROR_OK;
}
/* Configure the flash controller timing */
- stellaris_read_clock_info(bank);
+ stellaris_read_clock_info(bank);
stellaris_set_flash_mode(bank,0);
- fmppe = stellaris_info->lockbits;
- for (lockregion=first;lockregion<=last;lockregion++)
+ fmppe = stellaris_info->lockbits;
+ for (lockregion=first;lockregion<=last;lockregion++)
{
if (set)
fmppe &= ~(1<<lockregion);
0x04,0x36, /* adds r6, r6, #4 */
0x96,0x42, /* cmp r6, r2 */
0xF4,0xD1, /* bne mainloop */
- 0x00,0xBE, /* bkpt #0 */
+ /* exit: */
+ 0xFE,0xE7, /* b exit */
/* pFLASH_CTRL_BASE: */
0x00,0xD0,0x0F,0x40, /* .word 0x400FD000 */
/* FLASHWRITECMD: */
count = 0;
}
}
-
-
-
+
while(count>0)
{
if (!(address&0xff)) LOG_DEBUG("0x%x",address);
return ERROR_OK;
}
-
int stellaris_probe(struct flash_bank_s *bank)
{
/* we can't probe on an stellaris