Hallo Haiku,
ich habe einen Arduino Uno Selbstbau mit einem ATMega328P.
Benötige ich die Arduino Uno Firmware auf dem ATMega328P und die Arduino Software?
Gruß
Kai
Hi Haiku,
Vielen Dank für die Linux-Skripte. Am Wochenende werde ich es mal ausprobieren. Brauche ich einen ISP oder geht das auch mit dem eingebauten Programmer? HEX-Dateien kann man ja mit avrdude auf den Arduino übertragen.
Eigentlich hab ich nach einer Lösung zur Übertragung von Daten zwischen dem NXT und Arduino gesucht. Dabei bin ich über dieses interessante Projekt gestolpert. Die Übertragung hab ich jetzt per I2C gelöst.
Geändert von janvp (13.02.2013 um 15:07 Uhr)
Hallo Haiku,
ich habe einen Arduino Uno Selbstbau mit einem ATMega328P.
Benötige ich die Arduino Uno Firmware auf dem ATMega328P und die Arduino Software?
Gruß
Kai
@janvp,
eigentlich sollte alles gehen was der avrdude unterstützt.
- Avrdude für Windows ist im HaikuVM Download mit drin.
- Avrdude etc. für Linux muss man selbst installieren. Hier http://haiku-vm.sourceforge.net/#Linux steht wie's geht.
Als Commandline Parameter übergebe ich 'stk500v1'. Aber das kann man konfigurieren, indem man in 'HaikuVM.properties' die folgende Zeile an seine Bedürfnisse anpasst:
Bei mir funktioniert genau das mit dem Duemilanove.Code:arduino.Upload = avrdude -pm328p -cstk500v1 -P$(HAIKU_PORT) -b57600 -Uflash:w:$(HAIKU_OUTPUT):a
(Wenn ich das richtig verstehe nutzen die ARDUINO Tools unter der Haube auch avrdude. Vielleicht geht sogar
)Code:arduino.Upload = avrdude -pm328p -carduino -P$(HAIKU_PORT) -b57600 -Uflash:w:$(HAIKU_OUTPUT):a
Deine I2C Lösung für den Arduino ist z.Zt. in C geschrieben? Und du möchtest diese nach JAVA migrieren? Ist das der Hintergrund für Dein Interesse an HaikuVM?
@kaijoe,
ich kenne deinen Selbstbau nicht. Aber wenn du ihn heute (ohne HaikuVM) flashen kannst - ich nehme an mit avrdude - reicht das. D.h. du brauchst für HaikuVM keine 'Arduino Uno Firmware auf dem ATMega328P' und keine 'Arduino Software' um in JAVA programmieren zu können
Meine Empfehlung:
Kopiere in der Datei 'HaikuVM.properties' den Abschnitt arduino.* nach kaijoe.* . Im neuen kaijoe.* Abschnitt kannst du dann alles spezifisch an deinen Selbstbau anpassen z.B.:
(Falls du abweichend einen 20Mhz Quarz nutzt.)Code:kaijoe.Clock = 20000000
Wenn du dann beim Arbeiten dem HaikuVM Handbuch folgst, änderst du überall wo "--Config arduino" steht auf "--Config kaijoe" ab.
@janvp, @kaijoe, --> Zusammengefasst
HaikuVM nutzt zum flashen im Prinzip 'avrdude'. Dies ist aber in der Datei 'HaikuVM.properties' beliebig konfigurierbar. (So ist darin z.B. für den ASURO, das dort mitgelieferte flash Tool 'ASUROFlash155' konfiguriert.)
Auf euer Feedback oder Fragen bin ich gespannt.
Meine ersten Erfahrungen:
Zuerst einmal, ich besitze einen Arduino UNO SMD R2 und HaikuVM 1.0.1.
Deine Anleitung für Linux ist sehr gut verständlich. Ich habe sie auf Ubuntu 12.10 und leicht verändert auf Mac OS X Mountain Lion ausprobiert.
Leider habe ich immer zwei Probleme bemerkt:
Nach dem Aufruf von haikuupload habe ich immer "stk500 Programmer is not responding" angezeigt bekommen. Nach ein paar Recherchen hab ich rausgefunden, dass ich die Baudrate von 57600 auf 115200 ändern muss. Jetzt bekomme ich diese Fehlermeldung nicht mehr.
Aber leider schlägt haikulink davor immer fehl. Hier Die Ausgabe:
Ich vermute mal, dass etwas mit "NUM_LED_FLASHES", "EEWE" und "MAX_TIME_COUNT" noch nicht ganz funktioniert.Code:whiteapple:arduino jan$ /Users/jan/haikuVM/bin/haikulink -v --Config arduino -o BlinkWithThread.hex /Users/jan/haikuVM/examples/src/main/java/arduino/tutorial/BlinkWithThread # # # ############################################################# # generating c files ############################################################# included; haiku.avr.lib.arduino.HaikuMicroKernelEx.main([Ljava/lang/String;)V included: haiku.avr.lib.arduino.ArduinoLib.init()V included: haiku.avr.AVRDefines.sei()V included# haiku.avr.AVRDefines.<clinit>()V included: haiku.avr.AVRDefines._BV(I)I included: haiku.vm.MicroKernel.clinitHaikuMagic()V included: haiku.avr.lib.arduino.HaikuMicroKernelEx.init()V included: arduino.tutorial.BlinkWithThread.main([Ljava/lang/String;)V included: haiku.avr.lib.arduino.WProgram.pinMode(BB)V included: arduino.tutorial.BlinkWithThread.<init>()V virtual : start()V included# arduino.tutorial.BlinkWithThread.<clinit>()V included# java.lang.Thread.start()V included: java.lang.Thread.fork()I virtual : run()V virtual : stop()V included# java.lang.Thread.run()V included# java.lang.Thread.stop()V included: java.lang.Thread.setStateAndSwitch(I)I virtual : toString()Ljava/lang/String; included# java.lang.Throwable.toString()Ljava/lang/String; virtual : println(Ljava/lang/String;)V included# java.io.PrintStream.println(Ljava/lang/String;)V virtual : print(Ljava/lang/String;)V virtual : print(C)V included# java.io.PrintStream.print(C)V virtual : write(I)V included: java.lang.Thread.currentThread()Ljava/lang/Thread; included# java.lang.String.toString()Ljava/lang/String; #### rescan because new virtuals where found included: haiku.avr.lib.arduino.HaikuMicroKernelEx$1.<init>()V included: java.io.OutputStream.<init>()V included# haiku.avr.lib.arduino.HaikuMicroKernelEx$1.write(I)V included: java.io.PrintStream.<init>(Ljava/io/OutputStream;)V included: haiku.avr.lib.arduino.HaikuMicroKernelEx$2.<init>()V included: java.io.InputStream.<init>()V included: java.lang.Object.<init>()V included# java.lang.Object.toString()Ljava/lang/String; included: java.lang.System.identityHashCode(Ljava/lang/Object;)I included: java.lang.System.getDataAddress(Ljava/lang/Object;)I included: java.lang.StringBuilder.<init>(Ljava/lang/String;)V included: java.lang.StringBuilder.<init>()V virtual : append(Ljava/lang/String;)Ljava/lang/StringBuilder; included# java.lang.StringBuilder.toString()Ljava/lang/String; included: java.lang.String.<init>([C)V included# java.lang.StringBuilder.append(Ljava/lang/String;)Ljava/lang/StringBuilder; virtual : append(I)Ljava/lang/StringBuilder; included: java.lang.Thread.<init>()V included# arduino.tutorial.BlinkWithThread.run()V included: haiku.avr.lib.arduino.WProgram.digitalWrite(BB)V included: haiku.avr.lib.arduino.WProgram.delay(J)V included: java.lang.Thread.nap(J)V included: java.lang.System.currentTimeMillis()J included# java.io.PrintStream.print(Ljava/lang/String;)V virtual : charAt(I)C virtual : length()I included# java.lang.String.length()I included# java.lang.String.charAt(I)C #### rescan because new virtuals where found included# java.lang.StringBuilder.append(I)Ljava/lang/StringBuilder; included: java.lang.String.valueOf(I)Ljava/lang/String; #### rescan because new virtuals where found included: java.lang.String.valueOf(C)Ljava/lang/String; #### rescan because new virtuals where found included: java.lang.String.<init>(C)V #### rescan because new virtuals where found #################### closure complete! Effective configuration for 'arduino': Target = atmega328p MemorySize = 1540 InitialMainThreadStackSize = 142 InitialOtherThreadStackSize = 45 Mode = HAIKU_16_32 Char = HAIKU_CHAR_8 InternalExceptionEnable = NullPointerException | NoSuchMethodError | OutOfMemoryError | ClassCastException | VirtualMachineError InternalExceptionThrow = 0 Threads = 1 Extension = hex Clock = 16000000 APP_NAME = BlinkWithThread VM_BASE = ../../haikuVM APP_BASE = /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/. CC_OPT = $(HAIKU_CFLAGS) -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -mmcu=$(HAIKU_TARGET) -DF_CPU=$(HAIKU_CLOCK)UL -MMD -MP Upload = avrdude -pm328p -cstk500v1 -P$(HAIKU_PORT) -b115200 -F -Uflash:w:$(HAIKU_OUTPUT):a MicroKernel = haiku.avr.lib.arduino.HaikuMicroKernelEx Config = arduino IncrementalGCSlice = 10 Extends = AVR GC = HAIKU_StopTheWorldGC Output = BlinkWithThread.hex CFLAGS = Port = /dev/tty.usbmodem1d171 CLIBS = HAIKUVM4C = ./haikuVM LDFLAGS = link > haiku/avr/lib/arduino/HaikuMicroKernelEx from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar getProperty('InvokeShort')returned null const class_t haiku_avr_lib_arduino_HaikuMicroKernelEx__class PROGMEM = { & haiku_vm_MicroKernel__class, sizeof(haiku_avr_lib_arduino_HaikuMicroKernelEx), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/lib/arduino/HaikuMicroKernelEx.c link > haiku/vm/MicroKernel from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_vm_MicroKernel__class PROGMEM = { & java_lang_Object__class, sizeof(haiku_vm_MicroKernel), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/vm/MicroKernel.c link > java/lang/Object from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_Object__class PROGMEM = { NULL, sizeof(java_lang_Object), 1, { {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_Object_toString_Ljava_lang_String)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/Object.c link > java/lang/System from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_System__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_System), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/System.c link > java/io/PrintStream from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_io_PrintStream__class PROGMEM = { & java_lang_Object__class, sizeof(java_io_PrintStream), 3, { {MSG_print__C_V, (ByteCode *)(&java_io_PrintStream_print_CV)}, {MSG_print__Ljava_lang_String__V, (ByteCode *)(&java_io_PrintStream_print_Ljava_lang_String_V)}, {MSG_println__Ljava_lang_String__V, (ByteCode *)(&java_io_PrintStream_println_Ljava_lang_String_V)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/io/PrintStream.c link > java/lang/String from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_String__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_String), 3, { {MSG_charAt__I_C, (ByteCode *)(&java_lang_String_charAt_IC)}, {MSG_length___I, (ByteCode *)(&java_lang_String_length_I)}, {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_String_toString_Ljava_lang_String)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/String.c link > java/lang/StringBuilder from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_StringBuilder__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_StringBuilder), 3, { {MSG_append__I_Ljava_lang_StringBuilder, (ByteCode *)(&java_lang_StringBuilder_append_ILjava_lang_StringBuilder)}, {MSG_append__Ljava_lang_String__Ljava_lang_StringBuilder, (ByteCode *)(&java_lang_StringBuilder_append_Ljava_lang_String_Ljava_lang_StringBuilder)}, {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_StringBuilder_toString_Ljava_lang_String)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/StringBuilder.c link > java/io/OutputStream from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_io_OutputStream__class PROGMEM = { & java_lang_Object__class, sizeof(java_io_OutputStream), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/io/OutputStream.c link > java/io/IOException from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_io_IOException__class PROGMEM = { & java_lang_Exception__class, sizeof(java_io_IOException), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/io/IOException.c link > java/lang/Exception from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_lang_Exception__class PROGMEM = { & java_lang_Throwable__class, sizeof(java_lang_Exception), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/Exception.c link > java/lang/Throwable from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_Throwable__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_Throwable), 1, { {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_Throwable_toString_Ljava_lang_String)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/Throwable.c PREPROCESSING haikuReleaseLock: java.lang.Thread.haikuReleaseLock(Ljava/lang/Object;)V link > java/lang/Thread from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_Thread__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_Thread), 3, { {MSG_run___V, (ByteCode *)(&java_lang_Thread_run_V)}, {MSG_start___V, (ByteCode *)(&java_lang_Thread_start_V)}, {MSG_stop___V, (ByteCode *)(&java_lang_Thread_stop_V)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/Thread.c link > java/lang/Runnable from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_lang_Runnable__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_Runnable), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang/Runnable.c link > haiku/avr/lib/arduino/HaikuMicroKernelEx$1 from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_HaikuMicroKernelEx_1__class PROGMEM = { & java_io_OutputStream__class, sizeof(haiku_avr_lib_arduino_HaikuMicroKernelEx_1), 1, { {MSG_write__I_V, (ByteCode *)(&haiku_avr_lib_arduino_HaikuMicroKernelEx_1_write_IV)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/lib/arduino/HaikuMicroKernelEx$1.c link > haiku/avr/lib/arduino/HaikuMicroKernelEx$2 from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_HaikuMicroKernelEx_2__class PROGMEM = { & java_io_InputStream__class, sizeof(haiku_avr_lib_arduino_HaikuMicroKernelEx_2), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/lib/arduino/HaikuMicroKernelEx$2.c link > java/io/InputStream from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_io_InputStream__class PROGMEM = { & java_lang_Object__class, sizeof(java_io_InputStream), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/io/InputStream.c link > haiku/avr/lib/arduino/ArduinoLib from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_ArduinoLib__class PROGMEM = { & haiku_avr_AVRDefines__class, sizeof(haiku_avr_lib_arduino_ArduinoLib), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/lib/arduino/ArduinoLib.c link > haiku/avr/AVRDefines from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_AVRDefines__class PROGMEM = { & java_lang_Object__class, sizeof(haiku_avr_AVRDefines), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/AVRDefines.c link > arduino/tutorial/BlinkWithThread from /Users/jan/haikuVM/examples/src/main/java//arduino/tutorial/BlinkWithThread.class const class_t arduino_tutorial_BlinkWithThread__class PROGMEM = { & java_lang_Thread__class, sizeof(arduino_tutorial_BlinkWithThread), 1, { {MSG_run___V, (ByteCode *)(&arduino_tutorial_BlinkWithThread_run_V)}, } }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/arduino/tutorial/BlinkWithThread.c link > haiku/avr/lib/arduino/WProgram from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_WProgram__class PROGMEM = { & haiku_avr_lib_arduino_ArduinoLib__class, sizeof(haiku_avr_lib_arduino_WProgram), 0, }; into /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/lib/arduino/WProgram.c #### rescan because new virtuals where found #################### closure complete! #### rescan because new virtuals where found #################### closure complete! totalMethods= 49 totalBClength= 1050 totalConstLength= 260 totalClassesLength=216 /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/atmega /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/atmega8 /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/bt /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/caterina /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/lilypad/src /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/optiboot /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./bootloaders/stk500v2 /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./cores/arduino /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./firmwares/arduino-usbdfu /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./firmwares/arduino-usbserial /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuC /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/arduino/tutorial /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr/lib/arduino /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/avr /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/haiku/vm /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/io /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuJava/java/lang /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuVM/native/haiku/vm /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuVM/native/java/lang /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/./haikuVM ############################################################# # generated c files ############################################################# # # # ############################################################# # cross compiling ############################################################# # # # Building file: ../../bootloaders/atmega/ATmegaBOOT_168.c Invoking: AVR Compiler avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -I"/Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/." -I"../../haikuVM" -MF"bootloaders/atmega/ATmegaBOOT_168.d" -MT"bootloaders/atmega/ATmegaBOOT_168.d" -c -o"bootloaders/atmega/ATmegaBOOT_168.o" "../../bootloaders/atmega/ATmegaBOOT_168.c" ../../bootloaders/atmega/ATmegaBOOT_168.c: In function 'main': ../../bootloaders/atmega/ATmegaBOOT_168.c:425:12: error: 'NUM_LED_FLASHES' undeclared (first use in this function) ../../bootloaders/atmega/ATmegaBOOT_168.c:425:12: note: each undeclared identifier is reported only once for each function it appears in ../../bootloaders/atmega/ATmegaBOOT_168.c:586:11: error: 'EEWE' undeclared (first use in this function) ../../bootloaders/atmega/ATmegaBOOT_168.c: In function 'getch': ../../bootloaders/atmega/ATmegaBOOT_168.c:975:15: error: 'MAX_TIME_COUNT' undeclared (first use in this function) make: *** [bootloaders/atmega/ATmegaBOOT_168.o] Error 1 ############################################################# # error while cross compiling ############################################################# whiteapple:arduino jan$
Also ich hab einen NXT mit leJOS und einen Arduino UNO. Diese wollte ich verbinden und bei ein paar Recherchen habe ich HaikuVM zufällig entdeckt. Eigentlich hat HaikuVM nichts mit meinem ursprünglichen Projekt zu tun, aber ich find HaikuVM sehr interessant und wollte es einfach mal ausprobieren. Natürlich werde ich jetzt versuchen, den Code, den ich für den Arduino geschrieben, habe auch in Java zu verwirklichen.
LG Jan
Hallo janvp,
danke für das Feedback.
1) Ach, läßt sich der 'Arduino UNO SMD R2' nur mit 115200 baud flashen? Das wußte ich gar nicht! Ist das auch bei den orginalen ARDUINO Tools für den 'Arduino UNO SMD R2' so?
Zusatzfrage: Läuft 'Arduino UNO SMD R2' auch mit 16Mhz? Wenn nein, musst du das auch in der Datei 'HaikuVM.properties' anpassen.
2) Es ist zwar nett wenn du schreibst "Deine Anleitung für Linux ist sehr gut verständlich.", aber ist sie wohl doch nicht!
Denn wenn ich deine Ausgabe richtig deute hast du
- /Users/jan/haikuVM/bin/haikulink
in der aktuellen Directory:
- /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/
gestartet. (Was ist das überhaupt für eine Directory?)
In der Anleitung steht aber, dass man ausgehend von
- /home/bob
dies in
- cd haikuVM/myCProject
ausführen soll. Also übersetzt für dein System und deinen User in
- /Users/jan/haikuVM/myCProject
Probier das mal. Und ich werde diesen Teil der Anleitung verbessern.
Erklärung:
Haikulink sucht und kompiliert rekursiv alle *.c und *.h Dateien die es in der aktuellen Directory findet. In
- /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/
scheint es schon einige *.c und *.h Dateien zu geben die nichts mit HaikuVM zu tun haben. (Ich sehe in deiner Ausgabe z.B. die fremde Datei './bootloaders/atmega/ATmegaBOOT_168.c'.) In denen befinden sich offenbar "NUM_LED_FLASHES", "EEWE" und "MAX_TIME_COUNT", die auch nichts mit HaikuVM zu tun haben und bleiben folglich "undeclared".
3) Soll der Arduino UNO bei der Kommunikation mit NXT als I2C master oder slave laufen?
PS:
Die fremde Directory
- /Applications/Development/Arduino.app/Contents/Resources/Java/hardware/arduino/
wird jetzt durch deinen Lauf von haikulink "verschmutzt" sein. Tipp, bereinige diese vorsichtshalber indem du die neu entstanden HaikuVM Directories:
- haikuC
- haikuVM
- haikuJava
- target
wieder löschst.
Geändert von haikuvm (07.04.2013 um 09:48 Uhr)
Hallo,
ich habe jetzt mal versucht das AVR Blink Beispiel auf den ATMega zu kopieren.
Ich habe folgenden Aufruf verwendet:
C:\haikuVM\myCProject>c:\haikuVM\bin\haiku -v --Config kaijoe -o blink.hex C:\haikuVM\examples\src\main\java\avr\tutorial\Bli nk.java
Die Config dazu sieht wie folgt aus:
#
# Kaijoe: main(); init(); 57600 baud; System.in/out
#
#
kaijoe.arduino.Extends = AVR
kaijoe.Target = atmega328p
kaijoe.MemorySize = 1540
kaijoe.Clock = 16000000
kaijoe.MicroKernel = haiku.avr.lib.arduino.HaikuMicroKernelEx
# a lot of \ are needed just to get the following:
# avrdude -pm328p -cstk500v1 -P\\\.\\com17 -b57600 -Uflash:w:SimpleThreading.hex:a
# ugly but works:
#arduino.Port = \\\\\\.\\com17
kaijoe.Port = USB
kaijoe.Upload = avrdude -pm328p -cstk500v1 -P$(HAIKU_PORT) -b57600 -Uflash:w:$(HAIKU_OUTPUT):a
Da ich einen AVRISP MKII verwende, habe ich keine COM-Schnittstelle, deshalb habe ich USB eingegeben.
Wenn ich nun Haiku aufrufe, bekomme ich folgende Fehlermeldung:
################################################## ###########
# generating c files
################################################## ###########
included; haiku.avr.lib.arduino.HaikuMicroKernelEx.main([Ljava/lang/StringV
getProperty('InternalExceptionThrow')returned null
Exception in thread "main" java.lang.NullPointerException
at haikuvm.pc.tools.Haikufy.supre#################### ###################
ssExceptionSupport(Haikufy.java:395)
at haikuvm.pc.tools.Closure.collectFoos(Closure.java: 93)
at haikuvm.pc.tools.Closure.collectClass(Closure.java :5
at haikuvm.pc.tools.Closure.collect#Fo#os#(##Cl#os#ur e#.ja#v#a:#131#)#
m #at# #h#a#i#k#u#v
# error while g.penerating c fc.tools.Closure.collectClass(Closureiles
#.java:5
at haikuvm.pc.tools.Closure.root##################### ###################
##################(#C#
losure.java:35)
at haikuvm.pc.tools.HaikuVM.haikulink(HaikuVM.java:29 5)
at haikuvm.pc.tools.HaikuVM.main(HaikuVM.java:90)
c:\haikuVM\bin\../bin/haikuupload blink.hex
Das System kann den angegebenen Pfad nicht finden.
#ake: *** No rule to make target #`#u#p#l#o#a#d#'#.# # #S#t#o#p#.#
###########################################
# error while uploading files
################################################## ###########
Was mache ich falsch. Liegt das daran, dass ich keinen COM-Port habe?
Gruß
Kai
Hallo kaijoe,
danke für das Feedback.
1) Welche 'Config' meinst du? HaikuVM kennt nur die Konfigurationsdatei 'HaikuVM.properties'. Ich gehe mal davon aus, dass du die mit "Config" meinst.
2) Du schreibst "Die Config dazu sieht wie folgt aus:". Was ich da sehe ist eigentlich viel zu wenig. Wo bleibt der Rest von 'HaikuVM.properties', z.B. der Abschnitt avr.* auf den du dich mit der Zeile "kaijoe.arduino.Extends = avr" beziehst? Hast du den gelöscht? Ich gehe jetzt genauer davon aus, dass du mit "Config" wahrscheinlich deinen neuen Abschnitt kaijoe.* innerhalb der vorhandenen Datei 'HaikuVM.properties' meinst.
2a) Statt
- kaijoe.arduino.Extends = AVR
sollte es
- kaijoe.Extends = AVR
heißen.
2b) Die Zeile
- kaijoe.Port = USB
kommt mir komisch vor. Welches Windows nutzt du? Meines kann mit der Portangabe "usb" nichts anfangen. Wie, mit welcher Portangabe oder Serial Port, hast du denn deinen Selbstbau ATMega328P bisher geflash?
3) Deine Ausgabe vom Aufruf von "c:\haikuVM\bin\haiku" ist für mich zu kurz und unleserlich. Da kann ich dann nur schlecht weiter helfen. Mach's wie das janvp oben gemacht hat: Kopiere die Ausgabe möglichst vollständig und setzte sie in ein Code-tag.
Bei weiteren Fragen, nur her damit!
Zu 1: Der Arduino UNO SMD R2 läuft auch mit 16mhz.
Zu 2: Da hab ich wohl etwas übersehen. Leider bekomme ich immer noch einen Fehler, wenn ich es genauso wie beschrieben mache.
Wenn du irgendwelche Dateien wie haikuConfig haben möchtest, musst du es sagen, weil ich nicht so richtig weiß was wichtig ist.Code:whiteapple:myCProject jan$ /Users/jan/haikuVM/bin/haikulink -v --Config arduino -o BlinkWithThread.hex /Users/jan/haikuVM/examples/src/main/java/arduino/tutorial/BlinkWithThread # # # ############################################################# # generating c files ############################################################# included; haiku.avr.lib.arduino.HaikuMicroKernelEx.main([Ljava/lang/String;)V included: haiku.avr.lib.arduino.ArduinoLib.init()V included: haiku.avr.AVRDefines.sei()V included# haiku.avr.AVRDefines.<clinit>()V included: haiku.avr.AVRDefines._BV(I)I included: haiku.vm.MicroKernel.clinitHaikuMagic()V included: haiku.avr.lib.arduino.HaikuMicroKernelEx.init()V included: arduino.tutorial.BlinkWithThread.main([Ljava/lang/String;)V included: haiku.avr.lib.arduino.WProgram.pinMode(BB)V included: arduino.tutorial.BlinkWithThread.<init>()V virtual : start()V included# arduino.tutorial.BlinkWithThread.<clinit>()V included# java.lang.Thread.start()V included: java.lang.Thread.fork()I virtual : run()V virtual : stop()V included# java.lang.Thread.run()V included# java.lang.Thread.stop()V included: java.lang.Thread.setStateAndSwitch(I)I virtual : toString()Ljava/lang/String; included# java.lang.Throwable.toString()Ljava/lang/String; virtual : println(Ljava/lang/String;)V included# java.io.PrintStream.println(Ljava/lang/String;)V virtual : print(Ljava/lang/String;)V virtual : print(C)V included# java.io.PrintStream.print(C)V virtual : write(I)V included: java.lang.Thread.currentThread()Ljava/lang/Thread; included# java.lang.String.toString()Ljava/lang/String; #### rescan because new virtuals where found included: haiku.avr.lib.arduino.HaikuMicroKernelEx$1.<init>()V included: java.io.OutputStream.<init>()V included# haiku.avr.lib.arduino.HaikuMicroKernelEx$1.write(I)V included: java.io.PrintStream.<init>(Ljava/io/OutputStream;)V included: haiku.avr.lib.arduino.HaikuMicroKernelEx$2.<init>()V included: java.io.InputStream.<init>()V included: java.lang.Object.<init>()V included# java.lang.Object.toString()Ljava/lang/String; included: java.lang.System.identityHashCode(Ljava/lang/Object;)I included: java.lang.System.getDataAddress(Ljava/lang/Object;)I included: java.lang.StringBuilder.<init>(Ljava/lang/String;)V included: java.lang.StringBuilder.<init>()V virtual : append(Ljava/lang/String;)Ljava/lang/StringBuilder; included# java.lang.StringBuilder.toString()Ljava/lang/String; included: java.lang.String.<init>([C)V included# java.lang.StringBuilder.append(Ljava/lang/String;)Ljava/lang/StringBuilder; virtual : append(I)Ljava/lang/StringBuilder; included: java.lang.Thread.<init>()V included# arduino.tutorial.BlinkWithThread.run()V included: haiku.avr.lib.arduino.WProgram.digitalWrite(BB)V included: haiku.avr.lib.arduino.WProgram.delay(J)V included: java.lang.Thread.nap(J)V included: java.lang.System.currentTimeMillis()J included# java.io.PrintStream.print(Ljava/lang/String;)V virtual : charAt(I)C virtual : length()I included# java.lang.String.length()I included# java.lang.String.charAt(I)C #### rescan because new virtuals where found included# java.lang.StringBuilder.append(I)Ljava/lang/StringBuilder; included: java.lang.String.valueOf(I)Ljava/lang/String; #### rescan because new virtuals where found included: java.lang.String.valueOf(C)Ljava/lang/String; #### rescan because new virtuals where found included: java.lang.String.<init>(C)V #### rescan because new virtuals where found #################### closure complete! Effective configuration for 'arduino': Target = atmega328p MemorySize = 1540 InitialMainThreadStackSize = 142 InitialOtherThreadStackSize = 45 Mode = HAIKU_16_32 Char = HAIKU_CHAR_8 InternalExceptionEnable = NullPointerException | NoSuchMethodError | OutOfMemoryError | ClassCastException | VirtualMachineError InternalExceptionThrow = 0 Threads = 1 Extension = hex Clock = 16000000 APP_NAME = BlinkWithThread VM_BASE = ../../haikuVM APP_BASE = /Users/jan/haikuVM/myCProject/. CC_OPT = $(HAIKU_CFLAGS) -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -mmcu=$(HAIKU_TARGET) -DF_CPU=$(HAIKU_CLOCK)UL -MMD -MP Upload = avrdude -pm328p -cstk500v1 -P$(HAIKU_PORT) -b115200 -F -Uflash:w:$(HAIKU_OUTPUT):a MicroKernel = haiku.avr.lib.arduino.HaikuMicroKernelEx Config = arduino IncrementalGCSlice = 10 Extends = AVR GC = HAIKU_StopTheWorldGC Output = BlinkWithThread.hex CFLAGS = Port = /dev/tty.usbmodem1d171 CLIBS = HAIKUVM4C = ./haikuVM LDFLAGS = link > haiku/avr/lib/arduino/HaikuMicroKernelEx from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar getProperty('InvokeShort')returned null const class_t haiku_avr_lib_arduino_HaikuMicroKernelEx__class PROGMEM = { & haiku_vm_MicroKernel__class, sizeof(haiku_avr_lib_arduino_HaikuMicroKernelEx), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/lib/arduino/HaikuMicroKernelEx.c link > haiku/vm/MicroKernel from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_vm_MicroKernel__class PROGMEM = { & java_lang_Object__class, sizeof(haiku_vm_MicroKernel), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/vm/MicroKernel.c link > java/lang/Object from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_Object__class PROGMEM = { NULL, sizeof(java_lang_Object), 1, { {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_Object_toString_Ljava_lang_String)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/Object.c link > java/lang/System from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_System__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_System), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/System.c link > java/io/PrintStream from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_io_PrintStream__class PROGMEM = { & java_lang_Object__class, sizeof(java_io_PrintStream), 3, { {MSG_print__C_V, (ByteCode *)(&java_io_PrintStream_print_CV)}, {MSG_print__Ljava_lang_String__V, (ByteCode *)(&java_io_PrintStream_print_Ljava_lang_String_V)}, {MSG_println__Ljava_lang_String__V, (ByteCode *)(&java_io_PrintStream_println_Ljava_lang_String_V)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/io/PrintStream.c link > java/lang/String from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_String__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_String), 3, { {MSG_charAt__I_C, (ByteCode *)(&java_lang_String_charAt_IC)}, {MSG_length___I, (ByteCode *)(&java_lang_String_length_I)}, {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_String_toString_Ljava_lang_String)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/String.c link > java/lang/StringBuilder from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_StringBuilder__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_StringBuilder), 3, { {MSG_append__I_Ljava_lang_StringBuilder, (ByteCode *)(&java_lang_StringBuilder_append_ILjava_lang_StringBuilder)}, {MSG_append__Ljava_lang_String__Ljava_lang_StringBuilder, (ByteCode *)(&java_lang_StringBuilder_append_Ljava_lang_String_Ljava_lang_StringBuilder)}, {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_StringBuilder_toString_Ljava_lang_String)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/StringBuilder.c link > java/io/OutputStream from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_io_OutputStream__class PROGMEM = { & java_lang_Object__class, sizeof(java_io_OutputStream), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/io/OutputStream.c link > java/io/IOException from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_io_IOException__class PROGMEM = { & java_lang_Exception__class, sizeof(java_io_IOException), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/io/IOException.c link > java/lang/Exception from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_lang_Exception__class PROGMEM = { & java_lang_Throwable__class, sizeof(java_lang_Exception), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/Exception.c link > java/lang/Throwable from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_Throwable__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_Throwable), 1, { {MSG_toString___Ljava_lang_String, (ByteCode *)(&java_lang_Throwable_toString_Ljava_lang_String)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/Throwable.c PREPROCESSING haikuReleaseLock: java.lang.Thread.haikuReleaseLock(Ljava/lang/Object;)V link > java/lang/Thread from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_lang_Thread__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_Thread), 3, { {MSG_run___V, (ByteCode *)(&java_lang_Thread_run_V)}, {MSG_start___V, (ByteCode *)(&java_lang_Thread_start_V)}, {MSG_stop___V, (ByteCode *)(&java_lang_Thread_stop_V)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/Thread.c link > java/lang/Runnable from /Users/jan/haikuVM/bin/../lib/nxt/classes.jar const class_t java_lang_Runnable__class PROGMEM = { & java_lang_Object__class, sizeof(java_lang_Runnable), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/lang/Runnable.c link > haiku/avr/lib/arduino/HaikuMicroKernelEx$1 from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_HaikuMicroKernelEx_1__class PROGMEM = { & java_io_OutputStream__class, sizeof(haiku_avr_lib_arduino_HaikuMicroKernelEx_1), 1, { {MSG_write__I_V, (ByteCode *)(&haiku_avr_lib_arduino_HaikuMicroKernelEx_1_write_IV)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/lib/arduino/HaikuMicroKernelEx$1.c link > haiku/avr/lib/arduino/HaikuMicroKernelEx$2 from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_HaikuMicroKernelEx_2__class PROGMEM = { & java_io_InputStream__class, sizeof(haiku_avr_lib_arduino_HaikuMicroKernelEx_2), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/lib/arduino/HaikuMicroKernelEx$2.c link > java/io/InputStream from /Users/jan/haikuVM/bin/../lib/haikuvm/haikuRT.jar const class_t java_io_InputStream__class PROGMEM = { & java_lang_Object__class, sizeof(java_io_InputStream), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/java/io/InputStream.c link > haiku/avr/lib/arduino/ArduinoLib from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_ArduinoLib__class PROGMEM = { & haiku_avr_AVRDefines__class, sizeof(haiku_avr_lib_arduino_ArduinoLib), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/lib/arduino/ArduinoLib.c link > haiku/avr/AVRDefines from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_AVRDefines__class PROGMEM = { & java_lang_Object__class, sizeof(haiku_avr_AVRDefines), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/AVRDefines.c link > arduino/tutorial/BlinkWithThread from /Users/jan/haikuVM/examples/src/main/java//arduino/tutorial/BlinkWithThread.class const class_t arduino_tutorial_BlinkWithThread__class PROGMEM = { & java_lang_Thread__class, sizeof(arduino_tutorial_BlinkWithThread), 1, { {MSG_run___V, (ByteCode *)(&arduino_tutorial_BlinkWithThread_run_V)}, } }; into /Users/jan/haikuVM/myCProject/./haikuJava/arduino/tutorial/BlinkWithThread.c link > haiku/avr/lib/arduino/WProgram from /Users/jan/haikuVM/bin/../lib/haikuvm/bootstrap.jar const class_t haiku_avr_lib_arduino_WProgram__class PROGMEM = { & haiku_avr_lib_arduino_ArduinoLib__class, sizeof(haiku_avr_lib_arduino_WProgram), 0, }; into /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/lib/arduino/WProgram.c #### rescan because new virtuals where found #################### closure complete! #### rescan because new virtuals where found #################### closure complete! totalMethods= 49 totalBClength= 1050 totalConstLength= 260 totalClassesLength=216 /Users/jan/haikuVM/myCProject/./haikuC /Users/jan/haikuVM/myCProject/./haikuJava/arduino/tutorial /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr/lib/arduino /Users/jan/haikuVM/myCProject/./haikuJava/haiku/avr /Users/jan/haikuVM/myCProject/./haikuJava/haiku/vm /Users/jan/haikuVM/myCProject/./haikuJava/java/io /Users/jan/haikuVM/myCProject/./haikuJava/java/lang /Users/jan/haikuVM/myCProject/./haikuVM/native/haiku/vm /Users/jan/haikuVM/myCProject/./haikuVM/native/java/lang /Users/jan/haikuVM/myCProject/./haikuVM ############################################################# # generated c files ############################################################# # # # ############################################################# # cross compiling ############################################################# # # # Building file: ../../haikuC/haikuConfig.c Invoking: AVR Compiler avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -I"/Users/jan/haikuVM/myCProject/." -I"../../haikuVM" -MF"haikuC/haikuConfig.d" -MT"haikuC/haikuConfig.d" -c -o"haikuC/haikuConfig.o" "../../haikuC/haikuConfig.c" In file included from /Users/jan/haikuVM/myCProject/./haikuC/haikuConfig.h:1:0, from ../../haikuC/haikuConfig.c:1: ../../haikuVM/haikuJ2C.h:355:20: error: expected declaration specifiers or '...' before '*' token ../../haikuVM/haikuJ2C.h:359:2: error: unknown type name 'BytecodeFoo' ../../haikuVM/haikuJ2C.h:364:9: error: unknown type name 'BytecodeFoo' ../../haikuVM/haikuJ2C.h:601:1: error: unknown type name 'BytecodeFoo' In file included from ../../haikuC/haikuConfig.c:2:0: ../../haikuVM/Bytecodes.h: In function 'OPF_ANEWARRAY': ../../haikuVM/Bytecodes.h:107:10: warning: assignment from incompatible pointer type [enabled by default] ../../haikuVM/Bytecodes.h: In function 'OPF_CHECKCAST': ../../haikuVM/Bytecodes.h:256:19: warning: comparison between pointer and integer [enabled by default] ../../haikuVM/Bytecodes.h:257:3: warning: passing argument 2 of 'throwException' makes integer from pointer without a cast [enabled by default] ../../haikuVM/haikuJ2C.h:547:13: note: expected 'jint' but argument is of type 'jclass' ../../haikuVM/Bytecodes.h: In function 'OPF_IFNONNULL': ../../haikuVM/Bytecodes.h:1409:2: warning: passing argument 1 of 'compare' makes integer from pointer without a cast [enabled by default] ../../haikuVM/haikuJ2C.h:534:13: note: expected 'jint' but argument is of type 'jobject' ../../haikuVM/Bytecodes.h: In function 'OPF_IFNULL': ../../haikuVM/Bytecodes.h:1419:2: warning: passing argument 1 of 'compare' makes integer from pointer without a cast [enabled by default] ../../haikuVM/haikuJ2C.h:534:13: note: expected 'jint' but argument is of type 'jobject' ../../haikuVM/Bytecodes.h: In function 'OPF_IINC': ../../haikuVM/Bytecodes.h:1429:17: warning: initialization from incompatible pointer type [enabled by default] ../../haikuVM/Bytecodes.h: In function 'OPF_IINC1': ../../haikuVM/Bytecodes.h:1439:17: warning: initialization from incompatible pointer type [enabled by default] ../../haikuVM/Bytecodes.h: In function 'OPF_INSTANCEOF': ../../haikuVM/Bytecodes.h:1517:2: warning: passing argument 2 of 'instanceOf' makes pointer from integer without a cast [enabled by default] ../../haikuVM/haikuJ2C.h:554:13: note: expected 'jclass' but argument is of type 'int16_t' ../../haikuVM/Bytecodes.h: In function 'OPF_INVOKEINTERFACE': ../../haikuVM/Bytecodes.h:1529:18: warning: assignment from incompatible pointer type [enabled by default] ../../haikuVM/Bytecodes.h:1529:38: warning: assignment from incompatible pointer type [enabled by default] ../../haikuVM/Bytecodes.h:1531:2: warning: passing argument 1 of 'getMethod' from incompatible pointer type [enabled by default] ../../haikuVM/haikuJ2C.h:538:15: note: expected 'jobject' but argument is of type 'unsigned char *' ../../haikuVM/Bytecodes.h:1532:2: warning: implicit declaration of function 'invoke' [-Wimplicit-function-declaration] ../../haikuVM/Bytecodes.h: In function 'OPF_LDC_C': ../../haikuVM/Bytecodes.h:1847:10: warning: assignment makes pointer from integer without a cast [enabled by default] ../../haikuVM/Bytecodes.h: In function 'OPF_LOOKUPSWITCH': ../../haikuVM/Bytecodes.h:2039:6: warning: assignment makes pointer from integer without a cast [enabled by default] ../../haikuVM/Bytecodes.h:2043:8: warning: assignment makes pointer from integer without a cast [enabled by default] ../../haikuVM/Bytecodes.h: In function 'OPF_MULTIANEWARRAY': ../../haikuVM/Bytecodes.h:2221:2: warning: passing argument 1 of 'multiArray' from incompatible pointer type [enabled by default] ../../haikuVM/haikuJ2C.h:537:13: note: expected 'struct <anonymous> **' but argument is of type 'struct heap_t **' ../../haikuVM/Bytecodes.h: In function 'OPF_NEWARRAY': ../../haikuVM/Bytecodes.h:2242:10: warning: assignment from incompatible pointer type [enabled by default] ../../haikuVM/Bytecodes.h: In function 'OPF_TABLESWITCH': ../../haikuVM/Bytecodes.h:2473:8: warning: assignment makes pointer from integer without a cast [enabled by default] ../../haikuVM/Bytecodes.h:2478:5: warning: assignment makes pointer from integer without a cast [enabled by default] In file included from ../../haikuC/haikuConfig.c:2:0: ../../haikuVM/Bytecodes.h: In function 'OPF_WIINC': ../../haikuVM/Bytecodes.h:2499:17: warning: initialization from incompatible pointer type [enabled by default] ../../haikuC/haikuConfig.c: At top level: ../../haikuC/haikuConfig.c:590:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../haikuC/haikuConfig.c:591:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] ../../haikuC/haikuConfig.c:650:18: error: variable 'functionTable' must be const in order to be put into read-only section by means of '__attribute__((progmem))' make: *** [haikuC/haikuConfig.o] Error 1 ############################################################# # error while cross compiling ############################################################# whiteapple:myCProject jan$
Zu 3: Momentan läuft der Arduino als Slave und ich möchte dies auch weiter so beibehalten.
@kaijoe So eine ähnliche Ausgabe habe ich auch einmal bekommen. Nach dem Aufruf von dos2unix hat sich dies aber erledigt. Da du aber Windows benutzt kann ich nicht sagen, ob es bei dir auch so funktioniert.
Hallo janvp,
ich entnehme deiner Ausgabe zwei Probleme:
1)
- ../../haikuVM/haikuJ2C.h:355:20: error: expected declaration specifiers or '...' before '*' token
Ändere doch bitte in '/Users/jan/haikuVM/haikuVM/haikuJ2C.h' die Zeile 355
- typedef prog_void (* BytecodeFoo)() ;
in
- typedef void (* BytecodeFoo)() ;
Ich habe recherchiert und gefunden, dass für AVR "prog_void typedef is now deprecated" gilt. Vielleicht liegt hier das Problem. Bei mir tut's allerdings. Deshalb die Frage welche avr-gcc Version du hast? Bei kommt folgendes:
Code:genom2@unx1:~/haikuVM/myCProject$ avr-gcc --version avr-gcc (GCC) 4.5.3 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2)
- ../../haikuC/haikuConfig.c:650:18: error: variable 'functionTable' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
Ist mir ein Rätsel, denn 'functionTable' ist genau dort als const deklariert?! Vielleicht ist das aber mit 1) behoben.
3) Bevor du dann neu probierst lösche erst alle Directories in:
- /Users/jan/haikuVM/myCProject
Denn nur dann wird deine Änderung aus 1) verwendet.
Hallo Haikuvm,
ich habe nicht den ganzen Output angehängt, weil das ziemlich viel.
Ist aber nicht schlimm, da ich den Fehler beseitigt habe.
Ich habe die Zeile kaijoe.arduino.Extends = AVR in kaijoe.Extends = AVR
geändert und jetzt läuft es durch. Ich habe USB verwendet, da ich keinen Seriellen Port für den
AVRISP MKII habe. Wenn man das Atmel Studio installiert, wird automatisch ein USB-Treiber installiert.
Dieser konfiguriert den MKII so, dass er mit dem ATMel Studion einwandfrei funktioniert, aber leider keinen COM-Port
erstellt. Dazu muss ich libusbW32 installieren, wenn ich das mache habe ich zwar einen COM-Port und die ganzen anderen Lösungen
wie HaikuVM, Arduino und avrdude laufen dann, aber eben das ATmel Studio nicht mehr.
Ich werde dann wohl mal libusb installieren und melde mich dann nochmal.
Gruß
Kai
Lesezeichen