PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MiDi Sysex File aus Intel .hex File generieren



wkrug
02.04.2018, 18:46
Hallo,
ich habe mir das MidiGAL von midisizer.com (https://midisizer.com/midigal/) aufgebaut.
Ich hab nun eine eigene Software ( ATMEL Studio 7 ) für diese Hardware geschrieben und möchte diese künftig per MiDi als Sysex File auf den Controller übertragen.
Damit man das Gerät zu umprogrammieren nicht jedesmal aufschrauben muß.
Der Bootloader für den AVR bekommt man ja problemlos auf der midisizer Seite, denn Quellcode dazu auch.

Nun bräuchte ich ein Tool für Windows, mit dem ich meine erstellte Intel .hex Datei in eine Sysex .syx Datei umwandeln kann.
Diese .syx Datei möchte ich dann per MiDiOX (http://www.midiox.com/) an die Schaltung versenden.
Ich möchte gerne den Original Bootloader von midisizer beibehalten, weil ich bei Bedarf auch schnell mal eine andere Software z.B. midiclk99 auf den Controller spielen möchte.

Habt Ihr da gute Tipps für mich?

Searcher
02.04.2018, 19:41
Ich hab zwar keine Ahnung von Midi oder ob der Tipp gut ist, aber das hier hört sich nach dem an, was Du suchst:
https://www.sequencer.de/synth/index.php/MCV876_Controller_Update:_File_Converter

Gruß
Searcher

wkrug
02.04.2018, 21:27
Der Tipp ist schon sehr gut.
Allerdings werden die Sysex Daten für meinen Bootloader anders aufbereitet.
Es werden dort nur Nibbles ( 4Bit ) übertragen.
Das von Dir vorgeschlagene Programm schiebt die empfangenen Bytes je um ein Bit weiter.
Da ich den Bootloader im Controller ja weiter benutzen möchte funktioniert das so nicht.

OK, Ich hab mal versucht nachzuvollziehen, was da gemacht wird.
Der Intel Hex Code wird in 2 Nibbles zerpflückt und dann als 256 Bytes übertragen.
Wobei nur das Low Byte relevant ist.
Also 128 Bytes des Hex Codes.
0xF0 ist das Midi Start of sysex Byte.
Als Header wird jedem Paket 0xF0 0x29 0x47 0x41 0x4C 0x00 0x00 0x7E 0x00 vorangestellt.
Am Ende eines Pakets kommt eine 2 Byte mit wieder nur den Low Nibbles Prüfsumme und dann das MiDi End of Sysex Byte 0xF7.