The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/Documentation/c2port.txt

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: ffbb1d3ebffab4f75b5c141126ed2894


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.