⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
14个帖子/ 0新
最后一篇
节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
retram0溢出

你好,

我正在使用实际的SDK和工具在eval-Board上使用DA14683设备。

似乎我对内存布局有问题,编译器告诉我在需要更多的32千字的RAM时耗尽内存。以下将显示:
app.elf部分`保留_ram0'不适合区域`retram0'
retram0'溢出32字节

以下是我的实际配置(来自custom_config_qspi.h)

的#define dg_configOPTIMAL_RETRAM(0)的#define dg_configMEM_RETENTION_MODE(0x1F的)的#define dg_configQSPI_CACHED_RAM_SIZE_AE(61 * 1024)的#define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE(67 * 1024)的#define dg_configQSPI_CACHED_RAM_SIZE_BB(62 * 1024)的#define dg_configQSPI_CACHED_RETRAM_0_SIZE_BB(66 * 1024)

我从一个示例中使用了这个,我希望至少有约64千字的RAM。

即使在玩数字时,我也无法解决问题。

我必须配置什么来获得最大值。在QSPI缓存模式下运行的BLE应用程序中的RAM大小?我想要保留完整的RAM。

顺便说一下,在项目设置中使用以下配置是正确的:

dg_configblack_orca_ic_rev = black_orca_ic_rev_b dg_configblack_orca_ic_step = black_orca_ic_step_b

此致
节食者

关键词:
设备:
节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
你好,

你好,

我刚刚认识到,它与Freertos堆的调整有关

/ *************************************************************************************************\ * FreeRTOS specific config */ #define OS_FREERTOS /* Define this to use FreeRTOS */ #define configTOTAL_HEAP_SIZE 16384 /* This is the FreeRTOS Total Heap Size */

所以当我越来越多的时候,那么我就会得到这个问题。

当我增加一些其他缓冲器时,它不会发生。Segger RTT(仅用于测试):

#define buffer_size_up(45000)// target的终端输出的缓冲区的大小,最多为主机(默认值:1k)

然后编译器/链接器输出似乎是可以的:

调用:Cross ARM GNU创建Flash映像调用:Cross ARM GNU打印尺寸文本数据BSS DEC十六进制文件名187380 216 75552 403152 403152 403152 40352

这有助于回答我的问题吗?

此致

节食者

bobspam@free.fr.
离线
最后一次露面:2个月3周前
加入:2018-06-20 08:07
你好

你好

DA14683的内存映射非常复杂。

请在编译器生成的地图文件上找到一个小awk脚本,以找到各个部分

{
开始= 0;
再次= 1;
total_size = 0;
first_address =(2 ^ 32) - 1;
last_address = 0;
printf(“部分;开始;尺寸;末端;尺寸; \ n”);
做{
if($ 0〜/ memory地图/)
开始= 1;
if($ 0〜/ ^输出/)
再次= 0;
if(已启动== 1 && $ 0〜/ ^ [:alnum:] \。] /){
地址= strolum($ 2);
size = strolum($ 3);
#if(地址!= 0 && size!= 0){
if(size!= 0){
if(地址first_address =地址;
if(地址> last_address)
last_address =地址;
printf(“%s; 0x%x; 0x%x; 0x%x;%u; \ n”,$ 1,地址,大小,地址+大小,大小);
total_size + =尺寸;
}
}
if(getline <= 0)
再次= 0;
} while(再次> 0);
printf(“总和;; 0x%x ;;%u; \ n”,total_size,total_size);
printf(“范围; 0x%x; 0x%x; 0x%x;%u; \ n”,first_address,last_address - first_address,last_address,last_address - first_address);
出口;
}

将此写入脚本.AWK文件然后运行

#gawk -f script.awk yoursoftware.map

目的是分析二进制文件的整体结构,以确定哪些部分需要太多空间,并应减少。

然后,下一步是识别哪个堆/堆栈是这样,所以您有机会设置每个每个堆栈。

在我的侧面,我在custom_config_qspi.h文件中使用以下配置

#define dg_configram_retram_0_size_bb(64 * 1024)//保留RAM块为8K,24K或32K。包含OS_HEAP.
#define dg_configram_ram_size_bb(64 * 1024)// .bss,.heap,.stack的总和
#define __heap_size(24 * 1024)
#define __stack_size(16 * 1024)

