Root/
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/Support Documents/TechnicalDocs/an127.pdf |
36 | |
37 | - C2 Specification at |
38 | http://www.silabs.com/pages/DownloadDoc.aspx?FILEURL=Support%20Documents/TechnicalDocs/an127.pdf&src=SearchResults |
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 |
91 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9