cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

c2port.rst (2951B)


      1.. SPDX-License-Identifier: GPL-2.0
      2.. include:: <isonum.txt>
      3
      4===============
      5C2 port support
      6===============
      7
      8(C) Copyright 2007 Rodolfo Giometti <giometti@enneenne.com>
      9
     10This program is free software; you can redistribute it and/or modify
     11it under the terms of the GNU General Public License as published by
     12the Free Software Foundation; either version 2 of the License, or
     13(at your option) any later version.
     14
     15This program is distributed in the hope that it will be useful,
     16but WITHOUT ANY WARRANTY; without even the implied warranty of
     17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18GNU General Public License for more details.
     19
     20
     21
     22Overview
     23--------
     24
     25This driver implements the support for Linux of Silicon Labs (Silabs)
     26C2 Interface used for in-system programming of micro controllers.
     27
     28By using this driver you can reprogram the in-system flash without EC2
     29or EC3 debug adapter. This solution is also useful in those systems
     30where the micro controller is connected via special GPIOs pins.
     31
     32References
     33----------
     34
     35The C2 Interface main references are at (https://www.silabs.com)
     36Silicon Laboratories site], see:
     37
     38- AN127: FLASH Programming via the C2 Interface at
     39  https://www.silabs.com/Support Documents/TechnicalDocs/an127.pdf
     40
     41- C2 Specification at
     42  https://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/an127.pdf&src=SearchResults
     43
     44however it implements a two wire serial communication protocol (bit
     45banging) designed to enable in-system programming, debugging, and
     46boundary-scan testing on low pin-count Silicon Labs devices. Currently
     47this code supports only flash programming but extensions are easy to
     48add.
     49
     50Using the driver
     51----------------
     52
     53Once the driver is loaded you can use sysfs support to get C2port's
     54info or read/write in-system flash::
     55
     56  # ls /sys/class/c2port/c2port0/
     57  access            flash_block_size  flash_erase       rev_id
     58  dev_id            flash_blocks_num  flash_size        subsystem/
     59  flash_access      flash_data        reset             uevent
     60
     61Initially the C2port access is disabled since you hardware may have
     62such lines multiplexed with other devices so, to get access to the
     63C2port, you need the command::
     64
     65  # echo 1 > /sys/class/c2port/c2port0/access
     66
     67after that you should read the device ID and revision ID of the
     68connected micro controller::
     69
     70  # cat /sys/class/c2port/c2port0/dev_id
     71  8
     72  # cat /sys/class/c2port/c2port0/rev_id
     73  1
     74
     75However, for security reasons, the in-system flash access in not
     76enabled yet, to do so you need the command::
     77
     78  # echo 1 > /sys/class/c2port/c2port0/flash_access
     79
     80After that you can read the whole flash::
     81
     82  # cat /sys/class/c2port/c2port0/flash_data > image
     83
     84erase it::
     85
     86  # echo 1 > /sys/class/c2port/c2port0/flash_erase
     87
     88and write it::
     89
     90  # cat image > /sys/class/c2port/c2port0/flash_data
     91
     92after writing you have to reset the device to execute the new code::
     93
     94  # echo 1 > /sys/class/c2port/c2port0/reset