Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
TespolTespol
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

- STM32 ARM na polskich uczelniach

02 Dec 2016 12:22 7434 164
  • Level 10  
    Witam wszystkich,
    Mam pytanie ogólne do studentów bądź absolwentów politechnik dotyczące edukacji w zakresie mikrokontrolerów na uczelniach.
    Jestem zainteresowany studiami, ale dochodzą mnie sygnały, że na wielu wciąż jest wałkowany temat mikrokontrolera seri 8051, który jak wiemy ma już swoje lata i systematycznie wypierany jest m.in. przez architekturę ARM. Chciałbym otworzyć dyskusję na ten temat.

    a. Czy architektura ARM jest przedmiotem programu?

    if(a ==true)
    {
    /* Czy są ćwiczenia praktyczne z tego zakresu?
    Jakie procesory są przedmiotem ćwiczeń?
    Czy są wykorzystywane jakieś zestawy uruchomieniowe (jakie?)
    Czy laboratoria są wyposażone w stanowiska do tworzenia różnych aplikacji na procesorach ARM
    Jak są zorganizowane zajęcia? Ilość godzin w tygodniu.
    */
  • TespolTespol
  • User removed account  
  • Level 10  
    Assembler wydaje się być obecnie trochę masochistycznym podejściem do programowania mikrokontrolerów. Niemniej jednak, zakładam że ma to służyć poznaniu architektury procesorów, bo docelowo raczej w tym bym nie chciał pisać. Kiedyś tak podchodzono właśnie do 8051 i często na tym poprzestawano. W razie konieczności zawsze można wstawić .asm w kod C...
  • Level 21  
    U mnie na wydziale uczy się assemblera 8051 na symulatorze, żywego układu studenci na oczy nie widzą ...
  • TespolTespol
  • User removed account  
  • Level 19  
    Rozmawiałem niedawno z siostrzeńcem i mówił, że na AGH ma zajęcia w oparciu o Kinetis KL46, więc może nie wszędzie króluje 8051.
  • MCUs specialist
    W sumie to niezbyt wiem o co chodzi - język C, który jest OK do nauki na uczelniach, jest 8 lat starszy niż 8051, które już jest prehistorią i nie jest OK do nauki na uczelniach. [;

    Uczelnia niczego nikogo nie nauczy - każdy się może nauczyć sam, a podstawy są identyczne dla 8051, AVR, ARM, MSP430 itd. Jak świetnie idzie nauka na ARMach na uczelniach to można tu na forum zobaczyć, ostatnio chyba gdzieś było zaliczenie, bo były ze 4 tematy w których się ludzie wprost pytali o pomoc z projektem na zaliczenie na ARMach i mówili bez żadnej "krępacji", że nic nie rozumieją (nawet treści zadania)...
  • Level 33  
    Na uczelni na której studiowałem były takie tematy z MCU:
    - Z80, 8051, M68k na przedmiocie z mikroprocesorów, na wykładach raczej teoretyczne rozważania, laborki z lat 80, końcowy projekt nawet fajny na Motoroli HC08
    - DSP na motorolach oraz na dsPIC
    - magisterka na ARM7

    Nie było tak źle biorąc pod uwagę to, że kończyłem studia parę lat temu. Z tego co wiem, to obecnie program jest nowszy i nie ma już Z80 i podobnych antyków. Na DSP również progress w postaci SHARC. Pozostałe przedmioty związane z MCU to raczej już ARM.
  • Level 17  
    Na SiMR PW kierunkach mechatronika i IPEiH uczymy się podstaw programowania STM. Robimy to na STM32F3 Discovery. Ale jest to bardzo powierzchniowo robione.
  • VIP Meritorious for electroda.pl
    Rozwinę temat AGH:
    W ramach przedmiotu obowiązkowego jest (w kolejności jak podano)
    1. Assembler na AVR (większość zajęć)
    2. Kilka zajęć z C dla AVR - zasadniczo 1 i 2 to miganie diodą na 100 sposobów
    http://www.fpga.agh.edu.pl/tm/?Laboratoria:Instrukcje
    3. Semestr z KL46 (i masa nerwów, bo zestawy wciąż i ciągle mają jakieś wady, a to się procek zablokuje, a to spali)
    http://www.fpga.agh.edu.pl/tm2/?Laboratoria:Instrukcje
    Niestety po tych 2 semestrach ludzie nadal mają problem z podłączeniem klawiatury matrycowej, czy zwykłego HD44780, o ile sami się tego na nauczą.

    Potem w ramach przedmiotu dodatkowego (tzw. przedmioty obieralne):
    STM32F429 (na płytkach discovery + autorskie płyty rozszerzeń z interfejsem ETH, kart SD, wzmacniaczami audio, enkoderami etc.)
    Tu zajęcia są bardzo sensowne, oprócz suchej wiedzy jest sporo informacji o samym podejściu do programowania uC, wprowadzane są elementy korzystania z RTOS (FreeRTOS).

    Moim skromnym zdaniem problem leży w filozofii nauczania - zamiast iść od ogółu do szczegółu - studenci zaczynają od ASM, a brakuje im szerszego spojrzenia jak zrobić jakąś praktyczną aplikację. (oczywiście czasem taki a nie inny stan rzeczy wynika z braku zaangażowania studenta, albo zbyt dużej liczby studentów na zajęciach, gdzie prowadzący nie może poświecić każdemu dostatecznie dużo czasu, mimo szczerych chęci...)
  • MCUs specialist
    Jak ktoś chce to nauczy się i bez studiów. Rozpoczęcie nauczania o technice mikroprocesorowaej od ARMów to nie jest najlepsze rozwiązanie - brak łopatologicznej literatury. Im prostsza architektura tym lepiej. Teoretyzowanie, że nie ma znaczenia czy ARM czy 51, ma znaczenie tylko przy programowaniu w języku wysokiego poziomu. Najpierw trzeba zrozumieć dobrze hardware, a potem dopiero brać się za software, bo w przeciwnym wypadku szczyt to Arduino.
  • Level 33  
    @michalko12 Mam trochę inne zdanie na ten temat. Warto uderzać najpierw w software: algorytmy i struktury danych, współbieżność, systemy operacyjne oraz inżynieria oprogramowania. Przyzwoite firmy i tak zatrudniają ludzi od HW oraz SW. W razie czego idzie się do gościa od HW, który projektował i wspólnie się rozwiązuje problemy. Na oferty pracy gdzie szukają Programisty Firmware z umiejętnością projektowania PCB to szkoda nawet patrzeć i marnować czas. Bo ani w jednym ani w drugim nigdy nie będziesz naprawdę dobry.
  • VIP Meritorious for electroda.pl
    michalko12 wrote:
    Jak ktoś chce to nauczy się i bez studiów.

    Tak. Tylko czasem programem studiów można kogoś zachęcić do samodzielnej nauki i promować ją, a czasem taki a nie inny program studiów/przedmiotu zniechęca ludzi na wejściu i stwarza wokół tematu otoczkę teorii nie do przebicia...
  • User removed account  
  • Level 10  
    michalko12 wrote:
    Jak ktoś chce to nauczy się i bez studiów. Rozpoczęcie nauczania o technice mikroprocesorowaej od ARMów to nie jest najlepsze rozwiązanie - brak łopatologicznej literatury. Im prostsza architektura tym lepiej. Teoretyzowanie, że nie ma znaczenia czy ARM czy 51, ma znaczenie tylko przy programowaniu w języku wysokiego poziomu. Najpierw trzeba zrozumieć dobrze hardware, a potem dopiero brać się za software, bo w przeciwnym wypadku szczyt to Arduino.


    No nie jestem przekonany... Od czego należy zacząć od 8051? od AVR? A jaka to różnica...??? Co do łopatologicznego wyjaśniania to większość publikacji typu "... for dummies" kończy na miganiu diodą i to najlepiej w jakieś bibliotece, która czytelnikowi tylko tak naprawdę zaciemnia istotę rzeczy... czyli MCU, a i często sam autor nie do końca wie o czym pisze.... Zatem zgadzam się, że trzeba zrozumieć hardware więc należy przestudiować jakąś dobrą książkę od architektury np typu "The Definitive Guide To The ARM CORTEX M3" i czytać REFERENCE MANUAL do procka...
    Myślę, że można spokojnie zacząć od ARM. Różnica jednak w tym, że w przypadku wyboru 8051 wydłuży to czas do poznania tego na czym współczesny świat rzeczywiście taktuje. A zakuwanie szczegółów rejestrów i innych takich ze starych architektur jest już trochę bez sensu. Z drugiej strony są aplikacje gdzie cały czas stosuje się 8051 a nawet są modernizowane do ... nowszych 8051 :) i wymagają głębokiej znajomości w przypadku update'u. Zatem nie zawsze wszystko jest czarno-białe.
  • Level 39  
    Zdecydowanie ARM lub coś podobnego. Nie ma sensu uczyć na uczelni super dokładnie architektur i specyfiki układów poszczególnych producentów. Celem jest nauczenie możliwie uniwersalnych zasad poprawnego tworzenia oprogramowania np. wymogi MISRA C. Można się z nimi nie zgadzać ale trzeba rozumieć dlaczego?
    Dlatego jest sens uczyć jak zaimplementować np. transformatę falkową albo SVD w C albo C++ lub innym języku. Robienie tego w asemblerze to karkołomna sztuka dla sztuki.
    Ważna jest też umiejętność wyboru sprzętu pod określone zadanie gdyż nie ma się co tłuc z wstawkami asemblerowymi by nieco zaoszczędzić czasu i miejsca w zasobach skoro można wziąć nieco droższy za to znacznie zasobniejszy oraz wydajniejszy procesor i pozamiatać problem. Tak, nie do wszystkiego nadaje się np. STM32. Trafne określenie minimum potrzeb to konkretna umiejętność. Kolejna sprawa to umejętność wyboru systemu operacyjnego lub obejście się bez niego.
    Jest czego się uczyć poza studiowaniem konkretnej architektury.
    8051 nie tak łatwo skreślić, w niektórych zastosowaniach ale nie są to zastosowania powszechne dlatego na początek nie koniecznie jest on wskazany. Jeżeli ktoś chce i lubi programować w asemblerze by zrozumieć jak to wszystko działa w środku to krótka wprawka nie będzie stratą czasu ale krótka!
  • MCUs specialist
    RitterX wrote:
    Celem jest nauczenie możliwie uniwersalnych zasad poprawnego tworzenia oprogramowania np. wymogi MISRA C. Można się z nimi nie zgadzać ale trzeba rozumieć dlaczego?

    Bo jakaś banda "dziadków" sobie je wymyśliła, licząc na to, że nikt nie będzie kwestionował mądrości takich "expertów"?
  • VIP Meritorious for electroda.pl
    RitterX wrote:
    Jeżeli ktoś chce i lubi programować w asemblerze by zrozumieć jak to wszystko działa w środku to krótka wprawka nie będzie stratą czasu ale krótka!

    Z tym, że moim zdaniem taka wprawka przydaje się (i to bardzo) ale już po C czy C++.
    Pracując w C czy C++ można poznać architekturę, czy ogólną filozofię tworzenia programów.
    Potem warto zajrzeć pod maskę i dopiero wtedy poznać jak to a to zrobić w ASM.
  • Level 38  
    moonshadow3 wrote:
    Witam wszystkich,
    Mam pytanie ogólne do studentów bądź absolwentów politechnik dotyczące edukacji w zakresie mikrokontrolerów na uczelniach.
    */

    Gdy ja kończyłem nadal dominowały 8051 jako baza do nauki samych mikrokontrolerów. Co nie znaczy że było tylko to, były też nieco egzotyczne Renesasy H8, bardzo przyjemne do programowania w ASM. Były DSP Texas Instruments. ARM akurat co prawda nie było, ale to mniej ważne. Technika mikroprocesorowa to było mocne podejście do przetwarzania danych w MCU, interfejsów, peryferiów i... działania narzędzi do programowania. Rozumiem nieco czemu uważano za konieczne poznanie mechanizmu kompilacji, konsolidacji, linkowania etc. Z drugiej strony nie sądzę by było to bardzo przydatne do projektowania urządzeń IoT, tu po prostu trzeba znać inne rzeczy, a nie trzeba znać jak dokładnie działają narzędzia, tylko jak nimi się posługiwać.
    Biorąc pod uwagę, że uczelnie mają zazwyczaj bogate zestawy ewaluacyjne udostępniane "po kosztach" to dziw bierze jak rzadko uczelnie decydują się na krok w przyszłość (a w zasadzie teraźniejszość). No... ale kto nowe skrypty i podręczniki napisze, przecież nie profesorowie od lat poza obiegiem :)
  • Level 10  
    No i w zasadzie jest tak jak podejrzewałem... Na moich studiach też królował 8051 i właśnie myślałem o jakichś podyplomowych, które dadzą mi nowe światło na zmiany jakie zaszły w tym co obecnie jest używane, bo ostatnie lata nie miałem z tym zawodowo do czynienia. Jedynie co robiłem ostatnio to sam dużo czytałem o ARM, bawiłem się eclipse i rozkminiałem zestawy ewaluacyjne STM. Wszystko w okrojonym wolnym czasie. I dochodzę do przekonania, że sam więcej zrobiłem niż na niejednych studiach. Młodsi znajomi też twierdzą, że 8051 nadal jest wałkowany i to na symulatorach. Gdzie zatem jest ta nasza mityczna edukacja, która rzekomo jest na wysokim poziomie? Nic się nie zmieniło przez 15 lat ! I jak tutaj absolwenci mają wkraczać na rynek nowoczesnych technologii ze znajomością 8051?
  • VIP Meritorious for electroda.pl
    @moonshadow3, dokładnie mam podobne odczucia - więcej byłem w stanie zrobić w czasie wolnym od zajęć (wakacje, ferie zimowe) niż w przeciągu kilku semestrów, gdzie musiałem robić pełno bezsensownych rzeczy sztuka dla sztuki (a to sprawozdanie na N stron z opracowanymi na milion sposobów wynikami pomiarów wzmacniacza na tranzystorze NPN i tak dalej.)
  • User removed account  
  • Level 10  
    8051 - R.I.P.
    Gadanie, że nie ma pieniędzy można między bajki włożyć, bo wyposażenie jednego laboratorium w zestawy ewaluacyjne to koszt maksimum 5 tys. zł. Reszta zależy już od chęci poświęcenia czasu na przygotowanie zajęć i pasji do tego. Nic więcej.
  • Level 33  
    @moonshadow3 Przyznaję, że laboratoria mogłyby być prowadzone na nowszym sprzęcie. Czy naprawdę uważasz, że jakość studiów jest uzależniona od procesorów na których prowadzone są laborki? Bo mnie się wydaje, że studia powinny uczyć koncepcji i teorii, które pozwalają takiemu inżynierowi wdrożyć się w każdy temat relatywnie szybko. Jak chcesz się nauczyć szczegółów typu: programowanie STM32 to idź sobie na kurs.
  • VIP Meritorious for electroda.pl
    grko wrote:
    Czy naprawdę uważasz, że jakość studiów jest uzależniona od procesorów na których prowadzone są laborki?

    Moim zdaniem nie, ale to jakiś wierzchołek góry lodowej. Prowadzącej do wniosku, że sporo wiedzy pamięta się tylko do egzaminu/zaliczenia.
  • MCUs specialist
    No właśnie - studia to studia, a nie kurs. Wg waszego podejścia nauka STM32 też jest bezcelowa, bo za 5 czy 10 lat te STM32 będą tak samo przestarzałe (chyba nikt nie liczy na to, że STM32 będą "na topie" przez całą jego karierę zawodową?). Gdyby u kogoś na studiach 10 lat temu wałkowali ARM7TDMI, który obecnie jest "dead", ale wtedy był całkiem OK, to niby co?

    Jak grko powyżej, uważam że na studiach powinny być podstawy które pozwolą się wdrożyć tym którzy są tematem zainteresowani. Bo przecież studia (czy to elektronika, czy informatyka, czy coś jeszcze innego), to nie będzie nigdy 5 lat programowania mikrokontrolerów. Mozę faktycznie używanie 8051 jest ograniczające, ale z drugiej strony - jakie to ma znaczenie na czym ktoś pozna podstawy? Czy na 8051 znacząco inaczej miga się diodą, obsługuje UART albo SPI niż na takim STM32? Na owym STM32 pewnie można zrobić więcej niż na 8051, ale czego dokładnie oczekujecie? Że na pierwszych zajęciach na pierwszym roku prowadzący zacznie od "dziś postawimy serwer FTP z kartą SD"?

    Najeżdżanie na kadrę uważam za co najmniej częściowo nieuzasadnione. Świat technologii zmienia się tak szybko, że uczelnia nigdy nie nauczy tego co będzie "na topie" jak absolwent skończy studia. Jest to po prostu fizycznie niemożliwe, choćby dlatego, że świat elektroniki jest tak szeroki, że nie da się przedstawić wszystkiego - jedni wolą małe i proste 8-bitowce, inni FPGA, jeszcze inni 32-bitowe ARMy, będzie grupka ludzi którzy wybiorą procesory aplikacyjne, potem miłośnicy procesorów sygnałowych, ... . Tymczasem "teoria oprogramowania", budowa mikrokontrolerów czy interfejsy komunikacyjne zasadniczo nie zmieniły się od wielu lat.
  • Level 10  
    grko wrote:
    @moonshadow3 Czy naprawdę uważasz, że jakość studiów jest uzależniona od procesorów na których prowadzone są laborki?


    Nie, wcale tak nie uważam. Uważam tylko, że klepanie starych technologii jest bez sensu. Nawet rzeczony 8051 daje dobre podstawy do kontynuacji nawet we własnym zakresie. No ale moi drodzy, czy uczenie przedmiotu bez żadnych modyfikacji przez 20 lat, publikacja jednego skryptu do tego to szczyt tego co można zaoferować studentom ? Nie chodzi o chciejstwo, bo akurat komuś bardziej podoba się STM niż inny procesor. Ale jaka jest jakość edukacji na symulatorach '51?
  • User removed account  
  • Level 10  
    Freddie Chopin wrote:
    No właśnie - studia to studia, a nie kurs. Wg waszego podejścia nauka STM32 też jest bezcelowa, bo za 5 czy 10 lat te STM32 będą tak samo przestarzałe (chyba nikt nie liczy na to, że STM32 będą "na topie" przez całą jego karierę zawodową?). Gdyby u kogoś na studiach 10 lat temu wałkowali ARM7TDMI, który obecnie jest "dead", ale wtedy był całkiem OK, to niby co?
    .


    Akurat ARM7TDMI może jest już przestarzały, ale nie aż tak jak '51 no i przecież on był ogromnym sukcesem ARM'a i w zasadzie od tego zaczeło się to co dzieje się teraz. 10 lat temu to byłoby całkiem nie najgorzej na ten procesor. Ale Freddie, jeśli po 15 latach idę na studia podyplomowe licząc że się czegoś nauczę a tu deja vu to chyba coś jednak nie do końca jest dobrze. Nie najeżdzając na kadrę akademicką zakładam, że mają masę innych ważniejszych zajęć popychających polską naukę do przodu.
  • Moderator of Cars
    Na UŚ na informatyce na WIiNoM w programie nie ma nic o ARM, ale jak chcesz robić pracę/projekt to nikt Ci nie zabroni. W programie jest architektura 8080, 8086 i 8051. Assemblera uczy się głównie 8051, dlatego że jest bardzo prosty (a i tak mało kto coś z tego rozumie), później jest trochę assemblera dla 8086. Tu bardziej chodzi o pokazanie idei, niż nauczenie czegoś praktycznego. Choć po prawdzie i z tym jest słabo, bo niby są podstawy elektroniki cyfrowej, architektura komputerów i mikrokomputery jednoukładowe, a jednak nie "klei" się to w całość, zupełnie brak przejścia między układami cyfrowymi, a kodem maszynowym do asemblera. PTC niby kończy się na automatach sekwencyjnych, ale nie ma rejestrów, nie ma JAL (co najwyżej sumator), nie ma pamięci, zaś następne w kolejności AK to architektura wewnętrzna 8051/80/86 i assembler ale w ogóle nie mówi się o kodzie maszynowym. Są też AVRy, ale wyłącznie w C++, a konkretnie ATMega328/Arduino UNO.