RK3588 配置、DTS 与实际启用矩阵

RK3588 配置、DTS 与实际启用矩阵

1. Defconfig明确项

三份主要Rockchip defconfig均包含:

1
2
3
4
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_ROCKCHIP=y
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS_I2C_INFINEON=y

这说明HWRNG Core、Rockchip RNG和TPM Core/Infineon transport被编入,但设备是否出现仍取决于DTS与硬件。

2. 固定构建

无论上述选项,drivers/char/Makefile固定构建:

  • mem.o
  • random.o
  • misc.o

实际node还受:

  • CONFIG_DEVMEM
  • CONFIG_DEVPORT
  • CONFIG_PRINTK
  • devtmpfs/udev;
  • security policy。

3. Rockchip TRNG

rk3588s.dtsi定义rng@fe378000

  • rockchip,trngv1
  • secure SCMI clock/reset;
  • 默认disabled。

rk3588-linux.dtsirk3588-android.dtsi&rng设为okay。使用这些include的板型通常会probe rockchip-rng

4. TRNG运行链

1
2
3
4
5
6
7
8
DT rng node
-> rockchip-rng platform probe
-> devm_hwrng_register("rockchip")
-> HWRNG Core选择current RNG
-> /dev/hwrng
-> hwrng fill thread
-> add_hwgenerator_randomness
-> kernel CRNG

/dev/random不是直接映射TRNG寄存器。

5. TPM

Defconfig启用TPM不代表RK3588 SoC内建离散TPM。SoC DTS未提供TPM设备;具体板必须有:

  • I2C TPM节点;
  • 实际Infineon芯片;
  • 电源/reset/IRQ;
  • 正确compatible和address。

无节点时TPM Core存在但无/dev/tpm0

6. 未显式启用

Rockchip主要defconfig未显式包含:

  • VIRTIO_CONSOLE
  • TTY_PRINTK
  • PRINTER/PPDEV
  • IPMI;
  • Xillybus;
  • TPM SPI/generic I2C/fTPM;
  • OP-TEE RNG;
  • SMCCC TRNG。

最终配置可能由fragment/select改变,应以构建后的.config为准。

7. 与其它子系统边界

目标 实际目录
UART/console drivers/tty/serial
RK watchdog drivers/watchdog
OP-TEE drivers/tee
Crypto accelerator drivers/crypto/rockchip
OTP/eFuse nvmem driver
GPIO drivers/gpio
DRM/GPU drivers/gpu

不要因为这些设备提供字符node就认为实现位于drivers/char

8. 运行时核对

1
2
3
4
5
6
zcat /proc/config.gz | grep -E 'HW_RANDOM|TCG_TPM|DEVMEM|VIRTIO_CONSOLE|IPMI'
cat /proc/devices
ls -l /dev/{random,urandom,hwrng,tpm0,tpmrm0,mem,kmsg} 2>/dev/null
cat /sys/class/misc/hw_random/rng_available
cat /sys/class/misc/hw_random/rng_current
dmesg | grep -Ei 'rockchip.*rng|hwrng|tpm'

9. DTB核对

1
2
dtc -I fs -O dts /sys/firmware/devicetree/base | \
grep -A12 -B2 'rng@fe378000'

检查status和clock/reset phandle是否指向运行固件支持的SCMI provider。

TPM应在最终DTB中搜索tpm@及实际compatible。

10. 随机数启动验证

1
2
3
cat /proc/sys/kernel/random/entropy_avail
cat /proc/sys/kernel/random/boot_id
dmesg | grep -i 'crng init'

量产测试应覆盖cold boot、无网络、无存储seed、低温和重复重启,确认CRNG能及时初始化且输出不重复。

11. 安全建议

  • 保留Rockchip TRNG但验证quality与健康状态;
  • 可信bootloader注入唯一seed;
  • 应用使用getrandom;
    -限制/dev/hwrng普通用户访问;
  • 开启STRICT_DEVMEM或关闭DEVMEM;
  • TPM只启用实际transport;
  • 未使用的legacy字符驱动关闭。

12. 结论

RK3588在本目录的主路径是“内核CRNG + Rockchip TRNG + 可选板载TPM”。其它大量驱动主要用于跨平台源码共享,不能由文件存在推断为RK3588功能。

文章互动

阅读 --

留言

0 条留言

正在加载留言…