Rdzenie Cortex posługują się zestawem instrukcji Thumb2 i zapewne to jest przyczyną tego błędu. Nigdy tego nie robiłem, ale z tego co widzę kompilator GCC, ma trochę mniej ustawień włączanych za pomocą checkboxów. Większość zapewne musisz dopisać sam. Trzeba będzie chyba pogrzebać na necie jak to ludzie konfigurują i odpalają. Masz w opcjach kompilatora...
Pytanie 1: http://infocenter.arm.com/help/index.jsp... CORTEX nie koniecznie wykonuje czynności w spodziewanej kolejności czy w spodziewany sposób, przekonałem się o tym dobitnie po kilku dniach nieustającej próby napisania tego w c/c++ bez podglądu na wygenerowany kod (tzn algorytm działał jednak występowały jittery...
Opisy mikrokontrolerów z rdzeniami ARM są na ogół całkiem przyzwoite, tylko szukaj USER MANUAL albo REFERENCE MANUAL, a nie Data Sheet (chyba, że w TI). Procesory ARM programuje się niemal wyłącznie w C, a ARM Cortex daje się programować w c bez ani jednej instrukcji asemblerowej. Praktycznie nie ma potrzeby używania asemblera, zresztą kompilator C...
https://obrazki.elektroda.pl/7656017200_... O komputerach jednopłytkowych czy stare komputery były lepsze od współczesnych platform rozwojowych i SBC? Nie lubię Arduino I to jest jak najbardziej prawda. Arduino to platforma, która miała dać łatwy dostęp do programowania elektroniki ludziom, którzy nie znają się ani na elektronice,...
https://obrazki.elektroda.pl/7467699000_... Popularna "malinka" (Rapsberry z ang. malina) od Rapsberry Pi Foundations jako jedna z pierwszych otwarła drogę dla komputerów typu SBC (Single Board Computer - komputer na jednej płytce drukowanej) pod domowe strzechy. Po części zawdzięczała swą popularność dającymi duże możliwości zasobami...
https://obrazki.elektroda.pl/9195935000_... Wszechobecne przetwarzanie obrazu oparte na uczeniu maszynowym na krawędzi sieci rozwija się w szybkim tempie dzięki spadkowi kosztów sprzętu, znacznemu wzrostowi możliwości obliczeniowych i nowym metodologiom ułatwiającym trenowanie i wdrażanie modeli. To prowadzi do zmniejszenia barier...
Ale bez tych flag linker wywala błąd, bo libc,libgcc je potrzebują. Zresztą kompilator nie używa instrukcji vfp, bo gdyby używał to miałbym błąd związany z brakiem koprocesora. A tu operacje zmiennoprzecinkowe nie działają wtedy, gdy argumentami są liczby double inicjowane w sekcji .data. Na liczbach całkowitych działają poprawnie.
https://obrazki.elektroda.pl/8482188600_... Układy z rodziny PSoC - Programmable System on a Chip - cieszą się dosyć dużą popularnością już od wielu lat. Firma Cypress, produkująca te elementy, prezentowała już wiele PSoCy dedykowanych do konkretnych zastosowań - były układy do sterowania silnikami BLDC itp. Teraz przyszedł czas na...
Liczę na to, iż rzeczywiście jest dobrze zainstalowany ten bootloader w moim STM-e... Jeśli Flash Loader Demonstrator nie wyrzucił błędu to masz zainstalowany dobrze. Inna sprawa to jest czy ten plik boot20_pc13.bin masz w odpowiedniej wersji do kompletu z driverem i obsługą w Arduino. Przez Manager Bibliotek nie udaje mi się z ciągnąć i zainstalować...
Wówczas takie programowanie przestaje się znacząco różnić od zwykłego C. Tia... a tworzenie zmiennych, zmienianie ich rozmiarów i dynamiczna alokacja pamięci są nawet prostsze (; Do niektórych zastosowań assembler ma sens, ale tych zastosowań jest coraz mniej - niestety lub stety - zależy co kto lubi. Ja początkowo uważałem, że assembler jest najlepszy...
UART0Buffer jest zle zadeklarowany bo nie powinno byc spacji miedzy nazwa a nawiasami kwadratowymi, co do reszty to podajesz jako argumenty unsigned char* podczas gdy funkcja oczekuje char* i dlatego kompilator sie drze.
A dlaczego nie zmierzysz czasu dzielenia timerem? Kompilator używa w miarę optymalnych procedur dzielenia, więc raczej nic nie przyspieszysz pisząc własne procedury.
Freddie: myślę, że to, co piszesz o __interrupt, mija się z prawdą - tak to ujmę delikatnie. Wiem, co robi procesor i kompilator i nie zauważyłem, aby działo się to, o czym piszesz. __interrupt było niezbędne w "normalnych" procesorach, bo wchodząc w obsługę wyjątku kompilator musiał zapamiętać te rejestry, których normalnie nie zapamiętywał. W Cortex...
Kamyczku, gdybyś wyjrzał ze swojej AVRowo-asemblerowej norki na świat, zobaczyłbyś, że jest on inny, niż Ci się wydaje. ARMa w asemblerze programować nie ma sensu, bo przeciętny kompilator generuje lepszy kod maszynowy od niezłego programisty, a tani Cortex programowany w C będzie min. 10x szybszy od droższego od niego 8-bitowca programowanego w asemblerze...
że ARM jest elastyczny i bez problemu można przenosić programy między procesorami I tu jest kolegi błąd bo pomylił kolega rdzenie procesora z peryferiami. Te dość często są bardzo podobne i podobnie konfigurowane, ale czasem jednak mają różnice, a czasem różnica polega tylko na tym, że jest podpięte na inną szynę. "Elastyczny" program czy kompilator...
Nie chcę tu uruchamiać znów kłótni Cortex vs reszta świata. Jeśli chodzi o mnie powód jest prozaiczny. Po pierwsze mój kompilator obsługuje AVRy i ATXmegi. Po drugie mam książki Tomka Francuza i na nich bazuje. Po trzecie Atmel mnie nigdy nie zawiódł. Po czwarte - lenistwo , nie mam siły aby ruszać w tym momencie Army. Ale nie ukrywam że kto wie, może...
Kompilator zgłasza ci warning: "warning: cannot find entry symbol Reset_Handler; defaulting to 08000000 " Błąd może wynikać z kilku rzeczy: - nie kompilujesz rozbiegówki i wektorów przerwań (opcja linkera --gc-sections wyrzuca wszystkie nieużywane funkcje) - nie masz w skrypcie linkera słowa kluczowego KEEP dla sekcji wektorow przerwan /* for Cortex...
Chwilowo nie mam dostępu do urządzenia żeby podłaczyć debuger, moge korzystać wyłacznie ze zrzutu FLASH. Co do tego najmłodszego bitu to ja nie widzę w specyfikacji czy on decyduje czy procesor jest w stanie Thumb 16 bit czy Thumb 32 bit. Bardziej bym przypuszczał że to zaszłość z procesorów ARM z trybami ARM/Thumb. Według specyfikacji starych procesorów...
Oby tak było jak piszesz, mam nadzieję że nie wyłączą optymalizacji w AS jak w ich środowisku. To jest pewne... Microchip wie że to było by strzelenie sobie w stopę. Będzie istnieć i ich komercyjny kompilator i gcc darmowe które można użyć w obu środowiskach. Natomiast co do samych AVR-ów i posta który wylądował w koszu to powiem tak, to że gdzieś...
Problem jest do obejścia, ale myślę, że lepiej zajrzeć w kod assemblera i zobaczyć po pierwsze jakie instrukcje zostały wygenerowane, a po drugie - jakie są wartości owych stałych _bss i _ebss. (hint: arm-none-eabi-objdump -S plik.o) Tak swoją drogą, to te stałe (_etext, _ebss, _bss itp.) to po prostu wartości, a traktowane są jak konkretne zmienne...
No i przecież o tym pisałem: To co teraz robią jest naprawdę szybkie i wydajne. To juz nie 12 cykli zegara na jedno polecenie. Taki 1-cyklowy core '51 zajmuje kilka razy więcej krzemu niż cortex M0 pracujący przy tej samej częstotliwości... Dziwne, że jeszcze nikt nie napisał odpowiednika Bascoma na ARMy :) Niestety, od renesasa odstrasza głównie kompilator...
1. bo je lubią i się przyzwyczaili (z naciskiem na LUBIĄ ok?) Jak lubią to co innego. 2. bo uważają że w ich opinii nie opłaca się stosować ARM do prostego wg nich projektu Pod jakim względem nie opłaca? Co to znaczy? 3. bo znają np tylko tą architekurę to już poważne ograniczenie. Nie rozumię dlaczego mają być w to wciągani początkujący. Dlaczego...
Myślę, ze BlueDraco chcąc wyjaśnić namieszał autorowi jeszcze bardziej. Pierwsza kwestia volatile. Tu faktycznie mamy tylko kwestie języka C. Taki modyfikator mówi kompilatorowy : nie optymalizuj. Jeśli jest przypisanie to je wykonaj. Jeśli jest modyfikacja to ją wykonj. Gdy nie ma takiego modyfikatora kompilator może instrukcję pominąć (np przypisanie...
Więc tak tylko gwoli przypomnienia zanim kolega znowu napisze ale czy kompilator coś tam, albo czy procek coś tam ma - to może warto poczytać i znaleźć odpowiedzi na te pytania... Nie będę się doktoryzował przez miesiąc w kompilatorach itp uC, którego architektura i zasoby mi nie odpowiadają. Na dzień dobry nie ma USB. Za mało timerów. Za mało SPI....
Dla takich osób, które chcą pooglądać jednak taki, który jest NIEpoprawny, choć w wyjątkowo subtelny sposób: https://gcc.gnu.org/bugzilla/show bug.cgi?id=83703 https://stackoverflow.com/ques...dd-floa... + https://gcc.gnu.org/bugzilla/show bug.cgi?id=79436 Nie wiem co ten kod ma wspólnego z naszymi optymalizacyjnymi dywagacjami:...
SFINAE jest potężne, ale jeszcze bardziej potężne to są błędy jakie wypluwa kompilator jak coś mu się nie podoba (; Szczególnie te które zajmują 50 ekranów <: Ale tak serio, to też czasem używam Clang ma w miarę czytelne komunikaty, przynajmniej wymusił na deweloperów od GCC kolorowanie wyjścia z błędami :) Później chcę dodać skrypt CMake do budowania...
Zdecydowanie brałbym STM32. STM8 to już procki raczej u swojego schyłku i długo rozwijane chyba nie będą, Procesory STM8 są własnością ST i u innego producenta ich nie dostaniesz, a STM32 jest na rdzeniu ARM Cortex M-3 - bardzo popularny rdzeń wśród producentów. Do tego można kupić stm32 discovery kit bardzo tanio (ja sprzedaje po 50zł). Idealna zabawka...
Jak zapewne niektórym wiadomo - Cortex posiada możliwość (pośredniego) dostępu bitowego do pamięci SRAM i rejestrów sterujących peryferiami. Mam więc takie makra makra: #define BITBAND_SRAM_REF 0x20000000 #define BITBAND_SRAM_BASE 0x22000000 #define BITBAND_PERIPH_REF 0x40000000 #define BITBAND_PERIPH_BASE 0x42000000 [...] #define bitband_t...
http://obrazki.elektroda.pl/8660171200_1... Celem projektu było zbudowanie odtwarzacza MP3/WAV, używając jedynie układu FPGA, pamięci RAM i przetwornika stereo DAC. Układ wykorzystuje 32-bitowe jądro procesora programowego pracujące przy taktowaniu poniżej 60MHz, które odpowiada za dekodowanie MP3 bez wsparcia sprzętowego - poza wykorzystaniem...
(at)Piotrus_999 To nie Ty czasem stosujesz volatile dla tablic struktur? Chciałbym zaznaczyć, że taki zabieg również generuje średnio wydajny program. Bo niby jaką wartość merytoryczną niesie wypowiedź typu: No właśnie to było dziwne bo w strukturach packed nie było :). A kto włącza to globalnie? Pewnie w jakimś pluginie do eclipsa (at)qazpylades ładnie...
Witam, Robiłeś to w Coocoxie? Tak. Na STM32F100RB? Sprawdziłeś na procesorze? Bo kompilator nie zgłasza zadnych bledów, nawet ostrzeżen, kompiluje to, bo bez log10 ma 2.5kB a z log10 6 kB. Na innym procku. Powyżej napisałem na jakim. Upewnij się, że wziąłeś poprawną bibliotekę z /thumb (jest ich kilka, kompilator i linker również nie zgłosi przy nich...
Porada niestety nietrafiona, a to z braku implementacji w AVR-libc. Oczywiście można sobie samemu to zaimplementować, lecz po co, skoro już w AVR-libc mamy atomic.h. Tak, jest atomic.h. Można też po prostu też blokować przerwania. Jednak wydaje mi się, że korzystanie z stdatomic (czy std:atomic dla C++) jest krokiem naprzód. Implementacja operacji...
Ponieważ do zabawy z mikrokontrolerami mam oddzielny komputer ze stabilnym W98 SE a chciałbym sprawdzić w praktyce nową rodzinę LPC1100 szukam odpowiedniego kompilatora języka C oraz asemblera. Symulator i debugger niekonieczny. Polecane przez NXP LPCxpresso jak widzę w opisie jest przeznaczone od W2000 w górę i watpie czy da się je bez bólu zainstalować....
To nie jest element języka C. Język C nie oferuje żadnych funkcji odmierzających czas. Ogólnie sam C się do tego kiepsko nadaje. Trzeba zejść do "sprzętu". Metody są 2. Odliczanie ticków - kiepska metoda, mało dokładna oraz raczej koniecznie trzeba wykorzystać assembler, albo policzyć ile tików trwają operacje które kompilator wypluje (czyli itak assmeblera...
1. Podziel się jak to robisz, chętnie bym wykorzystał QFN ale lutowanie tego wydaje mi się koszmarne. Co do kodu - ten dokument przez ciebie pokazany jest dosyć tendencyjny, nie ma w nim AVR, a przykład z mul to już przegięcie. Jednak nie przekonasz mnie, że kod w sytuacji w której opcode ma 32- bity jest krótszy niż kod, kiedy opcode ma 16-bitów. Byłby...
http://obrazki.elektroda.pl/5735493200_1... Testowaliśmy płytkę FRDM-KL46Z: http://mbed.org/platforms/FRDM-KL46Z/ - procesor Cortex M0+ 48MHz, 256KB FLASH, 32KB RAM - czujnik światła - czujnik pola magnetycznego - czujnik (pasek) dotykowy - akcelerometr - wyświetlacz 4cyfry - 2x USB Cała płytka ma wymiary 8x5cm. Prezentacja produktów...
LD PC, [PC, #-0x0ff0] oznacza, że do PC zostanie załadowana zwartość komórki pamięc spod adresu PC - 0x0ff0. Ponieważ owa instrukcja leży na początku pamięci odjęcie od PC -0x0FF0 spowoduje ze powstanie "ujemny" w postaci 0xfffffxxx. Jeśli LDR PC ... będzie leżalo na adresie 0xF0 po odjeciu 0xff0 wyjedzie wynik 0xfffff100 czyli adres początku tablicy...
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...
CMSIS jest dla każdego vendora kompatybilny. Na płytkach evaluacyjnych tak samo jak w przypadku st i ich stlinka jest J-Link. Wiele rzeczy narzuca ARM vendorom, np przestrzenie adresowe, vendor może tylko zdecydować ile tego tam upcha. Tak samo pisanie w C, jak klepie kod pod arm-none-eabi-gcc to vendor mnie mało interesuje, ba mogę na tym samym kompilatorze...
Po raz trzeci pytam, dlaczego przy ustawionej ZEROWEJ optymalizacji oczekujesz żeby kompilator coś zoptymalizował. Wychodzi na to, że próbowałeś na różnych poziomach optymalizacji i na zerowym wywołuje funkcję (tak właśnie jest u mnie i tak ma być), natomiast na innych wywala cały ten kod jako zbędny (również napisałem co z tym zrobić) - wniosek - "kompilator...
Nie prościej tak nie kombinować? Funkcje zdefiniowane wewnątrz definicji klasy (zwykle w nagłówku) są domyślnie traktowane jako z atrybutem "inline" i po co kombinować więcej? A już jakieś atrybuty "always_inline", to prosta droga to zabawy w assembler++, bo skoro kompilator uznał, że inline'owanie nie ma sensu, to zapewne tak właśnie jest.
Biblioteki czy plików nagłówkowych? Jak to drugie to: - www.st.com - Products → Microcontrollers → STM32 32-bit ARM Cortex MCUS → STM32F4 Series → STM32F407 - (po lewo) Software → STM32Cube -> (w nowo otwartym oknie) STM32CubeF4 - (na samym dole) Get Software → Download - w rozpakowanym archiwum: Drivers → CMSIS...
Trzeba właczyć w opcjach kompilatora długie skoki. Ewentualnie trzeba skakać do funkcji w RAM przez wskaźnik, bo to zawsze wykorzystuje długie skoki. P.S. Na Cortex-M3 funkcje z RAM działają WOLNIEJ niż z flasha, to nie ARM7. 4\/3!!
wstawki w asm potrafię robić - tyle jest w startup'ie. Napisałem funkcję w asm i ją skompilowałem. Mam plik .o i przygotowany .h. Teraz tylko stoję przed problemem jak połączyć przekazanie argumentów kodu w C. Jak nikt nie wie, to chyba zrobię to na piechotę. Zerknę do .lst kilku funkcji i wydedukuję jak to kompilator robi.
najlepiej poznac obydwa Obawiam się, że nie wystarczy mi zasobów czasowych, choć naprawdę chciałbym... Do MSP430 mam już nawet zestaw eZ430-RF2500, znalazłem kilka różnych IDE, kompilatorów. Do cortex-M3 mam procka stm32f103vb na uniwersalnej płytce, jakieś narzędzia. Do obu dużo dokumentacji - podstawa ;) BTW: jakie kompilatory/IDE, według Was były...
Układ debuguje z poziomem -O0 (w keilu) Debugowanie na poziomie O0 (wyłączona optymalizacja) może dawać fałszywe przekonanie, że aplikacja działą ok. Ponieważ przy O0 nie ma żadnej optymalizacji, więc każde odwołanie do zmiennej powoduje jej przeładowanie z pamięci. W efekcie jeśli masz jakiś problem typu brak volatile, to na O0 aplikacja będzie działać...
Jaki jest poprawny opis działania jaki ma spełniać ta funkcja ? Ta ? Link Czy ta ? Link Wg manuala dostarczonego z kompilatorem wynika że funkcja zwraca wartość 0 lub - 1 w zależności czy działanie się powiodło czy nie. Ale działanie innych funkcji wskazuje na wersję pierwszą , czyli zwrot wartości indeksu w strumieniu. Osobiście nie widzę sprzeczności...
Jeśli używasz kompilatora w wersji 5: --cpu=cortex-m4 --fpu=fpv4-sp Jeśli używasz kompilatora w wersji 6: -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffast-math IDE po wyklikaniu odpowiednich opcji samo powinno ustawić właściwe flagi kompilacji.
Jakoś nie bardzo łapie co trzeba ściągnąć z tej stronki, aby mieć kompletne środowisko dla STM32 (IDE, GCC - wersja obsługująca cortex'y)... Czy ten "plugin do wgrywania" to FlashBash? Zdaje się, ze obsługuje tylko rodzinę ST7... Można podłączyć zewnętrzny kompilator?
(at)oscil, Jako że asembler to mój pierwszy 'język' od którego zaczęła się moja przygoda, to taki sposób dla łatwiej zrozumieć. Kod asm wklejany w kodzie programu c nie jest uniwersalny, kompilatory c mają ińne skladnie
cortex kompilator cortex firmware cortex przerwania
skrót windows usbasp sterownik calibration failed
bateria parkside czujnik wilgoci
Zamienniki tranzystora 2N60 – FQP2N60C, STP2N60, IRFBC20, superjunction 600V MOSFET Honda PH-1552L Clarion 428 TA – schemat płytki PCB, serwisówka, rozmieszczenie elementów