Podsumowując... Loader umieszczony jest we flash od adresu 0 i nie ma od tego odstępstw. Aplikacja umieszczona jest pod dowolnym adresem we flash z wyrównaniem do 512. Żadne biblioteki nie maja kodu na stałe przypisanego pod konkretny adres, nawet SPL, wszystkie startupy i tak zależą od linkera, no chyba, że ktoś sobie coś udziwił i coś na stałe przypisał....
Witaj, Ja popełniłem w przesłości bootloader dla tego mikrokontrolera ale mój własny bootloader musiał być umieszczony w pierwszych sektorach flasha. Jak będziesz chciał go wykonać to pamiętaj o przemapowaniu wektorów przerwań no chyba, że ich nie używasz. U mnie bootloader zajął 1 sektor 8k ale to na styk było a program który wgrywasz musisz zacząć...
Czy autor wątku poradził sobie z przerwaniami?? Pytam bo zamierzam napisać bootloader do programowania kulku uC po RS485 i planuje wykorzystywać w booltoaderze przerwania od UARTa oraz Timera.
Po czym to rozpoznałeś? Powtarzające się bloki po 8 bajtów na początku pliku wyglądają na zaszyfrowaną tablicę wektorów przerwań. Nie zaszyfrowane powinny się powtarzać 4 bajty adresu we flashu lub ramie. Ktoś się nie przyłożył do szyfrowania. Jak by było zrobione porządnie to cały plik wyglądał by na losowy. Nie jest to AES ani prosty XOR. XTEA? Raczej...
Mała przestroga - w CrossWorks są szopki z przerwaniami ... Używam tego środowiska i nigdy nie miałem żadnych problemów z przerwaniami.
Witam, Naciąłem się na problem z przerwaniami z którymi nie mogę sobie jak na razie poradzić. Jeśli w bootloader'ze nie wykorzystam przerwać, to po skoku do aplikacji wszystko działa ok, jeśli natomiast zostanie tam wykorzystane, to aplikacja już ich nie wykonuje. Wydaje mi się że ma to związek z wskaźnikiem przerwania, ale nie mogę znaleźć rejestru...
Nie ma "przerwań synchronicznych", jest tylko błędna terminologia. SVC to jest właśnie pułapka, podobnie jak SYSCALL w innych procesorach, TRAP w jeszcze innych i INT w x86. Błąd to coś ciut innego - wszystkie Fault w ARM to właśnie błędy. Obsługa błędów ani pułapek nie zależy od priorytetu procesora. Ten "konfigurowalny priorytet" dla pułapek i błędów...
Dzięki za podpowiedź. Czytałem artykuł z STM32.eu i noty od ST. Po prostu wtedy źle/nie rozumiałem, gdzie ma skoczyć program. Po podpowiedzi Freddiego odświeżyłem wiedzę na temat wektora przerwań i już mi działa. W programie, do którego skaczę miałem jeszcze jeden kłopot, ale wynikał z mojego gapostwa. Wprawdzie w funkcji inicjującej zegary itp. miałem...
Tym razem przedstawiam Bootloader USB MSC (Mass Storage Class) dla tanich modułów na mikrokontrolerze STM32F103C8T6. Mocno się muszę tu hamować by nie wykrzyczeć "rewelacja". I za to, że tylko cztery kilo. I za tą tak skrajnie minimalistyczną sprzętowo , lecz wygodną koncepcję użycia resetu jako aktywacji bootloadera. Choć ma to pewne uboczne konsekwencje...
Czy ktoś może mi powiedzieć czy poniższy algorytm ma szanse na realizację? co o nim myślicie? http://obrazki.elektroda.pl/9694939500_1... Po tym jak nowe oprogramowanie znajdzie się w buforze (new soft ) zostanie wywołany bootloader który skopiuje starą tablicę wektorów przerwać pod nowy adres (isr tab 1) i ustawi offset na tą tablicę....
Witam Wszystkich! Chciałbym rozbudować swoje urządzenie zbudowane w oparciu o stm32F103ZET6 o bootloader aktualizujący oprogramowanie z karty SD wywoływany z poziomu aplikacji użytkownika . Przeszukałem forum jednak nie znalazłem podobnego tematu. Mój problem zaczyna się od wgrania bootloadera obsługującego kartę SD do stm32. Używam Eclipse z stlink...
Ok działa, ale tylko jak wgrywam plik bin. Komendą load nie chce się flash poprawnie zapisać, ponieważ pod adresem wskazanym przez sekcję "bootlader" dostaję same 0xffffffff (gdb komenda "mdw 0x0801A000"). Jak wgram plik bin dostaję również błąd w chwili gdy debuguje ( debuger nie widzi kodu np. z obsługi przerwania No source available for "USART4_Handler()...
Uważam, że aplikację w wersjach debug i release na leży umieścić pod takim samym adresem. To bootloader zrób w dwóch wersjach (debug - release) (albo w jednej wersji ale inteligentniejszy - np sprawdzający jakiej bajty w aplikacji i stwierdzający debugujesz czy tez nie). Jeżeli nie masz jeszcze bootloadera to napisz taki mikrobootloader: W bootloaderze...
Witam Zastanawiałem się ostatnio czy ktoś już przypadkiem nie wpadł na to, żeby napisać bootloader dla STM32 ale nie connectivity line? Przykładowo taki STM32F103ZET6, nie ma wbudowanego bootloadera który byłby w stanie zgrać program przez usb (chyba, że źle przeczytałem notę katalogową). Generalnie wymyśliłem sobie takie coś. 1. Uruchamiam urządzenie,...
Koledzy proszę, wręcz błagam Was o pomoc...rozwaliłem swojego discovery F0. Tzn. chciałem pobawić się I2C, skapnąłem się, że mam na liniach I2C1 lcd hd44780 więc przestawiłem jego kabelki na portA...niestety również na SWD Pin PA13 i PA14. Nie skapnąłem się, co za destrukcyjne działanie wykonuję. Rozwaliłem chyba bootloader w płytce, nie mogę wcale...
(...) ustawiłem wektor przerwań i początku pamięci flash w linkerze z odpowiednim offsetem (0x3800) Co to za magiczny offset? :D Pamięć STM32F103RB, pierwsze 14K (0x3800) zajmuje bootloader, pozostałe 114K program właściwy. W efekcie początek flash (w skrypcie linkera) zaczyna się od adresu 0x08003800. Właśnie... gdzie ja wyczytałem że tak jest akurat...
Mam jeszcze pytanie odnośnie samego działania SWD i programowania... Jeśli BOOT0 = 0 to startuje ten kod który jest we Flash. Jak to się dzieje, że mimo działającego programu OpenOCD potrafi przerwać jego pracę i zacząć wgrywać program ? Jeśli dobrze doczytałem to jest to tylko możliwe jeśli są włączone sygnały SWDIO i SWCLK ? i drugie pytanie: Jeśli...
Dobrze że wspomniałeś o debuggerze! Już miałem odpisać, że nie mam takowego bo wgrywam soft przez port szeregowy a jedyny debugger jaki posiadam to ta nieszczęsna dioda led... gdy przypomniałem sobie jak zrobiłem wgrywajkę kodu. Ta płytka ma ustawiany zworką pin boot0. Ustawiłem więc sobie na stałe tą zworkę na '1' tak by startował bootloader. Pin reset...
Święte słowa. Ja właśnie metodą kopypejstu wyprodukowałem pierwszy swój program na STM32 migający ledami z systickiem jako delay. Weflaszowałem go przez bootloader i odpalił za 1szym razem. Ho ho - powiedziałem sobie. Wszystko ładnie zatrybiło. Zegary się poustawiały, przerwania, wektory. Wszystko. Właśnie dzięki temu że budowałem już z kawałków sprawdzonego...
Dajemy 'reset' a program nie uruchamia się z bootloader-a i co wtedy? A nie uruchamia się ponieważ: włączony jest remap, przeniesiona tablica wektorów, zawiera 'byle co', nieustawiona 'power domain' itp. Mieszasz sprawy. Reset to reset. Skoro Twój układ uruchamia się po podaniu zasilania, to po resecie tez się uruchomi. Jeśli po resecie się nie uruchomi,...
Arduino ma tę zaletę, że można kupić płytkę za 30zł i coś na niej robić. Gdyby nie to, że osoby które prowadzą laboratoria po prostu kupiły kilka zestawów Arduino, to zajęcia laboratoryjne z mikrokontrolerów jednoukładowych byłyby prowadzone wyłącznie w oparciu o dwa zestawy DSM-51 i ew. mocno niedorobiony emulator tego systemu na PC. Można się nauczyć...
Jeżeli skok jest z przerwania to HardFault jest spowodowany tym, że zmieniasz wskaźnik stosu w obsłudze przerwania.
1. Deinicjalizujesz RCC, PLL i pozostałe zegary 2. Resetujesz i wyłączasz Systick 3. Wyłączasz przerwania wcześniej zerując flagi 4. Ustawiasz wskaźnik stosu na początek pamięci bootloadera 4. Skaczesz do adresu pamięci bootloadera +4 Wszystko jest analogiczne do poniższego przykładu dla F4: https://stm32f4-discovery.net/2017/04/tu...
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
Może więc warto by było napisać co zrobiłeś, że Ci zadziałało, w jakich konkretnych warunkach ten błąd wystąpi (np wersja Windows/Linux, wersja Ecplise) i pomóc innym? Sam walczyłem z Ecplipsem jak jeszcze nie był dla ARMów tak popularny, były z pluginami problemy ale trzeba było je zwalczyć np. zmienić wersje Eplipsa, zainstalować ponownie, poszukać...
arcyimperator napisał: po skoku do Aplikacji z Bootloadera pojawia się dziwne zachowanie: zaczyna się wykonywać kod main() który jest przerwany i widzę w debugerze wykonywanie konstruktorów obiektów globalnych. Możesz pokazać jak to wygląda w debuggerze? Te konstruktory wykonują się jakby z main() czy jakby z przerwania? Późnym wieczorem sprawdzę i...
Cortex, po resecie, odczytuje adres stosu i początku programu z początku pamięci. I tego nie przeskoczysz. Przesuwanie tablicy wektorów przydaje się np. jeśli na początku flasha masz kod bootloadera (z własną tablicą wektorów) a potem przechodzisz do właściwej aplikacji, która ma swoją osobistą tablicę wektorów pod innym adresem.
Witam, ze względu na używanie bootloadera w obszarze od 0x8000000 do 0x8004000, potrzebuję pozostałą część aplikacji (nazwijmy ją częścią B) umieścić w dalszym zakresie. Tak więc zmieniam adres aplikacji B oraz wektora przerwań i niestety urządzenie jest rozpoznawane w systemie. Aczkolwiek sam kod działa. Jeśli aplikacji B zmienię adres startowy na...
Chyba za chwilę będę żałował, że wdaję się w potyczki słowne, ale: Pod warunkiem, że te dane są zawsze w tym samym miejscu. Zresztą robiąc coś takiego tylko kwestią czasu jest problem z utraceniem tych danych bo ktoś przerwał aktualizację w połowie. Bez przesady, przed (prawie) wszystkim można się zabezpieczyć, chyba że nic właśnie i można takie sytuacje...
Nie, nie zmieści się. W międzyczasie znalazłem problem :) Dalsze dochodzenie pokazało, że flashowanie jest poprawne. Błąd pojawia się później, po uruchomieniu kodu. Jednak winien okazał się być nie sam kod, ale bootloader. I to nawet nie w kodzie obsługującym Flash. Chciałem bowiem przed skokiem do aplikacji wyłączyć przerwanie od SysTicka. Napisałem...
Wpadłem na pomysł jak to "obejść". - w bootloaderze przekierować tablice na RAM; - "skoczyć" pod adres Reset_Handler w aplikacji użytkowej; - podczas inicjalizacji przekopiować adresy wektorów z flash do RAM (sekcja .data); Na razie próbuję: 1. umieścić wektor przerwań w sekcji .data; 2. umieścić startup.S na początku aplikacji użytkowej; Jak ktoś ma...
A dokładniej rejestr BSRR... I szkoda, że takie rozwiązanie istnieje tylko w STM32. BTW, w LPC11xx istnieje sporo innych paskudztw: - timery ktore mają 4 match'e, ale nie ma oddzielnego rejestru 'końca' (przewijającego licznik) - timer w trybie counter nie obsługuje preskalera... - nie istnieje przerwanie przepełnienia timera, i trzeba wykorzystywać...
Co to są za bzdury, gdzie ty widziałeś 16bitową atmege?! ------------- Rodzina propellerów nie zadziwia niestety niczym - scalaki są drogie, ciężko dostępne, i wolne . Naczytałem się kiedyś materiałów na ich temat. 1. Spin to badziewie. Sami się przyznali do tego, że soft w spinie marnuje sporo mocy obliczeniowej rdzeni. Siłę procka widać dopiero wtedy,...
https://obrazki.elektroda.pl/9032300100_... Witajcie moi drodzy. Przedstawię tutaj unikalny zestaw płytek uniwersalnych pod elementy w obudowach SMD, obejmujący TQFP100, TQFP64 i TQFP48, różne SSOP, SOIC itp. Płytki te wyróżnia sprytne i uniwersalne poprowadzenie ścieżek, ułatwiające uruchomienie dowolnego mikrokontrolera (gotowe zworki...
Jak uruchomić STM32 z FLASH by działał później w pamięci RAM. Dedykowane dla Keil: - plik startup_stm32f10x_xx.s Ułatwię niektórym czasu i szukania w necie rozwiązań flashowania z poziomu własnego bootloadera pamięci programu. Ja przyznam szczerze nie znalazłem żadnego opisu w necie, wobec czego napisałem własne rozwiązanie. Jako że asembler ARMów to...
Cześć, Ponieważ pojawiła się prośba o możliwość udostępnienia uproszczonej wersji na inny uC to przedstawię krótką instrukcję jak dostosować projekt do potrzeb. Generalnie w obecnej wersji obsługiwane są dwie rodziny procesorów czyli STM32F4xx i STM32H7xx - prawdopodobnie nie powinno być większych problemów z innymi podobnymi układami STM natomiast...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
https://obrazki.elektroda.pl/6742649500_... Dwa lata temu Arduino wypuściło na rynek płytkę MKR WAN 1300. Moduł korzystał z Microchip Atmel SAMD21, kompatybilnego z Arduino Zero 32-bitowego mikrokontrolera z rdzeniem ARM Cortex-M0+. Oprócz tego mikrokontrolera na pokładzie znaleźć można było transceiver Murata CMWZ1ZZABZ - moduł transmisji...
bootloader przerwać stm32 przerwać przerwać bootloader stm32
zakupy farnell citroen xsara termostat parownik klimatyzacji mercedes
dekoder skymaster odczytu pendrive
Jak wysuszyć telefon z wbudowaną baterią po zalaniu? Jak zbindować tekst w CS:GO - poradnik krok po kroku