Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
What happens if ITCM and DTCM overlap on ARM926EJ-S?
Jump...
Cancel
Locked
Locked
Replies
3 replies
Subscribers
119 subscribers
Views
2803 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
How was your experience today?
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
What happens if ITCM and DTCM overlap on ARM926EJ-S?
Frédéric Hoguin
over 12 years ago
Note: This was originally posted on 23rd January 2012 at
http://forums.arm.com
Hello,
I noticed a bug in ITCM and DTCM initialization in some bootloader code.
The result is that the same value is written in the ITCM region register and in the DTCM region register, so both are configured with the same address and size.
It looks like in this case, ITCM gets priority over DTCM since everything is working correctly when executing code stored in this region of memory. If DTCM had priority, fetching an instruction from this region of memory would cause a prefetch abort exception.
Now, that's my understanding of what happens, but I couldn't find anything about it in the ARM926EJ-S documentation.
Can anybody confirm my theory, or explain what happens in detail?
Thanks,
Frédéric.
Parents
Frédéric Hoguin
over 12 years ago
Note: This was originally posted on 23rd January 2012 at
http://forums.arm.com
Thanks for your answer.
Actually, there are literal pools in this ITCM code, but I recall reading somewhere that the ITCM can contain data precisely because of PC-relative literal pools (however the DTCM cannot contain instructions). This would mean that for data accesses to PC-relative literal pools, the ITCM is used anyway. I cannot imagine how the ITCM code would work otherwise.
I hope someone can confirm this or explain what happens in this case.
Anyway, I agree that it is probably some kind of undefined behavior, and it shouldn't be done even if it seems to be working.
Cancel
Vote up
0
Vote down
Cancel
Reply
Frédéric Hoguin
over 12 years ago
Note: This was originally posted on 23rd January 2012 at
http://forums.arm.com
Thanks for your answer.
Actually, there are literal pools in this ITCM code, but I recall reading somewhere that the ITCM can contain data precisely because of PC-relative literal pools (however the DTCM cannot contain instructions). This would mean that for data accesses to PC-relative literal pools, the ITCM is used anyway. I cannot imagine how the ITCM code would work otherwise.
I hope someone can confirm this or explain what happens in this case.
Anyway, I agree that it is probably some kind of undefined behavior, and it shouldn't be done even if it seems to be working.
Cancel
Vote up
0
Vote down
Cancel
Children
No data