Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 30 kwi 2025, o 22:57


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 11 kwi 2016, o 21:50 
    Offline
    Nowy

    Dołączył(a): 11 lis 2015
    Posty: 3
    Pomógł: 0

    Cześć. Od niedawna programuję w środowisku Arduino. Jestem bardziej Hardware'owcem, niż programistą. Mam kilka pytań.

    1.Czy Bootloader wgyrwany jest na pamięć FLASH kontrolera AVR a następnie zabezpieczany poprzez lock bity lub podobny mechanizm?

    2.Po co jest pamięć EEPROM, czy możemy ją programować? Jakie dane zawiera?

    3.Gdzie zaszyte są FUSE bity oraz LOCK bity? Czy są one w pamięci FLASH czy w EEPROM czy ciężko stwierdzić i można się tylko domyślać na podstawie adresów które są ustawiane podczas odczytu/zapisu tychże bitów?

    4.Czy po napisaniu programu w środowisku Arduino (np w Arduino 1.6.7), po poprawnej kompilacji tegoż programu na Atmegę8A, muszę wgrywać do niej także Bootloader? Szukałem definicji oraz funkcji bootloadera i zrozumiałem na razie tyle, że Bootloader jest potrzebny dla naszej wygody, po to by np w shieldzie arduino uprościć COM'ową komunikację oraz że Bootloader Arduino wcale nie jest konieczny do poprawnego działania programów napisanych w środowisku ARDUINO (np. 1.6.7).

    Pisząc bootloader mam na myśli bootloader arduino'wy, bo tylko z takimi się spotkałem na razie.

    Z góry dziękuję za odpowiedzi.

    //EDIT:
    no i zapomniałem najważniejszego. Czy potrzebuję bootloadera ARDUINO gdy wyeksportuję sobie skompilowany program HEX/BIN ze środowiska ARDUINO w wersji bez zintegrowanego bootloader'a i wgram go za pomocą AVRDUDE oraz USBASP.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 22:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 mar 2014
    Posty: 1475
    Pomógł: 167

    1. Tak, bootloader znajduje się w pamięci flash. Przez odpowiednią zmianę fuse bitów część przestrzeni jest przeznaczana na bootloader. Dla sekcji bootlodera przeznaczone są dodatkowe lock bity.
    2. Eeprom, jest to rodzaj pamięci nieulotnej. Służącej do przechowywania danych. Możesz ją czytać i zapisywać, nawet po jednym bajcie, bezpośrednio z programu.
    3. Fuse i lock bity znajdują się w odrębnej przestrzeni niż pamięć flash.
    4. Jeżeli wgrywasz program botloaderem to nie jest on (bootloader) ruszany, więc go nie wgrywasz (nawet nie masz możliwości). Jeżeli będziesz wgrywać poprzez ISP (np. USBasp) to przed wgraniem programu czysczona jest pamięć flash, więc kasowany jest bootloader. Dlatego jak chcesz go mieć, to musisz go także wgrać.

    --
    Pozdrawiam,
    Robert


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 22:36 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Jak pisał wyżej kolega ...

    Ad1. Tak bootloader siedzi w sekcji Bootloadera w pamieci flash , dodatkowo Fus właczający bootloader
    zmienia wektory pamieci dzięki czemu procesor startuje od adresu 0000 ładując bootloader , po
    czym po wgraniu programu startuje od od adresu zależnego od rozmiaru bootloadera.
    W przypadku atmegi8 zostaje ci po wgraniu bootloadera Arduino całe 6782Kb pamięci flash :)

    Ad2. J/W , ale lepiej używać eeproma zewnętrznego np 24Cxx bo jak będziesz często zapisywał
    jakieś zmienne do EEPROM to szybko ci się skończy -- ma skończoną liczbę cykli R/W

    Ad3. J/W , ale uważaj ... łatwo jak nie nabedziesz ogłady zablokować procka :) najprościej nie bawić
    się nimi :) zakupić MKCalkulator nie uwalisz tak łatwo procka:)

    Ad4. sektor bootloadera jest zabezpieczony odpowiednim lockBitem przed nadpisaniem podczas
    wgrywania programu przez bootloader , podczas wgrywania programu przez programator
    ulatuje z procka i trzeba go wgrac ponownie używając programatora , wykonując polecenie
    Wypal Bootloader z menu Arduino IDE

    NAjważniejsze....

    Nie potrzebujesz bootloadera do wgrania wsadu HEX via USBasp lub inny programator , dodatkowo masz więcej pamięci do dyspozycji w procku...

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 22:50 
    Offline
    Nowy

    Dołączył(a): 11 lis 2015
    Posty: 3
    Pomógł: 0

    Bardzo dziękuję Panowie! Bardzo szybkie i konkretne odpowiedzi :)

    Rozumiem, że w takim razie mogę napisać program na Atmegę8 w środowisku Arduino (np Arduino 1.6.7 bo akurat teraz taką wersję posiadam), następnie wyeksportować ten program do pliku HEX oraz wgrać go przez USBASP zupełnie pomijając integrację bootloadera z plikiem HEX? (jestem na 90% przekonany, że odpowiedź brzmi : tak) :)

    Jeszcze jedno pytanie:
    Po co używa się pamięć EEPROM wewnątrz uC AVR? Jakieś przykłady korzystania z niej? Kiedy się przydaje?

    (tak na logikę wydaje mi się, że ta pamięć może się przydać, jeżeli chcemy np zapisać jakąś zmienną, po czym zanika zasilanie, a potem chcemy znów korzystać z tej zmiennej (no i pilnować, żeby nie zapisywać tej danej za często np co 100ms:) ))



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 22:56 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    ludek napisał(a):
    (jestem na 90% przekonany, że odpowiedź brzmi : tak)


    dokładnie tak (yes/ JA/ da ) :)

    Pamięc EEPROM przydaje się jak układ nap wymaga zapisania konfiguracji

    np: Wchodzisz do menu , ustawiasz szybkośc transmisji, podświetlenie lcd itd ... i dajesz zapisz

    i te dane sa zapisane w eeprom , a potem przy każdym starcie programu są wczytywane i program pracuje tak jak tego chciałeś , do puki nie zostaną zmienione ustawienia :)

    oraz tak jak to widzisz na logikę ...

    Oczywiście polecam zapoznanie się z zewnętrznymi układami EEPROM jak chcesz czesto zapisywać
    dane .. :) bo 100000 tylko cykli ZAPISU wytrzymuje , może być więcej , ale tyle gwarantuje producent
    w brew temu co się wydaje to więcej niż ma pamięc flash , ale czeste zapis mogą to wyczerpac w kilka godzin :)

    Objawia się to błedami odczytu / zapisu do pamięci :) a tym samym złym działaniem mikrokontrolera :)


    Autor postu otrzymał pochwałę

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 22:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 mar 2014
    Posty: 1475
    Pomógł: 167

    Tak. Może wgrać program poprzez USBasp. Pamiętaj tylko, że jak wykasowujesz bootloader, to musisz wyłączyć go w fuse bitach, bo program będzie chciał wystartować z sekcji bootloadera a tam będzie pusto. Zmianę fuse bitów zrobisz także przy pomocy USBasp.
    W pamięci EEPROM typowo trzyma się konfigurację. Użytkownik (nie twórca programu) ustawia sobie wartości, które są przechowywane nawet po zaniku zasilania.

    --
    Pozdrawiam,
    Robert



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 23:03 
    Offline
    Nowy

    Dołączył(a): 11 lis 2015
    Posty: 3
    Pomógł: 0

    Dzięki Panowie! To już chyba wszystko, o co chciałem zapytać. Dzięki za miłą atmosferę w moim odczuciu, piszę to jako początkujący zarówno jako programista i jako user forum :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 kwi 2016, o 23:07 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    A prosze bardzo ...
    u nas to normalne .. choć wiem może dziwić takie podejście :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO