C2 端口支持

  1. 版权所有 2007 Rodolfo Giometti <giometti@enneenne.com>

本程序是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新发布和/或修改它;无论是许可证的第 2 版,还是(由您选择)任何后续版本。

本程序的发布是希望它能有用,但不作任何担保;甚至没有对适销性或特定用途适用性的暗示担保。 有关更多详细信息,请参阅 GNU 通用公共许可证。

概述

此驱动程序实现了 Linux 对 Silicon Labs (Silabs) C2 接口的支持,该接口用于微控制器的系统内编程。

通过使用此驱动程序,您可以重新编程系统内闪存,而无需 EC2 或 EC3 调试适配器。 此解决方案在微控制器通过特殊 GPIO 引脚连接的系统中也很有用。

参考资料

C2 接口的主要参考资料位于 (https://www.silabs.com) Silicon Laboratories 站点],请参阅

然而,它实现了一种双线串行通信协议(位操作),旨在实现低引脚数 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