Ich versuche, meine Anwendung auf ein NXP-Board (RT 1020) zu portieren .
Ich verstehe, dass dieses Board keinen internen Flash hat und daher von SRAM läuft. Es verwendet "SRAM_DTC" (fest gekoppelte Daten) und "SRAM_ITC" (fest gekoppelte Anweisungen), um dies zu verwalten.
In MCUXpresso kann ich das Speicherlayout sehen:
Wenn ich meine Anwendung kompiliere, gibt der Linker einen Fehler aus, der besagt, dass der .bss-Abschnitt nicht in seinen SRAM_DTC-Abschnitt passt.
Region `SRAM_DTC' ist um 12172 Bytes übergelaufen
Ich versuche zu verstehen, ob dieser Abschnitt "SRAM_DTC" obligatorisch ist , um meine Anwendung auf diesem Board auszuführen. Ich habe versucht, einfach den Abschnitt SRAM_DTC zu löschen und die Anwendung auszuführen, aber das wird nicht in MCUXpresso kompiliert:
board/board.c:198: undefinierter Verweis auf `__base_NCACHE_REGION'
Wenn ich in der Speicherkonfiguration auch die NCACHE_REGION lösche, bootet das Board nicht mehr. Ich kann mich davon erholen, indem ich die Schritte zur Fehlerbehebung hier befolge .
Ich habe alles gelesen, was ich zu diesem SRAM_DTC/ITC/OC-Thema finden kann. Ich kann immer noch nicht herausfinden, ob ich den .bss-Abschnitt an eine Stelle im externen SRAM "verschieben" kann.
Meine Fragen:
Einige Hintergrundinformationen habe ich hier und hier zu SRAM_DTC/ITC/OC gefunden .
Für diejenigen, die sich für das gleiche Thema interessieren und Schwierigkeiten haben, Dokumentation zu finden:
Viele DTC/ITC-Informationen werden hier erklärt: https://www.nxp.com/docs/en/application-note/AN12077.pdf
DTC ist tatsächlich für Daten optimiert, während ITC für Anweisungen optimiert ist. Ich habe immer noch keine endgültige Dokumentation gefunden, die behauptet, dass ITC nur für Code verwendet werden soll, der von SRAM ausgeführt wird.
In meinem Fall benötigte meine Anwendung mehr DTC-SRAM als die standardmäßig verfügbaren 64 KB.
Daher bin ich letztendlich dieser Anleitung gefolgt: https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/Reallocating-the-FlexRAM/ta-p/1117649
Beim Schreiben auf 3 verschiedene Register kann die Speicherkonfiguration geändert werden. Ich habe meine Speicherkonfiguration auf 0 B ITC, 192 KB DTC und (das zulässige Minimum) 64 KB für OC geändert.
Das OC wird für den standardmäßig ausgelieferten Bootloader verwendet und kann daher nicht vollständig entfernt werden.
Kartmann