Pytanie:
Jaki jest cel bootloadera mikrokontrolera?
midnightBlue
2016-04-15 19:45:28 UTC
view on stackexchange narkive permalink

Z mojego punktu widzenia, w przypadku zwykłego mikrokontrolera (np. AVR, PIC) istnieją zasadniczo dwie metody programowania jego pamięci flash.

  1. Korzystanie z programatora: In-Circuit Serial Programowanie (lub jakiś wariant?)
  2. Jakaś forma bootloadera, z którym komunikuje się urządzenie zewnętrzne, ostatecznie pozwalając mikrokontrolerowi na flashowanie własnej pamięci.

Z pewnością musi istnieć bardzo dobry powód, aby używać bootloadera, w przeciwnym razie jego obecne powszechne użycie byłoby bardzo dziwne. Po prostu nie wydaje mi się, żebym to w pełni zrozumiał.

Czy to, że programista jest drogi? Ale są też Arduino (mikrokontroler ATmega), które mogą działać jako programiści. Czy koszt jednego dodatkowego układu scalonego jest wystarczający, aby uzasadnić użycie bootloadera? Jeśli się nie mylę, najnowsze Arduino całkowicie pozbywają się układu FTDI, zastępując go procesorem ATmega, który obsługuje interfejs USB na szeregowy. Z pewnością byłoby możliwe zintegrowanie funkcji programisty na przykład z tym układem scalonym?

Albo weźmy na przykład mikrokontroler PIC. Jest coś, co widziałem, zwane programatorem JDM. Jeśli coś takiego, praktycznie bez aktywnych komponentów, może zaprogramować PIC, to

  1. Po co w ogóle używać bootloadera?
  2. Jaki jest cel stosunkowo dużo więcej złożony PICkit (oprócz solidności)? Możliwość debugowania?
https://www.arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader Odpowiedź brzmi „wygoda”
do inicjalizacji sprzętu lub ładowania kodu z zewnętrznego źródła do pamięci wewnętrznej
Aby dodać do niektórych odpowiedzi tutaj, dotyczących „drogich”: dla niektórych MCU (AVR, STM8 / 32, ...) programiści są tani.Możesz dostać programator AVR za 15 USD lub mniej.Jednak w przypadku innych rodzin MCU (na przykład Kinetis) programiści mogą przekraczać 100 USD, a programiści / debuggery, które mogą programować wiele rodzin ARM, mogą wynosić 500 USD +.Ale jak powiedzieli inni, chodzi głównie o wygodę, zdalne aktualizowanie i eliminację zewnętrznego sprzętu.
Sześć odpowiedzi:
Dave Tweed
2016-04-15 20:27:49 UTC
view on stackexchange narkive permalink

Głównym celem programu ładującego jest umożliwienie aktualizacji oprogramowania sprzętowego przez interfejsy inne niż domyślny interfejs sprzętowy. Na przykład umożliwia to aktualizacje za pośrednictwem kanałów komunikacyjnych, których aplikacja używa w inny sposób do własnych celów, co oznacza, że ​​można przeprowadzać zdalne aktualizacje w systemie bez konieczności fizycznej interwencji w zdalnej lokalizacji.

Gdy już to zrobisz możliwości, nie potrzebujesz dodatkowego sprzętu, co sprawia, że ​​jest to metoda o najniższych powtarzalnych kosztach i dlatego używają jej systemy hobbystyczne, takie jak Arduino. Zapewnia również niewielką blokadę marketingową, ponieważ teraz musisz kupić swoje chipy AVR z już zaprogramowanym bootloaderem.

m4l490n
2016-04-15 21:40:29 UTC
view on stackexchange narkive permalink

Istnieją scenariusze, w których program ładujący nie dodaje zbyt wiele wartości. Masz rację, jeśli masz kilka tablic, z pewnością możesz dołączyć programator i ponownie sflashować kod. Jeśli jesteś hobbystą z kilkoma płytami lub masz nawet małą produkcję, możesz to zrobić w ten sposób.

Bootloadery mają więcej sensu w scenariuszach, w których fizyczne podłączenie programisty byłoby mniej praktyczne. Na przykład gotowe produkty, które są już wdrożone, to jeden z tych scenariuszy.

Generalnie, gdy masz produkt elektroniczny, nie pozwalasz na ujawnienie portu „debugowania” lub „programowania”. Masz tylko Ethernet, port szeregowy, RS485, CAN lub sieć bezprzewodową w swoim produkcie.

