Wszystko opisane jest w standardach dostępnych na stronach firmy ARM - m.in. AAPCS - Arm Architecture Procedure Calling Standard. 4\/3!!
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ć....
1. Napisz to sobie w C (łątwiej), 2. Użyj godbolt i sobie zobacz jak to siętłąmaczy na asembler na Twój mikrokontroler. Tu masz przykład dla Cortex-M4, avr, x66, mips i RISC-V 32 bit https://godbolt.org/z/PxvPfz85s
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...
Najlepszą metodą znalezienia błędu w przypadku jak nic nie pomaga jest analiza kodu w asemblerze jaki został wygenerowany z twojego programu i porównanie go z działającym programem. Pamiętaj że rdzeń cortex-m0 w przeciwieństwie do cortex-m3 jest znacznie prostszy i analiza asemblera nie jest aż tak skomplikowana oczywiście na początku wyda ci się to...
Zajmuje się programowaniem w asemblerze procesorów ARM a dokładnie programuje układy oparte na rdzeniu Cortex-M0 (LPC111x) ale swój kod przenosiłem także na rdzeń Cortex-M3 (LPC13xx) taki sam jak w procesorach którymi ty jesteś zainteresowany (STM32). Postaram się teraz udzielić odpowiedzi na twoje pytania: 1. Wie w jaką dokumentacje trzeba się zaopatrzyć...
na początek zakupiłem 2 e-book'i autorstwa tmr i myślę, że moje pytania o podstawy się skończą :) do BlueDraco jeśli zajdzie konieczność rozwijania projektów to na pewno zainteresuję się CORTEX'ami dzięki wszystkim temat zamykam
Witam Jeśli chodzi Ci o rdzeń Cortex M-3 poszukaj tego: http://margines.pl/index.php?ukey=produc... http://tinymicros.com/wiki/Cortex_M0/M3 oraz dokumentacja rdzenia na stronie ARMa.
W każdym razie jak byłoby zainteresowanie to mógłbym w innym temacie nieco napisać jak programować ARM czy np. taki stm32f103c8t6 czy podobny stm32F4.. . w asemblerze. Myślę, że ci co potrafią nie dotykają, a Ci co nie potrafią i tak nie potrzebują. Pisanie programow w ASM dla tych platform to sztuka dla sztuki, bez jakiegokolwiek zastosowania praktycznego....
FFT dla Cortex-a róweniez zostala napisana w asemblerze a wyniki pochodza z posta autora tej biblioteki zamieszczonego na forum ST pz
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...
czywiście są ARMy, które to mają, ale może się okazać, że niekoniecznie wyjdą taniej niż dedykowany 8-bitowiec. [url=http://www.nxp.com/products/microco... i inne... http://www.kinetis.pl/node/265
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...
dzięki za podpowiedzi, mam jeszcze w związku z tym pytania (dot. asemblera): według specyfikacji CORTEX-M3, funkcja mogła by wyglądać tak: ROL R0,1 ROR R0,31 dają identyczny wynik. Pytanie brzmi: co jeśli moja zmienna jest 16 bitowa, a rejestr na którym będzie realizowana operacja ROR jest 32 bitowy ? O tych rotacjach w asemblerze dot. tego kontrolera...
Rozmowa schodzi na znany już nam kierunek;) W każdym razie, śmiem zaryzykować stwierdzenie że jednak CORTEX M3 pobiłby AVR i program napisany w asemblerze;) Trzeba by sprawdzić;)
A co tu rozpoznawać? Cortex-M3 czy Cortex-M4 to z punktu widzenia programisty jedno i to samo, chyba, że chcesz bawić się w asemblerze.
(at)Badman: jak wygenerować kod asemblera i z jakich źródeł uczyłeś się asemblera ? Tak ja pokazał michalko12. Ogólnie kod asemblera generuje się poleceniem objdump, a w tym przypadku arm-none-eabi-objdump, program znajduje się w katalogu sciezka_do_lpcxpresso/lpcxpresso/tools/b... dokumentacja tego programu i innych znajduje się w katalogu sciezka_do_lpcxpresso/lpcxpresso/tools/s...
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...
W sumie gdy przeczytałem Twój post uzmysłowiłem sobie, że ten startup to i tak w większości assembler, bo korzysta mocno z wstawek... Zaczynam wątpić w sens tego przedsięwzięcia W zasadzie sam sobie odpowiedziałeś, ale wrzucę swoje 3 grosze :) Według mnie pisanie startup'u w C za pomocą wstawek asemblerowych jest mało sensowne. C występuje tu w roli...
No tutaj widać że masz zarezerwowane miejsce na stosie dla przekazywanych parametrów i nic nie jest "nadpisywane". Szczerze powiem nie wiem o co Ci chodzi. W swojej funkcji jak byś spojrzał dalej poza te 4 pierwsze parametry to byś zobaczył że on "przeskoczy" te 4 bajty z powodu złożenia na stosie rejestru r7, kiedy będzie czytał parametry 5,6. Tak...
Z tego co mi wiadomo jest już dostępna beta LPCXpresso pod linuksa. Co do asemblera ja stosuje wywołanie funkcji i dorzucam plik z rozszerzeniem .s do projektu. A w pliku w którym wywołuje tą funkcje wstawiam coś takiego: extern int clock_init(); a później w wybranym miejscu w pliku z rozszerzeniem C daje coś takiego: clock_init(); Jeśli...
Czy programowanie w tym języku dla ARM jest podobne do AVR ??? Są duże różnice - mamy podział na dwa tryby wykonywania instrukcji Thumb i ARM. Oprócz tego w trybie ARM mamy do czynienia z wykonywaniem instrukcji warunkowo czego w AVR-ach nie uświadczysz. Pamiętaj także że ARM7tdmi to jest rdzeń 32 bitowy więc dochodzi ci dodatkowo coś takiego jak wyrównanie....
http://obrazki.elektroda.pl/8863584300_1... Witam. Przedstawiam projekt konsoli/odtwarzacza mp3 z wyjściem VGA. Konsola zbudowana jest na procesorze z rdzeniem Cortex-M4 i umożliwia uruchamianie programów z karty mikro SD. Projekt powstał ponieważ chciałem poeksperymentować z softwarowym generowaniem sygnału VGA. Podstawowe parametry:...
(at)kamill_94 Jest dużo osób, które radzą sobie z programowaniem uC. ARM, AVR, PIC, 'C51 czy inny rdzeń, to tylko inny zestaw rozkazów. O ile nie piszesz w asemblerze, a dzisiaj to już rzadkość, to naprawdę nie ma większej różnicy. Więcej różnic zauważysz w peryferiach, ich obsłudze i możliwościach systemu jako całości. To nie jest tak, że ARM pozwala...
I teraz nie wiem czy mikrokontroler wykonuje moja funkcję SystemInit czy tą "standardową" ? Podglądnij kod asemblera :) Wystarczy, że wrzucisz przed main Jeśli konsolidator nie krzyczy, to znaczy, że widzi jedną funkcję SystemInit. Jeśli oryginalna zstała zadeklarowana jako WEAK, to podłączył Twoją. Pewnie nie krzyczy dlatego, że w pliku system_LPC13xx.h...
Freddie: pierwsze pytanie tutaj to: czy konsolidator obsługuje taki rodzaj relokacji, jaki jest potrzebny dla bitband RAM. Przy peryferialach adres jest stały, więc konsolidator nie ma nic do roboty. Przy RAM konsolidator musiałby umieć obsługiwać relokację "razy 32", a potem jeszcze ktoś (asembler) musiałby wygenerować w pliku pośrednim takie relokacje....
Witam, czy jest może jakiś zestaw do kupienia (lub osobno): płytka ewaluacyjna, programator, książka dedykowana dla konkretnej płytki i skupiająca się na programowaniu w C/C++? Mowa oczywiście o AVR. Szukałem, ale nie znalazłem nic takiego, jedynie pod asemblera lub BASCOM-a. Za to znalazłem takie rzeczy pod ARM (Cortex-M0 i Cortex-M3 STM32), ale nie...
Czy ty czytasz co piszesz? Narzekasz, że na studiach masz ARM, a pytasz o... ARM. ARM 51 w porównaniu do st32 (cortex m3 )to wielka różnica całkiem inne instrukcje i struktura rdzenia .W 51 jest asembler bardzo prosty lecz już w ST32 THUMB i THUMB2 dużo bardziej wszechstronne w porównaniu z ASEMBLEREM lat 80. Gotowca nie potrzebuję ale jak mam coś co...
Nie do końca rozumiem co masz na myśli. Cała magia RISC-V to skalowalność. Najpierw musisz kogoś nauczyć co to jest procesor i co to jest komputer. Potem trzeba pokazać jak działa procesor, w jaki sposób są budowane instrukcje i jak przebiega proces ich wykonywania. Dalej - jak to wszystko tworzy język maszynowy, na bazie którego powstał asembler,...
Pytanie drugie: jak to ładnie zaimplementować na wyższy od asemblera poziom? Nie implementować. Włączyć standard C11 w kompilatorze i użyć tego co tam jest. http://en.cppreference.com/w/c/atomic Ewentualnie C++11 i użyć nagłówka <atomic> - co kto lubi. GCC obsługuje te funkcjonalności. 4\/3!!
Ja klepię własne interpretery bajtkodu - od dawna już ;] Takich rozwiązań uzywam do odgrywania melodyjek, efektów na LEDach, odtwarzania sekwencji, klasyfikacji zdarzeń, ...i wiele innych. W sumie napisałem jeden silnik i metodą copy'ego-paste'a kod lazi z jednego projektu do drugiego i jest modyfikowany na miarę. "Kompilatory", a raczej translatory,...
Kolego, czy słyszałeś kiedyś o debugowaniu mikrokontrolerów przy użyciu debuggera na PC? Mam wrażenie, że nie. Otóż technika, jaką się posługujesz, wyszła z użycia jakieś 10..20 lat temu. Podejrzewam, że programuję komputery i mikrokontrolery nie krócej niż Ty, również pisałem w kilkunastu różnych asemblerach, od ok. 10 lat pracuję z Cortexami i przez...
No tak to wygląda mniej więcej, co nie zmienia faktu, że operacją PUSH od razu mi to na aktualny stack leci i mam wolne r0. A tak w ogóle to w Cortex-M3 context switch się robi inaczej - w przerwaniu PendSV. Zalet tego rozwiązania jest kilka. Jakie? Co skłoniło Cię do stworzenia własnego RTOSa? Aby się czegoś w wolnych chwilach nauczyć i zobaczyć jak...
Jest interfejs SWD, tak że nie trzeba jakiegoś egzotycznego programatora. To duży atut. W wielu rozwiązaniach potrzebne do uruchomienia środowiska wygibasy są przeszkodą przy ograniczonym czasie. Fajnie, że idą w tę stronę :) To jest "gratis" wynikający z użycia rdzenia Cortex M. Nie było sensu wymyślać czegoś swojego, więc kompatybilność dostaliśmy...
Keil nie obsługuje natywnie arytmetyki stałoprzecinkowej. Cortex-M3 ma instrukcje nasycające rejestr do n-tego bitu, ale żeby z nich korzystać, musisz pisać w asemblerze lub skorzystać z gotowych funkcji CM3_intrinsics. Cortex-M3 nie ma instrukcji natywnie pracujące w jakimś stałoprzecinkowym formacie (np. Q15, jak dsPIC) - te operacje musisz robić...
Wymagane • Bardzo dobra znajomość języka C - 30 lat pracy, w tym głównie tworzenie programów, najczęściej w C; • Praca z mikrokontrolerami z rdzeniem ARM Cortex – głównie z rodziny - miałem do czynienia z kilkoma różnymi, pisałem na nie kod w asemblerze; • Doświadczenie z systemami czasu rzeczywistego np. FreeRTOS, RTEMS, Zephyr RTOS - odrobinę liznąłem;...
Tak, peryferia uC 32-bitowych są strasznie skomplikowane, tak strasznie, że nie da się ani przeczytać ich opisu, ani napisać kodu je obsługującego inaczej, niż biorąc gotowy przykład z HAL i modyfikując parametry. W takim prostym AVR do uruchomienia SPI potrzeba tylko trzech zapisów rejestrów, a w STM32 - aż trzech. To samo z UART, czyli tragedia po...
Upakowanie kodu na Cortex jest zwykle sporo lepsze niż w uC 8-bitowych, za to wszelkie biblioteki, których powszechnie się używa oraz beztroski sposób korzystania z nich (wypełnianie pól zmiennych - struktur), marnują dużo pamięci. Mam parę dużych projektów na Cortexach,. największy, ze skompilowanym sterowaniem obiektem, złożonym urządzeniem USB i...
Obecnie programuje mikrokontrolery LPC111x w asemblerze. Wcześniej próbowałem pisać soft dla LPC210x niestety zrąbałem płytkę ale mam pewną wiedzę o różnicach między tymi rodzinami mikrokontrolerów. Jeżeli dokładnie chodzi o różnice to prezentuje się to tak: -GPIO - jest totalnie inaczej zrealizowane między cortex-ami (we wszystkich cortex-ach gpio...
Zasadniczo RISC ma niewiele prostych rozkazów (ale dużo trybów adresowania). No to rzeczywiście pora już zapomnieć o tych sądach. W 21 wieku RISC mają od cholery prostych i złożonych instrukcji - mało strawnych dla człowieka. Ruszanie asemblera poza jakimiś bardzo specyficznymi sytuacjami jest "lekko" bez sensu. A już początkującym to jest najbardziej...
Jak widzę bardzo ciężko jest trafić w gust odbiorcy. Jestem programista uC i to zarówno tych mały AVR jaki tych przerażających niektórych Cortex-M3, -M4. Zupełnie nie rozumiem opinii o niektórych pozycjach i aż z ciekawości wypożyczyłem dwie książki wychwalanego tutaj p. Kardasia. Może zobaczę różnicę. Mnie książki takiego wydawcy jak BTC kilka lat...
Za namową kolegi (at)excray postanowiłem, że zacznę jednak w ASM A gdzie ta rada się pojawiła? W tym temacie widać tylko: Kolego skoro całe życie pisałeś w asemblerze to nie mam pojęcia dlaczego zabierasz się za HAL. Pisz na rejestrach, będzie Ci łatwiej. To oznacza, aby nie używać HAL, ale operacje realizować przez operacje bezpośrednio na rejestrach....
Avr da spokojnie radę. Może i da radę ale ARM'y są stworzone do takich systemów jaki buduje autor postu. Duży graficzny LCD, bitmapy, mini system operacyjny, SD, jakieś USB na interfejs, etc., to idealne zadanie dla jakiegoś STM'a lub LPC'ka z rdzeniem cortex M3. Na AVR'erze to będzie "wyciskanie siódmych potów" jak LCD ma wyświetlać płynnie ikony,...
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,...
Hehe, widzę że koledze to chyba ktoś płaci za reklamowanie tego Cortex'a :wink:. Nie uważam bynajmniej że rdzeń '51 (AVR) jest szybszy od Cortex'a czy ARM7. Zresztą takie porównywanie nie miałoby sensu. Każdy rdzeń ma swoją listę rozkazów ASM i każda ma ponad 80% z nich wykonywanych w jednym cyklu. Swego czasu na elce ktoś próbował dogadać się programowo...
No dobra, to się w końcu odezwę: To, na czym się uczy studentów, powinno spełniać kilka warunków: 1. Umożliwiać realizację przyjętego celu dydaktycznego. 2. Być proste, standardowe i nie udziwnione. 3. Być reprezentatywne dla stanu techniki wraz z przewidywalnymi trendami rozwojowymi. Niekiedy 1. pozostaje w konflikcie z 2. i 3. W takim przypadku wypada...
Czy zależy Ci na poborze prądu, czy nie, Coertex-M4 nie jest następcą M0 – o to mi chodziło. M0 w Neumanna a M3, M4 już w Harvardzka? Tak, ale podczas nauki to niezbyt istotne. Ważniejsze są różnice w zestawie instrukcji, ale rdzenie Cortex-M są zgodne "w górę", więc kod dla M0 będzie działał bez modyfikacji na M4 (choć liczba cykli może się różnić)....
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...
Witam Powoli przesiadam się z 8051 na ARM Cortex-M0, a dokładnie LPC 1114. Pierwsze programy przy użyciu bibliotek w C mam za sobą. Gdzieś przeczytałem, że jeśli LPC 1114 jest taktowany 48 MHz, chcąc zrobić opóźnienie 1 us muszę wykonać w pętli 32 nop'y, a dla 12 MHz 8 * nop. Coś mi nie pasuję, bo 1/48 000 000 = 0,00000002, więc 32 * 20 ns = 64 ns....
Chcecie uzyc za mocnych mikrokontrolerów - przeciez to takie proste :) Nawet '51 bez problemu dekoduje MPEG2 :] ;] Ale z AC3 juz by sobie chyba nie dał rady. Dlatego lepiej zastosować mege8 :D:D:D bascom chyba ma taka funkcje decodeMPEG2 tylko nie pamietam jakie są parametry... :) a teraz na powaznie: JESLI CHCESZ zrobic to co opisałeś, to sprawa wyglada...
cortex firmware cortex przerwania cortex assembler
wzmocnienie wzmacniacza różnicowego schemat płyta indukcyjny ekran telefon zrzut ekran
berry tasmota keyboardn yamaha
Przykładowe badanie impedancji pętli zwarcia dla C32 Alfa Romeo 156 – brzęczyk nie działa, naprawa licznika, zimne luty, diagnostyka Multiecuscan