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介面進行FLASH程式設計,地址為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