Special Purpose Debug Board

EinfĂŒhrung


Bei der Entwicklung eines GerĂ€ts zum Testen seines Stromkreises wird normalerweise eine Debug-Karte verwendet. Unsere Entwickler sind hier keine Ausnahme, der Vorteil der positiven Aspekte dieses Ansatzes liegt auf der Hand: Die Kosten sind geringer als bei der Herstellung eines Prototyps oder einer Testcharge. Und wenn dabei Fehler auftreten oder fĂŒr einige Aufgaben neue Lösungen angezeigt werden, sind diese viel einfacher anzuwenden.

Wir waren jedoch ziemlich oft mit der Tatsache konfrontiert, dass die auf dem Markt angebotenen Debugs eine erhebliche Verfeinerung und / oder zusÀtzliche Module erforderten. Gleichzeitig traten zusÀtzliche EinschrÀnkungen auf, die von einem bestimmten GerÀt abhingen. Wenn wir eine Steuerplatine und ein Funkmodul von Grund auf neu entwickeln, befindet sich die relative Reihenfolge auf dem Steckbrett.

Probleme beginnen, wenn ein zweites und hĂ€ufigeres Szenario gespielt wird und wir uns mit der Modernisierung einer bereits entwickelten Technik befassen. Aufgrund des HauptbeschrĂ€nkungsfaktors - des Endpreises des Produkts - sollte die Änderung des Stromkreises minimal sein. In der Phase des Layouts haben viele die „kollektive Farm“ sehr geliebt.


Quelle

Was zu tun ist?


Steuerplatinen in HaushaltsgerĂ€ten sind normalerweise einfach und Low-Tech - ihre bedruckte Basis ist einlagig, auf einer Seite ohne Metallisierung und Maske. Die Einfachheit dieser Platinen wird durch den Endpreis der GerĂ€te selbst bestimmt - je komplizierter die Herstellung der GerĂ€te ist, desto teurer muss sie verkauft werden. Es ist klar, dass der Massenverbraucher Komplikationen nicht wollen und nicht ĂŒberbezahlen wird.


Typischer Vertreter der Steuerkarte fĂŒr HaushaltsgerĂ€te

WĂ€hrend der Arbeit haben wir mehrere Standard-Funkmodule von RM2 bis RM10 erschienen. Diese Module, die auf der SoC-Lösung basieren, fungieren als zentrale Steuerung und ermöglichen Ihnen auch die Steuerung des GerĂ€ts ĂŒber die Luft.

Diese Reihe von Funkmodulen ist so konzipiert, dass sie auf der Steuerplatine installiert werden können und nur minimal verĂ€ndert werden. Um eine hohe Entwicklungsgeschwindigkeit zu gewĂ€hrleisten, musste dringend ein Debug-Board erstellt werden, in dem bereits alles vorhanden ist, was fĂŒr intelligente HaushaltsgerĂ€te erforderlich ist.

Ein weiteres Argument fĂŒr die Veröffentlichung des Debug-Boards war die Eröffnung der Ready for Sky-Plattform fĂŒr Drittentwickler. Wir erhielten VorschlĂ€ge und Anfragen per E-Mail, um unabhĂ€ngigen Entwicklern oder Heimwerkern den Zugang zur Plattform zu ermöglichen. Ein Ă€hnliches Angebot kam sogar in Chabrows MinisterprĂ€sident.

Debuggen


Also haben wir es geschafft - die erste Version des RFS-DEV001. Das HerzstĂŒck der Debug-Karte ist das RM10-Modul. Basierend auf dem nRF52832- Chip, der dem Bluetooth 5-Standard entspricht, unterstĂŒtzt er Mesh-Netzwerke und Bluetooth Low Energy. Außerdem wird beim Debuggen eine Echtzeituhr verwendet, drei Energieoptionen sind implementiert (Akku, USB von einem PC, extern von einer Stromquelle). Zwei Tasten, ein Summer und eine RGB-Diode zum Signalisieren und Blinken. Alle Komponenten auf der Platine werden aus denen ausgewĂ€hlt, die jetzt in der Massenproduktion von HaushaltsgerĂ€ten verwendet werden.

ZusĂ€tzlich zum Testen des Steuerungsschemas kann der Entwickler die Kosten fĂŒr Komponenten sofort ermitteln und optimieren, was sich letztendlich auf den Preis seines Smart-GerĂ€ts auswirkt.



