我想启用真正的随机数生成器来创建广告间隔,以防止几个单位之间的冲突。
我正在编辑da1458x_beacon_v_5.40.2项目文件。
在da1458x_config_advanced.h我定义:
#define cfg_trng.
使用keil uvision v5.27.1.0我单击重建所有目标文件。然后我最终结束了这个错误:
。\ out_580 \ dialog_beacon_580.axf:错误:l6218e:未定义的符号trng_acquire(由Arch_System.O引用)。
首先,Trng.h文件给了我一个错误:错误:未知类型名称'uint8_t'
要修复此错误,我将此添加到trng.h:
#include
#include“compiler.h”//内联函数
#include“stdbool.h”
错误消失了,但我仍然有l6218e链接器错误。
让其他人遇到这个问题吗?
感谢您的时间。
关键词:
设备:
嗨DLO,
目前不支持DA14580产品的灯塔,因为我们已雷电竞官网登录搬入DA15585 / 56产品系列和新SDK6。请在我们的支持网站上查看DA14585 / 6:
https://www.dialog-seminile.com/produ雷电竞官网登录cts/connectivity/bluetooth-low-energy/smartbond-da14585-and-da14586.
有一个名为Multi-Sensor Kit的参考设计,支持信标实现。请注意,建议使用DA14585 IOT Multi传感器开发套件进行新设计。
https://www.dialog-seminile.com/produ雷电竞官网登录cts/da14585-iot-multi-sensor-development-kit.
如果您不兴趣进入DA14585 / 6,请使用SDK5.0.4的示例之一,该示例是DA14580 / 1/3产品的Attest SDK。雷电竞官网登录
关于您对真正随机数生成器(TRNG)的问题,它不存在于硬件块中,但我们有一个可用的API这种用法,因此我强烈建议使用SDK并遵循USE_TRNG定义。您可以通过调用trng.h / c库来获取128位随机数。启用真正的随机数生成器,您需要定义CFG_TRNG标志。在系统初始化时生成随机数,并用于将C标准库随机数发生器进行种子。为了从580开始,SDK使用无线电模块并通过改变它获得随机数的无线电寄存器的值。请检查trng_acquire()函数的源代码。
谢谢,PM_DIALOG.
你好pm_dialog,
我们已经在生产环境中,因此我们无法切换到DA14585 / 6。
我正在遵循SDK示例,并使CFG_TRNG标志如前所述在原始问题中发布。遵循我可以看到的代码,当定义CFG_TRNG时,我可以看到use_trng被设置为1,但是当您尝试构建时,当您在前一个注释中看到时,就会在我的前面的评论中看到。我得到这个链接器错误,似乎没有任何意义,因为我可以看到trg.h和.c文件的包含文件,但不知何时它无法链接到trng_acquire()函数。
这在这一点上很紧急,我们需要释放批量生产的这个固件。
何DLO,
L6218E链接器误差通常与可变声明有关。你能给我发一张截图吗?
谢谢,PM_DIALOG.
这是构建日志:
重建启动:项目:Dialog_BeAcon
***使用Compiler'V5.06更新6(Build 750)',文件夹:'C:\ Keil_v5 \ ARM \ ARMCC \ Bin'
重建目标'beaccon_580'
组装boot_vectors.s ...
compling system_armcm0.c ...
编译Arch_console.c.
编译nvds.c.
编译hardfault_handler.c.
编译nmi_handler.c.
编译syscntl.c ...
编译UART_EXT_WKUP.c
compling Arch_sleep.c.
编译jump_table.c.
编译Arch_main.c.
compling Arch_patch.c ...
编译ADC.C ...
编译spi.c ...
编译gpio.c.
编译spi_flash.c ...
编译ARCH_SYSTEM.C ...
编译prf_utils.c.
编译GAPM.C ...
编译Bass.c.
编译rf_580.c ...
编译RWIP.c ...
编译rwble.c.
编译bass_task.c.
compling spotar_task.c.
compling spotar.c.
编译pars.c.
compling dist_task.c ...
编译app_default_handlers.c.
编译app_security_task.c.
编译app_msg_utils.c ...
编译app_security.c.
编译app.c ...
编译app_task.c ...
compling app_entry_point.c ...
compling app_easy_msg_utils.c ...
compling app_bass.c.
编译app_bass_task.c.
compling app_diss.c ...
compling app_diss_task.c.
compling app_easy_timer.c
compling app_easy_security.c.
compling app_spotar_task.c ...
compling app_spotar.c ...
编译adc_notify.c.
编译adc_notify_task.c ...
compling device_config.c.
compling device_config_task.c ...
compling user_periph_setup.c.
compling user_adc_notify.c.
compling user_device_config.c.
compling user_device_config_task.c ...
compling user_adc_notify_task.c ...
编译CRC32.c ...
compling user_config_storage.c.
compling user_dialog_beacon.cn ...
编译电池...
compling user_beacon_utilities.cn ...
链接......
。\ out_580 \ dialog_beacon_580.axf:错误:l6218e:未定义的符号trng_acquire(由Arch_System.O引用)。
没有足够的信息来生成Symdefs文件。
没有足够的信息来生成反馈文件。
没有足够的信息来列出图像符号。
没有足够的信息来列出图像映射中的加载地址。
完成:4个信息,0警告和1个错误消息。
“。\ out_580 \ dialog_beacon_580.axf” - 1错误(s),0警告。
目标未创建。
建造时间过去:00:00:08
嗨DLO,
您是否包含Arch_System文件中的Trng库?我无法复制你的问题。您在此文件中使用TRNG_ACQUIRE吗?
谢谢,PM_DIALOG.
我没有编辑Arch_System文件。我在文件中看到了以下内容,我假设已经过测试并工作:
#if(use_trng)
#include“trng.h”//真正随机数生成器API
#万一
在构建的Include路径中,我看到包含TRNG文件夹。
嗨DLO,
我打开了项目,正如您在附加快照的IMG1中看到的,TRNG,UART2和SYSTICK驱动程序未被正确包含。按照附件中找到的步骤操作,以便再次删除并添加它们。驱动程序位于DA1458X_BEACON \ v_5.40.2 \ SDK_580 \ SDK \ Platflick \ Driver文件夹路径下。之后,我能够编译项目。
谢谢,PM_DIALOG.
非常感谢你的帮忙!