⚠️
大家好. .谢谢光临论坛。令人兴奋的消息!我们现在在移动的过程中,我们的新论坛平台,将提供更好的功能和包含在主对话框的网站。所有文章和帐户已经被迁移。我们现在只接受交通新论坛,请发布任何新的线程//www.xmece.com/support。我们将修复bug /优化搜索和标签在接下来的日子里。
14个新帖子/ 0
最后发表
迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
RetRAM0溢出

你好,

我用DA14683设备与实际eval-board SDK和工具。

看起来,内存布局,我有一个问题,编译器告诉我耗尽内存,当需要更多32 kb RAM。以下将显示:
App.elf节“RETENTION_RAM0”不会适应地区“RetRAM0”
RetRAM0 32个字节的溢出

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

#定义dg_configOPTIMAL_RETRAM (0) # define dg_configMEM_RETENTION_MODE (0 x1f) # 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。

即使玩的数字,我无法解决这个问题。

我有什么配置马克斯。RAM大小在QSPI BLE运行的应用程序缓存模式?我想要完整的RAM保留。

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

dg_configBLACK_ORCA_IC_REV = BLACK_ORCA_IC_REV_B dg_configBLACK_ORCA_IC_STEP = BLACK_ORCA_IC_STEP_B

致以最亲切的问候
迪特尔

关键词:
设备:
迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
你好,

你好,

我承认,这是有关调整FreeRTOS堆

/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ * FreeRTOS特定配置* / # define OS_FREERTOS / *定义这个使用FreeRTOS * / # define configTOTAL_HEAP_SIZE 16384 / *这是FreeRTOS总堆大小* /

所以当我increas这个数字,然后我得到这个问题。

它不发生,当我increas其他缓冲区如耐火RTT(只是为了测试):

#定义BUFFER_SIZE_UP(45000) / /终端输出缓冲区的大小的目标,到主机(默认值:1 k)

然后编译器和链接器输出似乎好了:

调用:横臂GNU创建Flash图像调用:横臂GNU bss 12月十六进制打印尺寸文本数据文件名187380 216 75556 263152 403 f0

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

致以最亲切的问候

迪特尔

bobspam@free.fr
离线
最后看到:1年4个月前
加入:2018-06-20 08:07
你好

你好

内存映射的DA14683相当复杂。

请在地图上我发现一个小的awk脚本使用文件被编译器来定位各个部分产生

