8.1.3. 调试指南

8.1.3.1. 调试开关

可通过内核配置使能 SPI_ENC 模块的 DEBUG 选项。(参考:快速入门 - 编译概述 - Kernel配置):

make menuconfig

进入内核的配置界面:

Linux
    Kernel hacking
        ZX Debug
            [*] SPI ENC driver debug

勾选使能该 DEBUG 选项后:

  1. SPI_ENC 的驱动源码将以 -O0 编译

  2. SPI_ENC 驱动中的 pr_dbg() 和 dev_dbg() 调试信息会被编译

  3. Sysfs 中新增 /sys/devices/platform/soc/18100000.spienc/bypass 节点

如果需要看到 pr_dbg() 和 dev_dbg() 的打印信息,还需要设置 loglevel=8

若需要在启动过程中即可看到打印,需要在 env.txt 中修改 bootargs,增加 loglevel=8 。 若仅需要在板子启动到 Linux shell 后使能相关打印,可以通过下列命令调整 loglevel:

echo 8 > /proc/sys/kernel/printk

8.1.3.2. Sysfs 节点

SPI_ENC 驱动在 /sys/devices/platform/soc/ 目录下创建了 Sysfs 节点 18100000.spienc/

其中通过下列命令可读取当前硬件状态:

cat /sys/devices/platform/soc/18100000.spienc/status

如果按照上一节的指引,使能了调试开关,还可以看到节点:

/sys/devices/platform/soc/18100000.spienc/bypass

通过下列命令,可以开关 ByPass SPIENC 加密功能:

echo "1" > /sys/devices/platform/soc/18100000.spienc/bypass
echo "0" > /sys/devices/platform/soc/18100000.spienc/bypass

ByPass 之后,读写 SPI 存储的数据都是原始数据,不会做加密或者解密。

小技巧

Bypass 是一个调试功能,如果没有按照上节的指引勾选 [*] SPI ENC driver debug,则 Sysfs 中没有 bypass 文件节点。