Skocz do zawartości

Kurs STM32 F4 - #12 - Programowanie przez bootloader


Komentator

Pomocna odpowiedź

html_mig_img
Każdorazowe podłączanie programatora przy zmianie programu może być męczące lub czasem zupełnie niemożliwe.Zastosowanie bootloadera pozwala ominąć tę niedogodność poprzez wgrywanie programu przez interfejsy takie jak UART, I2C, SPI, czy USB.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Witam!

Czy ktoś również ma problem z programem DfuSe Demo? Program nie chce wykryć mikrokontrolera, ani po resecie, ani po ustawieniu zworek we wszsytkich mozliwych pozycjach. Nie działa z płytką discovery ani z gołym procesorem podłączonym bezpośrednio pod USB.

Czy komuś się to przytrafiło?

Link do komentarza
Share on other sites

Po USB jeszcze się nie bawiłem mam natomiast pytanie odnośnie programowania przez UART za pomocą aplikacji Flash Loader Demonstrator. Program działa, programuje się i odpala, natomiast problem pojawia się po wyłączeniu zasilania czy resecie procesora, aplikacja się nie włącza chyba że zostaną zdjęte zworki. W zasadzie to wystarczy jedną BOOT0. Czy jest jakaś możliwość obejścia tego? Chciałbym aktualizować oprogramowanie w mikrokontrolerze za pomocą np. Bluetooth na odległość no i tak nie bardzo widzę żeby wchodzić na wspomniany "słup" żeby zwierać zworkę czy przełączać przycisk. Może można ustawić gdzieś jakiś czas bycia w BOOT0, a po zwłoce program startował normalnie?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie jestem do końca pewien jednej rzeczy.

Czy jeden uart będzie mógł obsłużyć programowanie przez bootloader, a po przejściu do aplikacji, komunikację z telefonem? Do uarta będzie podłączony moduł bluetooth. Czy muszę wykorzystać osobne uarty do tych dwóch zadań?

Link do komentarza
Share on other sites

Trafiłem na niegłupią radę podłączenia równolegle kondensatora i rezystora do pinu boot0. Wejście w tryb bootloadera: ładujemy kondensator - boot0 jako wyjście i ustawiamy 1, resetujemy mikrokontroler i jesteśmy w trybie bootloadera. W międzyczasie rezystor rozładuje kondensator i na boot0 nie będzie więcej 1.

Mam problem z programowaniem z użyciem DFU USB. Gdy wgram program za pomocą programatora, a później zgram program używając DfuSeDemo plik ma 32K i wgrywa się do uC po USB. Gdy używam Sfu file managera tworzy się plik 7KB i wgrywanie programu nie działa (Transferred data size 0KB), są też problemy z opuszczeniem trybu DFU, czasem działa, większość czasu wyrzuca błędy.

Swoją drogą Upload Action w DfuSeDemo zgrywa program na komputer.

Link do komentarza
Share on other sites

Trafiłem na niegłupią radę podłączenia równolegle kondensatora i rezystora do pinu boot0. Wejście w tryb bootloadera: ładujemy kondensator - boot0 jako wyjście i ustawiamy 1, resetujemy mikrokontroler i jesteśmy w trybie bootloadera. W międzyczasie rezystor rozładuje kondensator i na boot0 nie będzie więcej 1.

Brzmi ciekawie - testowałeś w praktyce 🙂?

Link do komentarza
Share on other sites

Wchodzenie w tryb DFU: kondensator 100nF równolegle z rezystorem 100K podłączony do pinu BOOT0. Kod programu:

if(PRZYCISK_DOWN)
{
 GREEN_ON;
 BLUE_OFF;
 HAL_GPIO_WritePin(BOOT0_GPIO_Port, BOOT0_Pin, GPIO_PIN_SET);
 HAL_Delay(1000);
 NVIC_SystemReset();
}

Sposób działa. Po wciśnięciu przycisku uC resetuje się i w DfuSe pojawia się nasz uC w trybie bootloadera. Po odłączeniu i podłączeniu USB uC wykonuje program normalnie.

Programowanie mikrokontrolera przez USB zawiera błędy.

1. Generator DFU znajdziemy w folderze z DfuSeDemo.

2. Podczas generowania DFU z pliku bin po wybraniu pliku źródłowego trzeba zmienić adres na (0x)08000000 i kliknąć przycisk "add to list" (nota katalogowa tabela Flash module organization).

