DA1458X_CONFIG_ADVANCE中内存相关宏的目的/含义

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
14个帖子/ 0新
最后一篇
Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
DA1458X_CONFIG_ADVANCE中内存相关宏的目的/含义

你好,

我无法理解da1458x_config_advanced.h文件下宏的目的/含义。你能解释一下每个人的意思吗?

#define db_heap_sz.
#define env_heap_sz.
#define msg_heap_sz.
#define non_ret_heap_sz.

实际上,我正在通过UART从不同的控制器发送GATT数据库,并使用Task_App和使用Ke_msg_Alloc分配服务,特征和描述符。
添加一些后,控制转移到Wrap_platform_reset()。当我阅读对话支持的一些答案时,我发现内存低时会发生这种情况。
所以,我增加了所有这些的价值,现在我的GATT数据库正常工作。
虽然,我想了解究竟是目的或上述每个宏的目的。

谢谢,
hrishikesh.

设备:
lt_dialog(未经验证)
嗨Dhrishi,

嗨Dhrishi,
这些宏定义了用于不同用法的内存部分的大小。例如,调用ke_msg_alloc将从msg_heap_sz定义的大小定义的msg部分分配所请求的金额的内存。DB是用于GATT数据库,ENV是用于内核和BLE堆栈内部用法,而NON_RET是通用目的。

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
我有很多

我有大量的服务和特点(6个服务和33个特点)。我最后每次服务的总大小是:
S1:1278字节字节
S2:570字节
S3:751字节
S4:1455字节
S5:745字节
S6:214字节

每项服务的特征都是TLV8类型,因此它们的尺寸更大。

您可以建议可以使用的大小宏的值。我使用的当前值:
#define db_heap_sz 2048.
#define env_heap_sz 1536.
#define msg_heap_sz 2048.
#define non_ret_heap_sz 1024.

使用这些值,当我添加服务S4时,DA14580变为非响应性。我认为这是一个记忆问题。
我试过在一些组合中增加这些,但没有运气。

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
我最终可以做到它

我最终可以使用以下值使它成为:

#define db_heap_sz 3072.
#define env_heap_sz 3584.
#define msg_heap_sz 1600.
#define non_ret_heap_sz 1024.

您能否证明这些价值观证明,如果有任何问题(如最大尺寸等),请告诉我

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
你好,

你好,

我们需要添加几个新服务和大约10个特征。通过这种情况,发生了什么,即宏的增加的尺寸(上面提到的)正在超出执行区域zi_ret20的界限。处理这个的正确方法是什么?
同时编译,我收到错误:

错误:L6220E:执行区域zi_ret20大小(9764字节)超过限制(8888字节)区域包含0个字节的填充和0字节的veeners
错误:L6221E:执行ream_ret20具有执行范围()与执行范围()的执行区域zi_ret21重叠

我需要至少2kb更多内存。如何做出增加区域大小,直到我可以做多少。

lc_dialog
离线
最后一次露面:4天22小时前
职员
加入:2016-09-19 23:20
你好Dhrishi,

你好Dhrishi,

我为延迟道歉。

因此,为了获得更好的主意,您现在拥有多个服务,包括2个自定义服务(允许在580上),并且REST是标准服务。

当您提到时,DA14580变得不谐波,如果它是由于堆栈问题而不是堆而调试。请验证是否存在与堆栈崩溃有关的任何问题。只需用图案填充内存并查看它被修改的部分即可执行此操作。

总存储器将根据描述,这只是每种类型中所有动态分配的总和。

最好的,
LC.

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
不。我的所有服务和

不可以。我的所有服务和特征都是自定义具有128位UUID的。
我们有大量的服务(8-10),特征(50-55),特征值尺寸也很大(每种特征几乎150个字节)

不,我无法调试,因为DA14580是模块的一部分(具有我们的MCU和DA14580)。所以我们无法调试它。虽然,我可以验证它与内存有关,因为当我减少输入服务和特性时,它可以正常工作。只有,当我介绍服务或特征时,DA14580在添加GATT数据库上,DA14580在AD UART添加GATT数据库后没有响应

lc_dialog
离线
最后一次露面:4天22小时前
职员
加入:2016-09-19 23:20
你好Dhrishi,

你好Dhrishi,

DA14580具有8 kB的保留RAM。您只能在RET RAM中持有此类数据。这可以从地图文件监视,并且可以根据可用内存调整应用程序。请转发我的地图文件,以便我可以检查内存使用情况。

此外,您的申请是否会深入睡眠?您需要保留记忆中的所有服务/字符吗?如果您没有操作深度睡眠以释放一些保留RAM,我想知道数据是否可以移动到常规RAM。

只是为了确认,您是否在HCI上使用DA14581?

最好的,
LC.

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
你好,

你好,

非常感谢您的支持。这么晚才回复很抱歉。

截至目前,我们计划使用延长睡眠。根据我的理解,在此睡眠模式下,8KB保留RAM与整个SYS RAM一起保留。正确的?
所以,我认为将一些数据移动到常规RAM应该是很好的。我会尝试第一次首先移动东西。如果有任何问题,我会发送地图文件。您能否分享您的电子邮件ID。
此外,我还想了解一些事情:

1.添加服务时,给出了总大小,我假设堆栈为该服务的特征值(根据该服务的大小)分配了许多内存。所以如下所示,哪种类型的堆用于存储:
db_heap_sz或env_heap_sz或msg_heap_sz

2.如果我们决定使用延长睡眠,如果我将env堆和msg堆保留在保留RAM(利用8KB可用)并将DB堆移动到SYS RAM(或其他一些组合)?这种情况会有任何问题吗?

