⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
10个职位/0个新职位
最后一篇文章
杜司汀
离线
最后一次见到:1年2个月前
已加入:2016-04-20 22:12
ROM与RAM

在Dev-Pro板上使用智能代码段“ble\u peripheral”项目和“QSPI”部署方法时,程序存储在哪里?

它是存储在占用110KB内存的RAM中(只剩下15KB供运行),还是存储在其他地方?

如何减小已用RAM的大小,以便mbedTLS有足够的RAM运行?

设备:
PM\U对话框
离线
最后一次见到:1天7小时前
工作人员
已加入:2018-02-08 11:03
嗨,杜斯廷,

嗨,杜斯廷,

当您按下程序\u qspi \u serial \u win或程序\u qspi \u jtag \u win时,应用程序代码将存储在qspi闪存中,而不是存储在RAM中。因为代码没有下载到RAM中,所以如果您想为mbedtl提供足够的RAM,应该增加RAM的可用区域。因此,我强烈建议您通过配置配置总堆大小自定义\配置\ qspi.h头文件中的宏。

谢谢,下午好

杜司汀
离线
最后一次见到:1年2个月前
已加入:2016-04-20 22:12
.

.
你好,

谢谢你的帮助!

使用示例项目bleèu peripheral,我增加了堆大小,如下所示:

#define configTOTAL\u HEAP\u SIZE 40000/*这是FreeRTOS的总堆大小*/

当我得到这个错误时:

建设目标:ble_peripheral.elf
调用:交叉臂C连接器
c:/diasemi/smartsnippetsstudio/gcc/4\ u 9-2015q1/bin/。/lib/gcc/arm none eabi/4.9.3/。/../../../../arm none eabi/bin/ld.exe:布尔_peripheral.elf 节“RETENTION\u RAM0”不适合区域“RetRAM0”
c:/diasemi/smartsnippetsstudio/gcc/4\ u 9-2015q1/bin/。/lib/gcc/arm none eabi/4.9.3/。/../../../../arm none eabi/bin/ld.exe文件:区域“RetRAM0”溢出19488字节
collect2.exe:错误:ld返回1退出状态
品牌:***[ble_外围设备.elf]错误1

将堆大小降低到20512允许程序进行编译,但是没有为MBEDTL留下足够的内存来执行基本的“crypto\u asymmetric\u key\u pair\u gen”操作。

杜司汀
离线
最后一次见到:1年2个月前
已加入:2016-04-20 22:12
.

.
嗯,可能不再是记忆问题了。它正在一个新的地方崩溃:

hw\u watchdog\u handle\u int()位于hw\u watchdog.c:111 0x7fc4286
位于hw\u watchdog.c的NMI\u HandlerC():143 0x7fc42f2
()在0xFFFFF9
bignum.c处的mbedtls\u mpi\u add\u abs():889 0x80011a8
ecp\u mod\u koblitz()位于ecp\u curves.c:1271 0x8003030
ecp\u mod\u p256k1(),位于ecp\u曲线。c:1322 0x800304e
ecp.c处的ecp\u modp():678 0x8001cc4
ecp.c处的ecp\u add\u mixed():1048 0x800272e
ecp.c处的ecp\u mul\u comb\u core():1297 0x8002be6
ecp.c处的ecp\u mul\u comb():1400 0x8002be6
ecp.c处的mbedtls\u ecp\u mul():1632 0x8002e72
位于ecp.c的mbedtls\u ecp\u gen\u keypair\u base():1892 0x8002efc
位于ecp.c的mbedtls\u ecp\u gen\u keypair():1903 0x8002f24
位于ecp.c的mbedtls\u ecp\u gen\u key():1917 0x8002f4e
crypto\u不对称密钥对\u gen(),位于bo\u crypto.c:320 0x800e8d2
main.c中的main():129 0x800e9fa

这个回溯是什么意思?

编辑:我想我已经弄明白了。我修改了configTOTAL\u HEAP\u大小和\uu HEAP\u大小。我认为malloc返回的是导致崩溃的无效内存。

#define configTOTAL\u HEAP\u SIZE 20512/*这是FreeRTOS的总堆大小*/
#定义堆大小8000

我猜我不应该修改堆的大小。使用MBEDTL增加可用内存的正确方法是什么?

PM\U对话框
离线
最后一次见到:1天7小时前
工作人员
已加入:2018-02-08 11:03
嗨,杜斯廷,

嗨,杜斯廷,

对不起,我对你的描述有点困惑。您能否澄清一下您是否通过更改堆的总大小解决了问题?

谢谢,下午好

杜司汀
离线
最后一次见到:1年2个月前
已加入:2016-04-20 22:12
不,问题仍然是

不,问题还是一样。将加密例程添加到ble\u外围示例程序并使用configTOTAL\u HEAP\u SIZE宏将其设置为20000时,该程序仍以暗示内存不足的方式将其拖到加密库内部。

请帮忙。如何使用BLE堆栈和加密例程创建项目?

PM\U对话框
离线
最后一次见到:1天7小时前
工作人员
已加入:2018-02-08 11:03
嗨,杜斯廷,

嗨,杜斯廷,

您应该将RAM的大小最小化到可以编译项目的最小允许大小,并将堆大小最大化到最大大小,例如70000,以增加分配的内存。因此,您应该增加堆大小并减少RAM大小。此外,您还必须使用OS\u FREE)和OS\u MALLOC()来执行任务。请你试试,告诉我。

谢谢,下午好

杜司汀
离线
最后一次见到:1年2个月前
已加入:2016-04-20 22:12
我能拿到那本书

我可以通过关闭dg_configUSE_WDOG并删除看门狗的所有用法,让ble_外围示例程序使用crypto。

这个看门狗是用来做什么的?为什么启用它会破坏加密例程?

PM\U对话框
离线
最后一次见到:1天7小时前
工作人员
已加入:2018-02-08 11:03
嗨,杜斯廷,

嗨,杜斯廷,

看门狗机制是一种特殊的硬件计时器,可用于在软件执行期间自动检测意外的系统行为。DA1468x系列设备包含一个由10.24毫秒时钟脉冲驱动的8位降计数器,导致最大2.6秒超时。要获得更多关于DA1468x系列设备中实现的看门狗(WDOG)机制的信息,我强烈建议您阅读本节5重新启动分析-WDOG调试技术教程(HTML)来自我们的支持页面的教程。请注意,您可以在我们门户的DA14680选项卡中找到非常有用的文档。此外,强烈建议查看DA14680数据表第节30看门狗定时器. 所以,当使用加密例程时,代码得到堆栈的原因是,某些东西被占用了很长的时间,超过了看门狗超时时间。当您使用异步事件并且不知道何时接收它们时,最佳实践是冻结WDOG,直到您获得事件。既然你得到了它,你应该激活它并重新加载。通常,WDOG用于同步事件。WDOG是一个计数器,它可以倒计时,固件应该在正常的时间段和超时之前重新加载它。如果您发现以上任何答案有用,请将其中一个标记为已接受。

谢谢,下午好

杜司汀
离线
最后一次见到:1年2个月前
已加入:2016-04-20 22:12
谢谢你的帮助!

谢谢你的帮助!