本示例演示如何生成随机数。运行该代码后,将获取一组随机数据并打印出来。
entropy_get_entropy ( const struct device * dev, uint8_t * buffer, uint16_t length )
用熵填充缓冲区。如果需要,则进行块处理,以生成必要的随机数据。
参数说明
字段 | 说明 |
---|---|
dev | 指向熵设备的指针 |
buffer | 用熵填充的缓冲区 |
length | 缓冲区长度 |
返回值说明
成功时为 0,失败时为 -ERRNO 代码
更多Entropy Interface API接口可查看Zephyr官网Entropy Interface APIs。
SDK 中提供了 entropy 的示例。
演示如何生成随机数。运行该代码后,将获取一组随机数据并打印出来。
{SDK}\.sdk\csk\samples\driver\entropy
适用开发板:大模型开发套件
编译版型:csk6_duomotai_devkit
在 SDK 根目录(duomotai_ap
)下可通过执行以下指令进行对该示例工程的编译:
lisa zep build -b csk6_duomotai_devkit .sdk/csk/samples/driver/entropy/ -p
编译完成后,编译产物二进制文件位于 build\zephyr\zephyr.bin
使用 Type-C 数据线连接开发套件的 DAP_USB
接口,选中以下其中一种方式对固件进行烧录:
cskburn desktop
是一款聆思推出的桌面烧录工具,在下载并安装 cskburn desktop 烧录工具后,双击图标运行软件:
1.点击串口下拉框,选择连接开发套件后识别到的串口编号;
2.将编译输出的.bin
文件拖拽进烧录区域;
3.点击开始烧录,等待烧录完成。
若您已按照 《环境搭建》 教程完成开发环境的安装,可在编译完成后执行 lisa zep exec cskburn
指令完成烧录。
lisa zep exec cskburn -s \\.\COMxx -C 6 -b 1500000 0x000000 --verify-all .\build\zephyr\zephyr.bin
请将命令行中的的 COMx 替换为开发套件在 PC 上对应的串口号(可通过设备管理器查看)。例如:
COM3
。
lisa zep exec cskburn -s PORT -C 6 0x000000 --verify-all ./build/zephyr/zephyr.bin -b 1500000
请将命令行中的 PORT 替换为开发套件连接在 PC 上对应的串口号。例如:
/dev/ttyUSB0
。
烧录完成后,连接串口终端,按下开发板复位按钮,可看到串口有对应的信息输出。
以下代码与注释已省略一部分非关键接口代码,主要呈现示例的主业务流程与主要接口的使用。
在工程目录prj.conf
文件中需配置以下模块:
CONFIG_ENTROPY_GENERATOR=y
CONFIG_ENTROPY_CSK6_RNG=y
1.从设备树中获取设备
dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_entropy));
2.获取熵数据
ret = entropy_get_entropy(dev, entropy_buf, ENTROPY_LEN_MAX);
3.打印熵数据
dump_entropy(entropy_buf, ENTROPY_LEN_MAX);
按下开发板复位按钮,运行程序。将打印出获取的随机数据。
int main(void)
{
const struct device *dev;
int ret = 0;
dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_entropy));
if (!device_is_ready(dev)) {
printk("error: no random device\n");
return -1;
}
printk("start get entropy sample \r\n");
ret = entropy_get_entropy(dev, entropy_buf, ENTROPY_LEN_MAX);
if (ret != 0) {
printk("error: get entropy failed %d\r\n", ret);
return -1;
}
dump_entropy(entropy_buf, ENTROPY_LEN_MAX);
printk("entropy sample done \r\n");
while (1) {
k_sleep(K_MSEC(1000));
}
return 0;
}