0

我已经被困了很多天,试图在 DS-5 中实现代码,以 Cortex-A9 为目标并使用 NEON SIMD 内在函数。我设法通过调试器执行了一些小程序,但是当我尝试分配大于 256KB 的内存时,我总是收到一条消息

说明 资源路径位置类型 L6221E:执行范围为 [0x80001674,0x800417d0) 的执行区域 ZI_DATA 与执行范围为 [0x80040000,0x80080000) 的执行区域 ARM_LIB_HEAP 重叠。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
{ }
}

在此处输入图像描述 所以我的问题是,当我分配内存以传递 512x512(.bdat 格式)图像时,此分配发生在 ZI_DATA 中,而不是在空闲的 SDRAM 中。我在每个配置附近都进行了尝试,要么我得到上面的错误,要么调试器卡在挂起......这里有什么问题?

PS:相同的代码在 Cortex-A8 和旧版本的 DS-5 上运行,但由于某种原因,Cortex-A8 调试器无法与最新版本的 DS-5 一起使用。

4

1 回答 1

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 的事实并没有真正的帮助,因为库不同,代码部分也不同……我去过那里,感觉不太好:)

于 2017-01-24T09:22:39.103 回答