Guten Tag, vorab, Ich habe den ganzen Tag gegoogeld und selbst rumprobiert, aber nichts zweckmäßiges gefunden. Weder bei Rowley direkt noch sonst wo im Netz. Aber erstmal zu meinem Problem. Ich habe mit einem LCP 1769 Xpresso angefangen, alles schon und gut funktioniert in der Red-Suite. Aber da ich in C++ programmieren will und noch 2 weitere Controller hier liegen habe kann ich nun einen j-link edu mein eigen nennen. Im Moment nutze ich die Rowley Crossworks Trial version, aber ich kann keine Intterrupts nutzen. Das Problem ist, die Vector Tabelle wird von Rowleys startup file (assembler) richtig angelegt. Allerdings wenn ein Intterupt eintritt springt der Controller nicht zu meinen gleichnamigen Handlern (in C geschrieben und auch im speicher vorhanden laut .map) sondern die Intterrupts der Tabelle springen sich nur selbst an, also eine Dauerschleife. Warum werden nicht die richtigen Sprungadressen anstelle der Labels der startup.s eingetragen? Lösungen die ich fand war eine startup.c zu erstellen und das Linkerscript dementsprechen anzupassen, aber ich fand nie etwas explizit in einem Rowley context weshalb ich davon ausgehe, dass es doch irgendwie funktionieren muss. Momentan ist meine Vermutung, dass der Linker keinen Zusammenhang zwischen den Labels und den Funktionen sieht, trotz gleichem Namen. In den startup.c files werden diese immer "forward" deklariert bevor die Tabelle angelegt wird. Aber wie soll ich das in Assembler umsetzen? Muss ich überhaupt? Bin für jeden Tip dankbar und hoffe das waren genug Informationen um das Problem zu identifizieren. Das ganze läuft über Rowley cpu support package und die darin enthaltene CMSIS natürlich Danke.
Weiss den wirklich niemand warum bei mir in der Vector table die Standard_ISR_Handler (__weak) nicht durch pointer auf meine funktionen ersetzt werden? Es kann doch nciht sein das ich der erste bin der in der Crossworks Umgebung Interrupts nutzen will. Rowleys sagt nur die Intterrupt Routienen müssen in assembler geschrieben werden, aber reden im nächsten Satz auch weiter über Vorgehensweisen die sich nur auf ARM7 beziehen. Das ist ja gerade einer der Vorteile des Cortex, das ich mich nicht mit asm rumschlagen muss.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 | |
179 | |
180 | |
181 | |
182 | |
183 | |
184 | |
185 | |
186 | |
187 | |
188 | |
189 | |
190 | |
191 | |
192 | |
193 | |
194 | |
195 | |
196 | |
197 | |
198 | |
199 | |
200 | |
201 | |
202 | |
203 | |
204 | |
205 | |
206 | |
207 | |
208 | |
209 | |
210 | |
211 | |
212 | |
213 | |
214 | |
215 | |
216 | |
217 | |
218 | |
219 | |
220 | |
221 | |
222 | |
223 | |
224 | |
225 | |
226 | |
227 | |
228 | |
229 | |
230 | |
231 | |
232 | |
233 | |
234 | |
235 | |
236 | |
237 | |
238 | |
239 | |
240 | |
241 | |
242 | |
243 | |
244 | |
245 | |
246 | |
247 | |
248 | |
249 | |
250 | |
251 | |
252 | |
253 | |
254 | |
255 | |
256 | |
257 | |
258 | |
259 | |
260 | |
261 | |
262 | |
263 | |
264 | |
265 | |
266 | |
267 | |
268 | |
269 | |
270 | |
271 | |
272 | |
Ich habe das Problem gefunden. Anscheinend gefällt es dem Programm nicht wenn ich meine Interrupts in einer .cpp definiere. Wenn ich sie in einer .c definiere ercheinen sie in der .map auch genau wie die Labels, ohne () am Ende des Funktion Namens. Mal sehen wie ich das jetzt schön verpacke, auf C++ werde ich aber definitv nicht verzichten. Vielleicht schaffe ich das ganze ja sogar mit einem Macro direkt auf meine C++ IRQs zu lenken.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Wieder was gelernt.. Hoffentlich nützt dieser Thread mal jemand der das gleiche Problem hat, google hat leider nichts vernünftiges ausgespuckt.
Hättest du in dem Zusammenhang nach "name mangling" gesucht, du wärst fündig geworden. ;-)
Gast
#2258856
>Hättest du in dem Zusammenhang nach "name mangling" gesucht, du wärst >fündig geworden. ;-) Hätte, wenn und aber alles nur Gelaber ;-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.