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



Teraz jest 7 mar 2025, o 00:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 24 maja 2013, o 16:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

Potrzebuje zrobić urządzenie które będzie posiadało możliwość aktualizacji (podmienienia) softu - nie potrzebuje żadnej innej komunikacji. Najpierw poradzono mi abym użył FT232 i bootloadera pod UART. Tak też zrobiłem. Ale teraz zdałem sobie sprawę że da się jeszcze prościej.

Istnieje bootloader symulujący USBasp: http://www.obdev.at/products/vusb/usbasploader.html
Od strony sprzętowej przy tym bootloaderze wystarcza sama wtyczka USB.
I teraz kilka pytań (bo ja się za bardzo nie orientuje w temacie bootloaderów):
1) Bootloader w systemie przedstawia się jako "USBasp"- czy w prosty sposób udało by się podmienić nazwę na inną (nazwe mojego urządzenia)?
2) Aby uruchomić bootloader należy zewrzeć jedną ze zworek - dla mnie nie jest to ani wygodne ani nawet możliwe (bo wszystkie piny AVR są wykorzystane) - czy dało by się zrobić to tak aby bootloader uruchamiał się np. przy wyborze jakiejś opcji z menu?
3) Na schemacie (artykuł w którym znalazłem ten bootloader jest na forbocie) http://www.forbot.pl/forum/upload_img/o ... c47332.png
piny USB są podłączone do nóżek PD2, PD4 - oczywistym jest że trzeba to zmienić bo ja te nóżki mam zajęte. Będzie to proste? Co więcej na wyżej pokazanym schemacie AVR jest zasilany z USB a ja bym chciał aby podczas aktualizacji softu AVR cały czas był zasilany z baterii w urządzeniu. Wystarczy więc po prostu zawiesić w powietrzu pin 1 gniazda USB?

dziękuje

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 maja 2013, o 16:55 
Offline
Użytkownik

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

jeśli chodzi o VUSB to jest ono kłopotliwe i w sumie to bardziej ciekawostka , gdyż większość czasu procesora pochłania obsługa USB ... rozwiązanie z FT232 na bootloaderze UART jest duzo pewniejsze i wygodniejsza , zwłaszcza że np bootloader Mirka zajmuje tylko 256bajtów , zaś mój zgodny z stk500 512bajtów.

Jeśli chodzi o bootloadery USB widać ich sens dopiero w mikrokontrolerach, które posiadają sprzetowe USB

_________________
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: 24 maja 2013, o 17:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

Nie rozumiesz. W mojej specyficznej sytuacji FT232 jest całkowicie zbędny. Nie potrzebuje żadnej komunikacji poza zmianą softa! Podczas zmiany softa AVR i tak nic nie będzie robił (przy FT też by nic nie robił) - wiem że będzie szybciej przy FT ale to kwestia 3s zamiast 6s (dla mnie i 10min mogło by być). Byłem przygotowany na to że będziecie mnie odciągać od tego pomysłu (zresztą ja sam miałem już na płytce narysowane wszystkie połączenia pod FT) ale ja FT nie chce.

Analziuje kod bootloadera: znalazłem taką definicje preprocesora w pliku nagłówkowym która jest chyba kluczowa dla wprowadzenia uruchamiania bootloadera z MENU (domyślnie jest ze zworki D7 (JUMPER_BIT = 7)):

Składnia: [ Pobierz ] [ Ukryj ]
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

[pomiędzy PIND a (1.. jest operator bitowy AND -nie wiem czemu się tak dziwnie na forum wyświetla]

Z tego co rozumiem bootloader sparawdza warunek( domyślnie jest to stan zworki) zaraz po włączeniu układu. Jeśli zworka jest zwarta uruchamia się całe wnętrze bootloadera , po wgraniu softa AVR musi zostać zresetowany. W przeciwnym razie (zworak otwarta) wykonuje się mój program.

Ja jednak potrzebuje zrobić tak aby użykownik wybierał sobie z MENU opcje ,że chce zaktualizować soft. W związku z tym wymyśliłem, że bootloader będzie sprawdzał (zamiast stanu zworki) zawartość pewnej komórki w EEPROM. Jeśli będzie domyślna(1) bootloader się nie uruchomi, jeśli (0) uruchomi się.

W związku z tym wymyśliłem że po wybraniu opcji w MENU zostanie zmieniona wartość tej komórki w EEPROM a następnie AVR zostanie programowo zresetowany (np przez watchdog). Na LCD zostanie ekran że "proszę wgrać softa". W tym czasie bootloader będzie aktywny. Ostatnią operacją którą bootloader wykona po wgraniu softa będzie ustawienbie na nowo 1 w EEPROM i programowy reset (lub reset nie jeśli to zbędne. zbędne?). dobrze to wymyśliłem?

Oczywiście może dojść do pomyłek polegających np. na wgraniu wadliwie działającego softa(uniemożliwiającego zmianę stanu komórki w EEPROM i tym samym dostęp do bootloadera) dlatego można wprowadzić alternatywny sposób uruchamiania bootloadera właśnie ze zworką czy coś w tym stylu która była by wewnątrz obudowy np. koło baterii <-- oczywiście ten sposób byłby niewygodny i mniej efektowny (LCD by nic nie wyświetlał itp) ale to rozwiązanie "serwisowe", awaryjne.Wszystkie te moje pomysły zakładają że bootloader może tylko włączyć się na początku, więc zasadnicze pytanie czy istnieje możliwość wywołania bootloadera np w środku programu?

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 maja 2013, o 22:50 
Offline
Użytkownik

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

Istnieje taka możliwość .... wystarczy w menu dac opcję bootloader i na wolnym pinie wysterować w tym momencie
np tranzystor który dokona resetu uaktywniając bootloader np.

_________________
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: 25 maja 2013, o 09:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sie 2012
Posty: 245
Lokalizacja: Kielce
Pomógł: 6

Mozna programowo zresetowac więc po co takie udziwnienia ?

Domyślnie fusebity są ustawione tak że bootloader uruchamia się na początku. Mozna jednak bootloader uruchamiać na skutek jakiegoś zdarzenia (jak się zmieni ten bit) . Wówczas wystarczy w powyższej definicji wpisać na stałe 1.

_________________
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



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: 5 ] 

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