A co jeśli masz już kilkadziesiąt, a może setki sprzedanych / wdrożonych urządzeń i masz aktualizację oprogramowania układowego ?

Zamiast otwierać obudowy po kolei, podłączać programistę, programować, zamykać obudowę produktu i tak dalej, możesz po prostu użyć jednego z istniejących interfejsów produktu, aby go zaprogramować.

Jest jeszcze lepiej, gdy masz „połączone” urządzenia, na przykład za pomocą sieci Ethernet lub dowolnego rodzaju sieci bezprzewodowej. Jeśli umieścisz moduł bezprzewodowy w jakimkolwiek produkcie, możesz użyć komunikacji bezprzewodowej z bootloaderem do aktualizacji kodu, w ten sposób możesz zaktualizować kilka urządzeń jednocześnie i bez ich dotykania.

I to staje się wymarzoną funkcją, jeśli Twoje urządzenia są podłączone do internetu. W ten sposób możesz zaktualizować oprogramowanie układowe za pomocą jednego kliknięcia, gdy telefon pobiera aktualizacje.

Dla hobbysty może nie ma sensu używanie bootloadera, ale z biznesowego punktu widzenia, gdzie faktycznie sprzedajesz urządzenia, ma to wiele sensu, ponieważ oszczędza czas, dodaje dużo wygody do procesu i jeśli Twoi użytkownicy mają kontaktując się ze swoim urządzeniem, nie musisz sprzedawać im programistów tylko w celu aktualizacji oprogramowania (lub zmuszać ich do kupowania programistów w inny sposób). A co, jeśli twoje urządzenia są takie same funkcjonalnie, ale z różnymi mikrokontrolerami? musiałbyś ustalić, kto ma co, żeby wysłać lub sprzedać odpowiedniego programatora, to staje się koszmarem !!

Zamiast tego po prostu wkładasz do niego port USB i wszystko zostaje ukryte przed użytkownikiem, każdy wie, jak podłączyć USB do komputera, skopiować do niego jeden plik i podłączyć go do innego urządzenia, ale żaden zwykły użytkownik nie wie, czym jest debugger P&E, PICKit lub Segger J-Link.

Przepraszam, jeśli to trochę zagmatwane, angielski nie jest moim językiem i może redakcja to bałagan, ale mam nadzieję, że rozumiesz pomysł.

Pozdrawiam !!

Dobra odpowiedź, może trochę rozwlekła.Twój angielski jest w porządku (przynajmniej z mojej perspektywy dla osób, dla których nie jest to język ojczysty).
Angielski jest dziwny w tym sensie, że będąc domyślnym językiem w handlu światowym, prawdopodobnie jest więcej osób nie będących rodzimymi użytkownikami niż native speakerami.Tak więc „poprawny” angielski staje się trudniejszy do zdefiniowania.Jako native speaker z Kansas City w Stanach Zjednoczonych bez problemu Cię zrozumiałem.
dnozay
2016-04-15 20:36:06 UTC
view on stackexchange narkive permalink

Głównym celem bootloadera jest:

  • pobranie programu z pamięci / sieci i załadowanie go.

Ilość plików może być bardzo ograniczona. szybkie przechowywanie w pobliżu jednostki przetwarzającej, a program, który chcesz uruchomić, może różnić się w zależności od karty lub możesz chcieć zmienić program na swojej płytce. Program ładujący to program o wspólnym mianowniku, który wie, jak załadować niestandardowe oprogramowanie z miejsca, w którym jest ono przechowywane, i przesłać je do jednostki przetwarzającej.

Zaawansowane programy ładujące potrafią:

  • autotesty
  • rozruch sieciowy
  • załaduj dodatkowe oprogramowanie sprzętowe
  • ...
OP pyta konkretnie o programy ładujące znalezione w mikrokontrolerach opartych na pamięci flash.Chociaż dotyczy to bootloaderów w bardziej ogólnym sensie, ta odpowiedź jest nieco nie na temat.
Jan Dorniak
2016-04-16 22:29:15 UTC
view on stackexchange narkive permalink

Oprócz wszystkich innych świetnych odpowiedzi jest jeszcze jeden powód, przynajmniej w przypadku produktów komercyjnych: po zaprogramowaniu produkcji większość chipów ma ustawioną opcję chroniącą je przed odczytem danych.

W zależności od MCU ta opcja ochrony odczytu może faktycznie wyłączyć połączenie programatora sprzętowego (jak SWD lub JTAG). Jeśli nie masz uruchomionego bootloadera, nie możesz przeprogramować urządzenia.