#define configtotal_heap_size(48 * 1024)/ *这是freertos total堆大小* /

请记住,物理RAM尺寸为144k,其中保留RAM为64K。

关于Flash部分,固件分区为0x7F000大小(〜500kb),因此您的二进制文件不得超过此。

祝你好运(花了几个小时来将软件融入记忆!)

节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
你好,谢谢你

您好,非常感谢您的详细答案。

我会尽快尝试脚本。

同时,你能告诉我Freertos Heap的部分吗?

另一个问题是关于RAM部分:

- 是否正确64千字节是最大值。保留

- 使用剩余RAM空间的最佳策略是什么?

此致

节食者

PM_DIALOG.
离线
最后一次露面:18小时30分钟前
职员
加入:2018-02-08 11:03
嗨Dieter Falk,

嗨Dieter Falk,

我为我迟到的回复道歉。您是否可以在增加堆后解释问题是否解决了?这是你得到的错误吗?你用调试模式运行它吗?

谢谢,PM_DIALOG.

节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
你好,

你好,

我当前的内存配置类似:

/ *************************************************************************************************\ * Memory layout specific config */ #define dg_configOPTIMAL_RETRAM (0) #define dg_configMEM_RETENTION_MODE (0x1F) #define dg_configQSPI_RETRAM_0_SIZE_BB ( 64 * 1024) #define dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE ( 64 * 1024) #define dg_configQSPI_RAM_SIZE_BB ( 64 * 1024) #define __HEAP_SIZE ( 1 * 1024) #define __STACK_SIZE ( 16 * 1024) /*************************************************************************************************\ * FreeRTOS specific config */ #define OS_FREERTOS /* Define this to use FreeRTOS */ #define configTOTAL_HEAP_SIZE (15 * 1024) /* This is the FreeRTOS Total Heap Size */

这是作品,我的链接器输出是:

调用:十字架ARM GNU创建Flash映像调用:Cross ARM GNU打印尺寸文本数据BSS DEC十六进制文件名178900 211792 33B50

当我将configtotal_heap_size增加到(16 * 1024)时,链接器会失败,我得到了发布输出:

调用:Cross ARM C ++链接器C:/dialogsemi/smartsnippetsstudio2.0.10/gcc/4_9-2015q3/bin /../ lib / gcc / arm-none-eabi / 4.9.3 / ../../../。/arm-none-eabi/bin/ld.exe: firmware.elf section `RETENTION_RAM0' will not fit in region `RetRAM0' c:/dialogsemi/smartsnippetsstudio2.0.10/gcc/4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: region `RetRAM0' overflowed by 224 bytes collect2.exe: error: ld returned 1 exit status

调试和发布构建中发生同样的问题(DA14683-00-DEBUG_QSPI,DA14683-00-REDELY_QSPI)

此致

节食者

bobspam@free.fr.
离线
最后一次露面:2个月3周前
加入:2018-06-20 08:07
你好

你好

与DG_CONFIG我现在使用的小错误(对于custom_config_qspi.h)

#define dg_configqspi_cached_retram_0_size(96 * 1024)//包含ucheap [] aka .os_heap aka freertos heap。
#define dg_configqspi_cached_retram_1_size(0 * 1024)//没有该部分的数据。
#define dg_configqspi_cached_ram_size(32 * 1024)// .bss,.heap,.stack的总和。(128K - 旋转态 - Bleret)
#define configtotal_heap_size(47 * 1024)//这是freertos total堆大小,ucheap [] In .os_heap部分。请参阅xminimimimimimimimimimimimimoffreeByTesRemaining符号以了解从未使用过多少内存。
#define __heap_size(15 * 1024)// 15ko请参阅调试工具中的heapend符号 - __heapbase .map文件。使用端口堆溢出验证来检查大小。Newlib所需的(Printf,Strtok是高消费者)
#define __stack_size(1 * 1024)// 1ko:__stacktop在.map文件 - Cortex-M0的MSP寄存器。仅在启动时间使用时才不得为null。

我也使用

