2017-01-22 21 views
0

Я уже много лет пытаюсь внедрить код в DS-5, ориентируясь на Cortex-A9 и используя NEON SIMD intrinsics. Мне удалось выполнить несколько небольших программ через отладчик, но когда я пытаюсь выделить память больше, чем 256Кб я всегда получаю сообщениеНаложение дублирования памяти в DS-5 при реализации кода для руки Cortex-A9

Описания Пути информационного ресурса Тип L6221E: Execution области ZI_DATA с диапазоном исполнения [0x80001674, 0x800417d0) перекрывается с областью выполнения ARM_LIB_HEAP с диапазоном выполнения [0x80040000,0x80080000). CPUTest2017RE C/C++ Проблема

Карта памяти запланирована файлом рассеивает следующий

;******************************************************* 
; 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 Так что моя проблема в том, что, когда я выделяю память передать 512x512 (.bdat формата) Изображение это распределение происходит в ZI_DATA, а не в SDRAM, что является бесплатным. Я пробовал почти каждую конфигурацию, и либо я получаю ошибку выше, либо отладчик застрял в ожидании ... В чем проблема?

PS: тот же код работал на Cortex-A8 и более старой версии DS-5, но по какой-то причине отладчик Cortex-A8 не работает с новейшей версией DS-5.

ответ

0

Ну, похоже, что ваши данные bss выходят за пределы диапазона и в раздел HEAP. Вы можете попробовать несколько вещей ...

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. 

Тот факт, что тот же самый код работает для A8 не очень полезно, так как библиотеки различны, и поэтому являются участки кода ... Я был там, и это делает 'nt чувствует себя хорошо :)

+0

Я попытался переместить пределы памяти, чтобы скомпилировать код, но позже на эмулятор застрял ... Странно, что пример, который я использую, - это готовый к использованию пример, который приходит с DS-5. –

+0

Вы проверили файл карты? вы можете вставить этот файл в любой пастебин, чтобы я мог видеть – theadnangondal

 Смежные вопросы

  • Нет связанных вопросов^_^