A potem masz 10 000 jednostek z błędnym oprogramowaniem na rynku, co wiąże się z ogromną stratą w porównaniu z czymś, co w zasadzie trwa kilka miesięcy kodowanie.

magu_
2016-04-16 03:03:29 UTC
view on stackexchange narkive permalink

Tylko po to, by pokazać również punkt widzenia hobbysty:

To znacznie ułatwia życie, ponieważ nie wymaga żadnego dodatkowego sprzętu ani wiedzy niskiego poziomu. Jednym z ekstremalnych przykładów, którego użyłem, był foton cząstki (bez przynależności), który może błysnąć nad chmurą. Jedyne rzeczy wymagane do flashowania tego układu to:

  • Zasilacz
  • WLAN
  • Połączenie internetowe
  • Jeden inny komputer do napisać oprogramowanie

Dzięki temu proces jest raczej niedrogi i w rzeczywistości jest dość prosty z punktu widzenia nieprofesjonalnego.

old_timer
2016-04-16 06:48:35 UTC
view on stackexchange narkive permalink

To nie jest koszt programisty. Sprzedaż nie pochodzi od hobbystów; jest to czynnik, ale nie czynnik, ludzi, którzy kupują w dużych ilościach, z pewnością stać na programistów. Masz kilka możliwości:

  1. Niech części zostaną wstępnie zaprogramowane przez dostawcę części, pośrednika lub twój dom produkcyjny, a następnie umieść je na tablicy

  2. Coś w programowaniu obwodów po umieszczeniu na płytce

W drugiej kategorii znajdują się rozwiązania logiki twardej ( SPI lub SPI-rzecz na układach AVR) i rozwiązania miękkie (bootloader, program działający w części używającej części). Niektórzy mają jedno i drugie.

Trudne rozwiązanie, które musisz wykonać dobrze, jeśli zgubisz projekt, musisz go dostatecznie wcześnie złapać lub twój produkt to zbiór bezużytecznych części, które musisz wyrzucić. Możesz zmieniać rozwiązania programowe, nawet jeśli post silikonowe; możesz nawet dokonać inwentaryzacji, przeanalizować i przeprogramować. Jest więc luksus, jeśli błąd w twoim produkcie jest łatwiejszy do naprawienia i / lub stworzenia. Miękkie rozwiązanie może również pozwolić użytkownikowi na większą różnorodność opcji. SPI I I²C ORAZ USB I port szeregowy ORAZ jakiekolwiek rozwiązanie sprzętowe, jeśli takie istnieje. Miękkie rozwiązanie w niektórych przypadkach użytkownik może zastąpić bootloader własnym z własnych powodów.

Nie każdy mikrokontroler może mieć oprogramowanie, które może zaprogramować własną pamięć flash, ale w każdym przypadku użytkownik może własny bootloader niezależny od dostawcy chipa, jeśli jest taki dostarczony przez dostawcę.

Z ARM Cortex-M i SWD widzę rzeczy się zmieniają; niektóre chipy są tylko SWD, a żaden inny z opcji fabrycznej. Właśnie dostałem Atmel SAM D21; nie mają już bootloadera SAM-BA i zapewniają źródło, więc możesz dodać swój własny na początku flashowania użytkownika, a także niektóre rejestry, aby go chronić, ale jest to trywialne do usunięcia. Tyle na ten temat; równie dobrze możesz po prostu stworzyć własne lub użyć SWD.

Spójrz na świat Arduino / AVR, na hobbystów. Mają własny program ładujący i jest to podstawowy interfejs, ponieważ jest dostępny za darmo. Możesz dostać programistę ISP za kilka (lub kilkadziesiąt) dolców. Ale zwróć uwagę, że wiele innych płyt AVR korzysta z protokołów opartych na USB zamiast popularnych dotychczas programów ładujących. Niektóre z tych protokołów USB są używane przez różnych dostawców.

Ostatecznie, jeśli Twoi klienci tego chcą i / lub Twój dział marketingu może go użyć do odróżnienia naszego produktu od ich produktów, a to nie działa t obniżać koszt produktu lub zysk. Dlaczego nie? Win-win.

Nie ma jednej, prawidłowej odpowiedzi na to pytanie; wszystko opiera się na opinii. Możesz skontaktować się z każdym z dostawców chipów i zapytać ich, ale osoby odpowiadające wyrażą swoją opinię, prawdopodobnie nawet nie wiedzą lub nigdy nie rozmawiali z ludźmi, którzy dodali tę funkcję lub ją utrzymują. Nie ma odpowiedzi na to pytanie.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...