Cześć,
jakiś czas temu ukończyłem kurs firmy "Udemy" zatytułowany: "ARM Assembly Language From Ground Up™ 1". Tutaj link do tego kursu:
https://www.udemy.com/course/arm-assembly-programming/
Kurs bardzo mi się spodobał z nastepujacych powodów:
1) Jasne prowadzenie - bardzo łatwo można zrozumieć wszystkie lekcje (i nie są one za długie)
2) Bardzo duzo dobrze dobranych przykładów programów w assemblerze ARM CortexMx
3) Praktyczny charakter kursu - duzo ciekawych przydatnych algorytmów
4) Pokazanie jak w assemblerze można zrealizować identyczne zadania jak w języku C (np. przetwarzanie tablic, czy stringów w assemblerze)
5) Duzo zaimplementowanych algorytmów matematycznych (np. pod katem programowania DSP w assemblerze)
Jaka była moja motywacja ukończenia tego kursu:
1) Bardzo często byłem zainteresowany jak kompilatory C/C++ z programu C++ generują kod w assemblerze
2) Jak zaimplementować szybsze wersje programów i algorytmów opisanych w języku C++
3) Jak obsługować moduł FPU w procesorach ARM Cortex-M (szczególnie Cortex-M4 i M7)
4) jak koduje się podstawowe struktury danych w assemblerze
5) Jak łaczyć w jednym projekcie funkcje pisane w języku C oraz w assemblezre
Mogę śmiało powiedzieć, że ten kurs spełnił moje wszystkie oczekiwania w tym zakresie (kupiłem dgo w promocyjnej cenie 44,99 PLN).
Wszystkie projekty w tym kursie były utworzone w środowisku firmy ARM: "Keil uVison5) (wersja kompilatora C i assemblera ARM 6.19). Jest to dość istotne ponieważ dyrektywy i poważna część składni assemblera ARM rózni się od wersji assemblera w komilatorze ARM GNU (wersja open-source kompilatora).
Środowisko "ARM Keil uVison5" (kompilator+assembler+debugger) można pobrać z tej strony WWW:
https://www.keil.com/demo/eval/arm.htm
Wersja "Comunity Edition" obsługująca MCU ARM Cortex-Mx jest całkowicie darmowa. Postanowiłem opisać kilka prostych programów z tego kursu, ponieważ może się to przydać innym uzytkownikom forum, oraz wykonać prost ćwiczenie (napisanie własnego programu) w celu sprawdzenia jak opanowałem materiał kursu. Szczególnie interesujące było dla mnie opisanie programowania w assemblerze jednostki zmiennoprzecinkowej (Floating Point Unit) dla ARM Cortex-M4 i M7 (miedzy innymi popularne układy STM32F4 i F7) więc skoncentruje się głownie na przykładach obliczeniowych. Wszystkie programy można będzie wykonać w OS Windows10 z zainstalowanym IDE"Keil uVison 5" (darmowa wersja Comunity Edition).
Pozdrawiam