Philipp E. schrieb:> Ne, das wollte ich aber noch tun. Wollte aber vorher fragen, ob die> Traces soweit vollständig sind. Wie war der Status als das Logging> gestartet wurde und wie als es Endete? Also für das File: SPI traffic> during binding.txt> Vorher: Copter und RC angeschaltet, nichts gedrückt?> Nachehr: Binding abgeschlossen?
Das Log fängt direkt mit dem Einschalten der FB an. Im ersten Teil sieht
man daher schön, wie die Register des BK2423 initialisiert werden. Die
Aufzeichnung endet noch während der Binding-Phase.
Tim schrieb:> Wir sollten uns tatsächlich mal Gedanken> machen, wie man das ganze strukturiert angeht.
+1
Finde die Aufteilung sinnvoll. Wobei vermutlich jeder etwas
unterschiedliche Prioritäten hat. Aber das macht ja nix, jeder kann sich
das Schnappen worauf er Lust hat. Ich bin sehr an Punkt 2) bis 4)
interessiert, wenn denn mein Copter endlich mal ankäme.
@Torsten: Gibt es eigentlich schon neues von den China Händlern bzgl.
Mengenrabatt?
Tim schrieb:> 2) Endlich den Copter entsperren (Das BU-link müsste langsam mal> angekommen)
Bin ja hin und her gerissen. Habe überlegt mir auch einen BU-Link zu
bestellen, auf der anderen Seite wäre es für die Community sicher
genial, wenn das auch ohne geht. Sobald er da ist, hängst du aber direkt
den LA dran und schickst uns nen Trace vom Unlocken ;-)
Tim schrieb:> Wenn man einige Optionen nicht> mitcompiliert passt die Firmware bereits jetzt in 16kb.
Kannst du noch einmal posten wo genau es den Arm Port gibt? Welche
Optionen hast du ausgeschaltet?
Tim schrieb:> Die Aufzeichnung endet noch während der Binding-Phase.
Könntest du noch mal einen Trace aufzeichnen, der die gesamte Binding
Phase abdeckt?
Ach ja, ich habe noch eine Frage zur IDE. Ihr verwendet alle Keil, oder?
Damit kann man dann den SWD Port vom Discovery Board direkt mit dem
Copter verbinden und Debuggen und Flashen (wenn er denn nicht mehr
gelockt wäre). Ist das soweit korrekt? Welche Einstellungen haben sich
dazu als korrekt rausgestellt? Und welche Keil Version?
Ist das, was in
https://github.com/hackocopter/Examples/tree/master/Blinky-CMSIS
liegt als Grundlage (also vom Keil-Projekt her) geeignet?
Philipp E. schrieb:> Tim schrieb:>> Wenn man einige Optionen nicht>> mitcompiliert passt die Firmware bereits jetzt in 16kb.>> Kannst du noch einmal posten wo genau es den Arm Port gibt? Welche> Optionen hast du ausgeschaltet?https://github.com/trollcop/bradwii
Habe in den Defines alles deaktiviert, was sowieso nicht unterstützt
wird und anschließend manuell das Konfigurationsinterface ausgebaut
(Checkboxes, EEPROM code usw.).
Philipp E. schrieb:> Tim schrieb:>> Die Aufzeichnung endet noch während der Binding-Phase.>> Könntest du noch mal einen Trace aufzeichnen, der die gesamte Binding> Phase abdeckt?
Habe die Verbindungen leider schon wieder entfernt. Ich gehe aber davon
aus, dass es da keine Überraschung gibt. Es wird einfach vom Binding in
den normalen Modus umgeschaltet.
Philipp E. schrieb:> Tim schrieb:>> 2) Endlich den Copter entsperren (Das BU-link müsste langsam mal>> angekommen)>> Bin ja hin und her gerissen. Habe überlegt mir auch einen BU-Link zu> bestellen, auf der anderen Seite wäre es für die Community sicher> genial, wenn das auch ohne geht. Sobald er da ist, hängst du aber direkt> den LA dran und schickst uns nen Trace vom Unlocken ;-)
Das wird das Allererste sein :)
Philipp E. schrieb:> gelockt wäre). Ist das soweit korrekt? Welche Einstellungen haben sich> dazu als korrekt rausgestellt? Und welche Keil Version?
µVision5 mit legacy device support.
> Ist das, was in> https://github.com/hackocopter/Examples/tree/master/Blinky-CMSIS> liegt als Grundlage (also vom Keil-Projekt her) geeignet?
Ich denke schon. Das sind die Einstellungen vom Beispielprojekt für den
MINI54.
Philipp E. schrieb:> Gibt es eigentlich schon neues von den China Händlern bzgl.> Mengenrabatt?
Das Problem ist, dass bei einer Einfuhr von mehr als einem Stück in
jedem Fall Einfuhrumsatzsteuer fällig wird. Dann muss der Händler
mindestens 20% Rabatt einräumen, damit es pari ausgeht. Das Porto
innerhalb Deutschlands ist auch nicht zu vernachlässigen (Warensendung €
1.90). Und Torsten muss die Dinger auch einzeln neu verpacken (Karton €
0.50). Nun sind wir schon bei weiteren gut 10% die der Händler
nachlassen muss. Und Torsten hat noch immer keine Entschädigung für
seine Arbeit. Wenn dann auch nur ein Copter defekt ankommt... ich will
gar nicht weiter rechnen... aber ich freue mich, wenn es noch klappt
(ich könnte direkt bei Torsten abholen, 15km Entfernung).
Neben den Daten auf den 16 Hopping-Kanälen schickt die Fernbedienung das
Gleiche nochmal auf vielen anderen Kanälen. Lauscht man nur an einem
Kanal erhält man in unregelmäßigen Abständen einen Datensatz (hier
Channel 2):
Dann weiß der Empfänger einen Hopping-Kanal und ist schnell in Sync. Es
gibt aber auch Kanäle (z.B. 0x1f) auf denen kommt nichts.
Wenn die Fernbedienung noch nicht gebunden(?) hat, gibts auf vielen
Kanälen (auch 0x1f) etwa alle 125ms einen Datensatz:
Auch hier kann der Empfänger dann die Kanäle ermitteln.
https://bitbucket.org/rivig/v202 schickt zum Binden mehrere 0-Sätze mit
byte[14]=0xc0 und geht dann in den Normalbetrieb. Mein jd385 bindet aber
auch wenn [14]==0 ist.
NB: Das Steuern des Helis über Tastatur ist deutlich schwieriger als
über die Fernbedienung :-)
Fernbedienung: Für den N79E814 gibt es die Header Files für Keil&Co auf
der Nuvoton Seite. Man muss aber nach "Demo Code" suchen, nicht nach
"Header". Die sind in dem Zip versteckt.
Falls der 814 ohne Bootlader in der FB ist (wovon ich ausgehe, auf den
Pads ist ICP herausgeführt), brauchen wir den Stick von Nuvoton zum
Programmieren (geschätzt € 30.-). Ich frage bei Nuvoton mal an, ob sie
das ICP Protokoll herausrücken. Die Hardware wäre simpel.
Tim schrieb:> Hast Du eigentlich auch mal mein Dump nach dem Einschalten durch Deinen> Parser geschickt? Dadurch könnte man in Erfahrung bringe, welche Kanäle> beim Binding verwendet werden.
Für das Binding werden keine besonderen Kanäle verwendet. Die
Fernbedienung sendet einfach in ihrem 16 Kanalraster die Pakete. Das
Binding wird beendet sobald der Speedstick einmal hin- und wieder zurück
bewegt wurde. Die Pakete haben als Besonderheit 2 Flags gesetzt und die
Werte für die Sticks sind auf 0x00 gesetzt.
Coptersoftware:
Beitrag "Re: Hackbarer(?) 21 EUR Quadcopter"
Georg G. schrieb:> Das Problem ist...
Stimmt. Sehe ich ähnlich. Allerdings wollen die meisten von uns
vermutlich mehr als einen Copter (damit werden die Versandkosten pro
Stück schon einmal geringer). Außerdem könnte ja die Fernbedienung und
der Lader weggelassen werden, dürfte auch noch mal ein klein bisschen
was bringen. Abschließend kann ich das nicht beurteilen.
Aber wenn es tatsächlich 100 Stück für 900 € inkl. Versand geben sollte,
dann ergibt sich bei Abnahme von 5 Stück pro Person:
9 € * 1,25 (Zoll + Ust.) = 11,25 € + 0,75 € (Versand und Verpackung
[3,75 € / 5]) = 12,00 € pro Stück. Das wäre schon Attraktiv. Wenn
Torsten jetzt noch 2 € als Profit / Puffer draufschlägt ist es immer
noch 10 € billiger als bei eBay und damit wären locker 15 Defekte Copter
abgedeckt. Weiterhin sollte klar sein, dass Torsten nicht dafür
verantwortlich ist, wenn die Dinger defekt sind.
Auf der anderen Seite ist das natürlich alles mit Aufwand und Risiko für
Torsten verbunden. Auch weiß ich nicht, ob sich wirklich 9 € pro Stück
erzielen lassen. Und ob hier wirklich so viel Nachfrage besteht ist auch
fraglich.
Vielleicht kann Torsten kurz mal schreiben, wie seine Pläne
diesbezüglich sind, andernfalls würde ich mir einfach 5 von den Dingern
direkt bei eBay klicken.
Tim schrieb:> von einem original Nu-Link zu grabben
Etwas Geduld noch, Bettelbrief um Infos an Nuvoton ist raus. Leider
kenne ich niemanden, der deren ICs kommerziell einsetzt.
Georg G. schrieb:> Tim schrieb:>> von einem original Nu-Link zu grabben>> Etwas Geduld noch, Bettelbrief um Infos an Nuvoton ist raus. Leider> kenne ich niemanden, der deren ICs kommerziell einsetzt.
Mal schauen, ob Du erfolgt hast. Es gab schon einige Anfregen über das
Nuvoton-Forum, die leider abgelehnt wurden.
Tim schrieb:> Langsam> bekomme ich den Eindruck, dass es vielleicht sinnvoller wäre, die> Chip-Erase von einem original Nu-Link zu grabben.
Oh no. Naja, damit muss ich mich wenigstens nicht mehr entscheiden, ob
ich auch einen bestelle ;-) Hier gab es doch jemanden, der das Original
hat und damit auch ein Erase durchgeführt hat. Vielleicht könnte er dir
sein original ausleihen? Oder wir schmeißen hier zusammen und kaufen
einen "gemeinsam".
Davis schrieb:> Für das Binding werden keine besonderen Kanäle verwendet. Die> Fernbedienung sendet einfach in ihrem 16 Kanalraster die Pakete.
Genau. So wie es auch in der Deviation implementiert ist. Habe mein Tool
minimal angepasst und den anderen Trace ausgewertet. Am Anfang passiert
ne Menge (Register Set, etc.) Das wird nicht umbedingt alles korrekt
geparst, aber nach ein paar ms geht es los mit immer dem gleichen
Packet:
Also alles wie zu erwarten. Nun bin ich etwas verwirrt (mangels Copter)
wie genau die "Bedienung" ist. Also RC Einschalten und dann Stick nach
ganz oben? Damit sendet sie das Binding Packet solange bis der Stick auf
0 geschoben wird?
Und am Copter? Schaut der einfach nach dem Einschalten nach dem ersten
binding packet oder speichert er an welchen Sender er gebindet ist und
es gibt am Copter ne Taste o. Ä. um das Binding zu starten?
Philipp E. schrieb:> Also alles wie zu erwarten. Nun bin ich etwas verwirrt (mangels Copter)> wie genau die "Bedienung" ist. Also RC Einschalten und dann Stick nach> ganz oben? Damit sendet sie das Binding Packet solange bis der Stick auf> 0 geschoben wird?
Sobald der Speedstick, nachdem er oben war (0xFF), wieder unten ist
(0x00), wird das Binding beendet und die Fernbedienung sendet "normale"
Pakete.
> Und am Copter? Schaut der einfach nach dem Einschalten nach dem ersten> binding packet oder speichert er an welchen Sender er gebindet ist und> es gibt am Copter ne Taste o. Ä. um das Binding zu starten?
Keine Taste. Der Copter schaut nur auf die Pakete die da kommen. Die
Bindung an die Fernbedienung erfolgt über die drei Bytes der Unique-ID.
Davis schrieb:> Keine Taste. Der Copter schaut nur auf die Pakete die da kommen.
Ah verstehe. Also muss der Copter bei jedem Akku wechsel neu gebindet
werden?
Philipp E. schrieb:> Genau. So wie es auch in der Deviation implementiert ist. Habe mein Tool> minimal angepasst und den anderen Trace ausgewertet. Am Anfang passiert> ne Menge (Register Set, etc.) Das wird nicht umbedingt alles korrekt> geparst, aber nach ein paar ms geht es los mit immer dem gleichen> Packet:> 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x1F 0xE4 0x75 0x00 0x00 0x00 0x00> 0xC0 0x38
Interessant! Auf welchen Kanälen sendet er?
Tim schrieb:> Philipp E. schrieb:>> Genau. So wie es auch in der Deviation implementiert ist. Habe mein Tool>> minimal angepasst und den anderen Trace ausgewertet. Am Anfang passiert>> ne Menge (Register Set, etc.) Das wird nicht umbedingt alles korrekt>> geparst, aber nach ein paar ms geht es los mit immer dem gleichen>> Packet:>> 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x1F 0xE4 0x75 0x00 0x00 0x00 0x00>> 0xC0 0x38>> Interessant! Auf welchen Kanälen sendet er?
Auf den 16 Kanälen, die aus der Unique-ID generiert werden. Dabei ist
immer ein Kanal zwischen 24 und 31. Die könnte der Copter "abhören", um
an die ID zu kommen und dann seinerseits die 16 Hopping Kanäle zu
bestimmen.
Davis schrieb:> Auf den 16 Kanälen, die aus der Unique-ID generiert werden.
Also um das hier nochmal heraus zu stellen. Das Channel Hopping ist
immer gleich egal ob in der "Bind" Phase oder bei der eigentlichen
Steuerung. Die Sequenz hängt nur von der ID des Senders ab und ist daher
immer gleich.
Die Bind Phase zeichnet sich nur durch die spezielle Struktur der Pakete
aus. Damit kann der Copter dann discovern welcher Sender sich binden
will und kennt dann dessen ID und damit die Hopping Sequenz.
Philipp E. schrieb:> Die Sequenz hängt nur von der ID des Senders ab und ist daher> immer gleich.
Also bezogen auf die ID. Die variiert natürlich von Sender zu Sender.
Philipp E. schrieb:> Oh no. Naja, damit muss ich mich wenigstens nicht mehr entscheiden, ob> ich auch einen bestelle ;-) Hier gab es doch jemanden, der das Original> hat und damit auch ein Erase durchgeführt hat. Vielleicht könnte er dir> sein original ausleihen? Oder wir schmeißen hier zusammen und kaufen> einen "gemeinsam".
Ich werde wie gesagt auch einen kaufen, sobald mein Quad mal vom Zoll da
ist, davor hat es keinen Sinn
> Mal schauen, ob Du erfolgt hast. Es gab schon einige Anfregen über das> Nuvoton-Forum, die leider abgelehnt wurden.
Jop, leider.
Manuel Steiner schrieb:> Ich werde wie gesagt auch einen kaufen, sobald mein Quad mal vom Zoll da> ist, davor hat es keinen Sinn
Ach ja, stimmt ja. Super sache. Bitte direkt den LA dran hängen ;-)
Philipp E. schrieb:> Ach ja, stimmt ja. Super sache. Bitte direkt den LA dran hängen ;-)
Klaro, Robert hat das zwar schon gemacht, aber vielleicht kann man da ja
noch mehr rausholen. nosilent hat so einen Saleae Clone, und ich habe
einen Open Bench Logic Sniffer, der sollte rein theoretisch bis 200Mhz
funktionieren, aber leider nur One Shot und nicht kontinuierlich wie de
saleae Teile, die den PC als Buffer verwenden.
Ich hoffe es dauert nicht mehr all zu lange.
Manuel Steiner schrieb:> Robert hat das zwar schon gemacht
Ich dachte irgendwie, der Trace war unvollständig. Habe ich mir das
falsch gemerkt?
Manuel Steiner schrieb:> Saleae Clone, und ich habe> einen Open Bench Logic Sniffer, der sollte rein theoretisch bis 200Mhz
Das ist ja super. Damit müsste sicher ein guter Trace rauskommen.
Philipp E. schrieb:> Hier gab es doch jemanden, der das Original> hat und damit auch ein Erase durchgeführt hat. Vielleicht könnte er dir> sein original ausleihen? Oder wir schmeißen hier zusammen und kaufen> einen "gemeinsam".
Klar, kein Ding. Hatte ich ja eh schon angeboten. Nachdem ich den
Controller erased habe, brauche ich das Teil ja erstmal nicht. Sagt mir
nur wo ich ihn hin schicken soll.
Robert Knipp schrieb:> Klar, kein Ding. Hatte ich ja eh schon angeboten.
Wahnsinn. Danke! Klasse Sache!!!
Da mein Copter noch nicht da ist, nützt mir das gute Stück leider im
Moment nichts. Ich denke Tim wäre ein guter Ansprechpartner, falls er
Zeit und Lust hat. Die Sache mit dem BuLink ist ja etwas ungewiss atm
;-)
Ich habe noch einmal etwas im Thread gelesen und habe da noch einmal
eine Frage. Du hast gesagt, du hast den Chip wieder gelockt und dann
mittels ICP unlockt und erased. Hast du mit deinem LA eine Aufzeichnung,
die dieses unlock + erase vollständig auf allen relevanten Leitungen
Kommunikation gespeichert hat? Weil, ich hatte es damals so verstanden,
dass dein LA immer irgendwann die Aufzeichnung abgebrochen hat.
Danke schonmal für deine Mühe!
Philipp E. schrieb:> Ich habe noch einmal etwas im Thread gelesen und habe da noch einmal> eine Frage. Du hast gesagt, du hast den Chip wieder gelockt und dann> mittels ICP unlockt und erased. Hast du mit deinem LA eine Aufzeichnung,> die dieses unlock + erase vollständig auf allen relevanten Leitungen> Kommunikation gespeichert hat? Weil, ich hatte es damals so verstanden,> dass dein LA immer irgendwann die Aufzeichnung abgebrochen hat.
Genau, der hat die Aufzeichnung selbstständig abgebrochen. Keine Ahnung
warum. Ist auch das erste mal dass ich mit nem LA etwas mache. Daher
fehlt mir da noch etwas die Erfahrung. Daher verleihe ich auch gern den
NuLink. Ihr könnt damit wohl erstmal mehr anfangen als ich.
Haben will schrieb:> Ist das der richtige?
Ja.
Viel billiger als "PayPal" ist "Kredietkarte" nach wie vor nicht:
http://www.aliexpress.com/item//1082441152.htmlHaben will schrieb:> Will mir so 3 bis 5 von den Dingern shoppen.
Der übliche Hinweis: Einen nach dem anderen kaufen. Erst wenn der eine
auf "versendet" steht, den nächsten.
Alles was am gleichen Tag aus China abgeschickt wird, kann vom Zoll
zusammen addiert werden, und dann zahlst Du drauf!
Haben will schrieb:> Aber eine Sammelbestellung gibt es jetzt nicht, oder?
Kann noch kommen, dann aber ohne Fernbedienung. Das Problem:
Einzeln_ohne_Zoll mit Fernbedienung ist vielleicht billiger als eine
Sammelbestellung mit_Zoll und ohne Fernbedienung.
Robert Knipp schrieb:> Philipp E. schrieb:>> Hier gab es doch jemanden, der das Original>> hat und damit auch ein Erase durchgeführt hat. Vielleicht könnte er dir>> sein original ausleihen? Oder wir schmeißen hier zusammen und kaufen>> einen "gemeinsam".>> Klar, kein Ding. Hatte ich ja eh schon angeboten. Nachdem ich den> Controller erased habe, brauche ich das Teil ja erstmal nicht. Sagt mir> nur wo ich ihn hin schicken soll.
Hallo Robert, vielen Dank für das Angebot. Ich würde gerne mein Glück
versuchen. Du bekommst eine PM von mir.
> Wurden soviel bestellt das die schon ausverkauft sind?
Es sieht so aus, dass die Firma nicht mehr existiert.
Die Webseite ist ist nicht erreichbar: http://www.betemcu.cn
Robert Knipp schrieb:> So, mein NuLink ist auf dem Weg zu Tim. Vielleicht kommt er damit ja> weiter.
Ich bin schon gespannt!
Davis schrieb:>> Wurden soviel bestellt das die schon ausverkauft sind?>> Es sieht so aus, dass die Firma nicht mehr existiert.> Die Webseite ist ist nicht erreichbar: http://www.betemcu.cn
Die Website ging schon vorher nicht. Den Aliexpress-shop gibt es aber
noch. Nur bietet man das Produkt nicht mehr an.
Hi,
das Teil ist m. E. doch sehr schwer zu steuern. Also einen Schwebeflug
auf konstanter Höhe in einem Raum kaum möglich. Das Teil haut immer nach
den Seiten ab, auch wenn ich versuche zu trimmen....
Habe mir besseres erwartet :-(
Kalle S. schrieb:> das Teil ist m. E. doch sehr schwer zu steuern. Also einen Schwebeflug> auf konstanter Höhe in einem Raum kaum möglich. Das Teil haut immer nach> den Seiten ab, auch wenn ich versuche zu trimmen....
Meiner ist ziemlich stabil. Schaue mal hier:
Beitrag "Re: Hackbarer(?) 21 EUR Quadcopter" und weitere...
Tim schrieb:> Kalle S. schrieb:>> das Teil ist m. E. doch sehr schwer zu steuern. Also einen Schwebeflug>> auf konstanter Höhe in einem Raum kaum möglich. Das Teil haut immer nach>> den Seiten ab, auch wenn ich versuche zu trimmen....>> Meiner ist ziemlich stabil. Schaue mal hier:> Beitrag "Re: Hackbarer(?) 21 EUR Quadcopter" und weitere...
Danke
Werde ich mal probieren.
Frage : habe schon jemand ein anderes Netzteil fündig Akkus probiert?
Turbonator schrieb:> Meine beiden sind da ich musste 9euro zoll zahlen :)
Dann hast Du wohl beide zusammen bestellt?
> geht ja noch 50€> die kopter
War aber nicht nötig, der einzelne Copter wäre ganz legal ohne Kosten
durchgegangen.
Bei Käufen aus Fernost (oder Fernwest) immer die 22€-Grenze (bzw.
5€-Grenze für Gebühren) für EUst im Auge behalten. Sammelbestellungen
lohnen sich da fast nie. Lieber zwischen den Bestellungen ein paar Tage
oder Wochen warten. Ansonsten frisst die fällig werdende EUst den
Preisvorteil auf.
...
Hannes Lux schrieb:> Lieber zwischen den Bestellungen ein paar Tage oder Wochen warten.
Wie lange denn nun? ;)
Torsten C. schrieb:> Einen nach dem anderen kaufen. Erst wenn der eine> auf "versendet" steht, den nächsten.
@Hannes: Nicht gelesen oder anderer Meinung?
Disclaimer: Es geht nicht ums "Recht haben", sondern darum, was später
im Wiki steht.
PS: Noch ein Wort zum Wiki: Im China-Billig-Thread ist das Wiki gerade
"gestorben",
siehe Beitrag "SUPER Bauteile-Schnäppchen WIKI"
Ich hoffe, dass Ihr beim WIKI mit macht, und nicht alles an mir allein
hängen bleibt. Im Moment muss ich erstmal etwas pausieren. Ausreden:
1. Meine Familie will, dass die LED-Leiste an der Wohnzimmerdecke
endlich fertig wird (rechte Hälfte, Bild).
2. Ich muss endlich das Lochraster-Layout fertig machen, siehe
Beitrag "Gitter-Drill (Trennstellen)"
3. Das Aquariumforum quengelt wegen eines LED-Strip-PWM-Dimmers:
http://www.aquariumforum.de/threads/350068-sammelpost-rigid-stripes-test-fragen-beckenvorstellungen/page11?p=2346959&viewfull=1#post2346959
Das muss nun erstmal erledigt werden. Sorry.
Habe heute um Mitternacht den Nu-Link von Robert im Briefkasten
gefunden. Das ging ja wirklich schnnell!
Viel dran ist nicht. Ich habe mal Bilder der Platine gemacht.
Der Prozessor wurde erkannt. Auch wurde sofort gefragt, ob ich einen
Chip erase durchführen will. Der Chip erase selbst dauert sehr lange,
wobei eine sehr große Menge Daten über SWD geschaufelt werden, wie auf
dem Screenshot zu sehen.
Anbei ein Log des Datenaustausches zur Identifikation des Chips. Das Log
des Erase-Vorgangs ist >100mb gezippt. Wo könnte ich das hochloaden?
Ich muss jetzt erst einmal schlafen. Evtl. finde ich morgen noch etwas
Zeit.
Hm,
was wird da wohl in dem Flash drin stehen?
Kannst du den auslesen? Vielleicht steht da die VID/PID drin. Wobei man
dazu ja anscheinend meist bei billigen Sachen nen EEPROM benutzt.
Achso das File geht das nicht auch bei github rein?
Torsten C. schrieb:> @Hannes: Nicht gelesen oder anderer Meinung?
Gelesen sicher, aber wieder vergessen, denn ich lese die Threads nicht
in einem Stück, sondern immer mal wieder die neuesten Beiträge. Da gerät
sowas schon mal in Vergessenheit.
Anderer Meinung bin ich diesbezüglich nicht. Nur kann oder will man
nicht immer warten, bis der erste Artikel da ist. Dazu ist die Ware
einfach zu lange unterwegs.
...
Hannes Lux schrieb:> Nur kann oder will man> nicht immer warten, bis der erste Artikel da ist.
Nee, da würde man ja kirre werden. Das hat m.E. auch niemand
vorgeschlagen.
Tim schrieb:> Habe heute um Mitternacht den Nu-Link von Robert im Briefkasten> gefunden. Das ging ja wirklich schnnell!
Super. Nochmal vielen vielen Dank an Robert!
Tim schrieb:> Anbei ein Log...
Klasse, auch dir tausend Dank, das du direkt den LA dran gehängt hast!
Tim schrieb:> Wo könnte ich das hochloaden?
Pack es zur Dropbox (https://www.dropbox.com). Der Account ist schnell
angelegt und Speicher ist genug da. Nachteil: Die NSA hat dann den Log
vom Erase...
Tim schrieb:> Erase-Vorgangs ist >100mb
Mhhh, damit wird das ganze vermutlich etwas komplexer als gedacht. Was
könnten das wohl alles für Daten sein. Vielleicht ist es erst einmal das
eigentliche unlocking und danach wird dann wie bei Keil ein Erase Tool
in den Flash / Ram vom uC geschaufelt? Könnte es weiterhin sein, dass
der Erase vlt. so lange braucht weil es viel zu löschen gibt? Kannst du
den Chip noch einmal locken (aber sonst leer lassen) und noch mal das
Unlock + Erase aufzeichnen? Weiterhin wäre ein reines Erase auf einem
nicht gelockten (und ebenfalls leeren) Chip interessant. Ach ja, eine
Frage noch: Kommt eigentlich auch was vom Chip zurück? Oder sendet der
ICP nur?
Torsten C. schrieb:> Im Moment muss ich erstmal etwas pausieren.
Mach dir keinen Stress. Soll doch alles Hobby und Spaß bleiben. Und der
Wiki Artikel kann ja über die Zeit wachsen. Außerdem muss er ja nicht
jedes Detail dokumentieren. Je mehr dort steht, umso besser, aber wenn
etwas dort nicht dokumentiert ist, kann das ja über die Zeit wachsen.
Der Artikel ist in meinen Augen für den "frühen" Projekt Status schon
auf einem super weg, ich denke das wird so weiter gehen. Jeder trägt
bei, was er hat bzw. möchte bzw. kann und dann wird das schon.
Hier noch einmal ein paar Details zum Datenverkehr auf dem
SWD-Interface.
Das SWD-Intarface besteht aus zwei Leitungen: SWDCLK und SWDIO. SWDIO
ist bidirektional. Die Datenrichtung wird dabei vom Master festgelegt.
Der Chip-ERase Vorgang wird durch eine sehr kurze Sequenz eingeleitet,
wie auf dem mittleren Bild zu sehen (3). Dann kommt für 25ms nicht.
Diese Zeit kann eigentlich nur zum Chip-Erase reichen, wenn wirklich das
ganze Flash gleichzeitig gelöscht wird. Diesen Teil hatte Robert auch
oben schon einmal gepostet.
Anschließend wird für eine sehr lange Zeit (20s) immer wieder die
gleiche Sequenz gesendet. Bei mir kam dieser Vorgang immer erst zum
erliegen, wenn ich auf "disconnect" in der ICP-Software geklickt habe.
Der Controller war danach trotzdem entsperrt. Daher kann es sein, dass
die lange Sequenz nicht unbedingt notwendig ist.
p.s. die logfiles kann man mit Saleae Logic öffnen. Die Software ist für
Testzwecke frei herunterladbar:
http://www.saleae.com/downloads
Torsten C. schrieb:> PS: Noch ein Wort zum Wiki: Im China-Billig-Thread ist das Wiki gerade> "gestorben",> siehe Beitrag "SUPER Bauteile-Schnäppchen WIKI">> Ich hoffe, dass Ihr beim WIKI mit macht, und nicht alles an mir allein> hängen bleibt. Im Moment muss ich erstmal etwas pausieren. Ausreden:
Hi Torsten,
ich denke das Wiki wird sich von ganz alleine weiterentwickeln. Du hast
ja schon einen sehr guten ersten Schritt gemacht. Man sollte nur
häufiger darauf hinweisen dass es den Eintrag auch gibt. Daher hier noch
einmal der Link auf den Artikel:
http://www.mikrocontroller.net/articles/Hack-O-Copter
Das wichtigste ist dass die Leute zum Artikel beitragen wenn sie Lust
haben. Wenn vorher zu viele Regeln festgelegt werden schreckt das nur
ab. Aufräumen kann man später immer noch.
Die Frage ist, ob es ausreicht einen Mikrocontroller so zu
programmieren, dass er die Sequenzen aus "erase-preamble.png (3)" und 1x
den Wiederholer aus "grosser-signalblock.png" zum Löschen sendet?
Reicht das zum Löschen? Wenn nicht, was ist noch wichtig? Der Abschnitt
ID-Device?
Ohne genaue Kenntnis des SWD Protokolls wird es fast unmöglich sein, die
gesuchten Befehle zu finden. SWD ist bidirectional, wie soll man aus dem
Mitschnitt erkennen, was der Nulink gesagt hat und was die Antwort war?
> Bei Käufen aus Fernost (oder Fernwest) immer die 22€-Grenze (bzw.> 5€-Grenze für Gebühren) für EUst im Auge behalten. Sammelbestellungen> lohnen sich da fast nie. Lieber zwischen den Bestellungen ein paar Tage> oder Wochen warten. Ansonsten frisst die fällig werdende EUst den> Preisvorteil auf.>> ...
Artikel Standort Frankfurt. ?.......war angegeben
ist es mòglich die Daten binàr zu bekommen, also in definiertem Interval
ein byte ist ein Sampling. Ev mit Sigrok, da geht es das Sampling als
raw
abzuspeichern. Hintergrund, damit kann ich dann das SWD Protokoll
aufdòseln,
zumindest nach Cortex M3 Docs.
Tim schrieb:> Edit: Die ARM Debug Interface Architecture Specification
Genau das hat mir gefehlt! Super. Nun den Mitschnitt als Folge von
Nullen und Einsen (positive Flanke von SCK ist Abtastzeitpunkt) und mit
ein paar Zeilen Code kann man es grob aufdröseln.
Anbei die Daten von oben als Binary dump.
Jedes Byte ist ein Sample bei 16MHz Abtastfrequenz. Bit0 =SWData
Bit1=SWCLK.
Man kann die Daten auch nur Abschnittsweise oder in anderen Formaten aus
Logic exportieren.
Ich hatte noch nicht so viel Zeit, mich mit der Interpretation zu
beschäftigen. Was mir bisher aufgefallen ist:
- Da die clk nur vom Host kommt, hängt die Gültigkeit der Daten von der
Richtung des Datentransfers ab:
Host->Target steigende Flank von Clk
Target->Host fallende Flanks von Clk
Das sieht man auch gut in dem SWD Bitbanging Source, der oben verlinkt
ist.
Hi,
Der NuLink wird eine Unlock Sequenz senden und danach darauf warten bis
der Chip mit dem Flash-Löschen fertig ist. In dieser Zeit pollt er den
SWD um eine Statusmedllung zu erhalten
Läuft doch beim STM32 auch so. Ein Chip-Unlock löscht immer das gesamte
Flash, das dauert eben etwas.
Versuche zu identifizieren was in der langen Leer Phase passiert und
teile die ganze Übertragung in drei Teile. Unlock -> Status polling ->
Antwort.
Gruß Martin
Tim schrieb:> - Da die clk nur vom Host kommt, hängt die Gültigkeit der Daten von der> Richtung des Datentransfers ab:> Host->Target steigende Flank von Clk> Target->Host fallende Flanks von Clk
Bild 6 in "LPC Debug Interfaces" sagt, dass die Daten immer mit der
steigenden Flanke gültig sind, egal, wer sendet.
Bild 5-1 in der ARM Debug Spec sagt, dass es immer die fallende Flanke
ist, egal, wer sendet.
Nun darfst du dir aussuchen, was richtig ist :-)
(Abgesehen davon: Der von dir gezeigte Code Ausschnitt verwendet immer
die steigende Flanke, das Target legt nach der fallenden Flanke die
Daten an. Man wartet etwas und zeigt mit der steigenden Flanke, dass man
gelesen hat und Target bitte das nächste Bit bereit stellen möge.)
> Der NuLink wird eine Unlock Sequenz senden und danach darauf warten bis> der Chip mit dem Flash-Löschen fertig ist. In dieser Zeit pollt er den> SWD um eine Statusmedllung zu erhalten> Läuft doch beim STM32 auch so. Ein Chip-Unlock löscht immer das gesamte> Flash, das dauert eben etwas.>> Versuche zu identifizieren was in der langen Leer Phase passiert und> teile die ganze Übertragung in drei Teile. Unlock -> Status polling ->> Antwort.
Hi Martin,
das kann gut sein. Es Großteil des Datenverkehrs scheint nur aus der
"line reset sequence" (50x CLK während IO high ist) zu bestehen.
Wahrscheinlich wartet der Adapater einfach nur darauf, dass das Target
eine gültige Antwort zurück sendet.
Siehe auch 5.4.1
http://www.pjrc.com/arm/pdf/doc/ARM_debug.pdf
Direkt am Anfang macht er bereits 4x einen Line-Reset, ohne dass eine
Antwort zu kommen scheint.
Georg G. schrieb:> (Abgesehen davon: Der von dir gezeigte Code Ausschnitt verwendet immer> die steigende Flanke, das Target legt nach der fallenden Flanke die> Daten an. Man wartet etwas und zeigt mit der steigenden Flanke, dass man> gelesen hat und Target bitte das nächste Bit bereit stellen möge.)
Ja, aber dadurch ändern sich die Daten auf/nach der steigenden Flanke
und sind damit dort nicht gültig. Im LA Log kann das durchaus zu
Glitches führen, wie man an ein paar Stellen sehen kann.
So morgend werde ich dem Zoll die Rechnung schicken und dann ist das
Teil hoffentlich auch bald hier und dann brauch ich keinen "Blindflug"
bezüglich der Hardware mehr zu machen.
Nur zur schnellen Erklàrung:
parity error header -- discard bit and repeat header parsing.
Ack error -- Protocol error, no answer from target
data parity error -- parity error on 32bit data field.
Unter umstànden ist die Pause nach dem Protokoll Fehler. Wenn dem so
ist,
dann ist es nicht die gesuchte Sequenz.
Im Header wird neben Parity auch getestet, ob Stop bit 0 ist.
Dies gibt einen eigenen Fehler, welcher hier nie aufgetreten ist.
Wenn mehrere parity error header hintereinander auftreten, stimmt was
nicht.
Ich will noch einen Filter fuer die Raw Daten reinmachen,
und dann anstelle oder zusàtzlich zum derzeitigen Debug Ausgabe
ein Replay C File generieren damit man dann testen kann, ob man dies
mit irgendeiner CPU raufspielen kann, ungeachtet aller Timings.
Hier mein derzeitiger Code , der Rueckgabewert ist die Anzahl der bits
to discard, data ist 64bit bitstream Variable als einziges Argument der
Funktion.
header = data>>(64-8);
write = lsb(1,2,data);
addr = lsb(2,3,data);
ack = lsb(3,8+1,data);
dat = lsb(32,8+4+write,data);
par = lsb(1,8+4+write+32,data);
if(header&2) return puts("stop error"),1; // test stop bit
if(parity(header&0x7c)) return printf("parity error header "),1;
if(!ack) return printf("Ack error "),9;
printf(" ack = %d ",ack);
if(ack==2) return puts(" wait "),8+4+1; // wait
if(ack==4) return puts(" fault "),8+4+1; // fault
if(parity(dat)!=par) puts("data parity error");
printf(" SWD(%d) %s %s = %#x\n",addr,
header&0x40?"AP":"DAP",header&0x20?"Read":"Write", dat);
return 14+32;
}
Chris
No y. schrieb:> was wird da wohl in dem Flash drin stehen?>> Kannst du den auslesen? Vielleicht steht da die VID/PID drin. Wobei man> dazu ja anscheinend meist bei billigen Sachen nen EEPROM benutzt.
Das ist ein 16mbit Device. Da wird wohl etwas mehr drin gespeichert sein
als nur VID/PID. Nur was? Auslesen will ich es lieber nicht, ich will
den NU-Link nicht beschädigen.
chris schrieb:> x> parity error header x> ack = 1 SWD(1) DAP Write = 0x997dec09> ack = 1 data parity error> SWD(1) DAP Write = 0x197ccc09> ack = 7 SWD(2) DAP Write = 0xf3181332
Ich habe mir inzwischen noch einmal einige Stellen das Protokolls per
Hand angeschaut. Es wird sehr lange einfach nur "Line Reset" und "Read
IDCODE" gesendet, worauf das Target nicht zu antworten scheint. Erst
ganz am Ende des "ID-Device" blocks findet eine gültige Kommnukation
statt. Ich habe diesen Bereich mal ausgeschnitten und angehängt.
Übrigens musste ich zur Auswertung des Anwort des Targets tatsächlich
die fallende Flanke auswerten, da es manchmal am Übergang Glitches gab.
Evtl. müsstest Du das in Deinem Code auch berücksichtigen.
Der Screenshot zeigt ein "READ"-Feld, in dem das Target sendet. Manchmal
hat der LA einen Übergang auf der steigenden Flanke gesampled, machmal
danach.
chris schrieb:> Nur zur schnellen Erklàrung:> parity error header -- discard bit and repeat header parsing.> Ack error -- Protocol error, no answer from target> data parity error -- parity error on 32bit data field.
Also wenn ich das richtig verstehe, ist das Log auf dem Post oben aus
einem Bereich wo das Target nicht antwortet.
t.
> Ich will noch einen Filter fuer die Raw Daten reinmachen,> und dann anstelle oder zusàtzlich zum derzeitigen Debug Ausgabe> ein Replay C File generieren damit man dann testen kann, ob man dies
Ich fürchte ja fast, dass es nicht ausreicht, einfach nur die
Signalsequenz zu wiederholen. Es ist wohl notwendig, die
Registerzugriffe zu extrahieren und mit einem simplemen SWD-Treiber
wieder abzuspielen. Aber zum Glück ist das Low-Lowevel Protokoll ja
relativ einfach.
> mit irgendeiner CPU raufspielen kann, ungeachtet aller Timings.> Hier mein derzeitiger Code , der Rueckgabewert ist die Anzahl der bits> to discard, data ist 64bit bitstream Variable als einziges Argument der> Funktion.
Wie extrahierst Du denn "data"? Wie oben geschrieben, müsste man das
evtl. Kontext-Sensitiv tun. Was machen "lsb" und "parity"?
P.s.: Ich habe per Hand den IDCODE 0x0BB11477 ermittelt. Dabei stimmt
die Vendor Id in [11:] = 0x23B, allerdings ist die Device ID in [27:12]
mit 0xBB11 evtl. nicht richtig.
Tim schrieb:> ganz am Ende des "ID-Device" blocks findet eine gültige Kommnukation> statt. Ich habe diesen Bereich mal ausgeschnitten und angehängt.
Hier ist auch die Datei.
> Wie extrahierst Du denn "data"? Wie oben geschrieben, müsste man das> evtl. Kontext-Sensitiv tun. Was machen "lsb" und "parity"?>
Vom binary dump durch das Programm swd_dat generiere ich eine Datei,
welche
den Bitstream enthàlt, bei steigender Flanke von clk.
Ich lese diesen Bitstream dann in der Variable data ein, Msb first.
Aus diesem Grunde gibt es die Funktion lsb(len,offset,data) welche den
lsb first Wert aus data zurueckgibt. Parity gibt das parity bit zurueck.
> P.s.: Ich habe per Hand den IDCODE 0x0BB11477 ermittelt. Dabei stimmt> die Vendor Id in [11:] = 0x23B, allerdings ist die Device ID in [27:12]> mit 0xBB11 evtl. nicht richtig.
Ich habe den Verdacht, dass die Turnaround time veràndert wird und es
dadurch dann zu Timingverschiebung kommt.
Gibt es eine Mòglichkeit die Geschwindigkeit runterzusetzen, kònnte ein
Workaround sein, damit die Turnaround Zeit nicht raufgesetzt wird.
Zum Programm, sind einfach gemacht, Daten werden als stdin eingelesen,
und
ueber stdout ausgegeben, also cmd Umleitung verwenden.
dump -- was àhnliches wie hexdump, wenn man ein x-beliebiges Argument
dazugibt, dann werden gleiche Daten ignoriert.
swd_dat -- convertiert das Binary in einen gueltigen Datenstream, eine
Art spi protokoll decoder.
swd_dump -- dump der Kommunikation. Derzeit rudimentàr. -v als Argument
gibt mehr verbosity info, man sollte dies mal probieren, derzeit max
drei mal hintereinander.
Tim schrieb:> Informationen zu SWD und freie Implementierungen sind immer noch recht> spärlich. Hier einmal das, was ich bisher gefunden habe:
Vor kurzem war in einem Thread:
Beitrag "Logic analyzer HP, Tek - Protokollauswertung" von einem Zeroplus Logic
Analyzer die Rede bei welchem der Käufer aus einer Reihe von
Protokollanalyseoptionen wählen kann.
Einer davon war der SWD. Eventuell hat den einer oder weiss von jemanden
der einen hat?
Zum Thema "Daten erfassen":
SWD ist bis 50MHz Takt spezifiziert. Das sind 20ns. Da wird es also
keine langen Haltezeiten geben. Unmittelbar nach der gültigen Flanke ist
das Signal schon wieder weg.
Eine asynchrone Aufzeichnung müsste also mit 100MHz erfolgen. Das ist
unrealistisch und ergibt einen Wust an Daten.
Der Saleae kann auf Flanke triggern. Also warum nicht die Datenerfassung
auf der positiven Clock Flanke machen? Eventuell zusätzlich zwei
Inverter zwischen Nulink-Takt-Ausgang und Board-Takt-Eingang schalten,
den Saleae mit seinem Trigger Kanal am Nulink. Das könnte 10ns
Sicherheit geben (in der Hoffnung, dass der Nulink etwas Haltezeit für
die Daten hat).
Bei der Gelegenheit die Frage, ob jemand den User Guide für Saleae
Version 1.0.21 hat. Online kommt leider die falsche Version, die im GUI
etwas anders ist. Ich kann mir die Funktionen denken, bin an einigen
Stellen aber nicht sicher.
Simon schrieb:> Hat jemand eigentlich schonmal die arduino Software von> https://bitbucket.org/rivig/v202/src/c2142a790c463abff9004b761e013cff6735f50b/V202_arduino/?at=default> mit dem copter ans laufen bekommen?> Ich hab da jetzt mal ein bisschen mit rumgespielt (atmega328p +> nrf24l01) aber bei> mir bindet der copter nicht mit der Software. :-\
Ich glaube Helmut hat das hinbekommen, wenn ich seine Bemerkung richtig
interpretiere.
Helmut H. schrieb:> https://bitbucket.org/rivig/v202 schickt zum Binden mehrere 0-Sätze mit> byte[14]=0xc0 und geht dann in den Normalbetrieb. Mein jd385 bindet aber> auch wenn [14]==0 ist.>> NB: Das Steuern des Helis über Tastatur ist deutlich schwieriger als> über die Fernbedienung :-)
Magst Du uns verraten, was Du hier gemacht hast? :)
Georg G. schrieb:> Bei der Gelegenheit die Frage, ob jemand den User Guide für Saleae> Version 1.0.21 hat. Online kommt leider die falsche Version, die im GUI> etwas anders ist. Ich kann mir die Funktionen denken, bin an einigen> Stellen aber nicht sicher.
Ist nicht 1.1.15 die neuste Version?
Habs mit dem Original nicht probiert, aber müsste eigentlich wenn man
einen der #if 0 für die Definition der txid's zu #if 1 macht
Mit dem angehängten Testprogramm, das davon geklaut ist, gehts mit
uint8_t txid[3] = { 0xcd, 0x31, 0x71 } bei meinen beiden Helis.
* Stromlosen Heli mittels handelsüblichen Nähgarns(z.B. "Sternzwirn
hohreißfest") so an einer Unterlage befestigen, so dass er sich zwar
bewegen, aber nicht entkommen kann
* Software auf Arduino starten (benutze 8 für CE und 9 für CSN)
* Terminal mit 115200
* tippe H für Hopping-Kanäle aus der o.a. txid berechnen
* tippe s für senden, man sieht die gesendeten Werte von buf[0] bis
buf[3]
* Heli stromversorgen
* Warten bis er langsam blinkt
* tippe b für Binden, das schickt einfach 50 bind-Sätze.
* Heli LEDs bleiben an
* Üben mit +, -, i,j,k,m. Das ändert throt um 10 (von 0-255), roll und
pitch um 4 (von 0x19 ..0 oder ox80 ..0x9f)
* Leertaste setzt alle Werte wieder auf 0 zurück.
* Nähgarn durchschneiden
Mit anderen txids funktioniert das Binden nur manchmal, habe mich aber
nicht weiter darum gekümmert.
N.B: Interessante Erfahrung, wenn Programmier- oder Bedienungsfehler
sofort mit Schmerzen bestraft werden. Beabsichtige dies als "Taktile
Feedback Driven Super Agile Software Development" zu vermarkten.
Nabend Leute,
Interessanter Thread! Cooles Projekt.
Wie oben schon mal angefragt, hätte ich hier einen LA von Zeroplus, der
kann das SWD Protokol analysieren. Ich weiß nicht genau wie weit ihr
seid und ob das noch was helfen könnte?
Gruß Daniel
Hmm irgendwas stimmt mit meiner atmega nrf24l01 connection nicht.
Prinzipiell sieht die Verbindung wohl gut aus, beim init bekomme ich
das:
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0x8686866688 0x6868688866
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0x8686866688
RX_PW_P0-6 = 0x10 0x10 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x07
CONFIG = 0x0f
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_HIGH
Ich sehe mit dem LA auch auf MOSI/MISO die geschriebenen und gelesenen
Werte.
Aber wenn ich auf senden gehe (mit debugflags) dann bekomme ich:
*** CHANGING TO SEND ROLE -- PRESS 'r' TO SWITCH BACK
write_register(11,10)
write_register(12,10)
write_register(02,03)
Writing Pipe
write_register(00,0e)
write_register(07,70)
...OK.write_register(00,0c)
00 00 00 00
write_register(05,1f)
write_register(00,0e)
write_register(07,70)
...Failedwrite_register(00,0c)
00 00 00 00
write_register(00,0e)
write_register(07,70)
...Failedwrite_register(00,0c)
00 00 00 00
write_register(05,3d)
write_register(00,0e)
write_register(07,70)
...Failedwrite_register(00,0c)
Also mal gehts mit ok durch, zu 99% endet das senden aber mit Failed.
Hat irgendjemand einen Tipp für mich?
Gruss,
Simon
Also irgendwas ist bei meiner RF24.cpp im argen, da ist schonmal beim
senden CE LO und HIGH vertauscht...
Helmut: könntest Du noch deine RF24.h/cpp, RF24_config.h und nRF24L01.h
posten? Das wäre super.
Gruss,
Simon
Ok, Problem gelöst... Ich habe das mit nem chinesischen arduino nano 3
clone getestet.
Das NRF24L01 (ohne pa) hab ich an den 3.3V out vom ftid (wie ich dachte)
gehängt,
der kann ja normalerweise bis 60mA liefern. Sollte für die 10mA vom
nrf24 also reichen. Zumindest für den ohne PA, für den leistungsfähigen
mit PA braucht man ja eh nen 3.3V Regler.
ACHTUNG: (zumindest mein) Clone hat nen PL2303, der liefert wenn
überhaupt nur 19mA für PL2303 + NRF24.
Das führte dazu dass sich mein NRF24 immer geresettet hat.
Lösung: 3.3V Regler für den NRF24.
Gruss,
Simon
@Simon: schön dass es funktioniert.
Simon schrieb:> Helmut: könntest Du noch deine RF24.h/cpp, RF24_config.h und nRF24L01.h> posten? Das wäre super.
Nur der Vollständigkeit halber: Erforderlich sind die aktuellen Dateien
von https://github.com/maniacbug/RF24 nach libraries/RF24. Habe nichts
daran geändert.
Hi ich will die Reichweite erhöhen sender/Empfänger wo bring ich die
antenne am besten an ?
Hat jemand schonmal die reichweite getestet.
Bei mir sind 80 meter möglich, 200-500m wären gut .
Turbonator schrieb:> Bei mir sind 80 meter möglich, 200-500m wären gut .
Ich habe es bisher noch nicht geschafft die Reichweite zu überschreiten.
Wie denn auch? Wenn er so weit weg ist sieht man ihn sowieso nicht mehr,
das einzige was man damit erreichen würde wäre, dass er unkontrollierbar
(da fast nicht mehr sichtbar) irgendwo abstürzt.
Ich habe leider in den letzten Tagen keine Zeit gefunden, mich weiter
mit dem copter zu beschäftigen. Das wird sich aber hoffentlich wieder
ändern.
Nur kurz ein paar Kleinigkeiten:
- Das Bu-Link ist immer noch nicht da.
- Programmieren mit dem Nu-Link funktioniert wunderbar. Das CMSIS-Blinky
ist jetzt auch auf richtiger Hardware erprobt. Auch die Ausgabe über die
serielle Schnittstelle funktioniert:
https://github.com/hackocopter/Examples/tree/master/Blinky-CMSIS
-Die Platinen für den LiPO-Charger sind angekommen. Leider konnte ich
ihn noch nicht testen, da mir das IC noch fehlt. Aus einem mir
unerfindlichen Grund hat OSH-Park mir sogar die doppelte Anzahl an
Platinen geschickt. Daher würde ich an die ersten drei, die mir ihre
Adresse per PM schicken, eine abgeben. Bitte nur anfragen, wenn ihr
später auch hier über euren Aufbau berichtet :)
https://github.com/hackocopter/LiPoCharger
-Bezüglich der Chip-Erase Sequenz habe ich mir überlegt, eine Low-Level
SWD Implementierung zu programmieren. Mit den Beispielen und der
Dokumentation ist das nicht sonderlich kompliziert, hilft aber auch das
Protokoll besser zu verstehen. Außerdem ist dann die Software zum
Unlocken gleich mit fertig.
bezueglich Unlock.
Es geht definitiv nicht ueber normales SWD.
Teilweise waren logs da, wo SWD waehren Reset gemacht wurde,
andererseits existieren Logs mit speziellen High Waveforms welche
definitiv nicht das SWD Protokoll sind.
Es waere hilfreich, zwei komplette Logs zu haben, einmal von einem
ungesperrten Baustein, und einmal von einem welcher looked ist und
testen,
ob es da differenzen gibt.
Philipp E. schrieb:> Kannst du> den Chip noch einmal locken (aber sonst leer lassen) und noch mal das> Unlock + Erase aufzeichnen? Weiterhin wäre ein reines Erase auf einem> nicht gelockten (und ebenfalls leeren) Chip interessant.chris schrieb:> Es waere hilfreich, zwei komplette Logs zu haben, einmal von einem> ungesperrten Baustein, und einmal von einem welcher looked ist und> testen,> ob es da differenzen gibt.
Glaube auch das die beiden Logs zusammen sehr hilfreich wären. Dann
könnte man das SWD darin parsen und schauen was dann noch für Waveforms
übrig bleiben.
chris schrieb:> Es waere hilfreich, zwei komplette Logs zu haben
Aber bitte nicht wieder mit freilaufendem Takt sondern auf die positive
Flanke getriggert.
Philipp E. schrieb:> kann mir jemand sagen, was das für ein Connector
Im "nRF24LU1 Reference Design" (was anscheinend die 2.4G NRF24lu1p
china dongle ist)
http://www.freqchina.com/en/down.asp?ID=102
ist ein adapter kabel gezeigt "nRF24LU1 USB Dongle Programming adapter
cable", die passende buchse ist in der BOM als "JST BM05B-SRSS-TB"
gelistet. Der stecker ist also JST SH familie, 5pin, 1mm pitch.
Ok, weiter gehts. Hier sind ein paar neue Logs:
->connect__protected_device_-disconnect
Verbinden und Verbindung wieder trennen. Read protect ist gesetzt.
->connect-chip_erase-disconnect
Verbinden, Chip erase und disconnect. Read protect war gesetzt.
->connect-program_fuses_to_protect-erase-disconnect
Verbinden, Read protect fuse setzen und disconnt. Read protect war nicht
gesetzt.
Bit 0- SWDIO
Bit 1- SWDCLK
Bit 2- Reset (wird nie ausgelöst)
Georg G. schrieb:> chris schrieb:>> Es waere hilfreich, zwei komplette Logs zu haben>> Aber bitte nicht wieder mit freilaufendem Takt sondern auf die positive> Flanke getriggert.
Das kann der LA leider nicht. Das Triggering bezieht sich wirklich nur
auf den Startzeitpunkt der Aufzeichnung. Danach wird einfach nur
gesampled. Dafür haben die ganzen "professionellen" LA nicht die
Speichertiefe.
Letztendlich bin ich aber immer noch davon überzeugt, dass das Protokoll
nicht darauf angewiesen ist, innerhalb eines sehr kleinen Zeitfensters
zu samplen. Für so etwas wäre auf der Host-seite dedizierte Hardware
notwendig. Das Nu-Link, und wahrscheinlich die meisten anderen
SWD-Adapter auch, nutzt anscheinend die GPIO Pins an einem normalen
Mikrocontroller per "Bit-Banging" Daher ist es gar nicht möglich, ein
Clock-Signal auszugeben und gleichzeitig auf einer Flanke zu sampeln.
chris schrieb:>> Wie extrahierst Du denn "data"? Wie oben geschrieben, müsste man das>> evtl. Kontext-Sensitiv tun. Was machen "lsb" und "parity"?>>> Vom binary dump durch das Programm swd_dat generiere ich eine Datei,> welche> den Bitstream enthàlt, bei steigender Flanke von clk.> Ich lese diesen Bitstream dann in der Variable data ein, Msb first.> Aus diesem Grunde gibt es die Funktion lsb(len,offset,data) welche den> lsb first Wert aus data zurueckgibt. Parity gibt das parity bit zurueck.
Wie schon oben geschrieben, ich denke hier liegt m.E. das Problem.
Daten, die vom Target gesendet werden, müssten auf der nachfolgenden
fallenden Flanke ausgelesen werden. Das Einlesen der Daten und der
Protokollanalyzer lassen sich demnach nicht trennen.
Torsten C. schrieb:> Kommt man vielleicht schneller weiter, wenn man per USB-Sniffer die> Kommunikation zum NuLink mitschneidet? Nur ein Gedanke ...
Damit würden sich bestimmt einfach binärdaten abfangen lassen. Aber der
Befehl, den der Computer an das NU-Link zum Löschen sendet kann ziemlich
beliebig sein. 42? 請刪除該芯片? "kill them all"?
Tim schrieb:> Das kann der LA leider nicht
Dann muss man mit einem Flipflop zwischen Nulink-Daten und
Analyser-Daten nachhelfen, damit die Daten immer zur Flanke passen. Mit
freilaufendemTakt kommt es schnell zu Schmutzeffekten. Aber vielleicht
haben wir ja Glück.
Ich habe den SWD-Analyzer von Chris etwas erweitert. Aktueller Stand
anbei.
- Bug: Read und Write waren verwechselt
- Bug: lsb(...) wurde bei mir nicht richtig compiliert, da Maskierung
nicht long long war
- Neu: rising udn falling edge werden ausgewertet
- Neu: Analyse in einem Durchgang
Leider ergeben die Logs immer noch nicht so recht viel Sinn. Sie sind
voll von erfolglosen versuchen, den SWD-Port zu resetten. Ich werde
später weiter machen, vermute aber langsam, dass es doch einfacher ist,
sich über eine SWD-Implementierung heranzutasten. Welche Sequenz für
Chip-Erase verantwortlich ist, lässt sich ja einkreisen.
Tim schrieb:> Ich habe den SWD-Analyzer von Chris etwas erweitert.
Bitte noch etwas mehr erweitern:
<string.h> mit dazu.
Funktionen, die nichts zurück geben als void definieren.
Dann meckert LCC32 auch nicht mehr :-)
Georg G. schrieb:> Ich habe den SWD-Analyzer von Chris etwas erweitert.>> Bitte noch etwas mehr erweitern:> <string.h> mit dazu.> Funktionen, die nichts zurück geben als void definieren.
Du meinst, ich sollte den Source lieber in das Repository laden? :)
Ist schon geschehen:
https://github.com/hackocopter/SWD-Hacking
mingw-gcc ist übrigens ziemlich schmerzfrei.
Tim schrieb:> mingw-gcc
Mag sein. Aber nichts hält sich hartnäckiger als Software, mit der man
seit mehr als 10 Jahren problemlos arbeitet.
Ich würde die typedefs auch anders machen, mit Typen aus stdint.h, also
nicht z.B. short int sondern int16_t. Ist defensiver.
Und immer noch kein Copter gekommen...
Georg G. schrieb:> Tim schrieb:>> mingw-gcc>> Mag sein. Aber nichts hält sich hartnäckiger als Software, mit der man> seit mehr als 10 Jahren problemlos arbeitet.>> Ich würde die typedefs auch anders machen, mit Typen aus stdint.h, also> nicht z.B. short int sondern int16_t. Ist defensiver.
chris scheint K&R C zu programmieren, ich halte mich eher an
Ansi-C90/C95. Was Du siehst ist eben der resultierende Mischmasch.
Einige casts mit long long haben mir auch ziemliche Probleme bereitet.
Werde ggf. den Source noch aufräumen, aber im Moment ist mir die
Funktion wichtiger. Die int-typen sind wahrscheinlich C99?
Sensation! Obiges lag gerade in der Post. Die Nuvoton-Tools haben es als
Nu-Link erkannt und die Software auf den neusten Stand gebracht. Es
scheint sich also um einen kompatiblen Clone zu handeln. Jetzt müsste es
nur wieder lieferbar sein...
Ich bin mit dem Entschlüsseln des Protokolls auch entscheidend weiter
gekommen. Später mehr.
Der SWD-Analyzer ist jetzt in der Lage, die meisten Logs komplett
fehlerfrei zu interpretieren. Das heisst dass Reset- und Idle Sequenzen,
sowie fehlerhafte Pakete (Start/Stop bit, Parity) korrekt identifiziert
werden.
Dabei hat sich übrigens auch herausgestellt, dass die vermutete
Erase-Sequenz von oben in Wirklichkeit eine abgebrochene Reset-Sequenz
ist. Die Reset-Sequenz des Nuvotons hat gegenüber der Spezifikation
allerdings einen zusätzlichen Low-Zyklus auf der Datenleitung. Oben zum
Vergleich ein Reset vom Nu-Link und ST-Link. Ob das einfach nur ein Bug,
oder doch relevant ist, lässt sich noch nicht sagen.
Die meisten der bisher geposteten Logs werden mit 0 erkannten Fehlern
geparsed. Dieses ist recht beeindruckend, da das bedeutet dass das Log
der Host-Kommunikation fast frei von Bitfehlern ist. Bei teilw. >8e8
Samples schons bemerkenswert. Leider gilt das nicht für die
Rückmeldungen vom Target, die etliche Übertragungs- und Paritätsfehler
enthalten. Ich werde hier wohl doch noch einmal an die HW müssen...
Aktueller Stand hier:
https://github.com/hackocopter/SWD-Hacking/tree/master/SWD-Analyzer
Tim schrieb:> s> scheint sich also um einen kompatiblen Clone zu handeln. Jetzt müsste es> nur wieder lieferbar sein...
Wow, das hört sich ja wirklich toll an. Aber schade, dass der jetzt
nicht mehr lieferbar ist.
Ich glaube die Post wollte mir heute meinen Quad auch endlich bringen,
bin gespannt auf morgen.
So, jetzt funktioniert der SWD-Analyzer. Es wird der komplette
Datenverkehr ohne Bit- und Paritätsfehler geparsed. Erstaunlicherweise
funktioniert das mit 16M Samplerate sogar noch bei 4Mhz SWD-Clock.
https://github.com/hackocopter/SWD-Hacking/tree/master/SWD-Analyzer
Ein nerviges Problem war die Gültigkeit der Daten vom Target. Es stimmt
natürlich, dass diese bei der steigenden CLK-Flanke herausgeclocked
werden. Durch die Gatterlaufzeit im Target, erscheinen die Daten
natürlich verzögert am Ausgang, was im LA zu glitches führt. Was mich am
Anfang verwirrt hat, ist dass die Daten bereits im vorhergehenden
Taktzyklus herausgeclocked werden. Dafür gibt es die Turnaround cycles.
Ich habe das Problem jetzt gelöst, in dem ich die Daten an der
vorhergehenden fallenden Flanke einlese. Aus dem Timing sieht man, dass
das Nu-link selbst wohl genau das gleiche macht. Ein Flip-Flop hätte
auch funktioniert, wie Georg oben schon angemerkt hat.
So, die Herausforderung besteht jetzt natürlich darin, die Chip-Erase
Sequenz zu isolieren. Falls jemand mitpuzzeln will - ich habe hier ein
paar Logs als Rohdaten und nach dem Parsen abgelegt:
https://github.com/hackocopter/SWD-Hacking/tree/master/Nulink-Logs
Ich habe bereits einen heißen Kandidaten für die Chip-Erase Sequenz
identifiziert. Direkt nach dieser Sequenz ist der Chip nämlich für 140ms
"tot" und wird über einen Registerzugriff und die Resetsequenz gepollt.
Die Sequenz beginnt mit einem Reset. Möglicherweise handelt es sich
daher also um den Relevanten Teil.
Die höheren Ebenen des SWD-Protokolls wirken auf mich ziemlich wirr.
Einen Masterplan scheint es beim Design nicht gegeben zu haben. Ich
frage mich, welche Randbedingungen hier relevant waren. Der Zugriff auf
die tatsächlichen Funktionsregister erfolgt zweifach indirekt, wie im
Bild.
Dies sind die besten SWD-Referenzen:
http://sourceforge.net/apps/mediawiki/stm32primer2swd/index.php?title=Main_Page#SWD_Packet_Constructionhttp://www.pjrc.com/arm/pdf/doc/ARM_debug.pdf
Geschafft! Ich habe die Chip-Erase Sequenz extrahieren können. Damit ist
es jetzt möglich, den Microcontroller ohne Bu-Link/Bu-Link zu
programmieren. Noch einmal vielen Dank an Robert für das zur Verfügung
stellen des NU-Links. Und an chris, georg und die anderen für die Hilfe.
Das ganze ist aber noch aufwändiger geworden als gedacht. Um mit der
Datenflut etwas anfangen zu können, habe ich auch noch die derüber
liegende Ebene, nämlich die Speicherzugriffe, geparsed.
Der aktuelle Source ist hier:
https://github.com/hackocopter/SWD-Hacking
Durch den Vergleich von unterschiedlichen Logs habe ich die
Chip-Erase-Sequenz finden können. Anbei das kommentierte Log der
Sequenz. Der Relevante Teil ist unten. Eigentlich ist es recht einfach.
Die Chip-Erase Sequenz wird natürlich über die Flash-Register
kontrolliert. Es gibt anscheinend ein undokumentiertes Enable-Register
(0x5000C01C) und einen Undokumentierten Befehl (0x26) für das ISP
Command register.
1
@3315.698313ms:Read Buf(0x5000c000)=0x00000032 ; ISP control
2
@3315.738438ms:Write BD (0x5000c000)=0x00000033 ; ISP Control=0x33 Set bit 1= Enable ISP function... really?
Die große Frage ist jetzt natürlich wie man das am besten Umsetzt. Weiss
jemand, ob sich die Befehlssequenz z.B. über ein Script in
Keil/OpenOCD/etc. abbilden liesse?
Eine andere Möglichkeit wäre eine kleine SWD-Implementierung auf einem
Microcontroller, die nichts anderes tut als zu überprüfen ob das
richtige Device angeschlossen ist und ein chip erase durchzuführen. Im
Vergleich zum parsen des Logs erscheint das fast trivial, aber diese
Woche nicht mehr... :)
SWD ist übrigens ein ganz schreckliches Protokoll. Und das Nu-Link ist
eine noch schlimmere Umsetzung davon -> Glitches, übles Timing und
redundante Zugriffe.
Tim,
könntest Du bitte mal erklären wie Du vorgegangen bist. Mit dem LA den
Datenstrom aufzeichnen ist klar. Ich bin nur nicht durchgestiegen wie Du
das Protokoll jetzt rekonstruiert hast. Muss jetzt nicht jedes kleinste
Detail sein. Aber so ein paar Stichworte, für jemanden, der sich mit uC
einigermaßen auskennt aber nicht mit Protokollanalyse, wären super.
Also bei Keil und dem JLink lassen sich Scripte eingeben mit Delay,
Write/Read Register usw...
Da die ST-Link ja abgespeckte J-Links sind denke ich mal es geht..
Was mich jetzt mal interessieren würde ist was sonst noch so in dem
"versteckten" Register für Bits gesetzt werden können..!?
Mein 2. Flattermaxe von Tonnse_mall ist heute angekommen!
Edit: Würde mich auch mal interessieren..
Antwort auf eine Anfrage an den Hersteller via AliExpress:
"SUSAN LIU: Hi, yes, the bulink will be avaiable after Christmas
holiday, the main IC is out of stcok now."
-----
@ Oliver Beitrag "Re: Hackbarer(?) 21 EUR Quadcopter"
Das ist wirklich preiswert! Die Preise sind in Dollar.
Georg G. schrieb:> No y. schrieb:>> Mein 2. Flattermaxe von Tonnse_mall ist heute angekommen!>> Wann bestellt? Ich warte auch auf Post von denen.
und gut drei Stunden nach dieser Mail war er auch hier. Und er fliegt
sogar :-)
Ich werde dann mal versuchen, die LCD Ansteuerung im Sender zu verstehen
(sie ist aktiv).
So mein Quad ist heute auch von der Post geholt worden. Ich werde also
nun auch etwas aktiver sein, hoffentlich :)
Aber zu fliegen ist das Teil am Anfang ja wirklich schwer
Mal ne andere Frage:
Ich hab meinen gerade auseinandergenommen und wieder zusammengeschraubt.
Wie viele der Schrauben hatten denn danach bei euch noch richtig Biss?
Ich frag mich nur, was an dem Teil jetzt so doll sein soll, daß man so
lange darauf wartet. Fliegt das Spielzeug jetzt nicht so schnell in die
Ecke, wie die anderen Mini-Helis?
Bei Aldi gibts jetzt einen für 24,95, sieht besser aus man kann ihn
sogar gleich mitnehmen. Für ein paar Euro mehr gibts dann die
4-kanaligen, die dann genauso oder besser fliegen wie sonn Quad.
Erstmal ganz großes Lob und vielen vielen Dank für die tolle Arbeit!!!
Tim schrieb:> Eine andere Möglichkeit wäre eine kleine SWD-Implementierung auf einem> Microcontroller, die nichts anderes tut als zu überprüfen ob das> richtige Device angeschlossen ist und ein chip erase durchzuführen.
Haben die Jungs vom McHck nicht eine SWD implementierung gezimmert?
Könnte eventuell als Grundlage dienen...
https://github.com/mchck/mchck
Philipp E. schrieb:> Erstmal ganz großes Lob und vielen vielen Dank für die tolle Arbeit!!!>> Tim schrieb:>> Eine andere Möglichkeit wäre eine kleine SWD-Implementierung auf einem>> Microcontroller, die nichts anderes tut als zu überprüfen ob das>> richtige Device angeschlossen ist und ein chip erase durchzuführen.>> Haben die Jungs vom McHck nicht eine SWD implementierung gezimmert?> Könnte eventuell als Grundlage dienen...> https://github.com/mchck/mchck
Es hindert dich niemand den Link von dir und die Infos von Tim
zusammenzuführen.
Davis schrieb:> Es hindert dich niemand den Link von dir und die Infos von Tim> zusammenzuführen.
Doch. Noch nicht angekommener Copter. Frau. Kinder. Job. Zeit...
Ich habe den SWD-Analyzer noch einmal etwas überarbeitet.
-C99 Datentypen eingeführt, Source aufgeräumt.
-Verbose level lassen sich jetzt von der Commandozeile auswählen.
-Parsing der AHB-Registerzugriffe verbessert. Dummy-Lesezugriffe werden
jetzt nicht mehr angezeigt.
https://github.com/hackocopter/SWD-Hacking
Hier sind nach dem Parsing mit der neusten Version die notwendigen
Zugriffe zum Chip-Erase:
Dann will ich mich auch mal melden, meiner ist nun auch endlich
angekommen. Bestellt hatte ich am 22.10.2013.
Danke an den Threadstarter!
Ich wäre auch noch an 1-3 stück interressiert, falls es eine
Sammelbestellung gibt.
Robert Knipp schrieb:> könntest Du bitte mal erklären wie Du vorgegangen bist. Mit dem LA den> Datenstrom aufzeichnen ist klar. Ich bin nur nicht durchgestiegen wie Du> das Protokoll jetzt rekonstruiert hast. Muss jetzt nicht jedes kleinste> Detail sein. Aber so ein paar Stichworte, für jemanden, der sich mit uC> einigermaßen auskennt aber nicht mit Protokollanalyse, wären super.
Prinzipiell sind solche Protokolle ja wie eine Zwiebel in mehreren
Schichten aufgebaut. Ich habe mich dabei von der niedrigsten
Protokollebene, dem Hardwarelevel immer weiter nach oben gehangelt.
(Bzw. Chris hat den Anfang gemacht). Am besten schaust Du Dir den Source
an:
https://github.com/hackocopter/SWD-Hacking/blob/master/SWD-Analyzer/swd_analyzer.c
1) Konvertieren der Samplingdaten in einen Bitstream, der nur Daten auf
steigenden und fallenden Flanken enthält. (macht getnextperiod())
2) Einteilen des Bitstreams in interpretierbare Dateneinheiten. Dazu
habe ich zunächst nur geschaut, ob sich gültige Befehle (Reset-Sequenz
oder Read/write) im Bitsream befinden und wie lang diese sind. Das
geschieht in der Hauptschleife. Dazu wird bei SWD- Lese- und
Schreibzugriffen der Header ausgewertet (Bild). Wenn er gültig ist,
werden die Daten interpretiert, sonst verforfen.
3) Interpretieren und übersetzten der SWD-Befehle (macht swd()).
4) Nachbilden des Memory Access Ports (Bild), um die SWD-Befehle in
Schreib- und Lesezugriffe auf die Peripherie des Prozesseres zu
übersetzen. Denn per SWD wird im Grunde nichts anderes gemacht, als den
Prozessor anzuhalten und auf den Addressraum zuzugreifen. Leider
geschieht das auf eine extrem umständliche Art. Es gibt z.B. drei
unterschiedliche Möglichkeiten eine Speicherzelle auszulsen.
Die Daten die auf den unteren Protokollebenen Interpreitert werden, kann
der Analyzer auch ausgeben. (Kann mit mit -v x einstellen. --help zeigt
eine Hilfe an).
No y. schrieb:> Also bei Keil und dem JLink lassen sich Scripte eingeben mit Delay,> Write/Read Register usw...
Hast Du dazu eine Referenz, oder kennst Du selbst damit aus? Das wäre
natürlich die beste Lösung, da Keil mit vielen SWD-Adaptern zurecht
kommt.
No y. schrieb:> Was mich jetzt mal interessieren würde ist was sonst noch so in dem> "versteckten" Register für Bits gesetzt werden können..!?
Wahrscheinlich nur das eine, aber Du kannst damit ja mal herumspielen.
> Mein 2. Flattermaxe von Tonnse_mall ist heute angekommen!
Habe heute auch gerade einen von denen bekommen. Komisch, da ist wohl
ein Container angekommen?
Oliver Stellebaum schrieb:> Kauderwelsch nicht.> Meiner von aliexpress ist leider noch nicht da :-(>> Für 13 Euro> http://de.imendit.com/item/bu-link-really-is-fully-compatible-with-the-nu-link-emulator-offline-download-full-version-12369014346.html
Das ist ein Taobao-Agent, der sie für Dich von www.taobao.com kauft und
Dir zusendet. Dort werden auch einige Bu-Links angeboten. Auf den Preis
kommen noch erhebliche Zusatzgebühren.
Manuel Steiner schrieb:> Ich hab meinen gerade auseinandergenommen und wieder zusammengeschraubt.> Wie viele der Schrauben hatten denn danach bei euch noch richtig Biss?
Eigentlich alle? "Nach fest kommt ab" usw. :)
Philipp E. schrieb:> Haben die Jungs vom McHck nicht eine SWD implementierung gezimmert?> Könnte eventuell als Grundlage dienen...> https://github.com/mchck/mchck
Hatte ich oben auch schon gepostet. Leider haben die nur die
allerunterste Ebene im client implementiert, den Rest macht der PC.
Prinzipiell würde es gar nicht so lange dauern, ein kleines
Bitbang-SWD-Programm zum programmieren welches Chip-Erase macht - auf
jeden Fall ist das weniger aufwändig als der Analyzer.
Allerdings benötigt man sowieso noch einen Keil-kompatiblen SWD-Adapter
für die Programmierung. Da wäre es einfacher, diesen über ein Script
anzusteuern.
Georg G. schrieb:> Ich werde dann mal versuchen, die LCD Ansteuerung im Sender zu verstehen> (sie ist aktiv).
Es wäre natürlich praktischen, wenn man nur ein LCD anschließen müsste.
Entschuldigung ich muss mich korrigieren.
Ein Script lässt sich in J-Flash zusammenklicken. Nicht Keil!!
Hab mich da leider vertan. Ist schon länger her, dass ich da rumgesucht
hatte.
Bringt also nichts. Ich glaub selbst mit nem J-Link Edu bringt es nichts
da keine J-Flash Lizenz dabei ist. Weiß daher nicht ob die Scripts
ausgeführt werden oder ob zuerst der Lizenzfehler kommt. Werde ich
demnächst mal ausprobieren.
No y. schrieb:> Entschuldigung ich muss mich korrigieren.>> Ein Script lässt sich in J-Flash zusammenklicken. Nicht Keil!!> Hab mich da leider vertan. Ist schon länger her, dass ich da rumgesucht> hatte.
Also für mich sieht es aus, als wenn es mit den Debug Function im Menu
Debug->Function Editor funktionieren könnte. Man kann damit functionen
definieren, die Befehle wie _WWORD (0x20000, 123); beinhalten, mit denen
man den Speicher des Targets beschreiben kann. Oder verstehe ich hier
etwas falsch?
Es hat sich herausgestellt, dass es wirklich sehr einfach ist, mit
"Functions" im KEIL Debugmodus eigene SWD-Sequenzen zu definieren. Mit
dem Anhängenden Beispielprojekt lässt sich Chip-Erase jetzt mit jedem
beliebigen SWD-Adapter an KEIL durchführen. Mit ST-Link funktioniert es
wunderbar.
Leider gibt es noch ein paar Probleme mit ST-Link und Keil. Mann kann
programme Downloaden, aber nicht debuggen und ausführen. Woran es liegt
weiss ich nicht. Evtl. hilft hier Versaloon usw. Kennt sich hier jemand
aus?
https://github.com/hackocopter/SWD-Hacking/tree/master/KEIL-Flashtools
Hier nur kurz:
-Es wird Keil µVision5 mit Legacy Device support benötigt.
-Die Treiber für den SWD-Adapter sollten installisert sein.
-Projekt im Anhang öffnen
-Den richtigen SWD-Adapter auswählen.
-In den Debug-modus gehen (1)
-In der Command Zeile "INCLUDE Mini51flashtools.ini"+<enter> eingeben
(2)
-Jetzt erscheint ein Tool-Menu mit einigen neuen Funktionen. (3)
_Mini51 ShowConfig_: Zeigt aktuelle configuration des controllers an.
Hier am besten zuerst mal draufklicken.
_Mini51 ChipErase_: Führt ein Chip-Erase durch, wenn der Chip gesperrt
war. *ACHTUNG:* Dieser Befehl löscht die original Firmware ohne
Sicherheitabfrage
_Mini51 WriteStdConfig_: Beschreibt die Configurationsregister mit
Standardwerten. Sollte nach dem Chip-Erase immer gemacht werden.
_Mini51 Reset_: Selbsterklärend
Tim schrieb:> Mit ST-Link funktioniert es> wunderbar.
Na das kommt doch genau zum richtigen Zeitpunkt. Da mein Quad so lange
auf sich warten hat lassen ist ja jetzt wirklich zu überlegen, ob sich
die Anschaffung eines Nulinks noch lohnt. Eigentlich hab ich nicht vor,
irgendwo anders Nuvoton MCUs zu verwenden.
Ich denke Tim, aber auch allen die dabei geholfen haben, das möglich zu
machen, gebührt mal wirklich ein Dankeschön.
Tim schrieb:> Mit> dem Anhängenden Beispielprojekt lässt sich Chip-Erase jetzt mit jedem> beliebigen SWD-Adapter an KEIL durchführen. Mit ST-Link funktioniert es> wunderbar.
Super Arbeit! Klasse. Tolles reverse engineering und super Ergebnis!
Tausend Dank!!!
(PS: Vielleicht machst du nen Artikel bei dir im Blog daraus und schicks
zu Hack a Day o. Ä., ist sicher auch für viele andere Interessant)
Gute Arbeit cpldcpu! Nach einem chip-erase (mit dem magic register)
konnte ich meine alte Firmware wieder aufspielen und das Gerät läuft
wieder!!!
Besten Dank!
Jog3k schrieb:> Gute Arbeit cpldcpu! Nach einem chip-erase (mit dem magic register)> konnte ich meine alte Firmware wieder aufspielen und das Gerät läuft> wieder!!!
Interessant! Du hattest den "Mold-King", oder? Welche Software hast Du
für die Programmierung verwendet? Bei mir klappt es mit dem ST-Link noch
nicht so gut.
Philipp E. schrieb:>> Super Arbeit! Klasse. Tolles reverse engineering und super Ergebnis!> Tausend Dank!!!> (PS: Vielleicht machst du nen Artikel bei dir im Blog daraus und schicks> zu Hack a Day o. Ä., ist sicher auch für viele andere Interessant)
Danke! :) Habe auch schon über einen Artikel nachgedacht, aber dafür
muss ich auch erstmal die Zeit finden. Der Hackocopter hat mir diese
Woche schon sehr viel davon gekostet...
Tim schrieb:> Interessant! Du hattest den "Mold-King", oder? Welche Software hast Du> für die Programmierung verwendet? Bei mir klappt es mit dem ST-Link noch> nicht so gut.
Genau, MouldKing (in der Anleitung als X6 betitelt, auf dem Gehäuse
steht M-1). Ich habe ein eigenes Programm geschrieben bzw. erweitert und
verwende den stlink-v1 vom ersten Discovery. Ich werde den Code bei
Gelegenheit gerne veröffentlichen. In meinem code.google.com repo habe
ich auch ein script für openocd (allerdings habe ich nicht getestet ob
das Programmieren damit funktioniert).
Welche Probleme hast Du mit dem stlink?
Beste Grüße!
>> Interessant! Du hattest den "Mold-King", oder? Welche Software hast Du>> für die Programmierung verwendet? Bei mir klappt es mit dem ST-Link noch>> nicht so gut.>> Genau, MouldKing (in der Anleitung als X6 betitelt, auf dem Gehäuse> steht M-1). Ich habe ein eigenes Programm geschrieben bzw. erweitert und> verwende den stlink-v1 vom ersten Discovery. Ich werde den Code bei> Gelegenheit gerne veröffentlichen. In meinem code.google.com repo habe> ich auch ein script für openocd (allerdings habe ich nicht getestet ob> das Programmieren damit funktioniert).> Welche Probleme hast Du mit dem stlink?>> Beste Grüße!
Ich kann mit µVision über ST-Link auf den Mini54ZAN zwar programme
hochladen, aber das Debuggen und Ausführen funktioniert nicht richtig.
Verwendest Du die normale ST-Link Firmware und OpenOCD zum
programmieren?
Dein Programm wäre sicherlich für andere auch interessant.
Tim schrieb:> Verwendest Du die normale ST-Link Firmware und OpenOCD zum> programmieren?
Ja, die Firmware auf dem Discovery ist unverändert. OpenOCD hatte ich
ausprobiert und beispielsweise das Auslesen des PDID Registers hatte
funktioniert. Die anderen Funktionen konnte ich zu dem Zeitpunkt nicht
testen, da das Gerät nicht richtig funktionierte.
Nach einem kompletten "Device-Erase" (Danke nochmal für die
Informationen) und dem Aufspielen der alten Firmware kann ich jetzt auch
wieder mein "uarttest.bin" Programm ausführen und bekomme entsprechendes
Feedback über die serielle Schnittstelle. Das habe ich jetzt aber wieder
mit meinem eigenen Programm gemacht und nicht mit OpenOCD.
> Dein Programm wäre sicherlich für andere auch interessant.
Sobald der Code ordentlich aussieht und ich einige weitere Funktionen
implementiert habe lade ich das Programm auf meinem code.google repo
hoch.
Tim schrieb:> Ich kann mit µVision über ST-Link auf den Mini54ZAN zwar programme> hochladen, aber das Debuggen und Ausführen funktioniert nicht richtig.
Kannst du dies etwas präzisieren? Was funktioniert und was funktioniert
nicht?
Hubsy schrieb:> Tim schrieb:>>> Ich kann mit µVision über ST-Link auf den Mini54ZAN zwar programme>> hochladen, aber das Debuggen und Ausführen funktioniert nicht richtig.>> Kannst du dies etwas präzisieren? Was funktioniert und was funktioniert> nicht?
Flash und Erase wird ohne Fehlermeldung durchgeführt. Nur das
hochgeladene Programm (z.B. Blinky) wird anschließend nicht ausgeführt.
Ebenso zeigt der Debug-Mode einen leeren Speicher. Entsperrt ist der
Chip, denn das Programmieren geht mit dem Nu-Link wunderbar.
Tim schrieb:> Hubsy schrieb:>> Tim schrieb:>>>>> Ich kann mit µVision über ST-Link auf den Mini54ZAN zwar programme>>> hochladen, aber das Debuggen und Ausführen funktioniert nicht richtig.>>>> Kannst du dies etwas präzisieren? Was funktioniert und was funktioniert>> nicht?>> Flash und Erase wird ohne Fehlermeldung durchgeführt. Nur das> hochgeladene Programm (z.B. Blinky) wird anschließend nicht ausgeführt.> Ebenso zeigt der Debug-Mode einen leeren Speicher. Entsperrt ist der> Chip, denn das Programmieren geht mit dem Nu-Link wunderbar.
Kannst du mit dem ST-Link und der "STM32 ST-LINK Utility" auf den
Mini54ZAN zugreifen?
Hey,
Ich wollte mal eben fragen ob dein Ladegerät mittlerweile fertiggestellt
ist? Ich layoute gerade selber eins und bin mir ein bisschen unsicher
mit der Verlustleistung des Chips. Wie sieht das bei dir aus?
Dominic A. schrieb:> Hey,> Ich wollte mal eben fragen ob dein Ladegerät mittlerweile fertiggestellt> ist? Ich layoute gerade selber eins und bin mir ein bisschen unsicher> mit der Verlustleistung des Chips. Wie sieht das bei dir aus?
Ich habe leider den Chip noch nicht, habe aber von den PCBs ein paar
verschenkt. Vielleicht kommt von da eher Rückmeldung. Ich habe mich an
den Layoutvorschlag aus dem Datenblatt gehalten. Allerdings werde ich
den Ladestrom sowieso eher gering einstellen, so dass ich nicht mit
Wärmeproblemen rechne.
Hubsy schrieb:> Kannst du mit dem ST-Link und der "STM32 ST-LINK Utility" auf den> Mini54ZAN zugreifen?
Das STM32 utitlity habe ich noch nicht ausprobiert. Aber da das Script
von oben funktioniert, wird der genenrelle Zugriff möglich sein. Ich
glaube eher, dass das ST-Linkt versucht irgendwelche Protokolleigenarten
auszunutzen, die es nur auf dem STM32 gibt.
Die Bedienungsanleitung ist mir teilweise ein Buch mit 7 Siegeln. Leider
sind meine Kenntnisse der chinesischen Sprache zu gering, das Original
zu entziffern.
Drei Punkte, die vielleicht jemand beantworten kann:
- Was bewirkt der "Turning" Taster? Ist er nur für die Rollen gedacht?
- Der letzte Punkt über "flying environment" beginnt mit "if the
aircraft take-off not be vertical rise..." Was will der Autor uns sagen?
Was soll die beschriebene Prozedur bewirken?
- Beim Trimmen kommen mal lange, mal kurze Piepser. Was will das Gerät
mir sagen? Lässt sich das Ding so trimmen, dass es wirklich auf der
Stelle schwebt?
Tim schrieb:> Dominic A. schrieb:>> Hey,>> Ich wollte mal eben fragen ob dein Ladegerät mittlerweile fertiggestellt>> ist? Ich layoute gerade selber eins und bin mir ein bisschen unsicher>> mit der Verlustleistung des Chips. Wie sieht das bei dir aus?>> Ich habe leider den Chip noch nicht, habe aber von den PCBs ein paar> verschenkt. Vielleicht kommt von da eher Rückmeldung. Ich habe mich an> den Layoutvorschlag aus dem Datenblatt gehalten. Allerdings werde ich> den Ladestrom sowieso eher gering einstellen, so dass ich nicht mit> Wärmeproblemen rechne.
Alles klar, ich denke ich bestelle auch einfach mal meine PCB's. Ich
werde wahrscheinlich auch noch ein paar zu viele und hier vergeben. Da
werde ich mich aber wieder melden wenn ich die Platinen habe. Kann also
noch dauern.
Georg G. schrieb:> - Was bewirkt der "Turning" Taster? Ist er nur für die Rollen gedacht?
Mit ihm kann scheinbar auch eine Kalibrierung durchgeführt werden. Den
Knopf drücken und beide Knüppel in die Linke untere Ecke ziehen. (Hat
bei mir selber aber auch noch nie funktioniert)
Edit: Doch es funktioniert. Man muss beide Knüppel in die linke untere
Ecke ziehen und dann den Turningbutton gedrückt halten.
Georg G. schrieb:> - Der letzte Punkt über "flying environment" beginnt mit "if the> aircraft take-off not be vertical rise..." Was will der Autor uns sagen?> Was soll die beschriebene Prozedur bewirken?
In meinem Handbuch kann ich diesen Satz nicht finden. Bei mir stehen
unter flying environment nur so Dinge wie z.B bei warmem Wetter fliegen
und nicht fliegen wenn es windet.
Georg G. schrieb:> - Beim Trimmen kommen mal lange, mal kurze Piepser. Was will das Gerät> mir sagen? Lässt sich das Ding so trimmen, dass es wirklich auf der> Stelle schwebt?
Das habe ich mich auch schon gefragt. Jedoch habe ich dazu soeben noch
etwas Interessantes im Handbuch gefunden.
Scheinbar werden die Kalibierungseinstellungen in der Fernbedienung
gespeichert. Den bei mir steht der Satz:"Press and Hold the speed
conversation button while turning the power switch, Trimming the remote
controller is reset"
Also so wie ich das verstehe werden die Kalibrierungseinstellung
gelöscht wenn man die Fernbedienung mit gedrücktem Speedbutton
einschaltet.
Vielleicht hängt das gepiepse irgendwie damit zusammen?
Zur Fernbedienung:
Bei mir piepst die Fernbedienung nur kurz, wenn ich die Trimmtaster
betätige. Die Trimmung bleibt auch nicht erhalten. Nach jedem
Einschalten tippe ich 2x zurück und 2x links, danach lässt sich der
Copter zum Schweben bringen. Es sind aber permanente Eingriffe
erforderlich, um den Copter in einem Raum von ca. 50 x 50 x 50 cm³ o. s.
zu halten.
Hauptproblem dabei ist die vertikale Steuerung des Copters. Sie ist
einfach nicht fein genug, um auf einer Höhe zu schweben. Eine winzige
Hebelbewegung entscheidet darüber, ob der Copter steigt oder sinkt.
Ansonsten:
Laut Keil kann der ULINK2 mit dem Mini54ZAN "arbeiten"[1]. Der ULINK2
selbst liegt mit ca. 11 Euro preislich beim Nu-/BuLink[2] und ist aber
auch für andere Controller-Familien geeignet.
Was haltet ihr davon?
[1]
http://www.keil.com/dd/chip/5587.htm
[2]
http://www.ebay.de/itm/Ulink-2-USB-JTAG-Emulator-ARM9-Cortex-Keil-Ulink-II-GH2-White-Adapter-Debug-DR-/300945296019
Für Fortgeschrittene kann ich den linken Taster sehr empfehlen!
- Copter schweben lassen
- linke taste 1x drücken
- (linken Stick) nach rechts lenken und staunen wie agil der kleine in
dem Modus ist ;)
(zurück zum Anfängermodus nochmal drücken)
Die Rechte Taste ist auch für Loopings gut:
Copter auf >2m Höhe bringen und halten, dann gleichzeitig rechte Taste
und (linken) Stick zb nach Rechts -> Copter macht ne Rolle ;)
Das Höhe halten fand ich auch anfangs relativ schwer, dachte schon
meiner sei kaputt...
Es liegt aber am Piloten, drückt die Fernbedienung mal jemanden in die
Hand der Heli fliegt... ;) Also weiter üben ;)
Gruss,
Simon
Kann man den linken Button nicht auch 2x hintereinander drücken und dann
ist er noch agiler? Habe ich zumindest das Gefühl.
Noch ein kleiner Tipp. Bei mir sind manchmal die Sticks hängen
geblieben. Insbesondere in den Ecken. Das ist ziemlich mühsam. Bei mir
lag es daran das die Knöpfe zu stark auf die Fernbedienung gedrückt
haben. Als Lösung habe ich einfach die Fernbedienung aufgeschraubt und
die 2 Schrauben in der oberen Ecke des PCB ein bisschen gelöst. Nun
flutschen die Sticks zurück in die Mitte wie noch nie.
Dominic A. schrieb:> Kann man den linken Button nicht auch 2x hintereinander drücken und dann> ist er noch agiler? Habe ich zumindest das Gefühl.
Stimmt schon, es sind drei Modi.
Georg G. schrieb:> - Beim Trimmen kommen mal lange, mal kurze Piepser. Was will das Gerät> mir sagen? Lässt sich das Ding so trimmen, dass es wirklich auf der> Stelle schwebt?
Die langen Piepser ertönen, wenn das Trimming auf 0 eingestellt ist.
Das Trimming bleibt übrigens nach dem Ausschalten der FB erhalten.
(EEPROM?). Am besten nutzt man es gar nicht.
Den Versuch, im FB Sender an den LCD Anschluss ein Display zu hängen
werden wir beerdigen können.
Es kommen - wie bereits geschrieben - abwechselnd drei Datenpakete, die
sich bei Bedienung der Hebel und Taster ändern. Es ist aber kein
Zusammenhang zwischen den Bytes und Bits und irgendwelchen Aktionen zu
erkennen.
Um weiter zu kommen, müssten wir einen Sender analysieren, der mit LCD
ausgeliefert wurde.
Schade, dann ist die Datenausgabe evtl. einfach nur übrig gebliebener
Code ohne richtige Funktion? Oder lässt sich zumindest erkennen dass die
Ausgabe als Reaktion auf etwas erfolgt (Binding, Steuern, usw.)
Tim schrieb:> Oder lässt sich zumindest erkennen dass die> Ausgabe als Reaktion auf etwas erfolgt (Binding, Steuern, usw.)
Die Ausgabe ändert sich, wenn man steuert. Es ist aber nicht so, dass
eine Änderung der Betriebsspannung bestimmte Bits ändert (oder Binden
oder Trimmung oder Bewegung der Knüppel).
Beispiel: Drücken auf "trimmen roll rechts" ändert ein Byte permanent
von 0x04 auf 0x0c. Anschließendes Drücken auf "trimm roll links" ändert
es aber nicht zurück auf 0x04. Es geht zurück auf 0x04 bei "throttle
10%". Es ist alles irgendwie pseudozufällig und doch reproduzierbar.
Tim schrieb:> Schade, dann ist die Datenausgabe evtl. einfach nur übrig gebliebener> Code ohne richtige Funktion? Oder lässt sich zumindest erkennen dass die> Ausgabe als Reaktion auf etwas erfolgt (Binding, Steuern, usw.)
Der "Frankfurter" Quadrocopter meldet sich bei der Fernbedienung an. Es
erscheint ein "Lampensymbol" in der Anzeige. Zudem werden die
Trim-Einstellungen und die Geschwindigkeit in Prozent angezeigt.
Das ist beim Modell aus dem Eingangsbeitrag nicht der Fall. Hier kann
das "Binding" auch ohne Copter durchgeführt werden. Ein Rückmeldung
erfolgt optisch über die beiden blauen LEDs.
Auf meinen Bulink warte ich noch immer :-( Ob ich in der Zwischenzeit
den Ulink2 bestelle?
Was haltet ihr von diesem
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=130738049882
Magnetsensor? Könnte man damit einen autonomen Schwebeflug erzielen?
Oliver Stellebaum schrieb:> Könnte man damit einen autonomen Schwebeflug erzielen?
Für die Höhe brauchst du einen Höhensensor, barometrisch oder
Ultraschall oder Laser oder Radar.
Für die anderen zwei Koordinaten hilft dir der Magnetsensor auch nur
begrenzt, weil das Magnetfeld sich über wenige Meter nicht merkbar
ändert. Du kannst nur die Richtung der Nase damit stabilisieren.
batman schrieb:> Vielleicht kann man eine optische Maus so modifizieren, daß sie den> Bewegungsvektor über Boden ausgibt (statt über Mousepad)?
Ich glaube nicht, dass das mit mehr als wenigen mm Abstand noch
funktioniert.
Heute ist mein original Hubsan angekommen.
Da ist eine Schutzschaltung mit DW01 im Ladekabel.
Schaltung scheint ziemlich exakt nach Datenblatt zu sein.
Ist sicherlich nicht der Weißheit letzter Schluss, aber schon besser als
beim Billig-Hubsan.
Allerdings ist die Steuerung der "Flips" doof gelöst. Man muss erst in
eine Richtung drücken und danach schnell in die andere Wechseln um einen
Flip aus zu führen.
Immer wenn man keinen Flip machen will macht er einen und wenn man einen
machen will funktioniert's nicht :(
Außerdem sackt er nach dem Flip noch viel stärker weg als der
Billig-Hubsan.
Bevor dieser Thread hier vollkommen in der Versenkung verschwindet gebe
ich bekannt dass mein bestellter Bu-Link endlich angekommen ist.
Erschwerend kam hinzu, das nicht mein Name sondern nur mein
Aliexpress-Name auf dem Umschlag stand. Ich konnte dem Postmann aber
glaubhaft versichern das ich der rechtmäßige Empfänger bin :-)
So, bald sind Weihnachtsferien, hoffe ich komme dann dazu, mir eine
Testumgebung aufzubauen.
Ich habe mich gerade noch einmal wieder dran gesetzt. Eine positive
Sache: Das Programmieren und Debuggen mit ST-Link funktioniert. Ich
weiss nicht was letztes mal schief ging.
Das heisst, dass sich der Hack-O-Copter mit jedem Discovery-Board
entsperren und programmieren lässt.
Ich werde jetzt noch versuchen das Flash tool zu erweitern, um den
Bootloader einzuspielen. Auch wenn SWD für das Debugging praktisch ist,
ist ein serieller Bootloader einfacher in der Handhabung
Tim schrieb:> Das heisst, dass sich der Hack-O-Copter mit jedem Discovery-Board> entsperren und programmieren lässt.>> Ich werde jetzt noch versuchen das Flash tool zu erweitern, um den> Bootloader einzuspielen. Auch wenn SWD für das Debugging praktisch ist,> ist ein serieller Bootloader einfacher in der Handhabung
Nice work :) Big thx.
Leider stresst die Uni in letzter Zeit ziemlich :(
Ein wenig Off-topic, aber:
Weiß jemand wie die Stecker für die Akkus heisen, bzw. wo man diese
Kaufen kann.
Ich würde mir gerne für meinen IMAX B6 ein Ladekabel mit Balancer
anschluss bastel, damit ich mehrer Akkus in einem Ladevorgang geladen
bekomme.
THX
ARM-Fan schrieb im Beitrag #3452604:
> Bei Ebay gehen die Stecker unter "Walkera Stecker".
Wie alles, was nach Modellbau riecht, leider wieder völlig überteuert.
Bei den Preisen ist es ja billiger, sich die Stecker von den Ladegeräten
abzuschneiden?
Tim schrieb:> Ich werde jetzt noch versuchen das Flash tool zu erweitern, um den> Bootloader einzuspielen. Auch wenn SWD für das Debugging praktisch ist,> ist ein serieller Bootloader einfacher in der Handhabung
Ich war bisher noch nicht erfolgreich, werde aber jetzt noch einmal
einen anderen Ansatz probieren.
Mein Ziel ist, dass man den Copter im zugeschraubten Zustand mit dem
seriellen Bootloader programmieren und debuggen kann. Nur dann lässt
sich bequem eine neuen Software entwickeln.
Hat jemand eine gute idee, wie man einen Stecker auslegen könnte? Der
serielle Port ist direkt neben einem "Auge". Darüber könnte man dünne
Kabel herausführen. Dann würde man nur noch einen günstigen,
beschaffbaren und kleinen Steckverbinder benötigen.
Bin ein wenig skeptisch, ob das so eine gute Idee ist, einen Bootloader
in den Copter zu flashen. Der Copter hat nur 16 KBytes Flashspeicher,
der ohnehin schon knapp bemessen ist, aber dann noch einen Bootloader
oben drauf?
Vorschlag: Während der Entwicklung das Oberteil des Coptergehäuses
abnehmen oder ausfräsen, eine Buchse in die vorhandenen Löcher einlöten,
debuggen & freuen.
Davis schrieb:> Bin ein wenig skeptisch, ob das so eine gute Idee ist, einen> Bootloader> in den Copter zu flashen. Der Copter hat nur 16 KBytes Flashspeicher,> der ohnehin schon knapp bemessen ist, aber dann noch einen Bootloader> oben drauf?
Davis, Du scheinst ja der Bootloaderfeind allgemein zu sein :)
Der Mini54ZAN hat 2kb dedizierten Flash-Speicher für den Bootloader
(LPROM), die sich für gar nichts anderes nutzen lassen. Es gibt von
Nuvoton einen fertigen Bootloader, der auch von deren Host-Software
unterstützt wird. Man verliert von den 16kb also kein einziges Byte.
Clever wäre es natürlich, wenn man einen Bootloader programieren könnte,
der im LDROM sitzt und Updates über den Funkchip zulässt. Ich würde da
aber erst einmal auf dem Boden bleiben :)
Tim schrieb:> Davis schrieb:>> Bin ein wenig skeptisch, ob das so eine gute Idee ist, einen>> Bootloader>> in den Copter zu flashen. Der Copter hat nur 16 KBytes Flashspeicher,>> der ohnehin schon knapp bemessen ist, aber dann noch einen Bootloader>> oben drauf?>> Davis, Du scheinst ja der Bootloaderfeind allgemein zu sein :)
Jetzt hast du mich ertappt :)
> Der Mini54ZAN hat 2kb dedizierten Flash-Speicher für den Bootloader> (LPROM), die sich für gar nichts anderes nutzen lassen. Es gibt von> Nuvoton einen fertigen Bootloader, der auch von deren Host-Software> unterstützt wird. Man verliert von den 16kb also kein einziges Byte.
Muss mich doch ein wenig in den Chip "einlesen".
> Clever wäre es natürlich, wenn man einen Bootloader programieren könnte,> der im LDROM sitzt und Updates über den Funkchip zulässt. Ich würde da> aber erst einmal auf dem Boden bleiben :)
"Auf dem Boden bleiben", ist der richtige Ausdruck. Du machst einfach zu
viele Baustellen auf. Nachdem es mit dem ST-Link funktioniert, spricht
nichts dagegen diesen für die Entwicklung zu verwenden.
Ööm, gibts irgendwo eine Doku für interessierte Anfänger, welches Kabel
wo dran kommt und welche Software man verwendet?
Ich komme aus der Anwendungsprogrammierung, habe schon ein wenig Atmel
gemacht aber ansonsten noch nicht viel.
So, dsa Programmieren des Bootloaders funktioniert, der Bootloader
selbst nicht. Vermutlich liegt das daran, dass er auf die andere
Konfiguration der seriellen Schnittstelle konfiguriert ist. Ich werde es
erst einmal sein lassen und einen Wireless-Bootloader ganz unten auf die
Prioliste setzen.
Oliver Stellebaum schrieb:> Ööm, gibts irgendwo eine Doku für interessierte Anfänger, welches Kabel> wo dran kommt und welche Software man verwendet?
Leider gibt es noch keine übersichtliche Anleitung für den Einstieg. Ich
werde versuchen, dass in der nächsten Zeit zu ändern und den
Wiki-Artikel auf Vordermann zu bringen.
Die nötigen Informationen sind im Moment über die Thread verstreut. Die
wesentlichen Unterliegen liegen im Repository, wie von Davis verlinkt.
1) Du musst den SWD-Port mit deinem SWD Adapter verbinden.
2) Als Software eignet sich die freie Version von Keil µVision 5. Du
musst zusätzliche den "Legacy device support" installieren.
3) Anleitung zum Freischalten des Microntrollers hier (Chip Erase):
Beitrag "Re: Hackbarer(?) 21 EUR Quadcopter"
4) Beispielprojekte hier: https://github.com/hackocopter/Examples
Nun ja, also bei ob jetzt 21€ oder 25€. Ist immernoch verdammt günstig.
Ansonsten erst nach Weihnachten kaufen, ist ja nicht mehr lange. Dann
wird's sicherlich auch wieder günstiger ;)
Studentle schrieb:> Nun ja, also bei ob jetzt 21€ oder 25€.
Eben nicht. Wenn Ebay 25,25 schreibt, dann errechnet PayPal um die
26,50. Und das ist nun wirklich zuviel für die Freigrenze der
Einfuhr-Umsatzsteuer. Dann sind es nämlich knappe 32 Euro.
Und nein, bitte keine Spenden an mich, ich brauche derzeit keinen
weiteren Copter... ;-)
Studentle schrieb:> Ansonsten erst nach Weihnachten kaufen, ist ja nicht mehr lange. Dann> wird's sicherlich auch wieder günstiger
Damit könntest Du völlig recht haben, das sehe ich auch so. Ist mir aber
momentan mangels Bedarf nicht so wichtig...
...
Ich wünsche hier mal allen, die so fleißig an dem Thema dran sind oder
daran interessiert sind, oder auch nur einfach ab und zu mal wieder
mitlesen, frohe Weihnachten und Festtage.
Ich habe noch einmal bei einigen chinesischen Händlern nachgebohrt.
Inzwischen erscheint es mir realistisch, den Copter ohne Fernbedienung
für ~10EUR pro Stück zu importieren, wenn eine entsprechende Stückzahl
abgenommen wird. Unverhandelte Angebote liegen zwischen 9.6-11 USD. Dazu
kommen noch Einfuhrumsatzsteuer, Zoll und Versand.
Besteht an so einer Aktion noch Interesse? Dazu müsste sich eine Anzahl
von Leuten finden, mehr als 5 Stück abnehmen wollen. Sonst lohnt sich
der logistische Aufwand nicht.
Ich wäre auch gerne Bereit, die Kontakte weiter zu geben, wenn Torsten
oder jemand anderes das Thema wieder aufnehmen will.
Tim schrieb:> Ich bin im Moment am Thema Dokumentation dran.
Hast du jetzt eigentlich schon mal eine neue Firmware geflasht um z.B.
die LEDs blinken zu lassen oder so?
Wenn hier die Entwicklung/Hackung so weitergeht würde ich auch 50€ für 5
Stück investieren um zukünftig einen Schwarm loszulassen.
http://www.youtube.com/watch?v=YQIMGV5vtd4
Ist sowas utopisch oder kann man sowas mit wenig hardwareaufwand
realisieren?
Luftdrucksensor? Magnetometer? Viel Zuladung verkaftet der Kleine sicher
nicht.