Das Board ist praktisch fĂŒr DIY-StĂ€nde, unter denen es auch solche gibt, fĂŒr die das Programmieren keine StĂ€rke ist oder die gerade erst anfangen zu lernen. Wir sahen eine Gelegenheit, ihre Arbeit zu erleichtern, zum Beispiel das Board Arduino-kompatibel zu machen. Es ist klar, dass dies ein Amateur- und Bildungsformat ist, aber seine Verwendung bricht zum einen die professionelle Arbeit mit dem Debuggen nicht ab und zum anderen erhöht es den Komfort von Fachleuten, die in den Beruf eintreten, erheblich.

Es wĂ€re durchaus möglich, die GebĂŒhr fĂŒr den Unterricht von Junior-Studenten auf UniversitĂ€ten und spezialisierte technische Schulen zu verteilen und so einen Beitrag zu zukĂŒnftigen Fachleuten zu leisten.

Liste der garantiert funktionierenden Plug-Ins




API


Da das Debuggen ohne Programmcode kein nĂŒtzliches StĂŒck Textolite ist, lohnt es sich, ein wenig ĂŒber die API zu sprechen, die es dem Entwickler ermöglicht, sich beim Öffnen der Plattform auf die FunktionalitĂ€t seines GerĂ€ts zu konzentrieren und von zahlreichen Bluetooth-Einstellungen usw. zu abstrahieren.

Die R4S-API besteht also aus:

  • eine Reihe von Bibliotheken, die den Betrieb typischer und spezifischer Dienste ermöglichen, beispielsweise die Hauptbibliothek mit grundlegenden Bluetooth-Einstellungen und Bibliotheken, die sich auf die FunktionalitĂ€t von GerĂ€ten konzentrieren;
  • Beispiele fĂŒr GerĂ€te oder Funktionen, die in der API implementiert sind;
  • Treiber fĂŒr an die Debug-Karte angeschlossene PeripheriegerĂ€te finden Sie in der obigen Liste.

Sie können sich die API-Funktionen am Beispiel der Erstellung von Lichteffekten mithilfe einer LED-Lampe durch eine sanfte HelligkeitsÀnderung mithilfe von Bezier-Kurven genauer ansehen.


Nach dem Umschalten in den Peyring-Modus Ă€ndert die GlĂŒhbirne sanft die Farbe des GlĂŒhens

In der Hauptdatei mĂŒssen Sie die grundlegenden Informationen, z. B. Informationen zur Firmware, unabhĂ€ngig ermitteln, die Einstellungen deklarieren (Speicherort des Bootloaders, Puffer zum Aktualisieren der Firmware usw.).

/** Firmware information structure */ R4S_FW_INFO_DEF(application, 0x26000) = { .version = { .major = 0, /** Product version (major) */ .minor = 1, /** Product version (minor) */ }, .name = { /** Device name */ .name = "RGB Lightbulb", .len = sizeof("RGB Lightbulb") - 1 /** Without \0 symbol at the end*/ } }; /** The init structure with the device information wich required for ReadyForSky library. */ R4S_CONFIG_DEF(r4s_init_conf) = { .p_fw_info = &application, .production_key = NULL, /** * The production key allows integrating the device into ReadyForSky infrastructure. * Contact support to get the production key for your device. */ .bootloader = { .start_address = 0x7B000, /** Bootloader start address */ .mbr_param_page = 0x7f000, /** MBR param page address */ .fw_upgrade_buf = { /** The firmware upgrade buffer is used for background flashing. * The region size should more than softdevice + bootloader + application size + 4096 */ .p_api = &nrf_fstorage_sd, /** fstorage api */ .start_addr = 0x35000, /** start address of firmware upgrade buffer */ .end_addr = 0x78000, /** end address of firmware upgrade buffer */ .chunk_size = 0, /** default chunk size */ } }, .company_info = { .p_company_name = "Imperium of Mankind", }, .watchdog = { .timeout_ms = 5000, /** If loop or priority will not finish after 5 seconds watchdog will reset microcontroller automatically */ }, .low_power_mode_enable = true, /** Low power ble settings */ } 

Die Entwicklung des GerĂ€ts Ă€hnelt der Entwicklung fĂŒr Arduino. Es gibt eine Setup-Funktion zum Initialisieren der Hauptmodule und der Schleife, in der die Verarbeitung stattfindet. Die AnwendungsfunktionalitĂ€t selbst ist in Module unterteilt - je nach ausgefĂŒhrten VorgĂ€ngen.

 /** @brief Application initialisation * @return none */ void app_setup(void) { m_pairing_init(m_led_ctrl_pairing_handler); m_led_ctrl_init(); } /** @brief Application loop * @return true - sleep is not allowed * @return false - All modules have completed operation, the mcu can enter into sleep mode. (the next loop iteration will be after any interrupt) */ bool app_loop(void) { return NRF_LOG_PROCESS(); } 

