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