C2 端口支持¶
版权所有 2007 Rodolfo Giometti <giometti@enneenne.com>
本程序是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新发布和/或修改它;无论是许可证的第 2 版,还是(由您选择)任何后续版本。
本程序的发布是希望它能有用,但不作任何担保;甚至没有对适销性或特定用途适用性的暗示担保。 有关更多详细信息,请参阅 GNU 通用公共许可证。
概述¶
此驱动程序实现了 Linux 对 Silicon Labs (Silabs) C2 接口的支持,该接口用于微控制器的系统内编程。
通过使用此驱动程序,您可以重新编程系统内闪存,而无需 EC2 或 EC3 调试适配器。 此解决方案在微控制器通过特殊 GPIO 引脚连接的系统中也很有用。
参考资料¶
C2 接口的主要参考资料位于 (https://www.silabs.com) Silicon Laboratories 站点],请参阅
AN127:通过 C2 接口进行闪存编程,位于 https://www.silabs.com/Support Documents/TechnicalDocs/an127.pdf
然而,它实现了一种双线串行通信协议(位操作),旨在实现低引脚数 Silicon Labs 设备上的系统内编程、调试和边界扫描测试。 目前,此代码仅支持闪存编程,但很容易添加扩展。
使用驱动程序¶
一旦加载驱动程序,您就可以使用 sysfs 支持来获取 C2port 的信息或读取/写入系统内闪存
# ls /sys/class/c2port/c2port0/
access flash_block_size flash_erase rev_id
dev_id flash_blocks_num flash_size subsystem/
flash_access flash_data reset uevent
最初,C2port 访问被禁用,因为您的硬件可能将这些线路与其他设备复用,因此,要访问 C2port,您需要以下命令
# echo 1 > /sys/class/c2port/c2port0/access
之后,您应该读取连接的微控制器的设备 ID 和修订 ID
# cat /sys/class/c2port/c2port0/dev_id
8
# cat /sys/class/c2port/c2port0/rev_id
1
但是,出于安全原因,系统内闪存访问尚未启用,要启用,您需要以下命令
# echo 1 > /sys/class/c2port/c2port0/flash_access
之后,您可以读取整个闪存
# cat /sys/class/c2port/c2port0/flash_data > image
擦除它
# echo 1 > /sys/class/c2port/c2port0/flash_erase
并写入它
# cat image > /sys/class/c2port/c2port0/flash_data
写入后,您必须重置设备才能执行新代码
# echo 1 > /sys/class/c2port/c2port0/reset