Nachdem die Ressourcen in der Datei („m_resources.c“) deklariert wurden, z. B. Lampenanimationen, Pinbelegungen (mehrere LED-Gruppen), Farben usw., bestimmt die Bibliothek den Rest der Parameter.

 /** Animation timer definition for m_rgb */ APP_TIMER_DEF(animation_timer_id); /** Leds pin map for m_rgb*/ static const r4s_rgb_ctrl_led_t m_leds_map[LEDS_COUNT] = { { .color = { .red_pin = RED_LEDS_0_PIN, .green_pin = GREEN_LEDS_0_PIN, .blue_pin = BLUE_LEDS_0_PIN, } }, { .color = { .red_pin = RED_LEDS_1_PIN, .green_pin = GREEN_LEDS_1_PIN, .blue_pin = BLUE_LEDS_1_PIN, } }, { .color = { .red_pin = RED_LEDS_2_PIN, .green_pin = GREEN_LEDS_2_PIN, .blue_pin = BLUE_LEDS_2_PIN, } }, }; /** PWM map for m_rgb */ static const r4s_rgb_ctrl_pwm_map_elem_t m_pwm_map[LEDS_COUNT] = { { .color = { .p_pwm_red = &pwm0, .p_pwm_green = &pwm0, .p_pwm_blue = &pwm0, } }, { .color = { .p_pwm_red = &pwm1, .p_pwm_green = &pwm1, .p_pwm_blue = &pwm1, } }, { .color = { .p_pwm_red = &pwm2, .p_pwm_green = &pwm2, .p_pwm_blue = &pwm2, } }, }; /** RGB lamp definition */ R4S_RGB_CTRL_DEF(m_rgb, m_leds_map, m_pwm_map, &animation_timer_id, LEDS_COUNT, 3); 

Nach dem Verkleben empfĂ€ngt die Anwendung Daten, die das GerĂ€t ausfĂŒhren kann, in unserem Fall eine GlĂŒhbirne, und zeigt die relevanten Informationen an.



DarĂŒber hinaus können Sie ĂŒber die Anwendung die Parameter steuern - IntensitĂ€t, Farbe, Temperatur usw.


Jetzt wird der Code fĂŒr das Debuggen des Prototyps ausgearbeitet. Lassen Sie sich also nicht vom Unterschied zwischen der Platine und den oberen Bildern stören.

ZusÀtzliche Funktionen umfassen:

  • Multiconnect - mehrere Smartphones, die gleichzeitig mit dem Modul verbunden sind. Diese Funktion verursacht möglicherweise Probleme, wenn Sie versuchen, das GerĂ€t gleichzeitig zu steuern. Wir haben versucht, diesen Problemen vorzubeugen, auch durch Benachrichtigungen auf allen angeschlossenen Smartphones. Wenn ein Parameter von einem Telefon geĂ€ndert wird, werden Informationen ĂŒber den neuen Parameterwert sofort an die anderen gesendet.
  • Schnelles Blinken - Die GrĂ¶ĂŸe des ĂŒber Bluetooth ĂŒbertragenen Pakets hĂ€ngt von der MTU ab . Mit zunehmender MTU wird der Flash-Prozess schneller, wenn die PaketgrĂ¶ĂŸe zunimmt.
  • Eine Liste typischer Fehler, die durch die Funktion des Mikrocontrollers bestimmt werden. Wenn ein Fehler erkannt wird, wird ein Text wie „Nicht genĂŒgend Speicher fĂŒr Softdevice. FĂŒr weitere Informationen aktivieren Sie das SDM-Debug. ".

Um mit dem Debuggen arbeiten zu können, wird eine R4S-Engineering-Anwendung mit den gleichen Funktionen wie normal freigegeben, aber ĂŒber diese wird die Karte gesteuert. Im Prinzip können Sie ĂŒber eine technische Anwendung zusammengebaute GerĂ€te in Ihrer Wohnung verwalten - ein schönes Teil fĂŒr Heimwerker. Dies sollte unerfahrenen Entwicklern helfen, das GerĂ€t zu unterstĂŒtzen. In der Hauptanwendung von R4S erscheint ein solches GerĂ€t nach Koordination und QualitĂ€tskontrolle unsererseits.

Wir werden das Debuggen auch in der tĂ€glichen Arbeit des Unternehmens einsetzen, auch bei der Schulung neuer Mitarbeiter. Habrovchane, wie Sie denken, wird abheben? WĂŒrden Sie daran interessiert sein, mit einem solchen Debugging zu arbeiten?

Source: https://habr.com/ru/post/de429822/


All Articles