在Dev Pro Board上使用智能片段“BLE_PERITELAL”项目和“QSPI”部署方法时,程序存储在哪里?
它是否存储在RAM中,占用110kb的RAM(仅落户运行的15kb)或者它存储在其他地方?
如何减小使用的RAM的大小,使得MBedTL有足够的RAM运行?
嗨Ddustin,
按Program_qspi_serial_win或program_qspi_jtag_win时,应用程序代码存储在QSPI Flash中而不是进入RAM。由于代码未下载INT RAM,以防您想要为MBedTLS拥有足够的RAM,因此您应该增加可用的RAM的可用区域。因此,我强烈建议您通过配置来增加总堆大小configtotal_heap_size.在自定义custom_config_qspi.h标题文件中的宏。
谢谢,PM_DIALOG.
。你好,
谢谢你的帮助!
使用示例项目BLE_PLEIWAWAL,我提高了堆大小:#define configtotal_heap_size 40000 / *这是freertos total堆大小* /
#define configtotal_heap_size 40000 / *这是freertos total堆大小* /
在构建时,我收到此错误:
建筑目标:ble_peripheral.ell调用:交叉臂C链接器C:/ Diasemi / SmartsnippetsStudio / GCC / 4_9-2015Q1 / Bin /../ Lib / GCC / ARM-None-EABI / 4.9.3 /../../../../ ARM-None-EABI /bin / ld.exe:ble_peripheral.elf部分`Retention_ram0'不适合区域`retram0'C:/ Diasemi / SmartsnippetsStudio / GCC / 4_9-2015Q1 / Bin /../ Lib / GCC / ARM-None-EABI / 4.9.3 /../../../../ ARM-None-EABI /bin / ld.exe:区域`retram0'溢出到19488年字节collect2.exe:错误:LD返回1个退出状态制作:*** [ble_peripheral.elf]错误1
降低堆大小为20,512允许程序编译,但是对于MBedTLS不留出足够的内存来执行基本的“Crypto_Asymmetric_key_Pair_Gen”操作。
。HM可能不再是内存问题。它在一个新的地方崩溃:hw_watchdog_handle_int()在hw_watchdog.c:111 0x7fc4286nmi_handlerc()在hw_watchdog.c:143 0x7fc42f2()在0xffffff9Bignum.c:889 0x80011A8的Mbedtls_mpi_add_abs()ECP_CURVES.C的ECP_MOD_KOBLITZ():1,271 0x8003030ECP_Curves.c:1,322 0x800304e处的ecp_mod_p256k1()ECP_MODP()在ECP.C:678 0x8001cc4ECP_ADD_MIXED()在ECP.C:1,048 0x800272eECP.C中的ECP_MUL_COMB_CORE():1,297 0x8002BE6ECP_MUL_COMB()在ECP.C:1,400 0x8002BE6MBEDTLS_ECP_MUL()在ECP.C:1,632 0x8002E72MBEDTLS_ECP_GEN_KEYPAIR_BASE()在ECP.C:1,892 0x8002EFCMBEDTLS_ECP_GEN_KEYPAIR()在ECP.C:1,903 0x8002F24MBEDTLS_ECP_GEN_KEY()在ECP.C:1,917 0x8002F4Ecrypto_asymmetric_key_pair_gen()在bo_crypto.c:320 0x800e8d2main()在main.c:129 0x800E9FA
hw_watchdog_handle_int()在hw_watchdog.c:111 0x7fc4286nmi_handlerc()在hw_watchdog.c:143 0x7fc42f2()在0xffffff9Bignum.c:889 0x80011A8的Mbedtls_mpi_add_abs()ECP_CURVES.C的ECP_MOD_KOBLITZ():1,271 0x8003030ECP_Curves.c:1,322 0x800304e处的ecp_mod_p256k1()ECP_MODP()在ECP.C:678 0x8001cc4ECP_ADD_MIXED()在ECP.C:1,048 0x800272eECP.C中的ECP_MUL_COMB_CORE():1,297 0x8002BE6ECP_MUL_COMB()在ECP.C:1,400 0x8002BE6MBEDTLS_ECP_MUL()在ECP.C:1,632 0x8002E72MBEDTLS_ECP_GEN_KEYPAIR_BASE()在ECP.C:1,892 0x8002EFCMBEDTLS_ECP_GEN_KEYPAIR()在ECP.C:1,903 0x8002F24MBEDTLS_ECP_GEN_KEY()在ECP.C:1,917 0x8002F4Ecrypto_asymmetric_key_pair_gen()在bo_crypto.c:320 0x800e8d2main()在main.c:129 0x800E9FA
这个后退是什么意思?
编辑:我相信我认为这一点。我已经修改了configtotal_heap_size,也是__heap_size。我相信Malloc正在返回导致崩溃的无效内存。#define configtotal_heap_size 20512 / *这是freertos total堆大小* /#define __heap_size 8000.我猜我不应该修改__heap_size。增加可用内存以使用MBedTL的正确方法是什么?
#define configtotal_heap_size 20512 / *这是freertos total堆大小* /#define __heap_size 8000.
对不起,但我有点混淆你的描述。如果您在更改总堆大小的情况下解决了问题,请澄清您是否可以澄清您的问题?
没有问题仍然是一样的。在将Crypto例程添加到BLE_Peripheral示例程序并使用ConfigtotAl_heap_size宏将其设置为20,000时,该程序仍然以暗示它不足的方式查找Crypto库中的内部。
请帮忙。如何使用BLE堆栈和加密惯例进行项目?
您应该将RAM的大小最小化到您可以编译项目的最小允许大小,并最大化堆大小为最大大小,例如70000,以增加分配的内存。因此,您应该增加堆大小并降低RAM大小。此外,您必须使用OS_FREE)_和OS_MALLOC()进行任务。请尝试一下,让我知道。
通过关闭DG_CONFIGUSE_WDOG并删除看门狗的所有使用,我能够使用Crypto获取BLE_Peripheral示例程序。
这个看门狗用于和为什么它被启用打破加密惯例?
看门狗机制是一种特殊的硬件计时器,可用于在软件执行期间自动检测意外的系统行为。DA1468X系列设备包含一个由10.24 ms时钟脉冲驱动的8位下计数器,导致最大2.6秒超时。为了获取更多关于DA1468x系列设备中实现的看门狗(WDOG)机制的更多信息,我会非常建议您阅读该部分5重启分析 - WDOG的调试技巧教程(HTML)我们支持页面的教程。请注意,您可以在我们门户网站的DA14680选项卡中找到非常有用的文档。此外,强烈建议看看DA14680数据表,部分30个看门狗定时器。所以,你的代码在使用加密例程时获得堆栈的原因是已经采取了很长时间的东西,而不是看门狗超时。当您使用异步事件而且您不知道要收到它们时,最好的做法是冻结WDOG,直到您获得活动。既然你得到它,你应该再次激活和重新加载它。通常,WDOG用于同步事件。WDOG是一个计数器反转,固件应该在常规时间段和超时之前重新加载它。如果您发现上述任何答案有用请标记其中一个接受。
谢谢您的帮助!
嗨Ddustin,
按Program_qspi_serial_win或program_qspi_jtag_win时,应用程序代码存储在QSPI Flash中而不是进入RAM。由于代码未下载INT RAM,以防您想要为MBedTLS拥有足够的RAM,因此您应该增加可用的RAM的可用区域。因此,我强烈建议您通过配置来增加总堆大小configtotal_heap_size.在自定义custom_config_qspi.h标题文件中的宏。
谢谢,PM_DIALOG.
。
你好,
谢谢你的帮助!
使用示例项目BLE_PLEIWAWAL,我提高了堆大小:
#define configtotal_heap_size 40000 / *这是freertos total堆大小* /
在构建时,我收到此错误:
降低堆大小为20,512允许程序编译,但是对于MBedTLS不留出足够的内存来执行基本的“Crypto_Asymmetric_key_Pair_Gen”操作。
。
HM可能不再是内存问题。它在一个新的地方崩溃:
hw_watchdog_handle_int()在hw_watchdog.c:111 0x7fc4286
nmi_handlerc()在hw_watchdog.c:143 0x7fc42f2
()在0xffffff9
Bignum.c:889 0x80011A8的Mbedtls_mpi_add_abs()
ECP_CURVES.C的ECP_MOD_KOBLITZ():1,271 0x8003030
ECP_Curves.c:1,322 0x800304e处的ecp_mod_p256k1()
ECP_MODP()在ECP.C:678 0x8001cc4
ECP_ADD_MIXED()在ECP.C:1,048 0x800272e
ECP.C中的ECP_MUL_COMB_CORE():1,297 0x8002BE6
ECP_MUL_COMB()在ECP.C:1,400 0x8002BE6
MBEDTLS_ECP_MUL()在ECP.C:1,632 0x8002E72
MBEDTLS_ECP_GEN_KEYPAIR_BASE()在ECP.C:1,892 0x8002EFC
MBEDTLS_ECP_GEN_KEYPAIR()在ECP.C:1,903 0x8002F24
MBEDTLS_ECP_GEN_KEY()在ECP.C:1,917 0x8002F4E
crypto_asymmetric_key_pair_gen()在bo_crypto.c:320 0x800e8d2
main()在main.c:129 0x800E9FA
这个后退是什么意思?
编辑:我相信我认为这一点。我已经修改了configtotal_heap_size,也是__heap_size。我相信Malloc正在返回导致崩溃的无效内存。
#define configtotal_heap_size 20512 / *这是freertos total堆大小* /
#define __heap_size 8000.
我猜我不应该修改__heap_size。增加可用内存以使用MBedTL的正确方法是什么?
嗨Ddustin,
对不起,但我有点混淆你的描述。如果您在更改总堆大小的情况下解决了问题,请澄清您是否可以澄清您的问题?
谢谢,PM_DIALOG.
没有问题仍然是一样的。在将Crypto例程添加到BLE_Peripheral示例程序并使用ConfigtotAl_heap_size宏将其设置为20,000时,该程序仍然以暗示它不足的方式查找Crypto库中的内部。
请帮忙。如何使用BLE堆栈和加密惯例进行项目?
嗨Ddustin,
您应该将RAM的大小最小化到您可以编译项目的最小允许大小,并最大化堆大小为最大大小,例如70000,以增加分配的内存。因此,您应该增加堆大小并降低RAM大小。此外,您必须使用OS_FREE)_和OS_MALLOC()进行任务。请尝试一下,让我知道。
谢谢,PM_DIALOG.
通过关闭DG_CONFIGUSE_WDOG并删除看门狗的所有使用,我能够使用Crypto获取BLE_Peripheral示例程序。
这个看门狗用于和为什么它被启用打破加密惯例?
嗨Ddustin,
看门狗机制是一种特殊的硬件计时器,可用于在软件执行期间自动检测意外的系统行为。DA1468X系列设备包含一个由10.24 ms时钟脉冲驱动的8位下计数器,导致最大2.6秒超时。为了获取更多关于DA1468x系列设备中实现的看门狗(WDOG)机制的更多信息,我会非常建议您阅读该部分5重启分析 - WDOG的调试技巧教程(HTML)我们支持页面的教程。请注意,您可以在我们门户网站的DA14680选项卡中找到非常有用的文档。此外,强烈建议看看DA14680数据表,部分30个看门狗定时器。所以,你的代码在使用加密例程时获得堆栈的原因是已经采取了很长时间的东西,而不是看门狗超时。当您使用异步事件而且您不知道要收到它们时,最好的做法是冻结WDOG,直到您获得活动。既然你得到它,你应该再次激活和重新加载它。通常,WDOG用于同步事件。WDOG是一个计数器反转,固件应该在常规时间段和超时之前重新加载它。如果您发现上述任何答案有用请标记其中一个接受。
谢谢,PM_DIALOG.
谢谢您的帮助!