Pytanie:
Dlaczego rozmiary bootloadera różnią się od 0,5 do 8 kilobajtów dla różnych kart?
EEd
2014-08-17 21:29:47 UTC
view on stackexchange narkive permalink

Według oficjalnych informacji internetowych, rozmiary bootloadera to 0,5, 2 i 8 kilobajtów dla UNO, Pro mini i ATMega2560. Uważam, że wszystkie trzy programy ładujące wykonują podobną pracę, odbierając dane łącza szeregowego i zapisując je w pamięci Flash.

UNO i Pro mini używają takich samych / podobnych chipów ATMega168 / 328, ale rozmiar programu ładującego to 0,5 i 2 KB.

ATMega2560 ma bardziej zaawansowany mikrokontroler , który prawdopodobnie powinien wykorzystywać podobną lub nawet mniejszą pamięć do wykonania tego samego zadania, ale rozmiar jest znacznie duży i wynosi 8 KB .

Dlaczego rozmiary się różnią? Niewielkie różnice mogą być wyjaśnione przez różne zespoły programistyczne, ale powinny być tak bardzo różne , od 0,5 do 8 KB.

Różne programy ładujące mają różne możliwości.
Dwa odpowiedzi:
Gerben
2014-08-17 22:47:06 UTC
view on stackexchange narkive permalink

Program ładujący Mini i Uno jest prawie taki sam. (Nie mogę znaleźć kodu źródłowego, ale pliki szesnastkowe są tylko trochę inne).

2k wynika z tego, że nie zaktualizowali mini328.upload.maximum_size w boards.txt . Prawdopodobnie dlatego, że zepsułoby to tablicę dla użytkowników, którzy jeszcze nie zaktualizowali bootloadera.

2560 używa programu ładującego kompatybilnego ze stk500v2 zamiast Optiboot (uno i mini), ponieważ optiboot obsługuje tylko adresy do 64kb . Nie wiem jednak, dlaczego jest o wiele większy.

Jak sprawdzić, czy płyty UNO, Pro Mini / ATMega2560 są załadowane najnowszą wersją programu ładującego (mając nadzieję, że jest mniejszy, aby umożliwić maksymalny program użytkownika)? Gdzie mogę znaleźć najnowsze programy ładujące dla tych 3 płyt? W razie potrzeby, jak ponownie zaprogramować program ładujący UNO / Pro Mini / ATMega2560?
Wgranie najnowszej wersji jest prawdopodobnie łatwiejsze niż sprawdzenie, która wersja się na niej znajduje. Programy ładujące można znaleźć pod adresem: https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders. Po prostu wygoogluj, jak zaktualizować. Jeśli możesz to rozwiązać, zadaj nowe pytanie tutaj na SE.
Nick Gammon
2018-05-02 11:22:25 UTC
view on stackexchange narkive permalink

Ogólnie rzecz biorąc, chipy oferują cztery możliwe konfiguracje rozmiaru bootloadera. Na przykład na Atmega328 możesz mieć 512, 1024, 2048 lub 4096 bajtów (zauważ, że rozmiary zwiększają się o potęgę 2).

Chipy z mniejszą pamięcią programu oferują mniejsze bootloadery, ponieważ wygrały ' Chcę wykorzystać dużo tej pamięci na coś, co jest używane tylko do przesyłania kodu. Chipy z większą pamięcią (jak Atmega2560) oferują większe bootloadery, tj. 1k, 2k, 4k, 8k (ponownie wzrasta o potęgę 2).

Uno udaje się użyć 512-bajtowego bootloadera (Optiboot). Mega, która ma bardziej złożone instrukcje (do obsługi większej przestrzeni adresowej), wymagałaby większych programów ładujących. Również w niektórych przypadkach twórcy bootloadera dodają dodatkowe rzeczy, takie jak konsola debugująca.



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...