OSHWHub链接: CertKeyU-立创EDA开源硬件平台

平时的工作生活中经常要用密钥方式连接服务器 github仓库等 把私钥直接放随身的U盘中 即容易误删又不安全 单独一个U盘存密钥太浪费 于是便有了做一个小型存储装置的想法 因为手边便有一些闲置的EEPROM 刚好能够存下密钥对的大小 剩下的就是找一个驱动IC 然而对于这种应用需求的IC还是很稀少的 偶然的机会浏览沁恒的官网看到了CH331这个IC 甚是惊喜 最后的成果便是这个项目

bigphoto

虽然官方给出的典型应用很简单 不需要做什么修改就可以直接用
但还是遇到了一些坑 简单说一下

2KB的起源

我现在用的512位的ECDSA密钥 公私钥对打个包差不多1.4KB左右
刚好一颗24C16能放下

CH331A? CH331T?

早些时候当时有立创的无门槛卷 顺手就买了颗CH331A(立创卖的太特马贵了 2018new_kuxiao_thumb.png ) 并做了第一版的PCB
但做好后怎么调试都用不了文件模式 以为是IC坏了 又从深水宝买了几颗 问题依旧
去沁恒官网社区看看 与这颗IC相关的内容屈指可数 没什么卵用 好在是在一个多年前的贴子下面找到了一个沁恒工程师的邮箱
遂抱着试试看的态度发个邮件试试 毕竟这么多年了这个邮箱不一定还在用了 说不定人都换了几波了
结果还收到了回复 随后便是一个星期的照着他说的来刷固件调试 依然没用
最后让我拍芯片的丝印 这才解释说市面上卖的CH331A型号没有文件模式功能 只有给某客户少批量定制的CH33T(又称CH331G)有文件模式功能 妈的不早说 白浪费了一星期

这个CH331T属实不好买 不用说立创 深水宝上都要好好找找 在一个角落里的小店买了两颗 又和工程师要了CH331T的封装引脚图(官网datasheet只有CH331A的 另一方面证明了属实小批量定制...) CH331A是SSOP-20封装 而CH331T是SOP-16封装 做了第二版PCB 测试一次成功 icon_exclaim.png

good

丢失数据?

测试文件系统成功 接下来就好放入密钥对了 结果写入的时候一切正常 等到拔下再次插入 拿出数据无法解压 查看二进制数据发现每隔16bit下一16bit全部为FF 这样间隔的丢失数据 16bit刚好是EEPROM的一页 等于说是每隔一页丢失一页数据 怀疑是EEPROM有问题 换了一个新的问题依旧 最后因为急着用 直接用烧写器烧进EEPROM再焊接上(这个烧写器用的CH341A 也是沁恒家的 2018new_kuxiao_thumb.png) 先凑合着用

write

后来在外出途中 板子上的12MHz晶振被蹭掉了 并且在缺失晶振的情况下 依然能用 依然能读取! 2018new_wenhao_thumb.png 这时才恍然大悟 原来之前晶振压根就没焊好 这极大可能是数据丢失的原因 至于为什么能读取使用 难道是有内置晶振 只是内置晶振不稳定? 这个还需要实验来验证