3. W DFU Managerze klikamy przycisk Generate.

Pominięcie tego kroku sprawi, że wgrywając program nie będzie żadnego transferu danych, a program zwróci zakończenie akcji sukcesem, tak samo porównywanie zawartości uC ze wskazanym plikiem zwróci zawsze sukces.

W DefuSeDemo do wgrywania programu służy panel "Upgrade or Verify Action". Przyspieszamy wgrywanie programu zaznaczając "Optimize Upgrade" i wybieramy plik. Wgrywamy program przyciskiem "Upgrade" i po lewej stronie obserwujemy zmieniające się wartości "Transferred data size".

Obecnie dziwnie działa opcja Leave DFU mode. Po wgraniu programu czekam 5s wciskam "Verify" czekam kolejne 5s i klikam "Leave DFU mode" część prób kończy się sukcesem i uC rozpoczyna normalną pracę bez odłączania od prądu.

Link do komentarza
Share on other sites

Programowanie mikrokontrolera przez USB nie działa.

Pozornie wszystko jest OK. Wszystko dzieje się tak, jak opisano w kursie, komunikaty z DfuSe są takie, jak powinny być, jest komunikat o powodzeniu uploadu, nawet weryfikacja to potwierdza, tylko... potem na płytce jest ten sam program, który był wcześniej. Idąć ściśle wg kursu się tego nie wykryje, bo wgrywa się ten sam program przez UART i USB, ale próba wgrania innego pliku przez USB powoduje, że i tak po odłączeniu zworek i wypięciu microUSB i resecie w kontrolerze działa program uprzednio wgrany przez UART (lub przez Eclipse).

Być może coś robię nie tak, więc dla pewności opiszę, co mam podpięte:

BOOT1 z VDD (piny obok siebie)

PB2 i GND (piny obok siebie)

Jeden kabel USB do komputera (ten, który zawsze jest podpięty, gdy pracuje się z Eclipsem i który powoduje zapalenie dwóch czerwonych diod)

Drugi kabel do komputera (po przeciwnej stronie płytki - tej bliższej przycisków, który powoduje zapalenie zielonej diody).

Więcej nic nie jest podpięte/zwarte.

Czy coś zrobiłem źle?

Link do komentarza
Share on other sites

@misklap z tym kursem ostatnio pojawiło się trochę problemów, ponieważ ST zmieniło część swojego oprogramowania co zdezaktualizowało niektóre materiały. Nie wydaje mi się jednak, że powinno to wpływać na ten proces. Upewnię się tylko dla pewności - korzystasz dokładnie z takiej samej płytki jak użyta w kursie? Nie mam teraz przy sobie tej Discovery, aby sprawdzić ten temat, więc mogę jedynie podesłać link do filmiku od ST (może coś Ci pomoże): https://www.youtube.com/watch?v=Kx7yWVi8kbU Jeśli nie, to sprawdzę temat jutro, najdalej na początku następnego tygodnia.

 

Link do komentarza
Share on other sites

1 godzinę temu, andzrej napisał:

Nadal nie rozumuje. Oświeć! Nie muszę wychodzić na słupa aby zmienić program w STM. Czy tak?

Cześć,

a może sam byś się nieco oświecił 😉 Proponuję zajrzeć do "reference manual" dla tej serii mikro-kontrolerów SYM32F4xx. Tutaj link do tego dokumentu:

https://cdn.sparkfun.com/datasheets/Dev/dotNET/DM00031020RM.pdf

Strona 57 paragraf pod tytułem: "Boot configuration"

Tutaj tylko krótki cytat:

Cytat

The embedded bootloader mode is used to reprogram the Flash memory using one of the
following serial interfaces:
● USART1(PA9/PA10)
● USART3(PB10/11 and PC10/11)
● CAN2(PB5/13)
● USB OTG FS(PA11/12) in Device mode (DFU: device firmware upgrade).
The USART peripherals operate at the internal 16 MHz oscillator (HSI) frequency, while the
CAN and USB OTG FS require an external clock (HSE) multiple of 1 MHz (ranging from 4 to
26 MHz).
The embedded bootloader code is located in system memory. It is programmed by ST
during production. For additional information, refer to application note AN2606.

Pozdrawiam

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.