Pytań ciąg dalszy: alokując wektory przerwań do innej części FLASH za pomocą attribute((section".aaa")) napotkałem na taki oto problem....a mianowicie linker zawsze umieszcza przerwania w tej samej sekcji...nie ma możliwości umieszczenia wektora 1 np w sekcji .aaa a wektora 9 w seksji .bbb...
Witam Jak wyliczyć coś takiego za pomocą preprocesora ? Criterion for valid user code: The reserved Cortex-M0 exception vector location 7 (offset 0x 0000 001C in the vector table) should contain the 2’s complement of the check-sum of table entries 0 through 6. This causes the checksum of...
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ą...
tadzik85 : Nie no, tyle to ja wiem :D Ale nie wiem jak to zrobić. Nie wiem gdzie się przypisuje konkretne elementy do konkretnych regionów. Czy chodzi o to żeby z sekcji text wyjąć tylko .vectors? Najprostsza opcja, jak akurat nie zależy Ci (choćby chwilowo) na idealnym wykorzystaniu...
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żą...
Mam problem związany z kasowaniem pamięci flash mikrokontrolera. Opiszę czego dotyczy. Stosuje bootloader "własnej produkcji". Podczas uruchomienia sprawdza sobie pewne obszary i podejmuje decyzje o tym czy ma wgrać nowy program. Oczywiście przed tym zabiegiem kasuję sobie obszar pamięci (stronami)...
Zlecę napisanie działającego szablonu kodu dla STM32F030 gdzie: -pracuje jeden dowolny timer i wywołuje przerwanie -jest funkcja zapisu jednej strony do flash nie powodująca zatrzymania obsługi przerwania timera Nie wiem czy jest to możliwe, lecz wydaje mi się, że by to uzyskać należy...
Witam! Nie jest to wina otoczenia. Miałem ten sam problem. Po pierwsze czy aby dobrze kompilujesz plik wynikowy. To znaczy czy nie nadpisujesz adresu 0x0040h do 0x0043h - tam znajduje sie hasło. Blokujące flash przed wyczyszczeniem, a nawet zczytaniem. Tablica wektorów 0x0000h do 0x003Fh. Program...
To nie jest moim zdaniem problem z OpenOCD, tylko masz źle skompilowany program. Po tym co mi podesłałeś widzę, że cały kod znajduje się pod jakimiś abstrakcyjnymi adresami, brakuje tablicy wektorów itd. Wrzuć cały projekt (kod, startup, skrypt linkera, makefile). 4\/3!!
To poczytaj sobie o pisaniu bootloaderów. Tu tematów było kilka. Po co marnować aż 512kB na bootloader? 1. start programu (jest lub nie) przy takiej wersji bootloadera zakładam ze będzie wgrywany razem z jakąś wersją aplikacji. 2. aplikacja na jakieś polecenie reaguje i wywołuje bootloader...
Kolega cristof_w ma po prostu złe nawyki z programowania c/bascom. W procesorze nie ma żadnego wydzielonego miejsca gdzie należy cokolwiek definiować albo umieszczać . Pamięć flash jest do twojej dowolnej dyspozycji i co chcesz gdzie chcesz umieszczasz. Musisz tylko wziąć pod uwagę że pierwsze...
Przerwania procesora działają w procesorach AVR na takiej zasadzie, że (pomijając inne operacje) po wystąpieniu danego przerwania ( podczas obsługi przez procesor ) następuje zapamiętanie rozkazu następnego, który byłby wykonany, gdyby procesor nie przyjął przerwania (jego adresu w pamięci...
...Jeśli nie, to tak jak napisałem w poprzednim poście. Ba , żeby to bankowanie było takie proste jak opisałeś , to fajnie by było , ale niestety nie jest :( Co z przerwaniami , instrukcjami powrotu (RET,RETI) - skąd proc ma wiedzieć na która stronę wrócić po wykonaniu podprogramu...
Witam Potrzebuję zarezerwować fragment FLASH na tablicę ze stałymi, znajdującą się pod stałym adresem. Ma to umożliwić programowanie tych danych niezależne od kodu. Najlepiej by było, gdyby to był obszar o niskich adresach, np zaraz po wektorach przerwań. Czy jest w GCC jakiś mechanizm,...
Uruchom mikrokontroler w trybie bootowania (coś tam zwarte do masy) - pewnei odzyskasz komunikację z programatorem. Napisz dokładnie, co zrobiłeś i pokaż kawałki kodu. Typowo relokacji tablicy adresów wyjątków używa się przy własnym bootloaderze. Nie rusza się wtedy mapy sekcji, a tylko...
To się powinno dać zrobić samymi skryptami linkera i paroma dyrektywami sekcji w kodzie źródłowym. No właśnie mi się nie udało i poszedłem na "łatwiznę" z ręcznym kopiowaniem. Niestety projekt już jest "polutowany" pod M0 (obudowa TSSOP20) a przy projekcie do głowy by mi nie przyszło...
(at)nowyARM Może to sobie nawet na początku pamięci flash aplikacji (zaraz za wektorami przerwań przykładowo) ale chyba nie o tym temat. Więc to już drugi Twój post nie na temat. Obawiam się, że zaraz będą wspomnienia 8051 oraz magnetowidów.
Witam. Jestem w trakcie pisania bootloadera po magistrali CAN dla STM32F103VE. Opieram się głównie na publikacji AN2557 zamieszczonej na stronie ST. Potrafię przesłać aplikację użytkownika po magistrali CAN do uC i zaprogramować pamięć Flash od wybranego adresu w górę. Na wstępnie odblokowuje...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się,...
Nieco podłamany tematem kol. (at)PiotrLenarczyk postanowilem jednak napisac jednak trzeci krótki prosty mikro poradnik dotyczący startupu. Wszystkie dywagacje będą dotyczyć C i najbardziej popularnego wśród hobbystów i nie tylko gcc. Standard C wymaga aby zgodny (nieco upraszczając)...
Chciałbym ulepszyć pewien produkt zbudowany w oparciu od STM32F101. Udało się zrzucić pamięć FLASH procesora, nie był zablokowany. Zawartość pamięci wygląda na poprawną, widać napisy wyświetlacza, można wyodrębnić funkcje. Mam problem ze zrozumieniem wektora startu. Obszar pamięci...
vtable? To vtable od polimorficznych funkcji C++ (virtual, dziedziczenie klas, ...)? Wiesz że vtable to nie jest to samo co tablica wektorów przerwań? Przy okazji, tablica wektorów przerwań musi być we flash, dopiero po uruchomieniu układu (bez niej się nie uruchomi) można sobie przestawić...
Ja bym zrobił wersję nr1 (; Po przeflashowaniu softu i tak (raczej) musisz zrobić reset, więc nie musisz odtwarzać zawartości pamięci RAM, możesz więc sobie generalnie pokasować wszystkie inne zmienne [; Tak naprawdę na karcie możesz mieć dwa obrazy - nowy wsad i "bootloader". Kopiujesz...
Na razie poradziłem sobie nie korzystając w ogóle z przerwań w bootloaderze. W tablicy wektorów bootloadera są wpisane na stałe skoki do tablicy wektorów aplikacji. Bootloader działa prawidłowo. Kopiuje program z karty, wpisuje do flasha i uruchamia go. Program też działa jak trzeba. Teraz...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził,...
Na początku flasha masz tablicę wektorów przerwań. Za pomocą NVICa możesz przesunąć tą tablicę lub przenieść do RAM. W załączniku masz przykładowy plik z tablicą wektorów przerwań
Tylko po co komu te wektory przerwań w RAM? Przecież mogą być spokojnie we flash... Do wykonywania skoków pod adres z rejestru służy instrukcja "bx ...", a nie "mov pc, ...". Przy okazji zawsze ciekawił mnie ten styl pisania 100x "asm volatile(...)" - pomiędzy tymi wywołaniami kompilator...
A przyczyna była błacha. Albo to przeoczyłem bo zdublowałem trochę kodu z aplikacji st u siebie - albo tego tam nie było. Nie był ustawiony adres bazowy tablicy wektorów przerwań - a powinien być na flash. A przed wywołaniem kodu st była u mnie pozostałość (z wcześniejszych aplikacji)...
No coż, zajrzyjmy do dokumentacji. W papierach od LPC2129: UM10114 LPC21xx and LPC22xx User manual Rev. 03 — 2 April 2008 na str. 22 mamy opisaną pamięć, tablicę wektorów i jej mapowanie. W papierach od LPC1343 (Cortex M3) UM10375 LPC1311/13/42/43 User manual Rev. 2 — 7...
Bo ten program jest zły! Cortex-M3 pod konkretnymi adresami oczekuje konkretnych rzeczy - na samym początku flasha - wartości dla SP, potem adresu (adresu! nie instrukcji!) wektora obsługi wyjątku reset itd. Zapomnij o takim prostym programiku - to tak po prostu nie zadziała. Potrzebna Ci jest...
Tablice wektorów mam z przykładów ze strony [url=] Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end, // Main stack...
- czy mógłbyś opisać łopatologicznie "algorytm" rozwiązywania problemów z Default_handler tzn. jak na podstawie dostępnych rejestrów odszukać jakie przerwanie to spowodowało lub (co raczej bardziej prawdopodobne w moim wypadku) HardFault. Ktoś kiedyś wspominał o IPSR ale ja tu widze tylko...
Firmowy bootloader mi nie wystarczy. Potrzebuje SPI i prawdopodobnie USB. Ustawiłem w pierwszym programie na: NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00003000); i w drugim na: NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00000000); Więc tablica wektorów powinna się przełączać, ale dalej...
Też kiedyś o tym myślałem: Ja bym umieszczał CRC gdzieś na początku programu (w temacie wyżej było na końcu bo był z góry znany rozmiar pamięci FLASH). Rozwiązanie z umieszczaniem tego w tablicy wektorów albo tuż za ostatnim elementem tablicy wektorów jakoś najbardziej mi się podoba.
Wydaje mi się że nie "przesunąłeś" tablicy wektorów przerwań: SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; w pliku system_stm32l4xx.c Chyba trzeba szukać dalej: Tablica wektorów jest przesunięta w bootloader: SCB->VTOR = APP_ADDRESS; Tę linię należy usunąć...
nie usuwaj tablicy wektorów i całej reszty z której rezygnujesz przy opcji -nostartfiles. skrócenie IVT w celu oszczędzania pamięci Kombinuję dalej, w tabeli dane2 mam wrzucną zawartość hex'a programu, który miga diodą z delay'em (mało ważne), ok 230bajtów, bootloader ładuje mi...
Witam serdecznie Mam problem z okiełznaniem przetwornika DAC w wymienionym w tytule układzie. Zanim pokażę kod powiem, że już brak mi pomysłów, moim zdaniem robię wszystko identycznie jak w przykładowym programie "DAC_SignalsGeneration" z taką różnicą, że nie wykorzystuję mechanizmu...
Przyszedł czas na zrobienie własnego bootloadera a z nim kilka problemów i pytań. Pierwszym problemem jest skrypt linkera: nie potrafię stworzyć sekcji bootloadera na początku programu. Stworzyłem sekcję na końcu. Co muszę poprawić w poniższych skryptach żeby mój bootloader był za tablica...
Używam Twojej kompilacji 050. A potwierdzenie domysłu że coś pozostaje po resecie zaskoczyło mnie ;) Ale ja wgrywam właściwie to samo, bez zmian. No nie ważne. Skrypt (same ewenty, bez konfiga adaptera) : #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
Witam, mam problem z programem obsługi przerwania od Timera2. Używam biblioteki #include <libopenstm32/rcc.h> #include <libopenstm32/flash.h> #include <libopenstm32/gpio.h> #include <libopenstm32/usart.h> #include <libopenstm32/timer.h> #include <libopenstm32/nvic.h> void...
Sprawa jest dosyć skomplikowana, proponuję po jednym pytaniu na raz mus"]A jak wymusic uruchomienie procesora z RAM bez manipulowania pinami BOOTx ? To niestety trzeba zrobić w jakiś sposób sprzętowo, lub poexperymentować z różnymi trybami resetu programowego (są dwa - być może w jednym...
Wygrzebałem skrypty skądś indziej razem ze startup'em, tablicę wektorów wziąłem tymczasowo od LPC175x/LPC176x, nie mogłem doszukać się pod ten. Niestety w czasie kompilacji linker wypluwa między innymi: [syntax=bash]ld.exe: error: .vectors is too large to fit in FLASH memory segment[/syntax] W...
Najpierw musisz zrozumieć na jakiej podstawie NVIC ustala adres wektora przerwania VTOR[29:0] | (INT_POS<<2) Dzięki michalko12. Zaczyna się rozjaśniać. Rozumiem, że bity zarezerwowane służą niejako do wymuszenia wyrównania offsetu do wartości związanej...
(at)nonor W pliku startup.s masz obsługę wyjątku reset. Jest to miejsce, w którym procesor rozpoczyna wykonywanie programu. Kod w tym pliku: - konfiguruje stos (stosy) - kopiuje sekcję .data do z FLASH do RAM - czyści sekcję .bss - wywołuje globalne konstruktory - wywołuje...
Witam i dziękuję za zainteresowanie tematem. Moim celem jest napisanie klasy która zarządzałaby umieszczoną w pamięci FLASH tablicą wektorów przerwań. Chodzi o to aby w tablicy znajdowały się wskaźniki na statyczne metody tej klasy. W momencie wystąpienia przerwania następowałby skok...
A jakiś link do tego, który mas na myśli? Chociażby blink led Freddiego: Osobna sprawa, że plik startowy musi być specyficzny dla procesora. I tak i nie. W sumie to od Ciebie zależy co umieścisz w startupie a co w funkcji main(). Najczęściej w startupie są dwie ważne funkcje - zerowanie...
Witam, Napisałem program, w którym do odliczania czasu używam SysTick'a i przerwania od niego. Gdy skompiluję i zapiszę program do pamięci Flash, program ten działa jak należy i możliwe jest jego debugowanie. Jeśli skompiluję i wpiszę program do pamięci RAM, to program nie działa poprawnie,...
Co trzeba w nim zmienić poza wpisaniem rozmiaru ram i flash ( flash - 512K; ram - 64K ) w skrypcie linkera aby uruchomić go na STM32F103ZE. Prawdopodobnie nic. Sprawdź jedynie czy tablica wektorów przerwań jest taka sama w obu modelach.
Ze względu na niemożność umieszczenia pod dowolnym adresem tablicy wektorów przerwań takie działanie jest praktycznie niemożliwe. Niezależnie od tego wymagałoby sporej żonglerki skryptami linkera. Napisz lepiej co chcesz osiągnąć, będzie łatwiej doradzić. Chodzi ci o to, aby się zabezpieczyć...
nie wiem czy moge mowic o cukcesie gdyz pojawia sie: srst pulls trst - can not reset into halted mode. Issuing halt after reset. Nie ma innej opcji w przypadku srst_pulls_trst - nie przejmuj się. ale rdzen sie zatrzymuje tyle tylko ze wykonal juz jakies instrukcje? cpsr: 0x6000001f pc: 0x00002030...
OpenOCD zaktualizowanie tak jak kompilator wcześniej. Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda. 1.Import...
Oto przepis na umieszczenie treści przerwania razem z prologiem i epilogiem w RAMie bez konieczności bawienia się w skrypty linkera (przenoszenie tablicy wektorów do RAM, to wyższa szkoła jazdy) na przykładzie przerwania z PMP. [syntax=c] void __attribute__((naked, at_vector(_PMP_VECTOR)))...
Witam ponownie. Mam jeszcze pytanie. Ponieważ chciałem dodać obsługę: ETH_WKUP_IRQHandler i ETH_IRQn. Więc w pliku vaectors.c dodałem takie linijki: [syntax=c] // ETH Ethernet global Interrupt void ETH_IRQHandler(void) __attribute__ ((interrupt, weak, alias("__Default_Handler"))); //...
Datasheet podaje, że wytrzymałość pamięci flash to minimum 10000 cykli. Przemyśl, czy naprawdę warto kombinować, bo - uwierz - niepoprawne uruchomienie programu z RAM potrafi czasem sporo namieszać (szukasz błędu który nie istnieje). Co do komend, to po pierwsze musisz mieć inny skrypt...
Program IAR jest jednym z podstawowych, dostępnych narzędzi do tworzenia oprogramowania na mikrokontrolery. Posiada kolorowe i wygodne środowisko graficzne, wraz ze zestawem zoptymalizowanych, standardowych bibliotek. Poniższy samouczek ma na celu pokazanie, jak skonfigurować te środowisko do wydajnej...
Witam. Faktycznie Morph - miałeś rację - programowanie przez serial link to dość ryzykowna sprawa :) - ALe nie jest tak najgorzej. Dopracowałem juz sobie metodę generowania kodu dla procka - faktycznie trzeba sie z tym było troche namęczyć, jednak metoda (przy załozeniu ze coś w przeciągu...
mirekk36 : ad 1/ Kod zerujący sekcję bss oraz ładujący sekcję data znajduje się gdzieś w okolicach .init3. Niestety kod zerujący sekcję bss już zakłada, że r1 jest równy zero, a więc z formalnego punktu widzenia zerowanie musi znaleźć się w .init0. Ze względu na obecność kodu zerującego...
Ok, wydaje mi się że przewalczyłem ten problem. Tzn teraz mam plik *.ld (sam zedytowałem jakiś znaleziony w bibliotekach STM32) i dodałem tablicę wektorów znajdującą się w w pliku stm32f10x_it.c. (chodzi mi o to by wykorzystać biblioteki bez przeróbek). Wszystko się teraz ładuje do Flasha...
Eee... No ale bez sbrk() malloc() nie ma prawa działać... Chyba że jest to gdzieś w reszcie plików zaimplementowane. Pooglądaj wynikowy plik .map - tam zobaczysz co wylądowało w RAM a co we flash. Pliki które masz w tym przykładzie nie są zbyt dobre - szczególnie skrypt linkera... Składnia...
Hej Freddie, tym razem to już mam poważny problem i proszę Cię o pomoc. Problem mam cały czas z przerwaniami. Nigdy mi w sumie tak naprawde nie zadziałaly na tym projekcie od stm. Przerobiłem Twoją tablice wektorów przerwań: /** \file vectors.c * \brief STM32 (STM32F101 - STM32F103)...
Trzeba zmienić PROGRAM. Domyślnie w STM32 tablica wektorów znajduje się w flash, a to skąd uruchamiasz program czy jak jest skompilowany nie ma żadnego znaczenia. Manual: Boot from the embedded SRAM: SRAM is accessible only at address 0x2000 0000. Note: When booting from SRAM, in the application...
No więc zasadniczo w każdym przypadku (w sensie niezależnie od tego jakiego ARMa masz) musisz zmienić skrypt linkera. Z grubsza wywalasz z niego definicję pamięci rom, a następnie wszystkie sekcje umieszczasz w ram ("... } > ram AT > ram"). Poniżej różnice między skryptem dla rom i dla ram...
1. Podstawowa zasada jest taka, że najpierw konfiguruje się to co ma wywoływać przerwania, a dopiero potem się to włącza. Innymi słowy - najpierw EXTI, potem NVIC 2. Wywal funkcję NVIC_Conf() - po co Ci ona, domyślnie tablica wektorów jest w pamięci flash i niech tam zostanie. 3. Funkcja...
Wiggler to nie to samo co [url=]ST-LINK. Są dwa sposoby, żeby program z ST-Linkiem ruszał z RAMu jeśli nie ma takiej opcji w tym programie. 1. We flashu umieścić mały (kilkadziesiąt bajtów) program który uruchomi program w RAMie. Wtedy pinów BOOTCFG nie trzeba będzie przestawiać na tryb...
Chciałem się zapytać czy ten przykład od Freddie Chopin'a pasował by do STM32F2. Czy trzeba coś zmieniać prócz rozmiaru pamięci Flash, RAM i tablicy wektorów przerwań ?
Przed uruchomieniem aplikacji przez bootloader należy: - przestawić wskaźnik głównego stosu, - przestawić tablicę wektorów. Robisz te dwie rzeczy? Poniżej fragment mojego bootloadera w którym wykonuję skok do aplikacji. Wszystkie przerwania i układy peryferyjne są "zresetowane" wcześniej. [syntax=cpp-qt]///...
Każdy temat z amigami kończy się tak samo. Miłośnicy tego sprzętu wychwalają go do niebios. Nie bez przyczyny choć równie dobrze możemy to tłumaczyć tym ze "miłość jest ślepa" - jakie to ma znaczenie dzisiaj? Amigi już nie ma jako produkt masowy, istnieje tylko jako hobbystyczna...
W dalszym ciągu nie rozumiem dlaczego reset miałby nie zadziałać. Na przykład w STM32 program startuje z flash-a, ładuje nowy kod do RAM i ustawia zewnętrzny sygnał na pin BOOT, tak by RAM był mapowany na adres 0x00000000. Jeśli damy reset i program załadowany do RAM będzie dobry (tablica...
Hmm, po mojej przygodzie z jednym PICem z rodziny 18F nie jestem jakimś szczególnym ich fanem ;), ale może coś się zmienia w dobrą stronę? Czy ktoś jest w stanie wyjaśnić zagadkowe pojęcia typu Możliwość zwektoryzowanej obsługi przerwań Czy oznacza to, że w końcu po wystąpieniu...
Zakładając 0 stosu i heapu w skrypcie linkera (po to aby nie zmącać Ci obrazu bo on się doda do BSS). Ty oczywiście ustaw je na wartości takie jak powinny być w programie. [syntax=c]make --no-print-directory post-build Generating binary and Printing size information: arm-none-eabi-objcopy...
Akurat nie ja ten temat badałem. Niedawno był temat wydzielony i był tam przykład kodu migającego dioda w Arduino, który zajmował 12 kb i (at)rs6000 potrafią czytać ze zrozumieniem. Tamten przykład dotyczył ARM-a w środowisku Arduino. Jakie biblioteki tam są powsadzane tego nie wie...
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we flash)
(at)TvWidget Uważam że masz złe podejście. Załóżmy że rozmiar bootloadera się zmieni. I co wtedy. Raczej porztbujesz mieć to relatywnie w stosunku do początku aplikacji. Wtedy wystarczy tylko dodać sekcję z tą zmienną (jeżeli ma być we flash) tuz po tablicy wektorów a przed .text....
Zapisujesz do flash przy pierwszym uruchomieniu po programowaniu. Po resecie sprawdzasz czy tam jest ta wartość i jezeli jest to jest pierwsze uruchomienia, a jeżeli nie to kolejne Bez flagi to raczej się nie da (aslbo przynajmniej sprawdzenia czy coś jest zaprogramowane). Oczywiście mogę...
Witam. Od pewnego czasu walczę z chińską płytką (blue-pill) z STM32F103 na pokładzie i z tego co już się nauczyłem oraz co sobie w ReferenceManualu wyczytałem to wiem, że AVR'y odłożę na półkę:) Moja nauka jest w stylu 'bare-metal' wykorzystuję jedynie pliki nagłówkowe stm32f103xb.h...
Powróciłem do projektu po przerwie i niestety ma problemy z odpalaniem aplikacji przesuniętej o offset 0x10000 (wpadam w Hard Fault), jeśli z yamla wyrzucę wszystko od 'memories' to program działa. Mój yaml, taki jak kiedyś :] : SCB->VTOR = 0x08010000; #ifdef DISTORTOS_ARCHITECTURE_ARM_CORTEX_M3_R1P...
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...
Witam. (at)JarekC , (at)tmf A nie jest to celowe działanie Microchipa? Jest to seria procesorów które mają do 128kB Flasha. Jaki byłby sens robić różne tablice wektorów. Programy słabo by się dawały przenosić z większego procka na mniejszy. Dobrze myślę czy nie?
Nie wiem o co chodzi, support STM mi powiedział, żebym wgrał kod do ramu oraz wektor przerwań. Cały problem od początku: Zadanie programu jest następujące: ze sterownika sczytuję wartości enkoderów i zapisuję je do pamięci flash. (powinno to być wykonywane timerem co 10ms). Następnie...
Witam. Poniewaz chce zostawic w swoim programie pierwsze sektory nieuzywane (ewentualnie bez zadnych konkretnych funkcji) moj program powinien byc wygenerowany z okreslonym offsetem. Przebrnąlem przez skrypt linkera i mam pierwsze 4 kbyte flasha przeznaczone na moja sekcje BOOT, a reszta pamieci...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów,...
Czy dołączyć źródła do projektu, czy wgrać sam bootloader jako inny projekt? Dwa osobne projekty. Kolejna sprawa to zmiana offsetu flash. W przypadku projektu Freddiego czy będzie to tylko zmiana w pliku _rom.ld na: Do przesunięcia dochodzi jeszcze konieczność zmniejszenia rozmiaru...
Dlaczego w zasadzie nie wolno wykonać skoku do adresu resetu(a sprzęt wykonuje tą operację w przypadku startu z drugiego Flasha), skoro chcę w zasadzie zasymulować takie zdarzenie? Dlaczego musi to być skok do samej procedury RESETU? Bo to nie jest AVR. Rdzeń robi tak samo, sprzętowo pobiera...
Chcialbym dzis przedstawic konstrukcje, ktora bedzie czescia mojej pracy magisterskiej. Jest to kontroler do matryc LCD oparty o uC wraz ze specjalizowanym ukladem driver'a matrycy. OVERVIEW: Glowna idea projektu jest stworzenie calkowicie autonomicznego urzadzenia, ktore pelniloby role ukladu...
Kod w obszarze wektorów przerwań jest jak najbardziej bezpieczny, dopóki przerwania nie zostaną włączone. Czasem tak się robi, gdy zaczyna brakować flasha. Stos trzeba koniecznie zainicjalizować, żeby można było używać CALL i RET. RET powoduje powrót do miejsca z którego podprogram...
Poniżej masz wczesną wersję programu dla procesora U2 z zestawu [url=]AVT-5257: [syntax=asm] ;********... Program syntezera DDS ;* ;* fout = freqHML(24bit) * 16MHz/takt(9) / 2^(8+8+8) ;****************************...
Aby tego używać musisz dokładnie wiedzieć co ma a czego nie ma twój st7 Czyli jesli dokladnie nie wiem czy moj st7 cos ma czy nie to moge po prostu nie pisac? A cala tablica wektorow zamiast 16 linijek zmiescic w jednej, tzn np: .rst DC.W main ? Bo tak szczerze to widze ze w ksiazce pana...
Czy procedurę o etykiecie "timer0" masz daleko od początku programu? A może jej w ogóle nie masz? W zasadzie dla procesorów o tak dużym Flash'u powinno się używać rozkazu "jmp", a nie "rjmp" (dlateg adresy w tablicy przerwań są co 2 bajty), ale tak jak napisałeś może też być, pod warunkiem,...
Najłatwiej kod bootloadera pisać jako osobny projekt - wtedy nie pojawiają się żadne konflikty, a docelowo i tak podczas aktualizowania nie wysyła sie już bootloadera. MarcinKawka : Twój kod wykonuje dwa odwołania do MCUCR w celu zmiany lokalizacji tablicy wektorów przerwań. Wstawka zawiera...
Niektóre narzędzia pozostawiają wiele do życzenia. Można mieć setki opcji, ale jeśli te opcje nie są opisane, albo opisane lakonicznie, bo narzędzie nie pozwala na obszerny komentarz, to tak naprawdę niczego to nie ułatwia. Trzeba się domyślać co autor miał na myśli, albo szukać gdzieś...
Układ Perceive Ergo Start-up z Doliny Krzemowej twierdzi, że na nowo "wynalazł" matematyczny opis sieci neuronowych i stworzył w ten sposób nowy akcelerator AI do pracy na krawędzi, który nie wykorzystuje dużej liczby zrównoleglonych akumulatorów w swojej strukturze, jak realizuje się...