⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
7个帖子/ 0个新
最后发表
Firefox2005
离线
最后看到:1个月前3个星期前
加入:2016-04-13 09:36
TRNG DA14531

你好,

如何调用trng_acquire函数对吧?

我不知道这个地址在哪里uint8_t * sram_puf。

是否有任何演示申请或参考实施?

/** **************************************************************************************** * @ 短暂的使用未初始化的内存数据获得128个随机位。* * @param[out] trng_bits_ptr指向存储随机数据的缓冲区。* @note它的地址必须对齐到32位。* @param[in] sram_puf指向未初始化SRAM区域的基址。* @note它的地址必须对齐到32位。* @param[in] sram_puf_blocks使用的16字节块的数量(最少28个)。* @return状态代码  **************************************************************************************** */ uint8_t trng_acquire (uint8_t * trng_bits_ptr uint8_t * sram_puf, const uint16_t sram_puf_blocks);

关键词:
设备:
PM_Dialog
离线
最后看到:3天12小时前
工作人员
加入:2018-02-08 11:03
嗨Firefox2005

嗨Firefox2005

请检查init_rand_seed_from_trng(),它调用trng_acquire()。没有这样的例子,但是为什么不使用init_rand_seed_from_trng()来使用从TRNG获得的随机位初始化随机数生成器种子呢?trng_aquire()的目的是生成随机函数。

谢谢,PM_Dialog

Firefox2005
离线
最后看到:1个月前3个星期前
加入:2016-04-13 09:36
你好,

你好,

所以我误解了它的功能…

那样的话,我只能init_rand_seed_from_trng ();并使用生成的随机值来初始化srand(trng_state_val);功能和调查某些随机数rand ();

但我总是得到相同的随机数反复,如果我重新启动相同的固件构建。我认为这是不对的。

我什么时候必须重新初始化init_rand_seed_from_trng ();一遍吗?

为什么是trng_aquire(…)功能不是静态,如果我不必在trng.c中使用它?

到目前为止谢谢你

PM_Dialog
离线
最后看到:3天12小时前
工作人员
加入:2018-02-08 11:03
你好,

你好,

你得到的随机数是多少?你能分享一下结果吗?

谢谢,PM_Dialog

Firefox2005
离线
最后看到:1个月前3个星期前
加入:2016-04-13 09:36
我总是得到相同的输出

我总是得到相同的输出,如果我重新加载和启动固件。我不应该这么认为。

代码:

Void user_app_init(Void) {arch_printf("\r\n\r\nuser_app_init\r\n");//初始化随机数生成器种子使用随机比特从TRNG init_rand_seed_from_trng();//初始化标准c rand()函数与trng随机数srand(trng_state_val);//测试:循环通过随机数生成器来测试随机数生成器…(uint8_t我= 0;我< 10;i++){//为AES-128密钥获取16字节的随机数(uint8_t i=0;我< ENC_DATA_LEN;i++){generated_challenge[i] = rand()%0xFF;} user_app_format_data("CHALLENGE", generated_challenge, 16); } app_param_update_request_timer_used = EASY_TIMER_INVALID_TIMER; // Initialize Manufacturer Specific Data mnf_data_init(); // Initialize Advertising and Scan Response Data memcpy(stored_adv_data, USER_ADVERTISE_DATA, USER_ADVERTISE_DATA_LEN); stored_adv_data_len = USER_ADVERTISE_DATA_LEN; memcpy(stored_scan_rsp_data, USER_ADVERTISE_SCAN_RESPONSE_DATA, USER_ADVERTISE_SCAN_RESPONSE_DATA_LEN); stored_scan_rsp_data_len = USER_ADVERTISE_SCAN_RESPONSE_DATA_LEN; default_app_on_init(); }

控制台输出:

user_app_init CHALLENGE d816f9d60c6c876abab0a0a11828fae挑战a832652ba76aa59c374db76d6cbcd48a CHALLENGE 2fd232c304c7a631d631d4767e挑战b1740409a2f0c9b945cf4f9a8750e9ea CHALLENGE c694072749e4ce4764ce43001c7d134 CHALLENGE 75679e7a12e6129d5cae5a2d8d0df挑战挑战e3b460feaf935240c3918cd46146de34

PM_Dialog
离线
最后看到:3天12小时前
工作人员
加入:2018-02-08 11:03
你好,

你好,

谢谢你的建议。让我检查一下提供的代码片段,稍后再回复给您。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:3天12小时前
工作人员
加入:2018-02-08 11:03
你好,

你好,

很抱歉给你们带来了困惑。如果在da1458x_config_advanced.h中定义了CFG_TRNG宏,那么SDK会自动调用init_rand_seed_from_trng()。请检查arch_system.c文件中的第1324行。这意味着SDK将自动初始化随机数生成器种子。如果您想生成随机数,您应该只使用rand()函数。

谢谢,PM_Dialog