This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

reason for ARMv8 EDSCR err bit set

Hi,

I'm working on a project which is for debugging cortex-a53 through Jtag interface.

The Jtag clock TCK is set to 300kHz which is pretty low, and I can properly read back debug registers such as EDSCR and EDPRSR. EDPRSR is 1 before I issue the 'halt' request. My code will setup CTI and can successfully bring the core to halt state.
  At the halt state:
   EDPRSR would be read back as 0x11 (powered up, and halted, no OS lock, no OS double lock);
   EDSCR would be read back as 0x3C00313, which means:
     EDITR is ready to be written;
     INTdis is b'11, my code set that to avoid interrupt;
     TDA is 0, no trap for accessing debug register;
     MA=0, Normal access mode;
     NS=0, Secure state;
     SDD=0, Secure debug is enabled;
     HDE=0, Halting debug enable not set, as the halt is triggered from CTI but not BP/WP or HLT instruction;
     RW=b'0000, means all EL levels are AArch32 state;
     EL=3, which is current EL;
     A=0, no error interrupt pending;
     ERR=0, no Cumulative error;
     STATUS=b'010011, External debug request;
  So at this point, everything looks fine. However, if I do a write to EDITR with opcode as:
      MCR p14, 0, 0, c0, c5, 0 =>  0xEE000E15 => read r0
  EDSCR will be read back as: 0x3C00353, i.e. ERR bit would be set, neither overRun, nor underRun; Use MCR to read r0 should be legal and no exception should happen here; no interrupt; should be no permission issue, I think. So what else could go wrong?
 
  I'm bump to the wall for days now and have no clue so far. Really appreciate if you can shine some light on this.
  Thanks in advance,


SQU

Parents Reply Children