3

I am adapting some linker scripts from the rather new AURIX TriCore MCUs.

There is a command I do not understand at all and the documentation [0] is not really helpful.

enter image description here

Can somebody tell me in principle, what is going on there? What is meant with "global address" and what is meant with "core local address"?

[0] INFINEON TECHNOLOGIES AG: TriCore Development Platform, 2015. - Manual

j35t3r
  • 1,254
  • 2
  • 19
  • 53

1 Answers1

7

In AURIX, you have multiple cores.Each core has it's own scratchpad data and program RAM called DSPR and PSPR respectively.

Each of these can be accessed using either of two addresses:

Global Address - This address range would refer to the same memory irrespective of the core on which the code is executed.

Local Address - This address would refer to core specific RAMs and would change depending on the core on which the code is executed.Local address will access the core's local scratchpad RAMs.

For example: CPU0 DSPR starts at 0x70000000 and has a size of 112kB CPU1 DSPR starts at 0x60000000 and has a size of 120kB

In the code if you use 0x70000000, it would refer to CPU0 DSPR irrespective of whether the access is from CPU0 or CPU1. This is called Global Address.

Instead if you use 0xD0000000 in your code, it'll access 0x70000000 if the code is executed from CPU0 and if it's executed from CPU1, it'll access 0x60000000. This is called Local Address.

Such a facility is provided to make the code portable with respect to CPUs.

For DSPRs, the local address starts at 0xD0000000 For PSPRs, the local address starts at 0xC0000000

Pardon my linguistic skills.I am not a native English speaker.Please comment if further clarifications are needed or something is ambiguous.

kryptoknight
  • 264
  • 1
  • 3
  • 10