Hallo, ich versuche vergebens ein selbst geschriebenes Programm auf einem LPC1766 stabil zum laufen zu kriegen. Ich habe mir verschiedene Beispielprogramme angesehen und bereits zum laufen bekommen. Dabei werden jedesmal startup codes verwendet und ich versuche nun entweder ohne diese auszukommen oder diese für meinen Fall zu verwenden. Wenn ich ohne Startupcode compiliere und flashe, dann wird Programmcode ausgeführt der noch von vorherigen Beispielprogrammen im Speicher liegt.Beispiel: Ich überspiele ein Programm, dass ein Testbild auf einem LCD anzeigt. Nun flashe ich mein eigenes Programm und es wird das selbe Testbild dargestellt. Ich fing nun an langsam die Einstellungen des Compilers/linkers aus den Beispielprogrammen zu übernehmen. Nur verhält sich mein Controller dabei völlig anders. Zum Beispiel wird im Beispielprojekt unter linker-configuration file die start und end-Adresse des Roms jeweils auf 0x00000000 gesetzt. Den Sinn verstehe ich dabei nicht, jedoch den Compiler Error der anmerkt: Error[Lp011]: section placement failed: unable to allocate space for sections/blocks with a total estimated minimum size of 0x36c bytes in <[0x00000000-0x00000000]> (total uncommitted space 0x1). Macht Sinn, nur warum funktioniert dies im Beispielprogramm. Ich verstehe bis dato nicht, an welche Stelle der Projektdaten ein Bezug zwischen der main() und dem startup code vorliegt. Wieso startet ein Beispielprogramm korrekt und mein selbst geschriebener Code mit den selben Compiler/Linker Einstellungen und dem selben startup code verhält sich völlig anders. An welche Stelle muss ich dem Compiler/Linker mitteilen wo mein Code beginnt.... Ich stehe auf dem Schlauch
Dussel schrieb: > Fehler in Zeile 42. Deswegen habe ich Zeile 42 freigelassen. Also bitte noch mal nachdenken!! Vielleicht würde es helfen, wenn du sagst welche Informationen du benötigst um zu helfen?! Der Code...?? Aber bitte für dich, damit du dir die Zähne ausbeißen kannst:
1 | int main(void) |
2 | {
|
3 | int i=0; |
4 | InitClock(); |
5 | |
6 | PIN_LED1_DIR_OUT; |
7 | PIN_LED2_DIR_OUT; |
8 | LED1_OFF; |
9 | LED2_OFF; |
10 | |
11 | while(1) |
12 | {
|
13 | ToggleLED(1); |
14 | ToggleLED(2); |
15 | |
16 | for(i=0;i<0xFFFF;i++); |
17 | for(i=0;i<0xFFFF;i++); |
18 | for(i=0;i<0xFFFF;i++); |
19 | for(i=0;i<0xFFFF;i++); |
20 | for(i=0;i<0xFFFF;i++); |
21 | for(i=0;i<0xFFFF;i++); |
22 | for(i=0;i<0xFFFF;i++); |
23 | for(i=0;i<0xFFFF;i++); |
24 | for(i=0;i<0xFFFF;i++); |
25 | for(i=0;i<0xFFFF;i++); |
26 | for(i=0;i<0xFFFF;i++); |
27 | for(i=0;i<0xFFFF;i++); |
28 | }
|
29 | }
|
Bevor sich hier Leute beschweren bzw. bevor jemand nach den defines fragt: Es geht hier nicht um meinen Code! Denn: Konnte das Problem etwas eingrenzen. Nutze ich beigefügten Startup code und linker-skript dann läuft das Programm wenn ich mit IAR debugge und starte. Wenn ich jedoch den Controller per reconnect starte, dann wird ein anderes Programm ausgeführt. Mich wurmt, dass ich den Hintergrund nicht verstehe das anscheinend 2 vollständige Programm im Speiche vorhanden sind und ich nicht weiß wo/wann/wie ich festlege wo der Controller bei Programmstart anlaufen soll.
Maddin schrieb: > int i=0; Du willst tatsächlich int von 0x0000 bis 0xfffe laufen lassen? Welchen Wertebereich deckt int ab? Versuch's mal mit unsigned int oder u_int16, das müsste passen.
>Du willst tatsächlich int von 0x0000 bis 0xfffe laufen lassen? Wieso nicht? >Welchen Wertebereich deckt int ab? Auf einem ARM sinds 32Bit.
holger schrieb: > Auf einem ARM sinds 32Bit. Richtig. Und auch wenn der Unterschied ein essentieller sein sollte, glaube ich, dass eine Diskusion darüber (für mein Verständnis) in die Falsche Richtung geht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.