#define dg_configshuffling_mode(0x0)// 0x0自然顺序。保留RAM块为8K,24K或32K。
#define dg_configmem_retention_mode(0x1f)//保留所有内存块

避免在执行期间关闭内存。

在你的情况下,我会建议

- 提升回ram_0_size

- 通过同一个amont抬起ram_size

- 堆叠堆和堆栈的尺寸,因为堆栈仅在启动时使用,然后freertos为每个任务设置专用堆栈。堆被“不是freertos”代码(如newlib)使用,所以如果您使用printf或strtok,则应保留一些〜15kb。我假设您使用Freertos的HeaP_4.c分配策略。您可以使用最新版本的Freertos eacp_6.c返回OS_HEAP并分享.heap与newlib。

此致

PM_DIALOG.
离线
最后一次露面:18小时30分钟前
职员
加入:2018-02-08 11:03
嗨Dieter Falk,

嗨Dieter Falk,

您是否正在运行我们的任何SDK项目?你能帮我在我身边复制吗?将buffer_size_up宏设置为45000后,您的问题是否解决了?

谢谢,PM_DIALOG.

节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
你好,

你好,

我尝试在“custom_config_qspi_suota.h”中配置“pxp_reporter”并更改为:
#define configtotal_heap_size 16800.

并获取以下错误:

... pxp_reporter.elf部分`hetent_ram0'不适合区域`retram0'
......“retram0”溢出256字节

我也把buffer_size_up宏放在其中,但这没有任何改变。

如果您可以在您身边延长此问题并为此问题提供解决方案,那将是很棒的。谢谢!

此致

节食者

PM_DIALOG.
离线
最后一次露面:18小时30分钟前
职员
加入:2018-02-08 11:03
嗨Dieter Falk,

嗨Dieter Falk,

是否有可能共享您在设置中使用的custom_config_qspi_suota.h文件?

此外,工作的配置是什么以及不起作用的配置?

您是否在PXP_Reporter项目中完成了任何其他修改?

在您的初始帖子中,我看到了您使用的是非最佳配置。在此配置期间,Freertos HeaP将放置在Retram_0中,并且在使用后退_1时,将在此处放置。

如果您将总堆大小(ConfigTotal_heap_size)增加到22000,是否有任何效果?

谢谢,PM_DIALOG.

节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
你好,

你好,

关于“PXP_Reporter”项目,我刚刚检查了我使用“da1468x_da15xxx_sdk_1.0.14.1081”的原始项目。

您唯一要更改的内容(要收到错误)就是增加行
#define configtotal_heap_size.

并放16800,而不是它背后的原始定义。

我将Somected Custom_Config_qspi_suota.h文件放在此回复中,所以通常您应该能够在您的网站上重现此功能。我期待着你的结果。

此致
节食者

PM_DIALOG.
离线
最后一次露面:18小时30分钟前
职员
加入:2018-02-08 11:03
嗨幽默,

嗨幽默,

我在SDK的PXP_Reporter示例中使用了相同的Custom_Config_qspi_suota.h标题文件,但我无法复制此错误。此外,我还构建了Suota配置的项目,如果我执行任何其他步骤,以便除了您自己的Custom_config_qspi_suota.h之外,以便复制此错误吗?

谢谢,PM_DIALOG.

节食者粉笔
离线
最后一次露面:5个月1周前
加入:2019-10-12 10:33
请你提供

您能否提供哪个SmartSnippet版本,以及您用于此测试的SDK?

如果使用完全相同的开发环境和原始示例,我不知道可能不同的是什么不同。

我可以尝试在另一台电脑上安装安装并在我身边再次检查。对于此操作,我需要您的反馈,您正在使用您使用的版本。

此致

节食者

PM_DIALOG.
离线
最后一次露面:18小时30分钟前
职员
加入:2018-02-08 11:03
嗨Dieter Falk,

嗨Dieter Falk,

我正在使用sdk_1.0.14和smartsnippets studio v.1.6.3。在“开发工具”部分下的DA14682 / 683产品页面上提供此版本。

https://www.dialog-seminile.com/produ雷电竞官网登录cts/connectity/bluetooth-low-energy/smartbond-da14682-and-da14683.

你能在一个新的SDK目录中尝试吗?

谢谢,PM_DIALOG.