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ć...
Możliwe, że te lagi właśnie z powodu temperatury są, laptop to nie za bardzo sprzęt do grania. Spróbuj wyłączyć co zbędne w lapku na czas grania za pomocą Razer Cortex. Im mniej zbędnych rzeczy obciążających podzespoły lapka to lepiej. Kiedy też laptopa czyściłeś? Zmieniałeś pastę termoprzewodzącą na procesorze itp? Opis Razer Cortex: https://sites.google.com/site/twierdzaci...
Jak masz jakieś lagi podczas grania, to wyłącz co zbędne w Windows podczas gry, zmniejsz rozdzielczość gry, efekty graficzne i zobacz czy jest poprawa. Zobacz ten y temat: https://sites.google.com/site/twierdzaci...
Co ze sterownikami? Są aktualne? Głównie płyta główna i karta graficzna? Po tym screenie nie widać any się coś działo nie tak. Temperatury wydają się ok, nie mniej ja bym zapisał je do logów w programach CoreTemp i GPU-Z, pliki z pomiaru pokazał na forum, czyli pomiar rejestrujesz do momentu kiedy masz to przycinanie, tak jeszcze po wystąpieniu z 10...
Masz tu brzydki ale skuteczny delay na Cortex, specjalnie do LCD. Liczba NOPów powinna być o jakieś 3 mniejsza od połowy częstotliwości wyrażonej w MHz: [syntax=c]static void delay500ns(void) { __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); }[/syntax]
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...
Tak, tak... 4 cykle. Z instrukcją warunkową. To się w 10 pewnie nie zmieści nawet. A jakiej wielkości będzie tablica oferująca wynik dzielenia (const uint32_t / uint16_t)? Dawno nie widziałem większej bzdury. Tutaj jednak możesz się zdziwić. Pamiętaj że mówimy o dzieleniu gdzie dzielna/dzielnik jest stała. W przypadku uint32_t / uint16_t tablica mogła...
Zapewne jeszcze zawsze jest wywoływane przez skok.... No i? Nie przesadzasz z tą optymalizacją za wszelką cenę? (; Zboczenie zawodowe ;). Low power te sprawy...
Łakomy kąsek dla tych, co wolą Delphi od C: dostępny jest kompilator Free Pascal dla ARM, w tym Cortex-M3. Jest jeszcze dość niestabilny, ma wciąż problemy z optymalizacją, wiele bibliotek trzeba pisać od podstaw, oficjalne wsparcie jest tylko dla kilku mikrokontrolerów. Kompilator da się zintegrować z Lazarusem, od pewnego czasu używam go z powodzeniem...
Tak się składa, że wiem, że R0 jest wolny a każdy inny zajęty. Dziś jest wolny, jutro jest zajęty - obyś się nie przejechał. No i coś takiego nie działa, bo zmienna StackPointer Działa - potem R4 będzie przepisane do R0 żeby prawidłowo zwrócić wynik. jest ładowana do R4, który to ma być zrzucony instrukcją STMDB Wstawki assemblerowe są dużo bardziej...
Antutu możesz sobie pobrać bezpośrednio ze strony twórcy (antutu.com). Pobierzesz pakiet instalacyjny, ale czy Ci się uda go zainstalować, to nie wiem - musisz sprawdzić. Podobnie możesz próbować instalować pobrane pakiety innych programów. (apkpure.net apkmirror.com ...) Pytanie z ciekawości (bo ja chyba się domyślam, o co Ci chodzi z tą wydajnością),...
(at)Piotrus_999 To jak z tym volatile? =========================== Oto różnica między bez i z inline na Cortex M3 tej "optymalizacji". Cykle: 1834992 bez inline 557064 z inline [syntax=c]void muxC(struct RGBA *data1, struct RGBA *data2){ data1->b = (data2->a*data1->b + (255-data2->a)*data2->b) >> 8; data1->g = (data2->a*data1->g...
Daje się to bezproblemowo zrobić na Cortex M3 z zegarem > 70 MHz. Pewne dałoby się i na czymś trochę wolniejszym, ale chyba szkoda walczyć z optymalizacją przy tak małych kosztach M3.
Jeśli kod skompilowałeś z optymalizacją i wiesz, że akurat tam wchodzi bo podglądasz krokowo JTAGiem, to wcale tak nie musi być? Instrukcje z bloku IT (Cortex-owy "if") jeśli warunek nie jest spełniony są niby wykonywane - PC przelatuje przez te adresy - ale faktycznie są realizowane NOPy. Jeśli to jest ten przypadek, to wyłącz optymalizację i/lub ustaw...
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...
Wyłączenie optymalizacji to będzie raczej ficzer kompilatora, nie języka. W GCC jest jakiś atrybut, który pozwala zdefiniować poziom optymalizacji dla konkretnej funkcji - coś w stylu NOP does nothing. NOP is not necessarily a time-consuming NOP. The processor might remove it from the pipeline before it reaches the execution stage. Please note that...
Przeglądałem. Ameryki dzięki nim nie odkryjesz... ale na pewno stanowią zdecydowanie lepszy poziom miź polskie pozycje. I nie mówią o procesorach konkretnego producenta. 1. "The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors" jest też pozycja dla M0 "The Definitive Guide to the ARM Cortex-M0" 2. "ARM System Developer's...
Dzięki michalko12. Więcej szczegółów jest opisanych w rozdziałach 2.2.1 do 2.2.4 w "PM0214 The Cortex-M4 processor" CMSIS dostarcza też funkcje void __ISB(void), void __DSB(void),__DMB(void) Dzięki wszystkim za pomoc.
Poniższe dwa linki wyjaśniają sprawę. http://www.lpcware.com/content/faq/lpcxp... https://gcc.gnu.org/ml/gcc-patches/2014-... 4\/3!! Wnioskując bez znaczenia dla optymalizacji Os (zapewne najczęściej stosowanej) i tylko dla mnożenia przez stałą. Wybór opcji ma znaczenia w przypadku rdzenia bez sprzętowego mnożenia.
Proble z obliczeniami w AVR ie polega na braku dzielenia, a na tym, że liczymy na 8 bitach. Prosta operacja 16-bitowa - to min. 2..3 instrukcje, 32-bitowe - 8..12 instrukcji. W 8-bitowym procesorze nie ma żadnego pożytku z dzielenia, bo w programach, w których potrzebne jest dzielenie, używa się danych 16- lub 32-bitowych, a w przeciwieństwie do mnożenia...
(at)Jakub17 Niewyrównany dostęp -> wyjątek na niektórych rdzeniach (np ARM7TDMI, Cortex-M0). Tego typu rzutowanie może nie tylko prowadzić do niewyrówannego dostępu ale także do bardzo trudnych w znalezieniu błędów, zależnych od poziomu optymalizacji: https://stackoverflow.com/questions/9865...
eeee... do nastepujacych rodzin procesorow sa DARMOWE kompilatory: PIC24/dsPIC3x (po 2 miesiacach tylko optymalizacja -O1) PIC32 (podobnie) ARM7/9/Cortex (pelne i darmowe GCC) i tak mozna wymieniac dalej... programator do PICow to koszt ok 150zl (firmowy PICKIT 2 na USB) lub ok 50zl - samodzielnie zmajstrowane ICD2 na USB. Dla ARMow w zasadzie nawet...
1. Te błedy to normalna sprawa - wynikają one chyba z tego, że gdb próbuje odczytać "call stack" zbyt głeboko, co się źle kończy po pewnym czasie - odczytem nieistniejącego adresu. Nie jest to żaden problem, nie warto się tym przejmować. Debuggowanie może być też problematyczne dlatego, że wykonujesz soft_reset, który może sporo mieszać, zależnie od...
http://obrazki.elektroda.pl/5374472000_1... Spełniając obietnicę stworzenia wydajnego rdzenia w technologii 16-nanometrów, ARM i Cadence zaprezentowały szczegóły współpracy w celu wdrożenia pierwszego procesora w procesie produkcyjnym 16-nanometerowych tranzystorów FinFET firmy TSMC. Testowy chip został zaimplementowany przy użyciu...
Ponawiam pytanie- w jaki sposób ocenić czy pamięć RAM jest niewystarczająca (oczywiście pod FreeRtosem). Korzystam z debbugera od Freddiego, eclips + openocd. Istnieje może jakaś nakładka umożliwiająca podgląd pamięci RAM coś jak pod AVR studio? BTW: Asekuracyjnie przymierzam się do zmiany uk na coś o większym RAM - LPC17x (cortex-m3) Moglą koledzy...
nie działa, to bardzo ogólne pojęcie. Zbyt mało informacji podajesz. Jakie IDE/toolchain/kompilator? Jeżeli GCC, to domyślnie między release a debug jest kilka różnic, między innymi optymalizacja i nadmiarowe dane do debugowania. Sprawdź która z tych funkcji powoduje kłopoty. Powodów może być kilka między innymi taki, że kod/program bez debugera działa...
Piszę dla ARM (Cortex M3) Mam TrueStudio (chciałem go poznać, tak szczrze eclipse +gcc jest lepsze i bez ograniczeń ale nie ma do niego Debugera na ST-Linka) Dzieją się dziwne sprawy z optymalizacją. Od kiedy zaczołem programować w Pascalu 10 lat temu pierwszy raz coś takiego widzę ! mam funkcję: void LCD_INIT(uint8_t kontrast) { uint8_t...
Tak swoją drogą to te kombinacje są nieco błędne - jeśli ilość danych do zapisania nie jest podzielna przez 4, to wcale nie można sobie przeczytać "poza" koniec tablicy - undefined behavior. Nie mówiąc już o tym, że zasadniczo rzutowanie danych typu uint8_t na uint32_t bez zapewnienia w jakiś sposób wyrównania tych pierwszych jest również błędne (na...
U mnie jak dam -gddb3 to zaczyna niepokojąco wariować (np step in do funkcji foo1() powoduje chwilowe wejście do foo2(), by po jednym stepie przeskoczyć na odpowiednie miejsce). Miał ktoś podobnie ? Przy włączonej optymalizacji to zasadniczo (niestety) "normalne", ale przy -O0 nie powinno się tak dziać. (at)Freddie Chopin Czy jest jakaś ewolucja aby...
1. Odpowiedź pytaniem - a dlaczego by nie? Równie dobrze mogę Cię spytać, czemu Twój program składa się z x plików zamiast z jednego i byłoby to nawet lepsze pytanie, bo taki program może być bardziej zoptymalizowany przez kompilator niż coś rozdzielonego na setkę plików (; 2. Jedyne miejsce gdzie kolejność ma znaczenie to sama tablica. W końcu w C...
Nie wiem czemu, ale kolejny, niezależny już raz spotykam się z agresywnym zachowaniem, jeśli dany post / odkrycie uderza w czyjeś zdajemisię, tudzież interesy. Jest to zwłaszcza zauważalne podczas prób upraszczania "sztucznie utrudnionych" tematów, przeznaczonych "tylko dla specjalistów". Analizowanie standardów poza podstawowym zakresem uważam za zbędne,...
Nie, nie używam RTOS'ow, robię coś w stylu audio dsp i zależy mi na zjeżdżaniu z ceną procków. Z tego co doczytałem ta funkcjonalność nazywa się Code Coverage i jest zaimplementowana w dużej ilości ide, min: http://www.arm.com/products/tools/softwa... https://www.keil.com/videos/6d40cb56-313...
Witam raz jeszcze, Mi chodziło bardziej o porównanie tego samego bardziej zaawansowanego programu, z tą samą optymalizacją, z kodami wynikowymi z tego samego kompilatora - wykonanych dla dwóch rdzeni Cortex M3 i M4. Mnie ciekawi to zagadnienie, czy rzeczywiście STM32f4 będzie ponad 2 razy szybszy od M3, czy jednak jest jakieś wąskie gardło, które uniemożliwia...
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:...
czyli procesor musi być szybszy na integerach niż na floatach Zasadniczo to jest w większości przypadków spełnione gdy ocenia się bezrefleksyjnie... w przypadku gdy jednak odrobinę pomyślimy to okazuje się, że czasochłonne obliczenia optymalizujemy by trafiały do SIMD, co za tym idzie zdecydowanie mniejsze znaczenie ma ile ALU:FPU ma procesor. ALU...
Wszystkie te których używam (sqrtf(), powf(), acosf()) są liczone przez FPU? Niekoniecznie. W Newlib (czyli libm.a) nie ma implementacji specjalnie dla tego koprocesora, jednak jeśli masz włączoną optymalizację, skonfigurowane FPU (opcje kompilacji) i dodaną flagę -ffast-math, to kompilator niektóre z nich potraktuje jako funkcje inline i zastąpi odpowiednimi...
Zacznijmy od tego, że analizowanie tego typu przypadku jest nieco bezprzedmiotowe - jest tam dużo rzeczy zbędnych, wiele architektu nie pozwala na użycie rejestru stosu bezpośrednio - stąd add r7, sp, #0 Przeanalizujmy kod: [syntax=c]void foo(int32_t); void bar(int32_t*); int32_t __attribute__((noinline)) DSP_2(int32_t NewSample, int32_t *XCoef, int32_t...
I co najlepsze, bez jakiekolwiek narzutu Mamy XXI wiek, GCC ogarnia tak proste optymalizacje, a uwierz mi daje radę z trudniejszymi Polecam: https://www.youtube.com/watch?v=zBkNBP00... Kompilator kompilaorowi nie równy, a tutaj koleś pisze bez ogródek: https://youtu.be/zBkNBP00wJE?t=304 x86 a cortex-m to dwa różne światy i nie ma co porównywać, chociaż...
Nie podałeś nawet procka na czym to chodzi żeby rozgryźć ten rejestr, ale wnioskując po nazwie rejestru pewnie cortex od st. Rejest BSRR jest 32-bit. Mniej znaczące 16-bit służy do ustawienia pinu, a starsze szesnaście do wyzerowania. Czyli przykładowo GPIOC->BSRR = 0x0001 ustawia pin C0 na '1' GPIOC->BSRR = 0x0100 ustawia pin C0 na '0' Teraz pod warunkiem...
No tak, to jest jasne, niemniej jednak szukam najlepszego sposobu ominięcia tego problemu (; Zwróć też uwagę, że wartość którą dostaje kod: 80004c4: 01100028 .word 0x01100028 jest jednak częściowo zoptymalizowana, ponieważ adresy pamięci SRAM zaczynają się od 0x20000000. Optymalizacja jaka się dokonała nie jest też 'tępa' typu 'minus cośtam', bo wartośc...
Po pierwsze, ten temat zszedł na bok jak tylko się dało. Żyjemy w demokracji i każdy ma wolny wybór ;) Ja wybrałem asemblera ,bo denerwowało mnie ciągłe poprawianie i debugowanie programów w celu usunięcia błędów ,które często były winą kompilatora C . Teraz po debuger sięgam znacznie rzadziej i mam czarno na białym co robi mój mały krzemowy przyjaciel...
http://obrazki.elektroda.pl/7079226800_1... Firma NXP zaprezentowała nowe mikrokontrolery LPC11E37H oraz LPC11U37H. Jak poinformował producent, obydwa mikrokontrolery posiadają „Handler” peryferiów I/O, umożliwiający projektantom elastyczność w dodawaniu rozrastających się funkcjonalności peryferiów w dowolnym cyklu projektowym....
https://obrazki.elektroda.pl/6446769600_... Wraz z dostępnością coraz większych mocy obliczeniowych oraz pojemności pamięci, często słyszałem narzekanie, że teraz programy nie są optymalizowane, tak jak kiedyś . Programiści idą na skróty, korzystają z bibliotek a kiedyś to było :) Czasami było to prawdą i łatwość tworzenia oprogramowania...
Podpowiem, że nie będę miał możliwości czytania 200 stron dokumentacji PDF To nie jest prosty AVR. Podstawowy dokument (Reference Manual) ma nie 200, a ponad 3 500 stron (ale szczęśliwie nie trzeba czytac "od deski do deski"). Do tego, jeśli ktoś chce poznać lepiej rdzenie i wbudowane w rdzeń peryferia, to dochodzą 2x Programming Manual po ok. 250...
Na ile znam Cortex, nic takiego nie kojarzę. No to może czas poznać zanim zaczniesz wypowiadać autorytarne opinie podkreślone wykrzyknikami? Nigdy też nie używałem tego w kodzie dla Cortex ani nie widziałem, żeby ktoś używał. To jest argument za/przeciwko czemuś? Na poważnie? Owszem, atrybut ten nie jest KONIECZNY, ale nie jest też ZBĘDNY, bo jego...
Cześć Podejmę się zleceń typu fixed-price z dziedzin takich jak: - pisanie aplikacji na PC wszelkiej maści (bez grafiki i GUI) - sterowniki urządzeń np FPGA PCI - emulacja urządzeń na QEMU - projekty na uC ARM z rodziny Cortex: doświadczenie w STM32 i NRF52 - optymalizacja niskopoziomowa - wielowątkość i SIMD (SSE/AVX) - testy jednostkowe i funkcjonalne...
A 8051 jest na rynku 3x lat. Za np. 5 lat wcale nie bedzie go znac wiecej ludzi niz teraz, a nawet znacznie mniej. Z czasem jedne procki sa zastepowane innymi, lepszymi. Skoro istnieje "lepszy" CM3, to po co brac sie za starszy i gorszy ARM7? Po pierwsze moim zdaniem mylisz się, bo o '51 wiem coś nawet ja, znam też pełno osób, które wiedzą dużo o '51,...
Zacznij zatem od porzucenia Bascoma i przesiadki na C, skoro zależy Ci na wydajności. Przy okazji możesz wziąć procesor tańszy od AVR i z 10 razy szybszy, np. jakiegoś Cortexa. Zacznij zatem od sensownego udzielenia odpowiedzi na jego pytanie. Może jeszcze ARM i frytki do tego? Nie wiesz, nie pisz. Dawid88: Zagadnienie bardzo interesujące, bo sam wiem...
Podsumowując porównanie darmowych kompilatorów dla różnych procesorów na przykładzie czystego CoreMark (może komuś się przyda). Wszystkie z optymalizacją -O2 i biblioteką "Tiny printf", aby wyeliminować różny poziom jej implementacji. RAM 2000 bajtów to statyczna tablica na potrzeby obliczeń - czyli wszystko powyżej 2000 świadczy o optymalizacji użycia...
Po małej dyskusji oraz przejrzeniu Cortex ™-M3 TechnicalReference Manual, Revision: r1p1, nasuwa się takie ciekawe pytanie. Wiadomo, że zewnętrzne przerwania od układów peryferyjnych są podłączane pod odpowiednie linie IRQ_n, w tym przypadku mamy numery od 0-239, czyli IRQ0-239. Natomiast poziom priorytetów można ustalić dla wszystkich przerwań...
No to pozostało Ci jeszcze: -ffast-math. Opis brzmi groźnie: This option is not turned on by any -O option besides -Ofast since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees...
Zakładam, że jest "popyt" ( (at)nolens_volens , (at)korteksik , (at)dondu , (at)excray ), więc zakładam wątek. W tym temacie można zadać dowolne pytanie związane mniej lub bardziej z użyciem RTOSów na mikrokontrolerach i kwestiami takimi jak wielowątkowość, synchronizacja i tym podobne. Ogólne lub szczególne. O konkretnym problemie lub o ogólnej idei....
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 (; ... Wydaje mi się, że znajdujemy się w pewnym ważnym historycznie punkcie. Cortex-M3 - procesor o kosmicznej wydajności 1.25DMIPS/MHz w stosunku do swojej śmiesznej ceny (najtańszy...
2 pierwsze symbole nie są nawet użyte (albo ja tego nie widzę) a linker ich nie wywalił. Funkcje te są częścią inicjalizacji/deinicjalizacji biblioteki języka C. Są użyte pośrednio, przez wskaźniki. na moje niewprawne oko to przynajmniej te 4 pierwsze symbole są zupełnie zbędne. Trzecia funkcja jest wrapperem na main, a czwarta odpowiada za globalną...
Proponuje dodać do ulubionych stron: [url=https://www.st.com/en/microcontroll... A tutaj więcej szczegółów. [url=https://www.st.com/content/st_com/e... [url=https://www.st.com/en/microcontroll...
Juz sie poprawiam :) [syntax=bash] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O3 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Wall -Wextra -g3 -DDEBUG -DUSE_FULL_ASSERT -DSTM32F446xx -DHSE_VALUE=16000000 -I"../include" -I"../system/include" -I"../system/include/cmsis"...
Bardzo dziękuję za informacje. Posiedziałem trochę wczoraj w nocy i: moduły DMA pamiętają adresy i pozostałe ustawienia. Po zakończeniu transferu wszystko jest przywracane w rejestrach. Jeżeli coś jest stałe, to nie trzeba tego za każdym razem ładować do rejestrów (jak w programach 2 i 3); wystarczy tylko ustawić bit DMA_CCR1_EN. Podpucha :) Rejestr...
Masz dla porównania. Pewnie będziesz musiał pozmieniać flagi kompilatora. [syntax=Bash] 42% 41) [0.277s] external/STM32F4xx_HAL_Driver/Src: arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -O2 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -Wshadow -std=gnu99 -g -ggdb3 -D STM32F401xE -I ../../../external/STM32F4xx_HAL_Driver/I... -I ../../../external/CMSIS...
1. Ten drugi (z "+ load") programuje układ przed rozpoczęciem debuggowania, a ten pierwszy debugguje to co zostało zaprogramowane inaczej/wcześniej/poprzednio. Jeśli chcesz w kółko debuggować ten sam kod, to raz odpalasz wersję z "+ load", a potem tylko tą "bez". 2. Nie ma takiej różnicy, choć oczywiście możesz sobie taką wprowadzić, bo np kiepsko debugguje...
Te makro powoduje wymuszenie przełączania kontekstów jeszcze przed wyjściem z przerwania jeśli argument jest różny od zera, a argument jest różny od zera w tym przypadku jeśli zwolniony semafor wybudza taska, który ma wyższy priorytet od tego, który był wykonywany przed wejściem w przerwanie. Faktycznie, dla ARM Cortex-M3 (tylko na ten patrzę teraz,...
Choć niestety kody z tego generatora zawsze operują na bajtach No, a tego chciałbym się pozbyć. Jak tak na to patrzę, to chyba ciężko coś poprawić, no może jak robisz na maszynie z big endianess to zamiast: No niestety to cortex czyli LE. Tego typu dostępu do danych nie można wykorzystać w przypadku Cortexa-M0, ale za to można w przypadku Cortexa-M3,...
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ś...
volatile nie pomógł. Dodano po 53 Może te szablony w atollicu są przestarzałe/niepoprawne i dlatego jest kłopot. IMO: To by od początku były problemy Dzięki spróbuję Dodano po 26 Optymalizacja jest ustawiona domyślnie na "None (-O0)". Jak zatrzymuję program podczas debugowania (jak napisałem , program zawsze zatrzymuję się na pierwszej pętli) to setuję...
Sens jest taki że jak wykonujesz operacje na małych danych np 8bit ( co jest częste w małych projektach) to użycie architektury 32bit sprawia że każdy rozkaz ma 32bit i w gruncie rzeczy z 8k flash robi się 2 k. nawet Army mają dwa tryby pracy ARM 32bit i Thumb 16Bit, dla oszczędności miejsca kosztem wydajności. Kiedyś nawet pracowałem jeszcze na innej...
Moim zdaniem nauka sama w sobie assemblera nie ma sensu, w czystym assemblerze już raczej nikt nie pisze, co innego intrinsics które są namiastką assemblera i bez nich nie da się wyciągnąć pełnych możliwości niektórych architektur (np cortexy m3 w górę). Inna sprawa analiza assemblera, to już warto znać gdyż kompilator (zwłaszcza przy optymalizacji)...
Wytłumaczę to inaczej. Jak liczysz tylko na polach, nie możesz w słupku,a do danych pomocniczych masz tylko palce u stóp, to możesz sobie wyobrazić złożoność dzielenia np 34574325przez 53454. Dodano po 11 A jak weźmiesz cortexa to masz kartkę, długopis i często kalkulator
Do tego samego doszedłem z tymi optymalizacjami. Rzeczywiście hex który podesłałem był skompilowany z opcją optymalizacji Os, ale... kod z tych pierwszych plików działał na dowolnej optymalizacji a z tym drugi miałem te same problemy co ty. Program kompilowałem na tym twoim makefile jak i na generowanym przez Eclipse i na obu jest ten sam objaw, więc...
Cóż detale zawsze pozostają. Przykładowo latency w CM0 na poziomie 3 razy wolniejszego (zegarowo) PIC'a. Niedawno zamawiałem do prób LPC1343 w Farnellu. Po niecałym roku dostałem maila od nich, że produkt jest wycofywany z ich oferty. Z Microchipem, Freescale, i żadnym dystrybutorem jeszcze takie kuriozum mi się nie zdarzyło. Żeby wyjaśnić moje stanowisko:...
środowisko z pierwszym stopniem optymalizacji jest darmowe Nieważne czy robisz coś dla siebie czy dla Klienta. Optymalizacja O0 lub O1 to tylko na czas pierwszych testów (feasibility study), później to kompletnie bez sensu. Nie po to pakujesz 32-bitową strukturę na PCB, żeby to chodziło jak 8-bitowiec. Kompilator XC32 jest oparty na kompilatorze gcc,...
Co do kodu i innych wyborów, które pomogą ograniczyć pobór prądu. 1. Jak najniższe napięcie zasilania, ważne jeśli jest dodatkowy stabilizator. 2. Wewnętrzny generator RC - bo wybudzanie z Power Down trwa 6 cykli a dla rezonatora kwarcowego 16 tysięcy cykli. 3. Praca z jak największą częstotliwością, ale należy dobrać częstotliwość do napięcia zasilania,...
... zamierzam pouczyć się trochę programowania układów Microchipa... Dlaczego chcesz to zrobić? Czy produkty 32-bitowe uC od MCP są lepsze niż Cortex-M4? - są wolniejsze/mniej wydajne, - zużywają więcej prądu, - mają długie erraty, a część układów peryferyjnych po prostu nie działa (vide PMP lub SQI w serii MZ) - narzędzia są dedykowane, zamknięte,...
Piszę sobie szczęśliwie kody baremetal na ARMy w RPi3 i RPi4. Nie wnikałem w szybkość pracy bo i tak była duża. Ale potrzebowałem mocno zoptymalizować jeden algorytm, i dodałem sobie licznik cykli. I się mocno zdziwiłem. Kod jest najprostszy z możliwych. Czysty baremetal, nawet bez przerwań. Wzorowany na tym: https://www.elektroda.pl/rtvforum/viewto...
http://obrazki.elektroda.pl/3202150900_1... W poniedziałek 29 maja ARM plc ogłosiło wprowadzenie na rynek dwóch nowych rdzeni ARM, zorientowanych na aplikacje w zakresie sztucznej inteligencji. Są to Cortex A-75 oraz Cortex-A55. Rdzenie te dedykowane są do zastosowań w akceleratorach AI, co przyspieszyć ma adopcję tego rodzaju technologii...
Wkleiłem projekt do Eclipse.... kompilacja Make.... 50sekund, tup... 22sekundy (i7 2,9GHz) Jak włączysz w opcjach projektu kompilację wielowątkową, to w make skompiluje się z podobną prędkością jak w tup. Prędkość tup można w Eclipse nieco poprawić - przynajmniej u mnie różnica była znaczna - https://groups.google.com/d/msg/tup-user...
Witam, Wrzucę swoje 2 grosze: #0. C++ to jest generalnie do bani ;) Do dnia dzisiejszego niektóre elementy standardu są tak niejednoznacznie wytłumaczone że różne kompilatory mogą w pewnych kwestiach(template) generować trochę inny kod. Ciekawe jak radzą sobie kompilatory na uC ? #1. jeśli chcesz używać STM32 M0 (które wielkością flasha nie grzeszą)...
Wracając do tematu. Aż dziwne, że nikt nie wspomniał o instrukcjach ldrex oraz strex, które są przydatne przy tego typu operacjach. Jak ktoś nie używa przedpotopowego kompilatora (to jest zgodnego z C11) to ma to wszystko zaimplementowane: http://en.cppreference.com/w/c/atomic Jest to oczywiście również fajna sprawa, ale... nie działa na ARM Cortex-M0,...
Po zainstalowaniu ubuntu i skonfigurowaniu eclipse+codesourcery pod niego okazało się że mój archaiczny makefile nie "zbuilduje" mi projektu. Po zainstalowaniu plugina ARM do eclipse okazało się że wygenerowany kod nie mieści się w pamięci. Próbowałem na różne sposoby konfigurować ustawienia kompilatora i linkera ale nie dało to efektu. Poniżej wywołanie...
https://obrazki.elektroda.pl/5910208600_... Klasyczny Doom został przeniesiony na niemalże wszystkie rodzaje platform, w tym na platformy ESP32 z 4 MB pamięci PSRAM, ale port Dooma na Raspberry Pi RP2040 jest trudniejszy, ponieważ pamięć RAM jest ograniczona do zaledwie nędznych 264 KB wbudowanych w mikrokontroler, a w przypadku płyt...
(at)ElektrodaBot A jaki jest najbardziej energooszczędny tani mikrokontroler Wi-Fi bez funkcji Bluetooth ale z obsługą OpenBeken? Wstępna ocena dostępnych informacji Pytanie dotyczy w szczególności identyfikacji najbardziej energooszczędnego, taniego mikrokontrolera Wi-Fi bez Bluetooth, który obsługuje oprogramowanie układowe OpenBeken o otwartym kodzie...
https://obrazki.elektroda.pl/8694458700_... Pierwszy raz Ambiq Micro zaprezentowało mikrokontroler Apollo w 2015 roku. Miał on oferować wydajność, jak Cortex-M4 przy poborze prądu na poziomie rdzenia M0+. Wszystko dzięki nowej technologii optymalizacji pracy, która pozwolić miała na pracę systemu przy bardo niskim napięciu - poniżej...
W załaczniku kompletny test-case - wszystkie pliki w 'c' i 'cpp' są identyczne - różnią się jedynie rozszerzeniem, przez co inny jest ich kompilator. Linkowanie w obydwu przypadkach jest tą samą komendą. Usunięcie mnożenia powoduje, że w obydwóch przypadkach "data" ląduje w pamięci Flash. Mnożenie owe jest mi potrzebne do tworzenia stałych tablic z...
Dla porównania... wypełnienie 1 kolorem matrycy 800x480x16bpp na Xmega128A1U(at)32MHz ze wsparciem z EBI i DMA, pisane w asm zajmowało mi ok. 0,75s, podczas gdy to samo na STM32F417(at)168MHz + FSMC+DMA, pisane w C, bez optymalizacji trwało ok. 15ms (>50x szybciej). Trochę OT, ale coś tu mocno się nie zgadza. 800x600x16bpp to daje 960000 bajtów,...
Witam Mam skompilowany przykład na stm32f103VCT6, kwarc 8MHz. Przykład dość znany ze strony Freddiego project: stm32_blink_led. kawałek pliku konfiguracyjnego: #define CRYSTAL 8000000ul #define FREQUENCY 72000000ul Główna pętla ograniczona do while (1) { //for (count = 0; count < count_max; count++);// delay LED_bb = 1; //for...
Zacząłem swoją przygodę z ARM od CORTEX'a LPC1768. Miał być bardzo szybki. Ustawiłem PLOCFG = 0x00050063, CCLKCFG = 3 (czyli N=6 M=100 przy Fosc=12MHz co powinno dać ok. 100MIPS) i napisałem krótki programik, który "macha nóżką". Czyli: -ustaw na pin GPIO jedynkę -zrób pętlę while(i++ < 5000){;} -i=0; -ustaw na pin GPIO zero -zrób pętlę while(i++...
Koncepcja systemu operacyjnego czasu rzeczywistego (RTOS) jest dla większości programistów znana. Istotnym aspektem wykorzystywania go jest tzw. przełączanie kontekstu. Może realizować tę procedurę ręcznie, przeskakując z jednego wątku do drugiego. W poniższym artykule przyjrzymy się, jak zbudować własny minimalny system operacyjny czasu rzeczywistego...
Ja mam np. taki utarty pogląd, że jak 16 MHz ATmega jest do czegoś zbyt wolna, to biorę do tego zadania tańszego od niej np. 48 MHz Cortexa. Takty zegara ostatni raz liczyłem na 8051, ale to było w czasach, gdy nic szybszego za podobne pieniądze nie można było kupić na każdym rogu. Właściwym rozwiązaniem problemu jest wybór odpowiedniego mikrokontrolera....
Arm - główny dostawca technologii mikroprocesorowej - wprowadził na rynek nowe zintegrowane środowisko programistyczne oparte na Eclipse, czyli Development Studio , które zastąpiło poprzednią wersję oprogramowania DS-5. Nowy software zawiera kompleksowy pakiet narzędzi umożliwiający wydajne tworzenie oprogramowania wbudowanego. Jego przeznaczeniem są...
Od czasu wprowadzenia PPS i CLC minęło prawie 10 lat. Trochę dużo jak na "ostatnio" i "nowość". Pisząc w C nikogo nie interesują takie aspekty jak przełączanie się między bankami. Nie potrafię się zgodzić z Tobą, ponieważ analiza kodu wynikowego pokazuje zaskakująco dużo zbędnych instrukcji przełączających banki, aby umożliwić dostęp do danego rejestru....
O samym telefonie nie wiemy jeszcze wiele, ale spekulować możemy na temat technologii, jakie wykorzystane w nim zostaną. Niedawno odbyły się ogromne targi telekomunikacyjne w Barcelonie, gdzie firmy takie jak Qualcomm, Samsung czy MediaTek - trzej wiodący producenci układów scalonych dla telefonów komórkowych i smartfonów - prezentowali swoje najnowsze...
Maxe: Twoja metoda nie działa już jej próbowałem co więcej po wprowadzeniu takiej lini: Dodano po 4 fantom: używam makefile'a Lucjana Bryndzy w którym miejscu powinienem dodać -I./lcd bo też nie dało mi to żadnych efektów. [syntax=c] # Automatic makefile for GNUARM (C/C++) # Copyright (C) Lucjan Bryndza <lucjan.bryndza(at)ep.com.pl> # http://www.boff.pl...
https://obrazki.elektroda.pl/6489707700_... Fundacja tinyML zrzesza wiele jednostek odpowiedzialnych za rozwój narzędzi do uczenia komputerowego na platformach wbudowanych. Firmy wykorzystujące TinyML, od producentów mikrokontrolerów (MCU), przez przedsiębiorstwa narzędziowe, po optymalizatorów modeli, przeprowadziły szereg prezentacji na...
Nie ma czegoś takiego jak przerwania w standardzie C, więc nie są ani dobrze ani źle zdefiniowane. Przerwanie to zwykła funkcja z dodatkowymi atrybutami i to nie zawsze bo w przypadku Cortexa dosłownie niczym nie różni się od zwykłej funkcji. A w przypadku ARM7 jak to życie pokazało wrappery były wadliwe i trzeba było podpierać się własnymi. Błędy były...
Hej, chciałem zaimplementować zbieranie statystyk w systemie FreeRTOS. Zrobiłem jak w opisie funkcji: 1.włączyłem flagę configGENERATE_RUN_TIME_STATS 2.portCONFIGURE_TIMER_FOR_RUN_TIME_STATS... skonfigurowałem counter. 3.portGET_RUN_TIME_COUNTER_VALUE() - obsłużyłem odczyt z countera. Przy kompilacji poszło ok. Jednak jeśli dodam funkcję vTaskGetRunTimeStats(...
https://obrazki.elektroda.pl/3522773900_... Firmy Intel Foundry Services oraz ARM uzgodniły w zeszłym miesiącu, jakie usprawnienia zostaną wprowadzone w zakresie własności intelektualnej ARM pod kątem nadchodzącej technologii procesowej 18A (czyli 1,8 nm w nomenklaturze IFS). Współpraca pomiędzy gigantami ma koncentrować się na projektach...
https://obrazki.elektroda.pl/5178220300_... TinyML stanie się największym motorem rynku mikrokontrolerów w ciągu najbliższych 10 lat — tak twierdzi Remi El-Ouazzane, prezes grupy mikrokontrolerów i układów cyfrowych w firmie STMicroelectronics. „Naprawdę wierzę, że to jest początek fali tsunami” — zasygnalizował w wywiadzie dla portalu...
https://obrazki.elektroda.pl/4963648500_... Startup Pete'a Wardena, marka Useful Sensors, rozpoczęła w tym tygodniu nową kampanię crowdfundingu dla swojego systemu przetwarzania języka naturalnego (NLP) zbudowanego na niewielkim jednopłytkowym komputerze z SoC firmy Rockchip. Moduł: „Sztuczna inteligencja w pudełku”, oparty na dostępnych...
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...
odważna teza, bo do obrony tylko wtedy, gdy złożoność programu nie pozwoli go dopracować jak należy w assemblerze. Dowód przeciwnej tezy jest banalnie prosty - wszystko, co da się napisać w C/C++ da się napisać w assemblerze, ale nie na odwrót. trzy kwestje: 1. Nawet w procesorach RISC (jak Cortexy dla przykladu) pomimo ich "ograniczonej" listy rozkazów,...
Hejka, robię właśnie przesiadkę projektu z kompilatora IAR'a do GCC'a i mam problem z przeniesieniem niektórych ustawień, konkretniej chodzi o nie wycinanie przez linker konkretnych, nieużywanych zmiennych globalnych wygenerowanych przez zewnętrzne narzędzie, zawierających informacje np. o dacie buildu, checksumie itp. które są potem w przypadku reklamacji...
Modele licencjonowania, ograniczenia modyfikacji kodu źródłowego oraz certyfikacja branżowa to najważniejsze kwestie biznesowe, które należy uwzględnić przy stawianiu na System Czasu Rzeczywistego (RTOS). W poniższym artykule przyjrzymy się tym czynnikom i temu, w jaki sposób powinny się one przełożyć na wybór samego RTOS-a. Systemy operacyjne czasu...
cortex firmware cortex przerwania cortex manager
huawei gniazdo naprawa telewizor philips gniazdo antenowe ustawienie prądu spawania
philips senseo sterownik ładowarki akumulatora
Problem z wyjęciem szuflady na warzywa po zmianie kierunku otwierania drzwi w lodówce Bosch Odłączenie akumulatora w połączeniu równoległym