This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software: TI C/C++ Compiler
Dear Champs,
I am asking this for our customers.
There is an erratum "Memory: Prefetching Beyond Valid Memory" in
http://www.ti.com/lit/er/sprz439d/sprz439d.pdf
Can our compiler block it automatically?
That is, to have at least warnings or errors if the user happens to use the last part of the impacted memory addresses showed in Table 6?
If not, would you please add this function in the compiler as it is not friendly to ask the user to check it all the time?
This may be critical to some users because they may overlook this erratum and put some data at the end of the memory for them to use.
Wayne Huang
Hi Wayne,
Compilers are generic and not device specific. Compilers gets the memory map information from linker cmd file which is created by user hence this is something need to be taken care by user. Our sample linker cmd file in C2000Ware should take care of this which is used as reference by customers.
Having said that, I'll definitely provide your feedback to our compiler team.
Regards,
Vivek Singh
Dear Vivek,
Would you please make it clearer?
"Our sample linker cmd file in C2000Ware should take care of this which is used as reference by customers."
Does that mean if the user uses our .cmd file, then there will be warning/errors showing in the compiler if there is any violation?
Wayne Huang
Wayne,
Does that mean if the user uses our .cmd file, then there will be warning/errors showing in the compiler if there is any violation?
No, what I mean that sample linker cmd file should not be using the last space in memory region which can cause issue.
Regards,
Vivek Singh
Dear Vivek,
It seems our sample linker cmd file does not try to deal with this....
Would you please help check this again?
If not, would you please help discuss with software/compiler team to avoid this erratum because our customers have concerns.
Another question, if this erratum is accidentally violated, what will happen? What will the user see on CCS and in standalone?
MEMORY
{
PAGE 0 :
.................
/* Flash sectors */
/* BANK 0 */
.........................
FLASH_BANK1_SEC15 : origin = 0x09F000, length = 0x001000 /* on-chip Flash */
PAGE 1 :
......................
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
................
RAMGS3 : origin = 0x012000, length = 0x002000
}
Wayne Huang
Hi,
It seems our sample linker cmd file does not try to deal with this....
Would you please help check this again?
Please see this snapshot from the generic linker cmd file (28004x_generic_flash_lnk.cmd) we have in C2000Ware. You can see that it has mention of this Errata and reserved the locations accordingly.
Another question, if this erratum is accidentally violated, what will happen? What will the user see on CCS and in standalone?
I will get back to you on this.
Regards,
Vivek Singh
Dear Vivek,
I just realized that the file I checked was the same, but was in older version C2000Ware_2_00_00_03.
Yes, I downloaded the latest version C2000Ware_2_01_00_00 and checked the file has been updated just as you said.
C:\TI\c2000\C2000Ware_2_01_00_00\device_support\f28004x\common\cmd\28004x_generic_flash_lnk.cmd
That is, the .cmd has been updated in the latest version.
It's good to have that.
Please also update the behaviors if the user violates the erratum.
Thank you.
Wayne Huang
Hi Wayne,
Please also update the behaviors if the user violates the erratum.
As mentioned in the document, in such case it may ITRAP. Incase of flash it may get ECC error.
Also compiler does not take care of this.
Regards,
Vivek Singh