Ech.. Przepraszam za zamieszanie. Problemem okazała się nazwa, którą nawet w poprzednim poście wkleiłem z błędem. Chodzi o void TIM4_Handler(void), a powinno być TIM4_ IRQ Handler. Freddie, dzięki za podpowiedz/pytanie czy plik jest linkowany. Plik był oczywiście kompilowany i linkowany. W pliku .lss zauważyłem, że zostaje podstawione Default_Handler...
To samo - za mały stos. Czy tylko to może kierować program akurat w te maliny ( default handler)? (wystarczy w nim zakomentować/usunąć ze 3 linijki). Po takiej zmianie w skrypcie linkera nieużywany stos może mieć rozmiar 0. Czyżby te poniżej niniejszego opisu: "Thread mode uses process stack (PSP) and is privileged" ?
To miałem na myśli. Teraz już zgłupiałem... No i jest źle ustawione ps2. Freddie jest jakiś problem z downloadem przykładów z Twojej stronki. Chciałem ściągnąć stm32cl_blink_led dla stm32f107 i niestety ni dy rydy. Przed sekundą ściągnąłem testowo kilka przykładów i wszystko działa. 4\/3!!
Ja się wahałem czy tej książki nie kupić i teraz się cieszę, że tego nie zrobiłem :P /* Handler mode (core exceptions / interrupts) can use only main stack */ /* Thread mode can use main stack (default) or process stack - selected in CONTROL special register */ __main_stack_size = 0; __process_stack_size = 1024; Jest jakaś (tzn na pewno...
No tak jak handler przerwanie się nie nazywa TIM1_IRQHandler to już sprawa nie do przeskoczenia. (at)Freddie Chopin Przeca używa Cube i HAL - nie musi czytać RM-ów.
Freddie, nie rozumiem, co napisałeś. Oczywiście, że nie trzeba stosów. Każdy handler może pamiętać zwoje zmienne stanu jako statyczne, ale handler nie ma kontekstu tak jak zadanie w RTOS. Ponieważ nie ma przełączania kontekstów, oszczędzamy również na czasie przełączania. W prostym przypadku handler odpowiada pętli zadania przeciętej w miejscu, w którym...
Freddie, jeśli mogę się podpiąć - jakim cudem u mnie przerwania działają dobrze pomimo, że w/w ciekawej rzeczy nie ruszałem?
(prawidłowy dla STM32, u Ciebie przerwanie SVC ma inną nazwę niż "standardowa" dla STM32) SVC_Handler SVCall_Handler 4\/3!!
Main stack o ile pamiętam jest używany w przerwaniach, ale może tutaj po prostu źle Ci się napisało. Freddie doradzał kiedyś zrobienie iluś różnych handlerów i przeniesienie stosu na dół ramu - wtedy przy jego przekroczeniu wybije Cię bezpśrednio do odp. wyjątku. A co do sprawdzania zajętości pamięci - jak możesz, to zaglądnij do 2giej książki M. Kardasia,...
Nie wszystko da się zrobić w C i manipulacje rejestrami są właśnie taką rzeczą. Jak napiszesz ten handler w C, to po pierwsze na samym wejściu do niego kompilator dorzuci na 99% jakiś kod który cośtam sobie alokuje na stosie po to napisałeś, że jest "naked" aby nie dorzucił :) [syntax=c]void HardFault_Handler() { if(__get_LR() & 4) getRegistersFromStackFrame((uint32_t...
Oczywiście masz rację :) Pisząc, że jest to bezpieczne miałem na myśli: funkcja Reset_Handler() nie używa stosu do absolutnie niczego
Można sobie takie wątki tworzyć w zależności od potrzeby. Coś na styl wzorca typu "thread pool" czy jakoś tak. Thread pool to troszeczkę coś innego, choć to może być jedna z jego cech w celu oszczędzania zasobów. Swoją drogą też ciekawy pomysł, żeby stworzyć zadania służące jedynie do odpalania handlera delegata, pobieranego z np. kolejki. Generalnie...
A w skrypcie linkera zmieniłeś rozmiar stosu dla przerwań na inny od zera? jasne że przerobiłem rozmiar pamięci: /* Handler mode (core exceptions / interrupts) can use only main stack */ __main_stack_size = 0; 4\/3!!
Sprawdziłem w praktyce, z powodzeniem. Oczywiście zgadzam się z wszelkimi wadami tego podejścia, które punktujecie - trudniejsze debugowanie itd. Brak stosu i brak zadań jest zaletą, bo nie trzeba nic przełączać. Freddie, nie sprowadzaj do poziomu przedszkola. Stan na ogół jest pamiętany w zmiennych prywatnych handlera - nie udawaj, że nie znasz słowa...
ldr sp,=_estack Zupełnie zbędne. Z całym szacunkiem ale jestem przeciwnego zdania. Zdarza mi się bowiem używać skoku na 'reset handler' np. przy błędach assercji. Pzdr PS Z podobnych powodów przy ustawianiu PLL-a najpierw wpisuję wartości domyślne dla stanu 'reset' a dopiero potem ustawiam od początku. Ustawianie PLL-a gdy procesor jest nim taktowany...
Więc na razie wiem tyle, że się da (; Nie udało mi się namierzyć w necie żadnego przykładu jak tego dokonać, ale może zbyt słabo szukałem, więc może ktoś takowy przykład gdzieś widział albo ma u siebie? Wdzięczny będę również za wszelkie wskazówki jak to mniej-więcej powinno działać i co trzeba tam wyczarować. Tez szukalem i nie znalazlem. Generalnie...
Freddie Chopin , czy mógłbyś mi w prosty sposób wytłumaczyć do czego powstał plik vectors.c i jak on działa? Zauważyłem jedynie ze w standardowych bibliotekach od ST w plikach startup znajdują się podobne odwołania do funkcji przerwan z koncówką "handler".
Pomyslalem o tym wczesniej, ale (być może cos zle wpisuje) gdy probuje zmnijeszyc predkość pojawia sie cos takiego: Warn : use 'at91sam7s.cpu' as target identifier, not '0' RCLK - adaptive Error: unable to open ftdi device: unable to claim usb device. Make sure ftdi_si o is unloaded! Command handler execution failed
void TIM3_Handler(void) __attribute__((interrupt)); void TIM3_Handler(void) { } Właśnie tak robię. Wszystko oczywiście w pliku vectors.c. No nic popatrzę zatem w czym jest problem w niedzielę. Jeżeli mi się uda rozwiązać go to przedstawię tutaj rozwiązanie. Dzięki freedy za zainteresowanie
Atrybut jest generalnie konieczny chyba że masz wrapper w assemblerze, który załatwi za Ciebie niuanse powrotu z przerwania. Tu właśnie mamy taki wrapper, więc to wywal. Ja dałem przykład z mojego działającego kodu. Może raczej pomyślał bym nad atrybutem "naked" BTW, czym to kompilujesz? PS. W zasadzie to kompilator by strasznie krzyczał, jednak zapytam....
Witam, sprawa wygląda tak: zainstalowałem plug-in http://obrazki.elektroda.pl/4076597300_1... ale tam gdzie miał wprowadzić on jakieś zmiany nic sie nie zmieniło... http://obrazki.elektroda.pl/1272710800_1... zresztą elfy są mało ważne... zajmijmy sie hexami poszedłem za instrukcjami lecz zastanawia mnie jedno czy po...
A stos dla przerwań sobie ustawiłeś? Nie Primo - gdzie dokładnie program "zostaje"? W Handlerze? On nie zostaje w handlerze tylko wychodzi z handlera i nie idzie już dalej czyli zatrzymuje się na forze na którym zastało przerwanie. Po dodaniu jak wkleiłem w poprzednim poście by wysyłało dane użyteczne a nie badziew zatrzymuje się w tej funkcji do odbioru...
Hmmm. Wgrałem oryginalny program z Stm32 MassStorage. vectors.c startup.S i .ld o kolegi Freddie Chopin. Mam obecnie dwa przerwania z Usb: USB_HP_CAN1_TX_IRQHandler i USB_LP_CAN1_RX0_IRQHandler ( w vectors.c było bez jedynek kolo CAN ). Zrobiłem takie coś, orginalny program void USB_HP_CAN1_TX_IRQHandler(void) { CTR_HP(); }...
ciężko mi wymyślić sensowną sytuację w której przez 5 sekund byłby podpięty jeden handler, a potem przez 3 kolejne - inny. No bo po co? Timery i dokładne odmierzanie czasu w różnych miejscach kodu. Zamiast korzystać z kilku timerów, można w różnych blokach kodu konfigurować 1 timer i wstrzykiwać odpowiednią funkcję przerwania. Oczywiście pod warunkiem,...
mam taki plik konfiguracyjny: # target: lm3s8962 if { [info exists CHIPNAME] } { set _CHIPNAME $CHIPNAME } else { set _CHIPNAME lm3s8962 } if { [info exists CPUTAPID ] } { set _CPUTAPID $CPUTAPID } else { set _CPUTAPID 0x3ba00477 } jtag_khz 500 jtag_nsrst_delay 100 jtag_ntrst_delay...
A powodem przejścia do Default_Handler() może być równie dobrze dowolny inny błąd w programie, np. brak przydzielonego dla przerwań stosu (skrypt linkera). Ustawiłeś rozmiar stosu dla przerwań? Jesteś 100% pewny, że NIGDY nie wchodzi do tego przerwania, nawet jeden raz? Zobacz sobie w pliku assemblera (nazwa_projektu.lss w folderze out, jeśli korzystasz...
bo przerwanie powinieneś zmienić na void FIQ_Handler(void) __attribute__ ((interrupt("FIQ"))); void FIQ_Handler(void) { ... } gdyż reszta parametrów jest potrzebna aby NIEUŻYWANE przerwania były przypisane do domyślnego. Znaczy się "t0isr" na "FIQ_Handler"? Pozatym potrzebna jest też konfiguracja danego źródła jako FIQ w module VIC. No ale nie robi...
Proszę o pomoc szczególnie freddiego chopina ponieważ jest autorem plików linkera, startup-a i wektora przerwać(vectors.c), które w innych projektach jak dotąd działałają mi niezawodnie. Zajrzyj do skryptu linkera, przeczytaj ze zrozumieniem jego początkowy fragment, ustaw tak jak trzeba i będzie działać. Kluczową sprawą jest przyswojenie sobie tego...
Jedyny problem jest taki, że zmienisz tym sposobem lokalizację tylko jednego stosu (np. tego od przerwań) - na stosy wątków wpływ masz minimalny. To fakt, choć jeśli chodzi o FreeRTOS, to wspomnianymi wyżej narzędziami stwierdziłem, że jest w miarę ok. Taski są w moim odczuciu na tyle przewidywalne, że jeśli są określone z zapasem za pomocą watermarków,...
Wyższość kodu strukturalnego nad obiektowym jest w zasadzie zagadnieniem filozoficznym ;) Moim zdaniem mimo wszystko obiektówka się broni nazwet gdy klasa robi za odpowiednik przestrzeni nazw (wszystko statyczne w środku). Zdecydowanie upraszcza to zarządzanie i panowanie nad kodem, tym bardziej że projekty embedded już idą w miliony linii i ogarnięcie...
bo w "normalnym" programie to będzie już musiało być zrobione inaczej. Tz jak ? :) Narazie przychodzi mi do głowy tylko takie rozwiązanie: Załóżmy że bez Delay'ów w mainie. W pętli jest tylko wysyłana ramka i zmiana pinu sterującego. Natomiast w przerwaniu sprawdzam: jeśli odebrano pierwszy bajt (tj. adres urządzenia ) to odbieram kolejne aż do otrzymania...
Cześć Zabrałem się za zabawę z ethernetem na zestawie butterfly (STM32F107) + ZL2ETH. Pracuję na najnowszej wersji code sourcery, makfile i startup by Freddie Chopin + stos LWIP. Po początkowych problemach udało mi się zaininicjalizować PHY i na switchu zaświeciła się diodka, i to był początek problemów. Po dokładnym sprawdzeniu wszystkiego i wyeliminowaniu...
Dzięki za szybką odpowiedź. Ja niestety dopiero teraz miałem okazję zajrzeć. zakładce startup na samym dole - "Set breakpoint at" i doklikujesz pod tym "Resume" - u mnie takie opcje są normalnie dostępne. No w moim eclipsie tego nie ma. Na dole mam Run Commands, pod tym przycisk Variables i Apply i Reset -nic więcej Zmieniłem initialization command...
Witam mam problem, gdy mam w makefile: "-mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math" to przy wywoływaniu funkcji w 6 argumentami typu float program wpada w hardfault od razu po wywołaniu funkcji main w reset handlerze. Gdy natomiast tej linijki nie mam to działa ok, tyle że za wolno. Może ktoś podpowiedzieć z czego to wynika? Dodam, że bazuję na...
Witam Następny problem który mam: [syntax=c]LD: nuttx d:/gcc-arm-none-eabi-4_6-x64-121030/bin/... /armv7-m\libsupc++.a(vterminate.o): In function `__gnu_cxx::__verbose_terminate_handler(... /home/freddie/bleeding-edge-toolchain-x6... undefined reference...
Nie da rady (brak połączenia do sprzętowego RESET) - mogę najwyżej "soft_reset_halt". Da radę bez sprzętowego połączenia reset. Jeśli nie da, to przestań grzebać w skryptach których nie rozumiesz i zmieniać domyślne opcje. Zresztą - tak naprawdę istotne jest tylko samo "halt". Generalnie widzę że niektórzy nigdy się nie zmienią i naprawdę lubią sobie...
Brakuje jeszcze linii void SysTick_Handler(void) __attribute__ ((interrupt)); bez niej procesor wpada w nieskończoną pętlę. Not true. 4\/3!! Rozszerzę opis. Ale gdy używasz szablonu od Freddiego, a i tam Default_Handler może być dowolnie modyfikowany.
pliki vectors.s i startup.s mam od Ciebie /***************************************... * author: Freddie Chopin, http://www.freddiechopin.info/ * file: vectors.S * last change: 2010-04-08 * * chip: LPC2103 * compiler: arm-none-eabi-gcc (Sourcery G++ Lite 2009q3-68) 4.4.1 * * description:...
Ok. Dalsze wieści z frontu. Olałem debugowanie z linii poleceń i skoczyłem od razu do eclipse'a. Ku mojemu zdziwieniu wszystko działa pięknie. Dzięki za pomoc. W razie problemów będę pisał. Pozdrawiam. Dodano po 2 "Stepowanie" przez wektory przerwań nie do końca jest dobrym pomysłem niestety... Musiałbyś sobie ustawić breakpointa na pierwszej instrukcji...
Ten sam problem. Procesor STR912. Udalo mi sie ustalic ze problem polega na wlasnosciach samego kompilatora. Przy konwersji floata procesor laduje w handlerze do data abort(co tlumaczy czemu wisi skoro defaultowo jest tam pusta petla). Problem podobno zalatwia dodanie odpowiednich flag kompilacji(niestety jeszcze nie wiem jakich. Wiec prosba do Freddiego...
Otwórz konsolę, wpisz `telnet localhost 4444` a następnie spróbuj np. polecenia `halt`, `poll`, `flash info 0` i zobacz co ciekawego wyświetli. ~$ telnet localhost 4444 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > halt > poll background polling: on TAP: STM32F103C8Tx.cpu (enabled)...
Dobra, to ja się podczepię: odpaliłem w końcu semihosting, natomiast nie bardzo wiem, co zrobić ze skryptem linkera - bo nie do końca łapię pewne rzeczy: /* Linker script to place sections and symbol values. Should be used together * with other linker script that defines memory regions FLASH and RAM. * It references following symbols, which must be...
Dzięki Freddie jesteś wielki, po dodaniu tych #define program od razu ruszył, jeszcze raz wielkie dzięki.
Już pod LPC2129 wszystko działa jak należy. Teraz próbuje się przerzucić na LPC1754 na nowym rdzeniu. No ale coś mi nie idzie :/ Układ uruchomieniowy zgodny z schematem http://www.nixie.pl/docs/LPC175X-M-rev.A... . JTAG od Freddie Chopin z ustawioną zworką na 3.3V dla JTAG (zasilanie dołączonego układu z JTAG). Plik konfiguracyjny LPC1754.cfg,...
asm na pewno jest taki sam (szczegolnie ten ktorego uzywalem, bo to same podstawy), gorzej z timerami na ktorych opieraja sie dluzsze opoznienia (od ms w gore). nigdy nie zajmowalem sie dspic30, wiec... nie wiem jak to tam jest z tymi timerami. najwyzej dostosujesz sobie <: __________________________ modul sklada sie standardowo z pliku c i h. ponizej...
No to wstaw tam dowolny wkaźnik, żeby reset handler był przesunięty o te 4 bajty. Analogicznie do innych zarezerwowanych. Swoją drogą, czy tablica wektorów musi zawierać osobne adresy do funkcji reserved ? Zdaje się, że starczyła by jedna (pomijając fakt rozszerzalności takiego rozwiązania). Nie wstaw cokolwiek po adresem jest adresem 0 początkowy...
Tak więc jeśli Twój program, po podobnym przesunięciu nie działa prawidłowo, to trzeba się zastanowić, czy on w ogóle działa prawidłowo (; Bez przesunięcia na pewno działa prawidłowo :) No to niezły kwas, muszę to przetrawić :) Uznanie dla umiejętności. Dodano po 14 To na pewno chodzi o kopiowanie tablicy wektorów na początek. Jak wstawić do mojego...
Witam. Zainstalowałem OpenOCD 0.4 dla Windows ze strony Freddiego Chopina, przechodzę do sprawdzania działania i niestety pojawia się problem, wydaję komendę openocd -f interface/kt-link.cfg -f target/sam7x256.cfg i otrzymuje odpowiedz Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bu...
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 projektu lpc1114_blink_led i rename na stm32f0_blink_led 2. Zmiany...
Wydaje mi się, że mam problem z poprawnym umieszczeniem w pamięci ram struktur zawierających ramkę obrazu. Pierwsza z nich to: [syntax=c] static struct framebuffer { int w; int h; int bpp; int ready; uint8_t pixels[]; }*fb = (struct framebuffer *) &_fb_base; [/syntax] Ona będzie przechowywała co najmniej 320x240*2 bajtów w tablicy pixels. Oraz druga:...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
Witam. Od pewnego czasu bawię się STM32. Starając się przejść na nieco wyższy poziom niż klepanie w C na AVRach a przy okazji zrozumieć 'bebechy' SMTów - nie używam bibliotek - trochę korzystam z poradnika szczywronka, trochę z przykładów Freddiego, trochę z innych rzeczy znalezionych w sieci, wydrukowanego RM i tak dalej. Mam takie pewnie trywialne...
Freddie Chopin dzięki za odpowiedź! Czy mógłbyś podzielić się fragmentami skryptu linkera z poprawnie zdefiniowanymi symbolami __heap_start i __heap_end ? Aktualnie Twój skrypt którego używam wygląda tak: [syntax=c] /***************************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
Faktycznie! Jeśli nie przekroczę 4 breakpointów to nic się złego nie dzieje. W kail-u wyświetla się okienko informujące że nie można dodać kolejnego breakpointu (max to 5). Dzięki Freddie! Mam jeszcze jedno pytanie. Chciałem użyć w projekcie kontenerów z biblioteki standardowej C++ (konkretnie vektora i kolejki) jednak gdy program chciał wykonać którąś...
Witam, Mam problem z debugowanie procesora LPC2478. Środowisko: postawione zgodnie z tutorialem ze strony Freddiego Chopinna czyli Eclipse (helios edition with HDT hardware debugging) + OpenOcd + Code Sourcery Lite edition Procesor: ARM NXP LPC2478 z kwarcem 12MHz Aplikacja: Na tym etapie mrugająca diodka na timeocie opartym o przerwanie timer0, PLL...
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"))); // ETH_WKUP Ethernet Wakeup through EXTI line Interrupt void ETH_WKUP_IRQHandler(void)...
Złożyłem testową makietę z procesorem LPC2148 (schemat poniżej). Niestety OpenOCD z JTAG'iem Freddiego Chopina uparcie jej nie wykrywa :/ Otrzymuję komunikaty: C:>openocd.exe -f interface/jtagkey.cfg -f target/lpc2148.cfg Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
Witajcie, Pracuję na STM32 CL i do końca nie rozumiem zachowania się openocd. Plik mam poprawnie skompilowany (z przkładów freddiego ). W eclipsie sekcje GDB_Hardware Debugging mam ustawiona następująco: main->C/C++ Application: {wkazanie pliku: stm32_blink_led.elf} Debugger -> GDB command -> arm-none-eabi-gdb.exe Debugger...
Zamówiłem dwa Cortex'y STM32F103ZET6, czekam na przesyłkę... W między czasie, patrzę na przykłady z STM32 i nie mogę się nadziwić.... no cóż czasem człowiek potrafi skomplikować proste sprawy... Używam startup.S i vectors.c od kolegi Freddie Chopin. Niby wszystko ok, ale jak ktoś przerabia jakieś rzeczy z USB, niech zwróci uwagę na dwie rzeczy. w ST...
Ogólnie bojów ciąg dalszy. Próbuję toto zaprogramować z linii komend GDB (STR712 ruszył w taki sposób). Zaczynam od reset init: Open On-Chip Debugger > reset init RCLK not supported - fallback to 16 kHz JTAG tap: str912.flash tap/device found: 0x04570041 (mfg: 0x020, part: 0x4570, ver: 0x0) JTAG tap: str912.cpu tap/device...
Dziękuję wszystkim za pomoc. Pomysł Freddiego działa, umiem debugować. Muszę najpierw raz wgrać softdevice poprzez openocd z cmd. A później już normalnie kompiluję, wgrywam mój program poprzez eclipsa i openocd i teraz muszę dać stop i włączyć same debugowanie bez ponownego ładowania programu. W pętli głównej mam miganie diodą i parę delay. No i jak...
Do Freddiego: Pobrałem Twoją wersję blink do LPC1114. Teoretycznie pasuje mi bez zmian do LPC11C24. Jednak debug (Linaro4.8, openOCD 0.9.0 od ciebie) nie jest wstanie przejść przez startup - dochodzi do polecenia 'isb' (zaraz na początku) i ląduje gdzieś w sekcji bootloadera (0x1fff0e4a). Sprawdziłem też inne kombinacje (CMSIS + startup pobrany z innych...
A jak już wyląduje w tym HF, to jakie są wartości rejestrów rdzenia? Przejrzałem kompilację u siebie i plik assemblerowy wygląda generalnie ok. Jak w opcjach debuggera odznaczysz opcje "resume", to można debuggować funkcję Reset_Handler(), tyle że trzeba sobie przed zrobieniem czegokolwiek zaznaczyć opcję "instruction stepping mode". Wtedy by można...
Witam, zainstalowałem OpenOCD ze strony Freddiego Chopina, używam też OpenOCD skompilowanego do współpracy z FTDI, oraz sterowniki do programatora KT-LINK, które były z nim dostarczone na CD. Używam płytki ewaluacyjnej LPC-2478-STK z Olimex-u. Uruchamiam teraz OpenOCD z linii komend: openocd-ftd2xx -f interface/kt-link.cfg -f target/lpc2478.cfg przez...
Yagarto to projekt który przestał być rozwijany dawno temu. GCC 4.7 czy 4.6 to wręcz prehistoria, skoro teraz jest już 4.9. Na szybko podmieniłem ten gcc w emIDE na gcc-arm-none-eabi-4_9-141220 i ten sam efekt. Próbuję poustawiać ścieżki, dołożyć coreutils i przebuildować po swojemu. Spróbuj też wyłaczyć kompilacje w trybie thumb (tak aby wszystko...
Skompilowałem nieco przerobiony (usunąłem konfigurację PLL, itp..) pod mój procesor (STM32F100RB) przykład z twojej strony. Ze standardowym skryptem linkera działa, po zmianie TYLKO skryptu linkera na przerobiony pod RAM (kod poniżej) niestety nie: [syntax=asm] /***************************************... * author:...
Mam na pewno sterownik WinUsb.sys. Poniżej cały skrypt linkera: Dodano po 10 Zapomniałem dodać, że używam zewnętrznego ST-linka dołączonego do płyty Nucleo-f103rb. Mam drugą taką płytkę i gdy teraz ją podłączyłem ale skorzystałem z wbudowanego ST-linka wszystko zaczęło działać prawidłowo. Co w takim razie może być nie tak?
Czy o takie poprawki chodziło? Dodano po 6 Kompilacja przebiega trochę dłużej, ale pomyślnie. Tak długo tworzy się plik wyjściowy *.bin. Czemu?
Wiesza się w tym samym miejscu co w moim programie - po włączeniu przerwania NVIC_EnableIRQ. W stosunku do oryginału zmieniłem tylko port GPIO oraz dodałem obsługę TIM3 i mryganie diodą na podstawie TIM3->CNT by wiedzieć czy licznik rzeczywiście działa. W skrypcie linkera ustawiłem oba stosy oraz tak jak sugerowałeś zmniejszyłem pamięć o połowę -...
Witam, Dopiero co zaczynam bawić się ARMami, i na początek zakupiłem sobie moduł z propoxa (STM32F103VE) wsadziłem na mała płytkę uniwersalną ze stabilizatorem 3,3V do tego programator BF30... Tak więc skonfigurowałem sobie Eclipsa + CodeSourcery + openocd wg opisu na stronce tutro.net oraz skryptów załączonych do programatora. No i udaje mi się zaprogramować...
Witam, Posiadam mikrokontroler LPC2364, w którym nie potrafię uruchomić pętli PLL. Środowisko programistyczne to Eclipse skonfigurowane według tutoriala Freddiego Chopina. Do uruchomienia LPC2364 posłużyłem się projektem przykładowym naipisanym dla LPC2103 i znajdującym się również na stronie Freddiego Chopina. Zmieniony został plik linkera: /***************************************...
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ę, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
Witam, program w RAM uruchamiam tylko za pomocą debuggera. Robię dużo testów i nie chcę cały czas przeładowywać flash Ten HardFault następuje dopiero przy pierwszym użyciu new przez Ciebie, czy może np. przed wejściem do main() albo jeszcze gdzieś indziej - "wewnątrz" systemu? Jak nie używam new (w ramie) to wszystko działa, jak gdzieś w kodzie dodam...
Witam, a więc działam sobie na płytce ZL31 z kamami, w wersji z odłączonym st-linkiem, za programator i debugger służy mi jtag-arm z andtechu, jest to urządzenie na bazie ft2232. Soft to toolchain skonfigurowany podług tutka freddiego chopina. Wszystko ładnie działało jak trzeba do dzisiaj, gdy w którymś momencie zauważyłem, że skompilowany program...
int TDelay wyciągnij jako zmienną globalną. Za każdym razem, gdy SysTick wejdzie do przerwania ją tworzy, a to bez sensu, co? :) w końcu nigdy nie doliczysz do 500, skoro będziesz cxo chwile tworzył tą zmienną. właśnie tak myślałem że z tym jest coś nie tak, niestety z C też nie jestem mistrzem i przez to ta gafa, dzięki Porównaj: SysTickHandler SysTick_Handler...
Co będzie błędne, bo pierwszą rzeczą jaką robi Twój program jest jednak Reset_Handler, a nie to co przypadkiem trafiło na początek sekcji .text. Co nic nie zmieni bo i tak tablica wektorów jest zapisana "na sztywno" w większości projektów. Tak naprawdę jest to wartość ignorowana jeżeli tablica wektorów jest zrobiona tak jak w większości projektów -...
Ok, coś jest nie tak. Przede wszystkim systick działa na trybie optymalizacji O1 i O2. Bez zmiany kodu. Na O0 od razu jest hard fault. Ale nie występuje na żadnej linijce kodu. Nie wchodzi do przerwania i wywala od razu błąd. EDIT: Działa w momencie kiedy wywaliłem inicjalizacje: N VIC_Init(&NVIC_InitStructure); A w to miejsce dałem: NVIC->ISER...
Również jestem zdania, że bleeding-edge-toolchain nie ma nic wspólnego z BSoD, myślę że to może być tylko kwestia OpenOCD i sterowników. Nota bene uruchamiam teraz wielokrotnie kod i openocd i BSoD (odpukać nie było). Cały czas korzystam z wersji x64, a teraz z prostym configiem -f board/stm32vldiscovery.cfg :) aha i jak na razie program ładuję się...
Dzień Dobry Udało mi się skonfigurować timer i wszystko działa poprawnie tylko mam problem ze świadomym ustawieniem czasu trwania okresu. Wynika to z faktu że nie jest dla mnie do końca jasne: 1. Jaka częstotliwość jest dzielona przez preskaler 2. Jak w rejestrze: [syntax=c] TIM2->ARR [/syntax] ustawić czas trwania okresu świadomie. Załączę mój program:...
Wiec, probowalem jeszcze raz ale z innymi pinami sterujacymi - wybralem do tego PORT_B_PIN11 i PORT_B_PIN_12, nie jestem pewien czy dobrze to sprawdzilem w nocie katalogowej, ale wydaje mi sie ,ze one powinny byc 5V tolerant. Ponizej zalaczam caly config. h oraz main.c - probowalem znowu przetestowac mozliwe wartosci dla nowych pinow sterujacych niestety...
Generalnie to pobrałem skrypt linkera i plik startup ze strony http://www.freddiechopin.info. W datasheet i manualu znalazłem adres pierwszej strony pamięci flash i SRAM, która jest "rozbita" na 96KB i 32KB. Zmieniłem w oparciu o te informacje skrypt linkera. Czy zrobiłem to dobrze? Nie wiem. Poniżej: Skrypt linkera: [syntax=c] /***************************************...
Zdefiniuj sobie funkcję HAL_UART_ErrorCallback() i upewnij się, że NIGDY nie jest wywoływana. Jeśli jest, to znaczy że UART wykrywa jakiś błąd. Zrobiłem tak wczoraj i o dziwo urządzenie całą noc pracowało poprawnie. Dziś rano zresetowałem i testuje dalej. Zmiany w kodzie w stosunku do wersji zawieszającej UART to przeniesienie obsługi gpio odkierunku...
Problem wynika z tego, że w Cortexach jeden ze stosów jest inicjalizowany SPRZĘTOWO, po resecie, tak samo pobierany jest adres funkcji Reset_Handler(). Problem o którym piszesz jest znany i polega na tym, że procka resetujesz, on w tym momencie wczytuje sobie SP oraz adres funkcji Reset_Handler(), a następnie programujesz do niego coś nowego, zupełnie...
Witam podczas wykonywania obliczeń, gdzie występują funkcje powf() , acosf() i sqrtf() program ląduje w _Default_Handler . Kod pisany w Eclipse z wykorzystaniem przykładu od Freddiego do STM32F4. Poniżej kod: [syntax=c] typedef struct { uint8_t accel_raw_x, accel_raw_y, accel_raw_z; int16_t scaledx, scaledy, scaledz; double angle; } accel_meas_t; uint8_t...
Kernel code generally runs in one of two fundamental contexts. Process context reigns when the kernel is running directly on behalf of a (usually) user-space process; the code which implements system calls is one example. When the kernel is running in process context, it is allowed to go to sleep if necessary. But when the kernel is running in atomic...
Fajna ta flaga, nie znałem wcześniej (; To jest "świeża" opcja, więc niech najpierw każdy sprawdzi wersję binutils zanim zacznie się jej doszukiwać. Changes in 2.26: * Add --fix-stm32l4xx-629360 to the ARM linker to enable a link-time workaround for a bug in the bus matrix / memory controller for some of the STM32 Cortex-M4 based products (STM32L4xx)...
To może wgraj oryginalną zawartość z Nucleo F411 jaka jest w nówkach na dzień dobry, by przynajmniej sprawdzić Nucleo plus ST-link. On tam miga i reaguje na przycisk może pamiętasz: No jest jakiś postęp chociaż nie wiem czy można to nazwać postępem. Wgrałem ten program, wyrzucił mi jakiś błąd elf loadera ale ostatecznie znalazł się w pamięci: Dodano...
Witam, mam problem z wywołaniem funkcji w przerwaniu. Na chwilę obecną debugowanie odpada, gdyż mam mały problem z odpaleniem debugowania. Po wywołaniu przez procesor przerwania, albo się on wiesza albo niepoprawnie działa funkcja. To samo dzieje się gdy wkleję do przerwania zawartość funkcji. Podczas kompilacji nie sypią się żadne warningi dotyczące...
error handler except handler reset handler
błędy iveco stralis toyota radio zasilać airbag kasowanie
blokowanie numeru telefonu falownik pompy
Jak wymienić front szuflady w zamrażarce Indesit? Błąd 7H 356 w piecu Buderus Logamax Plus GB072: przyczyny i rozwiązania