TuxFan hat geschrieben:Hier gibt es das komplette und neueste Paket "SimpleIDE/PropGCC/OpenSpin" vom 17.01.2014. Hab ich unter Kubuntu 12.04, Xubuntu 13.10 und 14.04 installiert. Entpacken, ins Verzeichnis wechseln und unter sudo die setup.sh und damit die Installation starten.
Das darin enthaltene
openspin ist vom Oktober letzten Jahres, also nicht mehr ganz aktuell. Aber damit funktionieren zumindest die Defines auch bei mir. Ich habe mir dann mal die Unterschiede in den Quellen angesehen und bin auf ein überflüssiges "break" gestoßen:
Code: Alles auswählen
--- OpenSpin.orig/SpinSource/openspin.cpp 2014-04-21 17:27:54.000000000 +0200
+++ OpenSpin/SpinSource/openspin.cpp 2014-04-21 17:31:22.000000000 +0200
@@ -716,7 +716,6 @@
CleanupMemory();
return 1;
}
- break;
}
}
}
Mit dieser Änderung funktionieren erstmal alle Defines in den Argumenten von
OpenSpin wieder.
PIC18F2550 hat geschrieben:Kann mann die Limit mit 64 cases mit einer Verschachtelung nicht erweitern?
Das wäre sicher machbar, aber jetzt alle Hive-Quellen ändern, nur weil
OpenSpin dieses Linit hat, wäre irgendwie doof. Man kann das Limit in
OpenSpin aber ganz einfach ändern:
Code: Alles auswählen
--- OpenSpin.orig/PropellerCompiler/PropellerCompiler.h 2014-04-21 17:27:54.000000000 +0200
+++ OpenSpin/PropellerCompiler/PropellerCompiler.h 2014-04-21 17:29:12.000000000 +0200
@@ -50,8 +50,8 @@
//#define symbol_table_limit 0x8000
#define pubcon_list_limit 0x2000
#define block_nest_limit 8
-#define block_stack_limit 256
-#define case_limit 64
+#define block_stack_limit 1024
+#define case_limit 256
#define if_limit 16
#define str_limit 256
#define str_buffer_limit 0x8000
Damit funktionieren dann bis zu 256 Cases, das sollte auch für unseren Hive genügen.
joergd hat geschrieben:dafür will er nun noch, daß die Objekt-Definition vor der ersten Benutzung (also ganz oben) steht
Da hab ich mir auch mal angesehen, was sich in den Quellen geändert hat. Diesen Teil habe ich auf die Schnelle nicht verstanden, aber im Preprozessor werden jetzt Defines gelöscht. Das habe ich mit folg. Patch wieder entfernt:
Code: Alles auswählen
--- OpenSpin.orig/SpinSource/preprocess.c 2014-04-21 17:27:54.000000000 +0200
+++ OpenSpin/SpinSource/preprocess.c 2014-04-21 17:34:43.000000000 +0200
@@ -864,8 +864,8 @@
pp_finish(struct preprocess *pp)
{
flexbuf_addchar(&pp->whole, 0);
- pp_clear_define_state(pp);
- flexbuf_delete(&pp->line);
+// pp_clear_define_state(pp);
+// flexbuf_delete(&pp->line);
return flexbuf_get(&pp->whole);
}
Wie gesagt weiß ich nicht, was damit erreicht werden sollte. Demnach könnte die Entfernung auch negative Effekte haben. Allerdings funktioniert nun mit allen obigen Änderungen das Compilieren von admnet:
Code: Alles auswählen
$ openspin -L lib -D __ADM_FAT -D __ADM_HSS -D __ADM_LAN -D __ADM_RTC -D __ADM_COM -b flash/administra/admflash.spin
Propeller Spin/PASM Compiler 'OpenSpin' (c)2012-2013 Parallax Inc. DBA Parallax Semiconductor.
Version 1.00.70 Compiled on Apr 21 2014 17:42:33
Compiling...
flash/administra/admflash.spin
|-adm-fat.spin
|-adm-rtc.spin
|-adm-hss.spin
|-adm-rtc.spin
|-adm-com.spin
|-driver_socket.spin
|-driver_enc28j60.spin
|-glob-numbers.spin
|-glob-con.spin
Done.
Program size is 22716 bytes
Das Binary ist damit zwar um Einiges größer als mit BST, funktioniert aber auch.
yeti hat geschrieben:Plööt... ich dachte "Einmal svn rennen lassen und ich hab dann das Aktuellste..." und das war's dann also doch nicht... sorry... ich misch mich auch nie nicht wieder ein wenn sich Erwachsene unterhalten...
Das SVN ist halt (noch) nicht aktuell, aber da kannst Du ja nichts für. Du solltest Dich schon noch mit uns unterhalten, ohne Dich hätte ich z.B.
OpenSpin auch nicht gleich entdeckt...