Check each command going over the debug port and make sure it works as
expected. This commit adds checks for initializing the clock,
selecting the desired program counter and running the flash
program.
Signed-off-by: Keith Packard <keithp@keithp.com>
debug.debug_instr(set_clkcon_fast);
byte status;
debug.debug_instr(set_clkcon_fast);
byte status;
+ for (int times = 0; times < 20; times++) {
+ Thread.sleep(1);
status = debug.debug_instr(get_sleep);
status = debug.debug_instr(get_sleep);
- } while ((status & SLEEP_XOSC_STB) == 0);
+ if ((status & SLEEP_XOSC_STB) != 0)
+ return;
+ }
+ throw new IOException("Failed to initialize target clock");
}
void action(String s, int percent) {
}
void action(String s, int percent) {
+ void run(int pc) throws IOException, InterruptedException {
+ debug.set_pc(pc);
+ int set_pc = debug.get_pc();
+ if (pc != set_pc)
+ throw new IOException("Failed to set target program counter");
+ debug.resume();
+
+ for (int times = 0; times < 20; times++) {
+ byte status = debug.read_status();
+ if ((status & AltosDebug.STATUS_CPU_HALTED) != 0)
+ return;
+ }
+
+ throw new IOException("Failed to execute program on target");
+ }
+
public void flash() throws IOException, FileNotFoundException, InterruptedException {
if (!check_rom_config())
throw new IOException("Invalid rom config settings");
public void flash() throws IOException, FileNotFoundException, InterruptedException {
if (!check_rom_config())
throw new IOException("Invalid rom config settings");
this_time);
debug.write_memory(flash_prog, flash_page);
this_time);
debug.write_memory(flash_prog, flash_page);
- debug.set_pc(flash_prog);
- int pc = debug.get_pc();
- debug.resume();
- Thread.sleep(100);
- for (int times = 0; times < 10; times++) {
- byte status = debug.read_status();
- if ((status & AltosDebug.STATUS_CPU_HALTED) != 0)
- break;
- Thread.sleep(100);
- }
byte[] check = debug.read_memory(flash_addr, this_time);
for (int i = 0; i < this_time; i++)
byte[] check = debug.read_memory(flash_addr, this_time);
for (int i = 0; i < this_time; i++)