Ankündigung

Einklappen
Keine Ankündigung bisher.

Entwicklungsblog Beta5/Final 1.0.0

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #91
    Wer die neuen Funktionen voll nutzen will, wird eine ganze Reihen Funktionspointer bereitstellen müssen:

    Ausschnitt aus meinem beta5 Test-Sketch...
    Code:
    Debug.println(F("Setup Memory Fctptr ..."));
    
      // ptr for memory access
      Konnekting.setMemoryReadFunc(&readMemory);
      Konnekting.setMemoryWriteFunc(&writeMemory);
      Konnekting.setMemoryUpdateFunc(&updateMemory);
      Konnekting.setMemoryCommitFunc(&commitMemory);
    
      // ptr for writing data to device
      Konnekting.setDataWritePrepareFunc(&dataWritePrepare);
      Konnekting.setDataWriteFunc(&dataWrite);
      Konnekting.setDataWriteFinishFunc(&dataWriteFinish);
    
      // ptr for reading data from device
      Konnekting.setDataGetInfoFunc(&dataGetInfo);
      Konnekting.setDataOpenFunc(&dataOpen);
      Konnekting.setDataReadFunc(&dataRead);
      Konnekting.setDataCloseFunc(&dataClose);
    
    Debug.println(F("--> DONE"));
    Gibt sicher noch elegantere Wege, aber für's erste tut's das.
    Hintergrund ist: Jedes Device kann eigene Mittel und Wege haben Daten zu speichern und darauf zuzugreifen. Für unsere Standardcontroller wird es aber vorgefertigte Funktionen geben die dann per "include" bereitgestellt und mit einfachem Copy&Paste KONNEKTING bekannt gemacht werden.

    Kommentar


      #92
      Gut zu hören!
      dann brauchts aber noch den 2nd stage BL, wie kommt der aufs Board und ist eine Kompatibilität nur mit dem orig. Arduino BL gegeben oder auch mit anderen BL zB Adafruit ?
      Und woher kommt das bin/hex file, wird die Suite entsprechend erweitert?
      Wird Einschränkungen/Vorraussetzungen bei der IDE geben?
      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

      Kommentar


        #93
        dann brauchts aber noch den 2nd stage BL, wie kommt der aufs Board
        Der ist Teil des Sketches den man mit der USB-Verbindung auf das Board schieben kann. Also ein Firmware-Update wie bisher per USB. Dann geht's künftig per Bus.

        und ist eine Kompatibilität nur mit dem orig. Arduino BL gegeben oder auch mit anderen BL zB Adafruit ?
        Der 2nd Stage BL ist unabhängig vom BL. Inkompatibilitäten kann es hier nicht geben. Das einzige das sein kann: Der Arduino BL ist größer oder kleiner als der von Adafruit. Dann muss im Sketch ggf. mit einer anderen Start-Adresse für den 2nd Stage BL gearbeitet werden. Aber für unsere Boards erledigen wir das. Wenn ihr eigene Boards baut, müsst ihr das berücksichtigen wenn ihr andere BL verwendet.

        Und woher kommt das bin/hex file, wird die Suite entsprechend erweitert?
        Die Idee ist neue Boards künftig mit einem leeren Sketchs auszuliefern, so dass man jedes neue Boards das von uns kommt direkt per Bus auf die richtige Firmware updaten kann.
        Für den 2nd Stage BL muss tatsächlich etwas von Hand compiliert und eine Hex-File gebaut werden. Aber das erledigen wir, das kommt direkt mit der Konnekting Device Lib dann mit.
        Wenn wir dann z.B. für den DFF4.1 oder andere Geräte Updats haben, werden wir logischerweise auch die Update-File veröffentlichen. Und die Suite erhält ein Plugin, mit dem man dieses Update dann einspielen kann.

        Wird Einschränkungen/Vorraussetzungen bei der IDE geben?
        Was meinst du damit? Jeder der das Plugin für die Suite hat, wird ein Device updaten können, das vom Entwickler updatefähig gemacht wurde.
        Wer das Plugin nicht hat, oder das nicht haben will, der kann die neue Firmware wie bisher auch über die Arduino IDE via USB einspielen. Vielleicht basteln wir hier auch noch was, damit auch die Nicht-Entwickler per USB Updates einspielen können, ohne direkt die Arduino IDE zu verwenden.

        Kommentar


          #94
          ich frage aus Sicht des Geräteentwicklers der die Lib verwendet und nicht aus der eines Endanwenders, ich dachte das sei klar.

          OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

          Kommentar


            #95
            Hmm, okay. Verstehe die Frage dann trotzdem nicht. Was für Einschränkungen meinst du z.B.? Wüsste jetzt nicht was es da geben könnte, aber vielleicht ist mein Hirn da schon zu verworren :-)
            Aktuell ist es nur so, dass lediglich der SAMD21 das sauber beherrscht. 328p, 32u4 und alle anderen "ATMEGA" Varianten sind da außen vor. Mehr Einschränkungen fallen mir nicht ein. Ach doch, der 2nd Stage BL braucht auch ein klein wenig Platz. Ergo ist ein klein wenig weniger für den Sketch übrig. Aber sonst... kein Plan was du da noch meinen könntest.

            Kommentar


              #96
              So, genug für diese Woche...

              Hab jetzt knapp 2h an einem Problem debugged:

              Wenn ich auf Arduino Seite gerade in der Bearbeitung eines eingegangen Programmier-Events bin das sich mit dem Auslesen von Daten beschäftigt und fleissig Daten zurück an den PC senden will, dann muss/will ich ja prüfen ob der PC auch alles bekommen hat. Der PC muss also auf ein Datentelegramm des Arduino mit einem ACK antworten.
              Da ich auf Arduino-Seite aber noch in der Verarbeitung des "Daten auslesen"-Telegramms bin, beisst sich hier die Katze selbst in den Schwanz wenn der Arduino in diesem Zustand versucht das nächste Telegramm, nämlich das ACK auf das er wartet, zu verarbeiten...
              Muss mir noch Gedanken machen wie ich das auflöse bzw. entkopple. Da wird nochmal der eine oder andere Hirnschmalz und die eine oder andere Stunde debuggen mit dem Hardware-Debugger drauf gehen. Aber wenn das dann läuft, bin ich ein gaaanz großes Stück weiter.

              Dann kann man mit KONNEKTING auch sowas wie einen Logger bauen, Daten auf SD sammeln und später über den Bus auf den PC runterladen.

              Ich geh jetzt erstmal ins Bett. n8 und bis dann ...

              - Alex

              Kommentar


                #97
                Zitat von tuxedo Beitrag anzeigen
                kein Plan was du da noch meinen könntest.
                mit IDE meine ich die Arduino IDE, Visual Studio, Visual Studio Code, Eclipse etc..
                du hast mal erwähnt, man müsste dafür etwas am Linker machen. Die Frage die sich dabei mir stellt, geht das dann mit jeder IDE, oder nur mit einer?
                OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                Kommentar


                  #98
                  Ach so...
                  Als Device-Entwickler musst du da nix selbst machen, das macht die normale Arduino IDE für dich. Die Leute com SAMD-Core Team haben das bereits eingebaut, du musst nur die richtige Header-File includieren. Der Rest passiert automatisch im Hintergrund. Fertig.

                  Wenn du ein eigenes Board planst, das von der Arduino SAMD-Core Variante abweicht, DANN musst du selbst aktiv werden.
                  Oder wenn du einen eigenen 2nd Stage BL haben willst, DANN musst du aktiv werden.

                  Kommentar


                    #99
                    das von mir aktuell gerade wegen FOTB (und der Baugröße) favorisierte ItsyBitsy M0 Express verwendet einen angepassten Adafruit SAMD Core.
                    Wahrscheinlich kann man aber auch den normalen Arduino SAMD M0 Core nehmen und den normalen BL..
                    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                    Kommentar


                      Kannst ja mal die BL vergleichen (md5sum oder so). Im Vorwort selbst werden sich wohl nur die Pins und dergleichen unterscheiden.

                      Kommentar


                        der BL wird sich sicher stark unterscheiden, weil die Adafruit Express Boards auch CircuitPython unterstützen, der USB als Massenspeicher auftaucht etc...
                        https://github.com/adafruit/uf2-samdx1/

                        was könnte passieren wenn man den Standard BL und das Board als Arduino M0 anspricht? Nix oder?
                        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                        Kommentar


                          Das einzige Problem ist ggf. die unterschiedliche BL Größe.

                          Im BL steht drin, an welcher Speicheradresse der Sketch steht, sprich: Wo der Programmzeiger hinzeigen muss um den Sketch auszuführen. Wenn du das richtige Board in der Arduino IDE wählst, dann wird der Sketch an die passende Stelle geschrieben. Alles gut.

                          Wenn du nun aber FOTB machen willst, braucht es den 2nd Stage BL.

                          Der 2nd Stage BL wird direkt vor den Sketch in den Speicher geschrieben. D.h. der 2nd Stage BL startet genau da, wo normalerweise der Sketch starten würde.
                          Damit der 2nd Stage BL aber den eigentlichen Sketch starten kann, muss er wissen wo der liegt. Und das "errechnet" er:

                          Eigentliche Start-Adresse + 2nd Stage BL größe = neue Start-Adresse des Sketchs.

                          Die "Eigentliche StartAdresse" ist im 2nd Stage BL meines wissens Hard-Codiert. Wenn du nun ein Board mit einem anderen BL verwendest, dann passt das ggf. ncit mehr zusammen.
                          Ergo müsste man für so ein Board einen angepassten 2nd Stage BL gebastelt haben. Ist aber eigentlich kein Problem. Man muss das nur nur 1x in Erfahrung bringen, den 2nd Stage BL für dieses Board einmal bauen und dann entsprechend im Sketch verlinken.

                          Wenn es soweit ist dass die Lib und das FOTB Plugin für die Suite fertig ist, dann können wir uns das nochmal genauer anschauen und ggf. da einen eigenen 2nd Stage BL bereitstellen der für dieses Board passt.

                          Kommentar


                            welchen BL bzw. welches "Referenzdesign" verwendet ihr eigentlich bei euren selbstentwickelten SAMD21 Boards?
                            OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                            Kommentar


                              Wir nutzen Arduino Zero Bootloader und Design.
                              2nd Stage-Bootloader für Adafruit Boards werden wird rechtzeitig zur Verfügung stellen.
                              Ich plane später auch 2nd Stage Bootloader für STM32 Boards zu entwickeln (da gibt es leider noch nichts wo man copy&pasten kann...)

                              Kommentar


                                aber den EDBG habt ihr nicht drauf oder?
                                Geht anscheinend auch ohne?
                                OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                                Kommentar

                                Lädt...
                                X