void t_changePC(unsigned long pcstr, unsigned long spstr) { uint32_t sp = 0; uint32_t pc = 0; //PC t_halt(); swd_read_core_register(13, &sp); swd_write_core_register(13, spstr); swd_read_core_register(13, &sp); swd_write_core_register(13, sp); swd_read_core_register(15, &pc); swd_write_core_register(15, pcstr); swd_read_core_register(15, &pc); swd_write_core_register(15, pc); }
void t_ReadPC() { uint32_t pc = 0; //PC t_halt(); swd_read_core_register(15, &pc); swd_write_core_register(15, pc); }
void programming_sram() { U32 i, size, count, addr = 0x20000000; size = sizeof(binraw) / 4; for (i = 0; i < size; i += 1024) { if ((i + 1024) < size) { count = 1024; } else { count = size - i; } write_sequential_words(addr + i * 4, count, &binraw[i]); } write_sequential_words(0xe000ed08, 1, &addr); addr = binraw[1] & 0xFFFFFFFE; swd_write_core_register(15, &addr); addr = binraw[0]; swd_write_core_register(13, &addr); addr = 0xA05F0000; write_sequential_words(DHCSR, 1, &addr); }