{
开始= 0;
= 1;
total_size = 0;
first_address = 2 ^ 32 - 1;
last_address = 0;
printf(";开始;规模;结束;规模;\ n”);
{做
如果(0 ~ /内存映射/美元)
开始= 1;
如果(0 ~ / ^输出/美元)
再次= 0;
如果(开始= = 1 & & $ 0 ~ / ^ [[:alnum:] \] /) {
地址= strtonum(2美元);
大小= strtonum(3美元);
#如果(地址= 0 & &大小! = 0){
如果(大小! = 0){
如果(地址< first_address)
first_address =地址;
如果(地址> last_address)
last_address =地址;
printf (" % s; 0 X % 0 X %; 0 X %; % u; \ n”, 1美元,地址、规模、地址+大小,大小);
total_size + =大小;
}
}
如果(getline < = 0)
再次= 0;
}(再次> 0);
printf("总和;;0 X %;; % u; \ n”, total_size, total_size);
printf("范围;0 X % X; 0 X %; 0 X %; % u; \ n”, first_address, last_address——first_address last_address, last_address - first_address);
退出;
}

写这个脚本。awk文件,然后运行

#呆呆- f脚本。awk yoursoftware.map

目的是分析二进制文件的总体结构,识别哪些部分占用太多空间,应减少。

然后下一步是确定堆/堆栈,所以你有机会调整大小的。

在我身边我custom_config_qspi使用以下配置。h文件

#定义dg_configRAM_RETRAM_0_SIZE_BB(64 * 1024) / /保留内存块8 k, 24 k或32 k。包含os_heap
#定义dg_configRAM_RAM_SIZE_BB(64 * 1024) / /笔.bss .heap .stack
#定义__HEAP_SIZE (24 * 1024)
#定义__STACK_SIZE (16 * 1024)

#定义configTOTAL_HEAP_SIZE(48 * 1024) / *这是FreeRTOS总堆大小* /

记住,物理RAM的大小是144 k其中保留内存是64 k。

关于Flash部分,固件分区0 x7f000大小(~ 500 kb)所以你二进制不得超过这一点。

好运(我花了几个小时来适应软件到内存中!)

迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
你好,非常感谢你

你好,非常感谢你详细的回答。

我将尝试尽快您的脚本。

与此同时,你能告诉我在哪个部分freeRTOS堆会吗?

另一个问题是关于内存部分:

——这是正确的,64年千字节是马克斯。保留

——什么是最好的策略使用的剩余内存空间?

致以最亲切的问候

迪特尔

PM_Dialog
离线
最后看到:4个月2周前
工作人员
加入:2018-02-08 11:03
嗨,迪特尔•福尔克

嗨,迪特尔•福尔克

我的道歉为我的迟回复。你能请注明如果增加堆后问题已经解决了吗?这是你的错误吗?你在调试模式下运行它了吗?

谢谢,PM_Dialog

迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
你好,

你好,

您当前的内存配置是这样的:

/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ *特定的内存布局配置* / # define dg_configOPTIMAL_RETRAM (0) # define dg_configMEM_RETENTION_MODE (0 x1f) # 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特定配置* / # define OS_FREERTOS / *定义这个使用FreeRTOS * / # define configTOTAL_HEAP_SIZE(15 * 1024) / *这是FreeRTOS总堆大小* /

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

调用:横臂GNU创建Flash图像调用:横臂GNU打印尺寸文本数据bss 12月178900 212 32680 211792 33 b50十六进制文件名

当我增加configTOTAL_HEAP_SIZE(16 * 1024)然后链接失败我我落的输出:

调用:横臂c++链接器C: / dialogsemi / smartsnippetsstudio2.0.10 / gcc / 4 _9 - 2015第三季度/ bin / . . / lib / gcc / arm-none-eabi / 4.9.3 / . . / . . / . . / . . / arm-none-eabi / bin / ld。exe:固件。精灵部分“RETENTION_RAM0”不会适应地区的RetRAM0 c: / dialogsemi / smartsnippetsstudio2.0.10 / gcc / 4 _9 - 2015第三季度/ bin / . . / lib / gcc / arm-none-eabi / 4.9.3 / . . / . . / . . / . . / arm-none-eabi / bin / ld。exe:地区“RetRAM0”由224字节collect2溢出。exe:错误:ld返回1退出状态

同样的问题发生在调试和发布构建(DA14683-00-Debug_QSPI DA14683-00-Release_QSPI)

致以最亲切的问候

迪特尔

bobspam@free.fr
离线
最后看到:1年4个月前
加入:2018-06-20 08:07
你好

你好

现在小勘误表dg_config我使用(custom_config_qspi.h)

#定义dg_configQSPI_CACHED_RETRAM_0_SIZE(96 * 1024) / /包含ucHeap[]又名.os_heap FreeRTOS堆。
#定义dg_configQSPI_CACHED_RETRAM_1_SIZE(0 * 1024) / /部分没有数据。
#定义dg_configQSPI_CACHED_RAM_SIZE (32 * 1024) / / .bss, .heap .stack。(128 k - RETRAM0 BLERET)
#定义configTOTAL_HEAP_SIZE(47 * 1024) / /这是FreeRTOS总堆大小,ucHeap .os_heap节[]。看到xMinimumEverFreeBytesRemaining象征知道从未使用多少内存。
#定义__HEAP_SIZE (15 * 1024) / / 15 ko看到heapend象征在调试工具——__HeapBase . map文件。使用港口堆溢出验证检查大小。所需newlib (printf, strtok很高的消费者)
#定义__STACK_SIZE(1 * 1024) / / 1柯:__StackTop . map文件- MSP Cortex-M0注册。只使用在启动时不能为空。

我也使用

#定义dg_configSHUFFLING_MODE (0 x0) / / 0 x0自然秩序。保留内存块8 k, 24 k或32 k。
#定义dg_configMEM_RETENTION_MODE (0 x1f) / /保留所有内存块

为了避免内存执行期间关掉。

我建议在你的情况中

——提高RETRAM_0_SIZE

——提高RAM_SIZE同样的阿蒙山崖

——反大小的堆和栈,因为栈是只在启动时使用,然后FreeRTOS设置每个任务的专用栈。堆被“不freertos”代码newlib所以你应该保留一些如果你使用printf或strtok ~ 15 kb。我假设您使用heap_4。c FreeRTOS分配策略。您可以使用heap_6。从最新版本的c FreeRTOS撤回os_heap和分享.heap newlib。

致以最亲切的问候

PM_Dialog
离线
最后看到:4个月2周前
工作人员
加入:2018-02-08 11:03
嗨,迪特尔•福尔克

嗨,迪特尔•福尔克

你运行我们的SDK项目吗?你能帮我复制在我的身边吗?是你的设置BUFFER_SIZE_UP宏45000后问题解决了吗?

谢谢,PM_Dialog

迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
你好,

你好,

我试图配置“pxp_reporter”在“custom_config_qspi_suota。h”和改变:
#定义configTOTAL_HEAP_SIZE 16800

并得到以下错误:

…pxp_reporter。精灵部分“RETENTION_RAM0”不会适应地区“RetRAM0”
…由256个字节的RetRAM0溢出

我也把BUFFER_SIZE_UP宏,但这不会改变任何事情。

这将是伟大的如果你可以rerpoduce这一边,为这个问题提供一个解决方案。谢谢你!

致以最亲切的问候

迪特尔

PM_Dialog
离线
最后看到:4个月2周前
工作人员
加入:2018-02-08 11:03
嗨,迪特尔•福尔克

嗨,迪特尔•福尔克

可以共享custom_config_qspi_suota。h文件,您使用的是在你的设置吗?

此外,什么是配置工作和不工作吗?

你做了任何其他修改pxp_reporter项目吗?

在你最初的帖子,我发现您正在使用最优配置。在这个配置中,freeRTOS堆将被放置在RETRAM_0利用RETRAM_1,将放在这里。

如果你增加总堆大小(configTOTAL_HEAP_SIZE)到22000,这有影响吗?

谢谢,PM_Dialog

迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
你好,

你好,

关于“pxp_reporter”项目,我检查,我从“DA1468x_DA15xxx_SDK_1.0.14.1081”使用原始的项目。

你唯一需要改变的(错误的)是增加的线
#定义configTOTAL_HEAP_SIZE

,把16800年而不是原始的定义。

我把改编custom_config_qspi_suota。h文件to this reply, so normally you should be able to reproduce this on your site. I am looking forward on your results.

致以最亲切的问候
迪特尔

PM_Dialog
离线
最后看到:4个月2周前
工作人员
加入:2018-02-08 11:03
嗨Detier,

嗨Detier,

我使用了相同的custom_config_qspi_suota。h头文件在pxp_reporter SDk的例子,但我无法复制这个错误。此外,我建立了项目SUOTA配置,我应该做任何其他步骤来复制这个错误除了自己的custom_config_qspi_suota.h吗?

谢谢,PM_Dialog

迪特尔•福尔克
离线
最后看到:1年7个月前
加入:2019-10-12 33
你能请提供

你能提供这SmartSnippet版本,SDK用于这个测试吗?

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

我可以试着做一个安装在另一台计算机上,并检查再一次站在我这一边。也为这个动作我需要你的反馈您正在使用的版本。

致以最亲切的问候

迪特尔

PM_Dialog
离线
最后看到:4个月2周前
工作人员
加入:2018-02-08 11:03
嗨,迪特尔•福尔克

嗨,迪特尔•福尔克

我用SDK_1.0.14和v.1.6.3 SmartSnippets工作室。这个版本可以在“开发工具”部分下DA14682/683产品页面。

//www.xmece.com/亚博电竞菠菜products/connectivity/bluetooth-low-energy/smartbond-da14682-and-da14683

你能试一试新的SDK目录?

谢谢,PM_Dialog