May 21, 2020
08:50 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 21, 2020
08:50 AM
Dear All,
I try to FLASHing TC397XE chip using the DAP IF.
With DAP telegrams , I can halt main CPU (using the HARR issue). I saw, that corresponds bit are set (HARR bit in IOINFO register). Also, I can enable debug unit and unlock interface (IF_LCK bit is cleared and OEN bit is set).
Then, I can switch on SUPERVISOR MODE and I saw, that mode is set. Using the DAP, I can successfully read any CERBERUS and CPU registers. But, when I try to write the same registers, I always get BUS_WR_ERROR. By following the access rules (look at pic, yellow rect.),
I set all need permissions. ACCEN0/1 registers in all "1" too (it mean's that writing is permitted ) But, I get bus writing error any way.
By the way, I can successfully write and read RAM memory (from 0x70000000 address space). So, it seems, that IO_WRITE_WORD and IO_BLOCK_WRITE telegrams are work right. But, I can't write any registers from 0xFxxxxxxx address space.
A couldn't understand the reason: where is I'm wrong. I looking for qualified help from here.
I try to FLASHing TC397XE chip using the DAP IF.
With DAP telegrams , I can halt main CPU (using the HARR issue). I saw, that corresponds bit are set (HARR bit in IOINFO register). Also, I can enable debug unit and unlock interface (IF_LCK bit is cleared and OEN bit is set).
Then, I can switch on SUPERVISOR MODE and I saw, that mode is set. Using the DAP, I can successfully read any CERBERUS and CPU registers. But, when I try to write the same registers, I always get BUS_WR_ERROR. By following the access rules (look at pic, yellow rect.),
I set all need permissions. ACCEN0/1 registers in all "1" too (it mean's that writing is permitted ) But, I get bus writing error any way.
By the way, I can successfully write and read RAM memory (from 0x70000000 address space). So, it seems, that IO_WRITE_WORD and IO_BLOCK_WRITE telegrams are work right. But, I can't write any registers from 0xFxxxxxxx address space.
A couldn't understand the reason: where is I'm wrong. I looking for qualified help from here.
- Tags:
- IFX
6 Replies
May 21, 2020
09:48 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 21, 2020
09:48 AM
Do you get the same bus error with COMDATA? If so, can you post your telegrams?
The "E" registers are ENDINIT protected, so you'll either need to go through the unlock sequence - see 9.4.4 The Endinit Functions in AURIXTC3XX_um_part1_v1.5.pdf. Alternately, you could "cheat" by setting CBS_OSTATE.ENIDIS via CBS_OCNTRL=0xC0, so that all writes via Cerberus bypass the ENDINIT protection system.
The "E" registers are ENDINIT protected, so you'll either need to go through the unlock sequence - see 9.4.4 The Endinit Functions in AURIXTC3XX_um_part1_v1.5.pdf. Alternately, you could "cheat" by setting CBS_OSTATE.ENIDIS via CBS_OCNTRL=0xC0, so that all writes via Cerberus bypass the ENDINIT protection system.
May 22, 2020
06:39 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 22, 2020
06:39 AM
UC_wrangler wrote:
Do you get the same bus error with COMDATA? If so, can you post your telegrams?
The "E" registers are ENDINIT protected, so you'll either need to go through the unlock sequence - see 9.4.4 The Endinit Functions in AURIXTC3XX_um_part1_v1.5.pdf. Alternately, you could "cheat" by setting CBS_OSTATE.ENIDIS via CBS_OCNTRL=0xC0, so that all writes via Cerberus bypass the ENDINIT protection system.
For register access I use only RW mode, instead of COMMUNICATION mode. Also, I use Clear ENDINIT and Safety ENDINIT, if it need for some registers. I saw, that ENDINIT did cleared in that cases.
May 22, 2020
07:13 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 22, 2020
07:13 AM
alexeyPhyton wrote:
Also, I use Clear ENDINIT and Safety ENDINIT, if it need for some registers. I saw, that ENDINIT did cleared in that cases.
Wait wait the WDTCPU registers are at 0xFxxxxxxx too (e.g., SCU_WDTCPU0CON0 at 0xF0036100).
What if you write to an unrestricted register like P00_OUT (0xF003A000)? Does that also fail?
May 22, 2020
07:13 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 22, 2020
07:13 AM
I can't write CBS_OCNTRL register too..... I got WR_BUS_ERROR too...
May 22, 2020
07:17 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 22, 2020
07:17 AM
UC_wrangler wrote:
Wait wait the WDTCPU registers are at 0xFxxxxxxx too (e.g., SCU_WDTCPU0CON0 at 0xF0036100).
What if you write to an unrestricted register like P00_OUT (0xF003A000)? Does that also fail?
Yes. you right, sorry. I checked and I can write SCU_WDTSCON0_REG register without error. But I can't write to PC register for example....
May 22, 2020
07:40 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
May 22, 2020
07:40 AM
Yes, I check and I can also successfully write P00
This widget could not be displayed.