Accessing Epiphany registers from the host
Posted: Mon Jun 15, 2015 7:34 pm
Hi,
since debugging the Epiphany (in our environment) is somewhat of a pain, I have started writing a small, external monitor tool. The main idea behind it is simple: Read the eCore registers, parse some information (state, program counter) and display it continuously, without affecting the Epiphany and without much overhead. However, I see too many crashes and start to wonder if this approach can be made reliable at all.
The monitor does e_init() and e_open() for initialization, but no e_system_reset(), since I don't want to kill the running program. Since I run the older SDK 5.13, the Epiphany clocks should be enabled at all times; but I have not found any documented way to detect this - is there any? After initialization, the monitor only calls e_read() for different registers (E_REG_CONFIG, ...) for each core, sleeps a while and repeats.
Starting my monitor while another program is running works fine. When starting the other program again (which calls e_init(), e_system_reset() and e_open(); as well as e_close() and e_finalize() at the end), the Parallella hangs completely. Also, starting the monitor after a cold boot immediately hangs the board.
Is there a way to keep a program continuously polling the Epiphany, without the board locking up?
Best Regards,
sebraa
since debugging the Epiphany (in our environment) is somewhat of a pain, I have started writing a small, external monitor tool. The main idea behind it is simple: Read the eCore registers, parse some information (state, program counter) and display it continuously, without affecting the Epiphany and without much overhead. However, I see too many crashes and start to wonder if this approach can be made reliable at all.
The monitor does e_init() and e_open() for initialization, but no e_system_reset(), since I don't want to kill the running program. Since I run the older SDK 5.13, the Epiphany clocks should be enabled at all times; but I have not found any documented way to detect this - is there any? After initialization, the monitor only calls e_read() for different registers (E_REG_CONFIG, ...) for each core, sleeps a while and repeats.
Starting my monitor while another program is running works fine. When starting the other program again (which calls e_init(), e_system_reset() and e_open(); as well as e_close() and e_finalize() at the end), the Parallella hangs completely. Also, starting the monitor after a cold boot immediately hangs the board.
Is there a way to keep a program continuously polling the Epiphany, without the board locking up?
Best Regards,
sebraa