Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32] - Wywołanie bootloader'a oraz kilka zagadnień

25 Lis 2013 14:36 1278 3
  • Poziom 30  
    Witam,

    Walczę z bootloader'em aby go uruchomić.

    Nie mogę tylko dojść jak to w końcu ustawia się piny boot1 oraz boot0, na jednej stronie jest napisane i tak, na innej siak...

    W tej chwili BOOT0 mam podciągnięte do zasilania zaś BOOT1 do masy czyli niby start w pamięci systemowej.

    Pod jaki adres on w ogóle się wgrywa? Pod 0x08000000?

    Wgrałem przy pomocy ST-LINk Utility program (który tylko mruga diodą) zaczynająć od adresu 0x08000000, efekt jest taki że nic się nie dzieje.
    Lecz jest w opcjach ST-LINK Utility Targer->Automatic Mode-> i tam wcisną start z zaznaczoną opcją Run aplication to program zaczyna się wykonywać.
    Ale mam przeczucie że to po prostu aplikacja wrzucona przez Utility do pamięci RAM i tam sobie ona pracuje aż do restartu.

    Mógł by ktoś mnie oświecić jak to z tym wszystkim jest?
  • Specjalista - Mikrokontrolery
    Jest z tym dokładnie tak, jak opisano to w Reference Manual dla uC, którego używasz. Zajrzyj do manuala i wtedy zadaj stosowne pytania.

    żeby Twój program zadziałał, musisz wyłączyć Boot Mode. Sam program musi być skompilowany dla adresu 0 i zaprogramowany pod 0x08000000. Może też być skompilowany dla 0x08000000.
  • Poziom 28  
    ADI-mistrzu napisał:
    W tej chwili BOOT1 mam podciągnięte do zasilania zaś BOOT1 do masy czyli niby start w pamięci systemowej.

    Nie chcę się czepiać, ale masz zwarcia zasilania do masy.
  • Poziom 30  
    Już poprawiłem, czytam na temat tego co napisał BlueDraco

    Dodano po 47 [minuty]:

    BlueDraco wertuje dokumentację AN2606 ale z tego co widzę to Boot mode to własnie bootloader o który mi chodzi, więc jeśli go wyłączę to stracę możliwość aktualizacji software.

    Ogólnie jeśli dobrze rozumiem, to aby wyjść z tego trybu należy dokonać sprzętowego restartu procesora i piny BOOT0/1 musza być ustawione na powrót z Boot mode.
    Potem procesor skacze na początek pamięci czyli adres 0x0 (tam znajduje się początek pamięci RAM?)

    No i dalej jest o bootloaderze od ST który mnie mało interesuje (raczej) bo potrzebuje napisać własny.

    Przyzwyczajony jestem z AVR, tam napisanie bootloader'a i jego inicjacja była jak by prostsza...

    Dodano po 1 [godziny] 28 [minuty]:

    Dobra, chyba wiem już o co chodzi, STM32 ma wgrany fabrycznie jakiś bootloader którego nie można zmienić i siedzi on pod adresem 0x1FFF F000.

    Aby mieć własny bootloader muszę z powrotem przestawić BOOT0 na 0 logiczne i do pamięci Flash w początkowych sektorach umieścić mój bootloader.

    On powinien załadować się cały do pamięci RAM i stamtąd programować pamięć FLASH, po czym "sprzatnąć" po sobie rejestry i dokonać skoku do aplikacji która jest pisana z pewnym offsetem.

    Zgadza się?
    Jeśli tak, to wynikało by z tego że istnieje możliwość aktualizacji samego bootloadera, co by było ciekawą opcją.