前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >全志R128应用开发案例——获取真随机数

全志R128应用开发案例——获取真随机数

作者头像
阿志小管家
发布2024-02-02 19:22:01
发布2024-02-02 19:22:01
16600
代码可运行
举报
运行总次数:0
代码可运行

获取真随机数

本文案例代码

下载地址

获取真随机数案例代码

https://www.aw-ol.com/downloads?cat=24

R128 内置了TRNG,一个真随机数发生器,随机源是 8 路独立的环形振荡器,由模拟器件电源噪声产生频率抖动,用低频始终重采样,然后进行弹性抽取和熵提取处理,最终输出128bit真随机数。

载入方案

我们使用的开发板是 R128-Devkit,需要开发 C906 核心的应用程序,所以载入方案选择r128s2_module_c906

代码语言:javascript
代码运行次数:0
复制
$ source envsetup.sh 
$ lunch_rtos 1
在这里插入图片描述
在这里插入图片描述

设置 TRNG驱动

运行 mrtos_menuconfig 进入配置页面。前往下列地址找到 TRNG Devices

代码语言:javascript
代码运行次数:0
复制
Drivers Options  --->
    soc related device drivers  --->
        	TRNG Devices --->
        	-*- enable trng driver
在这里插入图片描述
在这里插入图片描述

编写程序

打开你喜欢的编辑器,修改文件:lichee/rtos/projects/r128s2/module_c906/src/main.c

在这里插入图片描述
在这里插入图片描述
引入头文件
代码语言:javascript
代码运行次数:0
复制
#include <sunxi_hal_trng.h>
在这里插入图片描述
在这里插入图片描述

初始化 TRNG 读取数据模块

代码语言:javascript
代码运行次数:0
复制
uint32_t random[4] = {0};

HAL_TRNG_Extract(0, random); // 读取 CRC 模式
printf("trng CRC result: 0x%08x 0x%08x 0x%08x 0x%08x\n", random[0], random[1], random[2], random[3]);

HAL_TRNG_Extract(1, random); // 读取 XOR 模式
printf("trng XOR result: 0x%08x 0x%08x 0x%08x 0x%08x\n", random[0], random[1], random[2], random[3]);

结果

编译固件后烧录,可以看到随机数输出。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取真随机数
    • 载入方案
    • 设置 TRNG驱动
    • 编写程序
      • 引入头文件
    • 初始化 TRNG 读取数据模块
    • 结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档