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



Teraz jest 8 lis 2024, o 20:22


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
Avatar użytkownika

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

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

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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
Avatar użytkownika

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

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łę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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
Avatar użytkownika

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

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

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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