2017-01-22 2 views
0

Ich bin schon seit vielen Tagen fest stecken, versuchen, einen Code in DS-5, Targeting Cortex-A9 und Verwendung von NEON SIMD intrinsics. Ich schaffte es, einige kleine Programme durch den Debugger auszuführen, aber wenn ich versuche, Speicher größer als 256 KB zuzuteilen bekomme ich immer eine NachrichtMemory-Überlappung in DS-5 bei der Implementierung von Code für Arm Cortex-A9

Beschreibung Ressourcenpfad Ortstyp L6221E: Execution Region ZI_DATA mit Execution Bereich [0x80001674, 0x800417d0) überlappt mit Ausführungsbereich ARM_LIB_HEAP mit Ausführungsbereich [0x80040000,0x80080000]. CPUTest2017RE C/C++ Problem

Die Speicherkarte durch eine Streu Datei geplant ist als

folgt
;******************************************************* 
; Copyright (c) 2011-2014 ARM Ltd. All rights reserved. 
;******************************************************* 

; Scatter-file for Cortex-A9 bare-metal example on Versatile Express 

; This scatter-file places application code, data, stack and heap at  suitable addresses in the memory map. 
; Using a scatter-file with ARM_LIB_STACKHEAP eliminates the need to set stack-limit or heap-base in the debugger. 

; Versatile Express with Cortex-A9 has 1GB SDRAM at 0x60000000 to  0x9FFFFFFF, which this scatter-file uses. 


SDRAM 0x80000000 0x10000000 
{ 
VECTORS +0 
{ 
    * (VECTORS, +FIRST)  ; Vector table and other (assembler) startup code 
    * (InRoot$$Sections) ; All (library) code that must be in a root region 
} 

RO_CODE +0 
{ * (+RO-CODE) }   ; Application RO code (.text) 

RO_DATA +0 
{ * (+RO-DATA) }   ; Application RO data (.constdata) 

RW_DATA +0 
{ * (+RW) }     ; Application RW data (.data) 

ZI_DATA +0 
{ * (+ZI) }     ; Application ZI data (.bss) 

ARM_LIB_HEAP 0x80040000 EMPTY 0x00040000 ; Application heap 
{ } 

ARM_LIB_STACK 0x80090000 EMPTY -0x00010000 ; Application (SVC mode) stack 
{ } 

IRQ_STACK  0x800A0000 EMPTY -0x00010000 ; IRQ mode stack 
{ } 

TTB   0x80100000 EMPTY 0x4000  ; Level-1 Translation Table for  MMU 
{ } 
} 

enter image description here Also mein Problem ist, dass, wenn ich Speicher zuweisen ein 512x512 (.bdat-Format) zu übergeben Bild Diese Zuweisung erfolgt in ZI_DATA und nicht in SDRAM, das kostenlos ist. Ich habe versucht, in der Nähe jeder Konfiguration und entweder bekomme ich den Fehler oben entweder der Debugger auf anhängig ... Was ist das Problem hier ??

PS: Derselbe Code lief auf Cortex-A8 und ältere Version von DS-5, aber aus irgendeinem Grund funktioniert der Cortex-A8 Debugger nicht mit der neuesten Version von DS-5.

Antwort

0

Nun, es scheint, dass Ihre BSS-Daten außerhalb der Reichweite und in den HEAP-Bereich gehen. Sie können ein paar Dinge ausprobieren ...

1) Limit the maximum bss section so the error will be more clear 
2) Move Heap section on a higher address 
3) generate a map file which has all the section sizes. to see what is taking so much space in the bss section and maybe moving that to some other section. 

Die Tatsache, dass der gleiche Code für A8 funktioniert nicht wirklich hilfreich ist, weil die Bibliotheken unterschiedlich sind und so sind die Codeabschnitte ... Ich habe dort gewesen und es tut 'nt fühlt sich gut :)

+0

Ich habe versucht, die Speichergrenzen zu bewegen, um den Code zu kompilieren, aber später auf dem Emulator stecken ... Die seltsame Sache ist, dass das Beispiel, das ich benutze, ein gebrauchsfertiges Beispiel ist DS-5. –

+0

Haben Sie die Map-Datei überprüft? Kannst du diese Datei in einen Pastebin einfügen, damit ich sie sehen kann? – theadnangondal

Verwandte Themen