3.如果我们决定使用DeepSleep模式,我们可以通过在值0-23之间的API SystemIt()中修改EM_MAP配置来保留超过8KB的内存。如果是,可以使用这种配置保留最大存储量量。

在不同的纸币上,您可以使用扩展睡眠模式和深度睡眠模式,让我知道标准BLE外设的当前值。我只是想了解当前评级的差异。

谢谢,
hrishikesh.

lc_dialog
离线
最后一次露面:4天22小时前
职员
加入:2016-09-19 23:20
你好Dhrishi,

你好Dhrishi,

请提供您的电子邮件,我将转发安全文件夹TP。这可以用于上传地图文件。

1.添加任何服务/字符,内存从DB_HEAP_SZ分配。但是,由于整体代码和数据增加,RAM使用率(其他堆)将相应增加ASLO。

2.在延长睡眠中保持内存并没有区别。因此,您可以使用适合内存组织的任何组合。

3.在睡眠深处时,您可以保留的只是8KB。

4.在DA14580上,通常延长的睡眠电流范围在1.2 - 1.4 UA之间,深度睡眠的范围大约约650NA。但请记住,这可能因硬件设计和所使用的组件而异。

最好的,
LC.

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
你好,

你好,

感谢您的回复。有鉴于此,我假设所有内存都在扩展睡眠模式下保留。我打算使用扩展的睡眠模式。
因此,在功能方面,延伸和深度睡眠模式之间有什么区别?如果有任何指针同样。那么我要了解它会很有用。

我已经基于BLE_APP_BAREBONE示例应用程序创建了我的应用程序(SDK:5.0.4)。所以,默认情况下,其中使用的电源模式是什么?

此外,我已经将指针“app_on_system_powered”设置为定期呼叫的函数。我看到它要么返回goto_sleep和leep_powered。它与电源模式有关(在这种情况下延长睡眠)吗?
如果我从这个函数持续返回Keep_power,会发生什么?
而且,如果我返回goto_sleep,那么UART上的任何活动都会唤醒它吗?
简而言之,我需要了解这些返回值的表明和结果。

谢谢,
hrishikesh.

lc_dialog
离线
最后一次露面:4天22小时前
职员
加入:2016-09-19 23:20
嗨Dhrishi,

嗨Dhrishi,

睡眠模式在我们的数据表和用户手册中解释。简要介绍,您可以查看7.1.1睡眠模式在我们的UM-B-051_DA1458x_software_platform_reference文档。

睡眠模式是定义的user_config.h.文件中的文件。默认in.BLE_APP_BAREBONE.Arch_sleep_off.这通常是我们的SDK中的默认值。这意味着它处于活动模式。

.app_on_system_powered.当应用程序电源关闭后,应用程序想要保持系统活动状态。这旨在为应用程序提供一些数据/背景处理的额外处理时间。基于此处调用的函数将确定应用程序是否必须保持供电或可以睡眠。如果你去睡觉,那么它将在睡眠模式的末尾唤醒,以寻址BLE事件。有关唤醒DA14580的方法,请参阅我们的UM。但默认情况下,UART不会唤醒系统,而BLE则不会唤醒系统。

最好的,
LC.

Dhrishi.
离线
最后一次露面:3年4个月前
加入:2017-02-10 09:56
你好,

你好,

感谢您的回复。两件事情:

1.如果我修改user_config.h以使用扩展睡眠模式,但在返回repact_powered从我的app_on_system_powered回调时,会有扩展睡眠模式吗?或者BLE仍然可以扩展睡眠模式?
设置:我们的模块是一个外围解决方案,具有外部MCU和DA14580。外部MCU通过UART到DA14580通过GATT数据库和广告数据发送,以便它可以启动广告。
现在,理想情况下,DA14580可以延长睡眠。继续前进,它可能会收到:
一世。来自MCU(OVER UART)的事件,如指示(req要发送到BLE中央),更新了广告数据,断开请求或
II。BLE Central可能会将GATT读写命令发送到DA14580。
因此,我们如何适当地处理所有这些,并且仍然保持DA14580在延长睡眠中进行省电。

2.是否有一个应用笔记,有助于在扩展睡眠模式下读取BLE_APP_PERITELAL的读数。配置,引脚,方案和其他细节?我们可以先尝试在DA14580上,然后在模块上复制它以取实际读数。我看到training_04_sleep_modes_current_measurement_v1.0.pdf。我会通过这个检查。

lc_dialog
离线
最后一次露面:4天22小时前
职员
加入:2016-09-19 23:20
你好Dhrishi,

你好Dhrishi,

1.如果将应用程序保留在活动期间app_on_system_powered.过程,无论启用睡眠模式,系统都不会睡眠状态。
此外,如果假设您在下一个BLE事件即将发生在下一个BLE事件即将发生的情况下,我们提供了睡眠的许可,它是足够智能的,以确定它是否经济睡眠。如果它不是它会保持活跃。

对于您的申请,
根据您的解释,我明白您正在使用UART的HCI实现。在这种情况下,您可以使用外部唤醒机制从外部事件唤醒系统。要设置此操作,您将在睡眠前在特定分配的GPIO上启用中断。在睡眠期间,如果MCU在此GPIO上发送事件,系统将唤醒,您可以进行延迟处理。
注意:如果短缺GPIO,则可以使用其中一个接口(UART)引脚,您将在睡眠状态之前将其作为GPIO使其成为GPIO,并在唤醒之后修改为UART。请参考系统软件部分UM-B-051:DA14580进一步了解该机制如何工作。

2.是的,有一个应用笔记AN-B-051 SmartSnippets Power Profiler校准引导您通过当前的测量值。也参考AN-B-051 SmartSnippets Power Profiler校准用于响起DEV套件以获得令人惊讶的结果。

最好的,
LC.