HomeMade

Pełna wersja: Arduino
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
(18-03-2021 6:06)SP6AUO napisał(a): [ -> ]Witam.
Z góry dziękuję za wszelkie informacje.
Na załączniku dwa przykłady skompilowanych plików użytych w procesie programowania.Jeden wsad zajmuje 97% w pamięci drugi 100%.
,
Wpis typu " u mnie zajmuje 95%" nie do końca jest dla mnie zrozumiały.
Przy kompilacji tworzą się dwa pliki hex i ja je przedstawiłem, konkretnie.
Jestem laikiem w tej dziedzinie i działam na zasadzie "macajewa",
metodą nie do końca zrozumiałą.
Tadeusz,chętnie spróbuję tej metody o której piszesz w post 185.
Już pierwsze pytanie,czy trzeba do tego wypalić bootloader ?
Witam!
Jeżeli korzystamy z programatora USBasp lub podobnego ISP, to wystarczy plik bez bootloadera.
Bootloader potrzebny jest przy programowaniu procesora "po UART",
czyli bezpośrednio z IDE arduino na oryginalnych płytkach lub z pomocą konwertera USB - UART(RS).

https://atnel.pl/mkbootloader.html

Sebastian
Tak.To wiem,tylko dlaczego plik z bootloaderem da się zapisać,a bez bootloadera nie ?
Dlaczego zawartość z bootloaderem jest mniejsza (97%) od standardu (100%) ?
U mnie to wygląda tak:
[attachment=16979][attachment=16980]
kompilowana przed chwilą wersja "1.02m" w arduino IDE 1.8.13.
Płytka "Arduino NANO" Atmega328p.
Pozdrawiam Sebastian
Żeby to było porównywalne z moim wyglądem,należy ustawić prawidłowe fuse bity ( L-FF,H-D6,Ex-FD) i zapisać.
Wstawic ptaszka w okienku fuse bity i wybrać ver 1.02p.
Może ver 1.02m jest mniejsza od 1.02p
Przy okazji, czy zmiana fuse bitów zwiększa zajętość pamięci ?
Andrzeju fusebity to tylko fisebity konfigurujące niektóre właściwości Atmegi.

Co do zajętości pamięci. Założeniem całego środowiska jest praca z bootloaderem, więc automatycznie do dyspozycji dla użytkownika jest mniejsza ilość dostępnego FLASH-a.
Ten bootloader gdzieś musi się zmieścić.
To ile dostępnego FLASH-a jest w Atmedze na danej platformie arduino dla użytkownika, zapisane jest w plikach konfiguracyjnych płytek w środowisku Arduino IDE. Zwróćcie uwagę, że używana Atmega328 posiada 32768 bajtów FLASH, a dokładniej 16384 słów. Tą informację widać na prezentowanych zrzutach ekranów MkAVRCalculator.
Natomiast w informacji po kompilacji w ArduinoIDE widać, że dostępna ilość pamięci FLASH dla użytkownika to 30728 bajtów. Reszta zarezerwowana jest na bootloader Arduinowy.

(18-03-2021 9:08)SP6AUO napisał(a): [ -> ]Dlaczego zawartość z bootloaderem jest mniejsza (97%) od standardu (100%) ?

Tu potrzebne są logi z kompilacji, aby zrozumieć co się dzieje.
Zapewne kompilacja z bootloaderem robiona jest dla wielkości FLASH-a 32768 bajtów, więc skoro główny program po kompilacji nie zajmuje całej dostęþnej przestrzeni FLASH-a dla użytkownika ( 30728 bajtów) to masz 97% zajętości, a nie 100%. Bootloader ładowany jest na sam koniec Flash-a do sekcji przeznaczonej dla bootloadera.
Zauważ, że kod wynikowy bez bootloadera też nie zajmuje całego dostęþnego FLASH-a dla użytkownika - 30728 bajtów.

(18-03-2021 9:08)SP6AUO napisał(a): [ -> ]Tak.To wiem,tylko dlaczego plik z bootloaderem da się zapisać,a bez bootloadera nie ?
W jaki sposób zapisujesz ten plik z bootloaderem ? Z poziomu ArduinoIDE przez bootloader, czy z poziomu MkAVRCalcilator-a i usbasp ?
Jeżeli z poziomu ArduinoIDE, to chcesz zrobić rzecz niemożliwą do zrobienia - nadpisać działający bootloader nowym bootloaderem.

Ale aby dojść do wyjaśnienia problemu potrzebne są logi, bo to podstawowa baza informacji co idzie nie tak.
Trochę mi to zajęło.
Wersja "p" i fuse bity ( L-FF,H-D6,Ex-FD) efekt:
[attachment=16981][attachment=16982]
Skompilowane dla UNO, zapisane.
Sebastian
OK.teraz jestem przekonany,że gdzieś robię błąd.
U mnie bez bootloadera plik skompilowany do .hex zajmuje 100%, a u Ciebie 95%.
Jeszcze mam jedną prośbę.Sebastian zrób zrzut strony "fusy uproszczone". Porównam nastawy,może tu jest coś nie tak.
A teraz info dla Pawła.
W arduino skompilowałem plik .ino
Otrzymałem dwa pliki .hex
Jeden z bootloaderem.hex i drugi standart.hex (post:#189 to jest ten zapis)
Zapis robię z MkAVRCalcilator-a i usbasp przez isp.
Procesor kupiłem jako bez bootloadera.
Andrzeju, rozumiem teaz.

Z ciekawiości uruchomiłem ArduinoIDE w wersji 1.8.13. Załadowałem najnowszy szkic - 1.02p, płytkę ustawiłem jako arduino UNO. Szkic z domyślnymi ustawieniami bez zmian, prosto z githuba.

Wynik kompilacji:
[attachment=16983]

Najnowsza wersja QCX-a zajmuje trochę więcej miejsca we FLASH, więc wymagany jest bootloader OptiBoot. Ten bootloader jest używany już w nowszych płytkach. Jest znacznie "chudszy" - potrzebuje jedynie 512 bajtów FLASH-a ( więcej miejsca dla użytkownika) w porównaniu do poprzedniego bootloadera, który potrzebuje i rezerwuje 2048 bajtów FLASH-a, zostawiając mniej miejsca dla uzytkownika.

I w tym miejscu możesz mieć problem, lub nadal nie potrafię zrozumieć za bardzo Twojego toku myslenia.
Dla mnie nie ma możliwości, aby wsad ze zintegrowanym bootloaderem był mniejszy niż wsad bez zintegrowanego bootloadera. Może pomyliłeś się przy nadawaniu nazwy dla plików i zrobiłeś to odwrotnie
Andrzeju ok, robi się:
[attachment=16984][attachment=16985][attachment=16986]

Mam nadzieję, że to pomoże.
Powodzenia
Sebastian
Mam wszystko tak samo a plik standard.hex zajmuje 100%.
Sebastian ,możesz mi wysłać plik standard.hex z ver1.02p
Stron: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Przekierowanie