brintos

brintos / linux-shallow public Read only

0
0
Text · 2.9 KiB · 7e4f6a7 Raw
95 lines · plain
1.. SPDX-License-Identifier: GPL-2.02.. include:: <isonum.txt>3 4===============5C2 port support6===============7 8(C) Copyright 2007 Rodolfo Giometti <giometti@enneenne.com>9 10This program is free software; you can redistribute it and/or modify11it under the terms of the GNU General Public License as published by12the Free Software Foundation; either version 2 of the License, or13(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 of17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the18GNU General Public License for more details.19 20 21 22Overview23--------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 EC229or EC3 debug adapter. This solution is also useful in those systems30where the micro controller is connected via special GPIOs pins.31 32References33----------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 at39  https://www.silabs.com/Support Documents/TechnicalDocs/an127.pdf40 41- C2 Specification at42  https://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/an127.pdf&src=SearchResults43 44however it implements a two wire serial communication protocol (bit45banging) designed to enable in-system programming, debugging, and46boundary-scan testing on low pin-count Silicon Labs devices. Currently47this code supports only flash programming but extensions are easy to48add.49 50Using the driver51----------------52 53Once the driver is loaded you can use sysfs support to get C2port's54info or read/write in-system flash::55 56  # ls /sys/class/c2port/c2port0/57  access            flash_block_size  flash_erase       rev_id58  dev_id            flash_blocks_num  flash_size        subsystem/59  flash_access      flash_data        reset             uevent60 61Initially the C2port access is disabled since you hardware may have62such lines multiplexed with other devices so, to get access to the63C2port, you need the command::64 65  # echo 1 > /sys/class/c2port/c2port0/access66 67after that you should read the device ID and revision ID of the68connected micro controller::69 70  # cat /sys/class/c2port/c2port0/dev_id71  872  # cat /sys/class/c2port/c2port0/rev_id73  174 75However, for security reasons, the in-system flash access in not76enabled yet, to do so you need the command::77 78  # echo 1 > /sys/class/c2port/c2port0/flash_access79 80After that you can read the whole flash::81 82  # cat /sys/class/c2port/c2port0/flash_data > image83 84erase it::85 86  # echo 1 > /sys/class/c2port/c2port0/flash_erase87 88and write it::89 90  # cat image > /sys/class/c2port/c2port0/flash_data91 92after writing you have to reset the device to execute the new code::93 94  # echo 1 > /sys/class/c2port/c2port0/reset95