123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- C2 port support
- ---------------
- (C) Copyright 2007 Rodolfo Giometti <giometti@enneenne.com>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- Overview
- --------
- This driver implements the support for Linux of Silicon Labs (Silabs)
- C2 Interface used for in-system programming of micro controllers.
- By using this driver you can reprogram the in-system flash without EC2
- or EC3 debug adapter. This solution is also useful in those systems
- where the micro controller is connected via special GPIOs pins.
- References
- ----------
- The C2 Interface main references are at (http://www.silabs.com)
- Silicon Laboratories site], see:
- - AN127: FLASH Programming via the C2 Interface at
- http://www.silabs.com/Support Documents/TechnicalDocs/an127.pdf
- - C2 Specification at
- http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/an127.pdf&src=SearchResults
- however it implements a two wire serial communication protocol (bit
- banging) designed to enable in-system programming, debugging, and
- boundary-scan testing on low pin-count Silicon Labs devices. Currently
- this code supports only flash programming but extensions are easy to
- add.
- Using the driver
- ----------------
- Once the driver is loaded you can use sysfs support to get C2port's
- info or read/write in-system flash.
- # 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
- Initially the C2port access is disabled since you hardware may have
- such lines multiplexed with other devices so, to get access to the
- C2port, you need the command:
- # echo 1 > /sys/class/c2port/c2port0/access
- after that you should read the device ID and revision ID of the
- connected micro controller:
- # cat /sys/class/c2port/c2port0/dev_id
- 8
- # cat /sys/class/c2port/c2port0/rev_id
- 1
- However, for security reasons, the in-system flash access in not
- enabled yet, to do so you need the command:
- # echo 1 > /sys/class/c2port/c2port0/flash_access
- After that you can read the whole flash:
- # cat /sys/class/c2port/c2port0/flash_data > image
- erase it:
- # echo 1 > /sys/class/c2port/c2port0/flash_erase
- and write it:
- # cat image > /sys/class/c2port/c2port0/flash_data
- after writing you have to reset the device to execute the new code:
- # echo 1 > /sys/class/c2port/c2port0/reset
|