simulavr  1.1.0
avrsignature.cpp
Go to the documentation of this file.
1 /*
2  ****************************************************************************
3  *
4  * simulavr - A simulator for the Atmel AVR family of microcontrollers.
5  * Copyright (C) 2001, 2002 - 2012 Klaus Rudolph & other
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  ****************************************************************************
22  *
23  * $Id$
24  */
25 #include "avrsignature.h"
26 
27 //using namespace std;
28 
29 // Idea taken from http://www.gamedev.net/topic/197291-creating-an-enum-to-string-look-up-table/
30 template<typename T_Key, typename T_Value>
31 class InitMap : public std::map<T_Key, T_Value> {
32  public:
33  InitMap& operator<< ( const std::pair<T_Key, T_Value>& v ) {
34  this->insert( v );
35  return *this;
36  }
37 };
38 
40 std::map<unsigned int, std::string> AvrSignatureToNameMap = InitMap<unsigned int, std::string>()
41 // MARK start Do not edit between this marker and the ending marker! This lines will be auto generated by script!
42 // MODE s2n
43 // TEMPLATE << std::make_pair<unsigned int, std::string>(%(signature)s, "%(name)s")
44  << std::make_pair<unsigned int, std::string>(0x1e930b, "attiny85")
45  << std::make_pair<unsigned int, std::string>(0x1e930c, "attiny84")
46  << std::make_pair<unsigned int, std::string>(0x1e9311, "attiny88")
47  << std::make_pair<unsigned int, std::string>(0x1e9303, "at90s8535")
48  << std::make_pair<unsigned int, std::string>(0x1e950c, "atmega3290p")
49  << std::make_pair<unsigned int, std::string>(0x1e9682, "at90usb646")
50  << std::make_pair<unsigned int, std::string>(0x1e9682, "at90usb647")
51  << std::make_pair<unsigned int, std::string>(0x1e9203, "at90s4433")
52  << std::make_pair<unsigned int, std::string>(0x1e9801, "atmega2560")
53  << std::make_pair<unsigned int, std::string>(0x1e9202, "at90s4434")
54  << std::make_pair<unsigned int, std::string>(0x1e930a, "atmega88")
55  << std::make_pair<unsigned int, std::string>(0x1e9006, "attiny15")
56  << std::make_pair<unsigned int, std::string>(0x1e9005, "attiny12")
57  << std::make_pair<unsigned int, std::string>(0x1e9007, "attiny13")
58  << std::make_pair<unsigned int, std::string>(0x1e9003, "attiny10")
59  << std::make_pair<unsigned int, std::string>(0x1e9004, "attiny11")
60  << std::make_pair<unsigned int, std::string>(0x1e9504, "atmega3290")
61  << std::make_pair<unsigned int, std::string>(0x1e9581, "at90can32")
62  << std::make_pair<unsigned int, std::string>(0x1e9741, "atxmega128a1revd")
63  << std::make_pair<unsigned int, std::string>(0x1e9482, "at90usb162")
64  << std::make_pair<unsigned int, std::string>(0x1e9103, "at90s2343")
65  << std::make_pair<unsigned int, std::string>(0x1e958a, "atmega32u2")
66  << std::make_pair<unsigned int, std::string>(0x1e9602, "atmega64")
67  << std::make_pair<unsigned int, std::string>(0x1e9587, "atmega32u4")
68  << std::make_pair<unsigned int, std::string>(0x1e9307, "atmega8")
69  << std::make_pair<unsigned int, std::string>(0x1e9541, "atxmega32a4")
70  << std::make_pair<unsigned int, std::string>(0x1e9306, "atmega8515")
71  << std::make_pair<unsigned int, std::string>(0x1e9405, "atmega169")
72  << std::make_pair<unsigned int, std::string>(0x1e9301, "at90s8515")
73  << std::make_pair<unsigned int, std::string>(0x1e9681, "at90can64")
74  << std::make_pair<unsigned int, std::string>(0x1e9401, "atmega161")
75  << std::make_pair<unsigned int, std::string>(0x1e9382, "at90usb82")
76  << std::make_pair<unsigned int, std::string>(0x1e9402, "atmega163")
77  << std::make_pair<unsigned int, std::string>(0x1e9404, "atmega162")
78  << std::make_pair<unsigned int, std::string>(0x1e9001, "at90s1200")
79  << std::make_pair<unsigned int, std::string>(0x1e9647, "atxmega64d4")
80  << std::make_pair<unsigned int, std::string>(0x1e930f, "atmega88p")
81  << std::make_pair<unsigned int, std::string>(0x1e960a, "atmega644p")
82  << std::make_pair<unsigned int, std::string>(0x1e9205, "atmega48")
83  << std::make_pair<unsigned int, std::string>(0x1e9701, "atmega103")
84  << std::make_pair<unsigned int, std::string>(0x1e940a, "atmega164p")
85  << std::make_pair<unsigned int, std::string>(0x1e9483, "at90pwm316")
86  << std::make_pair<unsigned int, std::string>(0x1e9441, "atxmega16a4")
87  << std::make_pair<unsigned int, std::string>(0x1e9802, "atmega2561")
88  << std::make_pair<unsigned int, std::string>(0x1e9308, "atmega8535")
89  << std::make_pair<unsigned int, std::string>(0x1e9008, "attiny9")
90  << std::make_pair<unsigned int, std::string>(0x1e9746, "atxmega128a4")
91  << std::make_pair<unsigned int, std::string>(0x1ea701, "atmega128rfa1")
92  << std::make_pair<unsigned int, std::string>(0x1e974c, "atxmega128a1")
93  << std::make_pair<unsigned int, std::string>(0x1e9843, "atxmega256a3b")
94  << std::make_pair<unsigned int, std::string>(0x1e9742, "atxmega128a3")
95  << std::make_pair<unsigned int, std::string>(0x1e9406, "atmega168")
96  << std::make_pair<unsigned int, std::string>(0x1e910c, "attiny261")
97  << std::make_pair<unsigned int, std::string>(0x1e9502, "atmega32")
98  << std::make_pair<unsigned int, std::string>(0x1e9105, "at90s2333")
99  << std::make_pair<unsigned int, std::string>(0x1e920d, "attiny4313")
100  << std::make_pair<unsigned int, std::string>(0x1e9782, "at90usb1286")
101  << std::make_pair<unsigned int, std::string>(0x1e9782, "at90usb1287")
102  << std::make_pair<unsigned int, std::string>(0x1e9381, "at90pwm2")
103  << std::make_pair<unsigned int, std::string>(0x1e9208, "attiny461")
104  << std::make_pair<unsigned int, std::string>(0x1e9542, "atxmega32d4")
105  << std::make_pair<unsigned int, std::string>(0x1e950b, "atmega329p")
106  << std::make_pair<unsigned int, std::string>(0x1e9646, "atxmega64a4")
107  << std::make_pair<unsigned int, std::string>(0x1e9508, "atmega324p")
108  << std::make_pair<unsigned int, std::string>(0x1e9747, "atxmega128d4")
109  << std::make_pair<unsigned int, std::string>(0x1e9206, "attiny45")
110  << std::make_pair<unsigned int, std::string>(0x1e9207, "attiny44")
111  << std::make_pair<unsigned int, std::string>(0x1e964e, "atxmega64a1")
112  << std::make_pair<unsigned int, std::string>(0x1e9642, "atxmega64a3")
113  << std::make_pair<unsigned int, std::string>(0x1e9744, "atxmega192a3")
114  << std::make_pair<unsigned int, std::string>(0x1e974e, "atxmega192a1")
115  << std::make_pair<unsigned int, std::string>(0x1e9383, "at90pwm2b")
116  << std::make_pair<unsigned int, std::string>(0x1e9705, "atmega1284p")
117  << std::make_pair<unsigned int, std::string>(0x1e9604, "atmega6490")
118  << std::make_pair<unsigned int, std::string>(0x1e9503, "atmega329")
119  << std::make_pair<unsigned int, std::string>(0x1e9514, "atmega328")
120  << std::make_pair<unsigned int, std::string>(0x1e9505, "atmega325")
121  << std::make_pair<unsigned int, std::string>(0x1e9702, "atmega128")
122  << std::make_pair<unsigned int, std::string>(0x1e9442, "atxmega16d4")
123  << std::make_pair<unsigned int, std::string>(0x1e9403, "atmega16")
124  << std::make_pair<unsigned int, std::string>(0x1e9101, "at90s2313")
125  << std::make_pair<unsigned int, std::string>(0x1e9201, "at90s4414")
126  << std::make_pair<unsigned int, std::string>(0x1e9703, "atmega1280")
127  << std::make_pair<unsigned int, std::string>(0x1e9704, "atmega1281")
128  << std::make_pair<unsigned int, std::string>(0x1e940b, "atmega168p")
129  << std::make_pair<unsigned int, std::string>(0x1e9389, "atmega8u2")
130  << std::make_pair<unsigned int, std::string>(0x1e9511, "atmega324pa")
131  << std::make_pair<unsigned int, std::string>(0x1e9781, "at90can128")
132  << std::make_pair<unsigned int, std::string>(0x1e930d, "attiny861")
133  << std::make_pair<unsigned int, std::string>(0x1e9489, "atmega16u2")
134  << std::make_pair<unsigned int, std::string>(0x1e8f0a, "attiny4")
135  << std::make_pair<unsigned int, std::string>(0x1e8f09, "attiny5")
136  << std::make_pair<unsigned int, std::string>(0x1e9846, "atxmega256a1")
137  << std::make_pair<unsigned int, std::string>(0x1e9603, "atmega649")
138  << std::make_pair<unsigned int, std::string>(0x1e9842, "atxmega256a3")
139  << std::make_pair<unsigned int, std::string>(0x1e9608, "atmega640")
140  << std::make_pair<unsigned int, std::string>(0x1e9609, "atmega644")
141  << std::make_pair<unsigned int, std::string>(0x1e910a, "attiny2313")
142  << std::make_pair<unsigned int, std::string>(0x1e9109, "attiny26")
143  << std::make_pair<unsigned int, std::string>(0x1e9108, "attiny25")
144  << std::make_pair<unsigned int, std::string>(0x1e910b, "attiny24")
145  << std::make_pair<unsigned int, std::string>(0x1e920a, "atmega48p")
146 // MARK end
147 ;
148 
150 std::map<std::string, unsigned int> AvrNameToSignatureMap = InitMap<std::string, unsigned int>()
151 // MARK start Do not edit between this marker and the ending marker! This lines will be auto generated by script!
152 // MODE n2s
153 // TEMPLATE << std::make_pair<std::string, unsigned int>("%(name)s", %(signature)s)
154  << std::make_pair<std::string, unsigned int>("attiny85", 0x1e930b)
155  << std::make_pair<std::string, unsigned int>("attiny84", 0x1e930c)
156  << std::make_pair<std::string, unsigned int>("attiny88", 0x1e9311)
157  << std::make_pair<std::string, unsigned int>("at90s8535", 0x1e9303)
158  << std::make_pair<std::string, unsigned int>("atmega3290p", 0x1e950c)
159  << std::make_pair<std::string, unsigned int>("at90usb646", 0x1e9682)
160  << std::make_pair<std::string, unsigned int>("at90usb647", 0x1e9682)
161  << std::make_pair<std::string, unsigned int>("at90s4433", 0x1e9203)
162  << std::make_pair<std::string, unsigned int>("atmega2560", 0x1e9801)
163  << std::make_pair<std::string, unsigned int>("at90s4434", 0x1e9202)
164  << std::make_pair<std::string, unsigned int>("atmega88", 0x1e930a)
165  << std::make_pair<std::string, unsigned int>("attiny15", 0x1e9006)
166  << std::make_pair<std::string, unsigned int>("attiny12", 0x1e9005)
167  << std::make_pair<std::string, unsigned int>("attiny13", 0x1e9007)
168  << std::make_pair<std::string, unsigned int>("attiny10", 0x1e9003)
169  << std::make_pair<std::string, unsigned int>("attiny11", 0x1e9004)
170  << std::make_pair<std::string, unsigned int>("atmega3290", 0x1e9504)
171  << std::make_pair<std::string, unsigned int>("at90can32", 0x1e9581)
172  << std::make_pair<std::string, unsigned int>("atxmega128a1revd", 0x1e9741)
173  << std::make_pair<std::string, unsigned int>("at90usb162", 0x1e9482)
174  << std::make_pair<std::string, unsigned int>("at90s2343", 0x1e9103)
175  << std::make_pair<std::string, unsigned int>("atmega32u2", 0x1e958a)
176  << std::make_pair<std::string, unsigned int>("atmega64", 0x1e9602)
177  << std::make_pair<std::string, unsigned int>("atmega32u4", 0x1e9587)
178  << std::make_pair<std::string, unsigned int>("atmega8", 0x1e9307)
179  << std::make_pair<std::string, unsigned int>("atxmega32a4", 0x1e9541)
180  << std::make_pair<std::string, unsigned int>("atmega8515", 0x1e9306)
181  << std::make_pair<std::string, unsigned int>("atmega169", 0x1e9405)
182  << std::make_pair<std::string, unsigned int>("at90s8515", 0x1e9301)
183  << std::make_pair<std::string, unsigned int>("at90can64", 0x1e9681)
184  << std::make_pair<std::string, unsigned int>("atmega161", 0x1e9401)
185  << std::make_pair<std::string, unsigned int>("at90usb82", 0x1e9382)
186  << std::make_pair<std::string, unsigned int>("atmega163", 0x1e9402)
187  << std::make_pair<std::string, unsigned int>("atmega162", 0x1e9404)
188  << std::make_pair<std::string, unsigned int>("at90s1200", 0x1e9001)
189  << std::make_pair<std::string, unsigned int>("atxmega64d4", 0x1e9647)
190  << std::make_pair<std::string, unsigned int>("atmega88p", 0x1e930f)
191  << std::make_pair<std::string, unsigned int>("atmega644p", 0x1e960a)
192  << std::make_pair<std::string, unsigned int>("atmega48", 0x1e9205)
193  << std::make_pair<std::string, unsigned int>("atmega103", 0x1e9701)
194  << std::make_pair<std::string, unsigned int>("atmega164p", 0x1e940a)
195  << std::make_pair<std::string, unsigned int>("at90pwm316", 0x1e9483)
196  << std::make_pair<std::string, unsigned int>("atxmega16a4", 0x1e9441)
197  << std::make_pair<std::string, unsigned int>("atmega2561", 0x1e9802)
198  << std::make_pair<std::string, unsigned int>("atmega8535", 0x1e9308)
199  << std::make_pair<std::string, unsigned int>("attiny9", 0x1e9008)
200  << std::make_pair<std::string, unsigned int>("atxmega128a4", 0x1e9746)
201  << std::make_pair<std::string, unsigned int>("atmega128rfa1", 0x1ea701)
202  << std::make_pair<std::string, unsigned int>("atxmega128a1", 0x1e974c)
203  << std::make_pair<std::string, unsigned int>("atxmega256a3b", 0x1e9843)
204  << std::make_pair<std::string, unsigned int>("atxmega128a3", 0x1e9742)
205  << std::make_pair<std::string, unsigned int>("atmega168", 0x1e9406)
206  << std::make_pair<std::string, unsigned int>("attiny261", 0x1e910c)
207  << std::make_pair<std::string, unsigned int>("atmega32", 0x1e9502)
208  << std::make_pair<std::string, unsigned int>("at90s2333", 0x1e9105)
209  << std::make_pair<std::string, unsigned int>("attiny4313", 0x1e920d)
210  << std::make_pair<std::string, unsigned int>("at90usb1286", 0x1e9782)
211  << std::make_pair<std::string, unsigned int>("at90usb1287", 0x1e9782)
212  << std::make_pair<std::string, unsigned int>("at90pwm2", 0x1e9381)
213  << std::make_pair<std::string, unsigned int>("attiny461", 0x1e9208)
214  << std::make_pair<std::string, unsigned int>("atxmega32d4", 0x1e9542)
215  << std::make_pair<std::string, unsigned int>("atmega329p", 0x1e950b)
216  << std::make_pair<std::string, unsigned int>("atxmega64a4", 0x1e9646)
217  << std::make_pair<std::string, unsigned int>("atmega324p", 0x1e9508)
218  << std::make_pair<std::string, unsigned int>("atxmega128d4", 0x1e9747)
219  << std::make_pair<std::string, unsigned int>("attiny45", 0x1e9206)
220  << std::make_pair<std::string, unsigned int>("attiny44", 0x1e9207)
221  << std::make_pair<std::string, unsigned int>("atxmega64a1", 0x1e964e)
222  << std::make_pair<std::string, unsigned int>("atxmega64a3", 0x1e9642)
223  << std::make_pair<std::string, unsigned int>("atxmega192a3", 0x1e9744)
224  << std::make_pair<std::string, unsigned int>("atxmega192a1", 0x1e974e)
225  << std::make_pair<std::string, unsigned int>("at90pwm2b", 0x1e9383)
226  << std::make_pair<std::string, unsigned int>("atmega1284p", 0x1e9705)
227  << std::make_pair<std::string, unsigned int>("atmega6490", 0x1e9604)
228  << std::make_pair<std::string, unsigned int>("atmega329", 0x1e9503)
229  << std::make_pair<std::string, unsigned int>("atmega328", 0x1e9514)
230  << std::make_pair<std::string, unsigned int>("atmega325", 0x1e9505)
231  << std::make_pair<std::string, unsigned int>("atmega128", 0x1e9702)
232  << std::make_pair<std::string, unsigned int>("atxmega16d4", 0x1e9442)
233  << std::make_pair<std::string, unsigned int>("atmega16", 0x1e9403)
234  << std::make_pair<std::string, unsigned int>("at90s2313", 0x1e9101)
235  << std::make_pair<std::string, unsigned int>("at90s4414", 0x1e9201)
236  << std::make_pair<std::string, unsigned int>("atmega1280", 0x1e9703)
237  << std::make_pair<std::string, unsigned int>("atmega1281", 0x1e9704)
238  << std::make_pair<std::string, unsigned int>("atmega168p", 0x1e940b)
239  << std::make_pair<std::string, unsigned int>("atmega8u2", 0x1e9389)
240  << std::make_pair<std::string, unsigned int>("atmega324pa", 0x1e9511)
241  << std::make_pair<std::string, unsigned int>("at90can128", 0x1e9781)
242  << std::make_pair<std::string, unsigned int>("attiny861", 0x1e930d)
243  << std::make_pair<std::string, unsigned int>("atmega16u2", 0x1e9489)
244  << std::make_pair<std::string, unsigned int>("attiny4", 0x1e8f0a)
245  << std::make_pair<std::string, unsigned int>("attiny5", 0x1e8f09)
246  << std::make_pair<std::string, unsigned int>("atxmega256a1", 0x1e9846)
247  << std::make_pair<std::string, unsigned int>("atmega649", 0x1e9603)
248  << std::make_pair<std::string, unsigned int>("atxmega256a3", 0x1e9842)
249  << std::make_pair<std::string, unsigned int>("atmega640", 0x1e9608)
250  << std::make_pair<std::string, unsigned int>("atmega644", 0x1e9609)
251  << std::make_pair<std::string, unsigned int>("attiny2313", 0x1e910a)
252  << std::make_pair<std::string, unsigned int>("attiny26", 0x1e9109)
253  << std::make_pair<std::string, unsigned int>("attiny25", 0x1e9108)
254  << std::make_pair<std::string, unsigned int>("attiny24", 0x1e910b)
255  << std::make_pair<std::string, unsigned int>("atmega48p", 0x1e920a)
256 // MARK end
257 ;
258 
259 // EOF
std::map< unsigned int, std::string > AvrSignatureToNameMap
Map signature to device names (in lower case).
std::map< std::string, unsigned int > AvrNameToSignatureMap
Map device names (in lower case) to signature.