前言
在RK3399平台开发过程中,为了确保数据安全性,需要使用加密芯片。本文旨在介绍一款型号为atsha204a的加密芯片。
系统:Android8.1
内核 : Kernel 4.4.167
加密芯片型号:atsha204a
通信方式:I2C
一、加密芯片 atsha204a
1. 简介
关于简介可参考博客:https://blog.csdn.net/zhanghaochen_/article/details/88693749
2. linux driver源码
atsha204a linux driver源码 :https://download.csdn.net/download/chenkanuo/88158252
二、驱动移植
1. DTS节点配置
atsha204a 的DTS节点定义在 kernel/arch/arm64/boot/dts/rockchip/rk3399-xxx.dtsi 文件中,如下所示:
&i2c7 {
status = "okay";
i2c-scl-rising-time-ns = <150>;
i2c-scl-falling-time-ns = <30>;
clock-frequency = <400000>;
atsha204a@64 {
compatible = "atmel,atsha204a";
status = "okay";
reg = <0x64>;
};
};
2. 内核中添加驱动源码
- 驱动添加在 kernel/drivers/cryptol/路径下:
- 在 kernel/drivers/cryptol/Makefile 中添加:
obj-$(CONFIG_CRYPTO_DEV_ATSHA204A) := atsha204a.o
atsha204a-objs := sha204_helper.o atsha204a_api.o atsha204a_i2c.o atsha204a_module.o
- 在 kernel/drivers/cryptol/Kconfig 中添加:
config CRYPTO_DEV_ATSHA204A
tristate "Support for Atmel atsha204a authentication devices."
depends on I2C
help
This option enables the driver for atsha204a hardware authentication devices
To compile this driver as a module, choose M here.
- 在 kernel/arch/arm64/configs/xxx_defconfig 中新增宏定义:
CONFIG_CRYPTO_DEV_ATSHA204A=y
3. 重新编译并烧录
重新编译内核并烧录生效。
三、测试
更新内核后,设备上电,生成生成ioctl节点 : /dev/atsha204a
读取加密芯片SN:
cat /sys/class/crypto/atsha204a/sn
读取加密芯片配置:
cat /sys/class/crypto/atsha204a/config