Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32] Czy korzystać z firmowych bibliotek stlib?

dziechu 08 Kwi 2012 18:13 9288 49
  • #1 08 Kwi 2012 18:13
    dziechu
    Poziom 27  

    Musze przyznać że mam mieszane uczucia i od paru dni staram sie iść dwiema drogami - w jednych projektach korzystać z bibliotek, w innych nie. Moje konkluzje jak na obacny czas są takie - wszystko zależy od kilku czynników, i nie zgadzam się z żadnymi skarjnymi opiniami typu "biblioteki są super i powinno się korzystać zawsze", albo "biblioteki są do kitu, i tak musisz poznać manuala procesora (nie musisz), więc nie warto się nimi zajmować". Zaczynając zabawę z STM32 i C, zacząłem pisać pierwsze programiki z wykorzystaniem bibliotek i przykładów. W krótkim czasie udało mi się na bazie płytki stm32vldiscovery uruchomić wyświetlacz graficzny, przetwornik A/D, prostą klawiaturę, przerwania itp. Poskładałem z tego programik odczytujący wartość napięcia, wyliczający z tej wartości log10 i przedstawiający ją w formie wykresu. Proste menu itd... Nic wielkiego, ale całkiem użyteczny, trochę więcej niż zapalenia LEDa:) A wszystko bez czytania manuala i zagłębiania się w rejestry, architekturę. Parę błedów zrobionych po drodze nie miało nic wspólnego z bibliotekami. Dlatego uważam - jeżeli ktoś ma zrobić spory, rozbudowany program, działający niezawodnie, robi to profesjonalnie dla komercyjnych urzadzeń itd. to oczywiście powinien dokładnie poznać kontroler i jego działanie, przeznaczenie rejestrów, napisać własne biblioteki i z nich korzystać. Ale hobbista chcący podpiąć prosty alfanumeryczny LCD, jakiś silniczek krokowy czy czujnik temperatury to już niekoniecznie musi zagłębiać się w manuala i może swobodnie korzystać z bibliotek ogólnodostepnych, bo w ten sposób zrobi to co chce cztery razy szybciej. Jako argument podam wspominaną już przeze mnie książkę "Mikrokontrolery STM32 w praktyce" K. Paprockiego. Książka jest oparta o funkcje biblioteczne i nie ma słowa o tym że biblioteki te są zawalone błędami. Chyba autor sam z nich korzysta, a z opisu "o autorze" wydaje się że zna się na rzeczy. Tak więc jak ktos robi w miarę prosty projekt, robi go hobbystycznie, nie powinno sie go od razu, przy pierwszym problemie starszyć "a widzisz, to dlatego że korzystasz z bibliotek. Zacznij pisać program bez tych bibliotek a problemy się skończą" - bo to nieprawda. Jak zawsze, tak i w tym przykladzie - skrajne i sztywne stanowiska są szkodliwe.

    0 29
  • #2 08 Kwi 2012 21:18
    Jado_one
    Poziom 22  

    Wielkimi zwolennikami bibliotek są zazwyczaj osoby początkujące, które "szybko łatwo i przyjemnie" chcą osiągnąć zamierzony cel.
    Przegryzanie się przez ponad 1000 stronicowego manual'a i "ogarnięcie" procesora jest procesem dość długotrwałym i żmudnym, stąd też następuje próba przeskoczenia tematu za pomocą gotowych bibliotek.

    Natomiast osoby z większym doświadczeniem w programowaniu mikrokontrolerów, które bez większych problemów są w stanie napisać sobie kod bez bibliotek, będą zwolennikami "czystego kodu" jako bardziej czytelnego, zajmującego mniej miejsca w pamięci, itd....

    Powstaje przy okazji ciekawa sytuacja - Ci bardziej doświadczeni, przeskakują etap bibliotek, stąd też nie za bardzo mogą służyć pomocą w problemach związanych z tymi bibliotekami...
    Początkujący muszą więc szukać pomocy u ...początkujących.

    Twój punkt widzenia będzie zapewne zmieniał się w miarę wzrostu doświadczenia - większej swobody w programowaniu w C, jak i znajomości samego procesora.

    0
  • #3 08 Kwi 2012 21:43
    Krauser
    Poziom 26  

    Biblioteki to jeden ze sposobów na pisanie kodu. Z tego co widziałem na forum to właśnie jest to sposób na szybki start, a krytyka jest związana raczej z nieumiejętnym korzystaniem z biblioteki w tym również w przykładach. Za przykład podam tutaj przykład GPIO - IO Toggle (stm32f4_dsp_stdperiph_lib). Definicja zmiennej GPIO_InitTypeDef GPIO_InitStructure; na początku programu jako zmiennej globalnej jest marnotrawstwem pamięci RAM, bo zmienna ta zostanie wykorzystana tylko raz do przekazania parametrów do funkcji konfiguracji portu. Do konfiguracji raczej należałoby użyć osobnej funkcji, gdzie struktura o której mowa była by zmienną lokalną i zwolniła by pamięć po konfiguracji. Często pojawiający się problem to praca z innym kwarcem niż w evalach stm. Ustawienie taktowania bez edycji biblioteki jest niemożliwe. Poza tym w krytycznych momentach przykłady z st pokazują, że należy korzystać z rejestrów (GPIO/IOToggle/main.c).

    0
  • #4 08 Kwi 2012 22:19
    tymon_x
    Poziom 30  

    Jado_one napisał:
    Przegryzienie się przez ponad 1000 stronicowego manual'a i "ogarnięcie" procesora jest procesem dość długotrwałym i żmudnym, stąd też następuje próba przeskoczenia tematu za pomocą gotowych bibliotek.

    Nigdy jakoś nie miałem okazji "przegryzać się" przez ten 1000 stron Reference Manual. Od razu przechodzę do Register Descriptions, bo ile to razy można oglądać ramkę I2C czy czytać jak działa SPI. NXP też sprzedaje dość rozbudowane uC z rdzeniem Cortex-M3, ale ich Reference Manul jest ubogi w porównaniu z ST, ten drugi czyta się jak jakąś książkę, wszystko jest tam zawarte. I dla tych co narzekają na rozmiar, to mówię że nie ma on znaczenia :P Niczym się różni na przykład od dokumentacji Atmela od AVR, gdzie większość chwali za "prostotę oraz mniejszą objętość". Według mnie, nie ma to różnicy między tymi dokumentami, oba prezentują podobny poziom na korzyść ST (subiektywna ocena). Zauważcie, że jakbyście wyrzucili opisy Timer (Advanced), FSMC, SDIO, Ethernet oraz USB to objętościowo oraz merytorycznie byłby zbliżony do takiej dokumentacji pierwszej lepszej Atmegi, ... a w zamian dostajemy uC o lepszym współczynniku jakości do ceny.

    Biblioteki do układów peryferyjnych, jestem zdecydowanym przeciwnikiem, są zbędne i robią niepotrzebny narzut oraz zaciemniają sprawę. Przecież konfiguracja prostego interfejsu to raptem 3 linijki + ustawienie GPIO + włączenie zegara + ewentualnie przerwania (SPI, I2C, UART) i po co tworzyć do tego strukturę i mielącą do niego funkcję ?
    Jestem za, jeśli chodzi o biblioteki wyższej warstwy, jak do obsługi różnej maści stosów, RTOS, protokołów i algorytmów. Ale do układów peryferyjnych ? Chyba, że piszemy uniwersalny driver, ale on i tak bazuje zwykle na wskaźnikach do funkcji, gdzie łatwo oddzielić standalone konfigurowanie układu peryferyjnego, a od mielenia takich funkcji przez wyższą warstwę, gdzie powinna być pośrednikiem między właściwym obsługą protokołu, od sprzętu. Via Linux.
    Chyba, że mówimy o takim potworze jak sprzętowy akcelerator grafiki do OpenGL w i.MX5x od Freescale, którym miałem przyjemność korzystać, gdzie JEDEN układ peryferyjny (a dokładnie co-procesro graficzny) miał ponad 1000 stron dokumentacji. Taka biblioteka ma sens, jeśli jest z sensem napisana i łatwo jest uruchomić to cacko bez grzebania się w opisach rejestrów ciągnących się jak makaron.

    1
  • #5 09 Kwi 2012 00:08
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Krauser napisał:
    Ustawienie taktowania bez edycji biblioteki jest niemożliwe.

    Jest jak najbardziej możliwe.

    tymon_x napisał:
    Jado_one napisał:
    Przegryzienie się przez ponad 1000 stronicowego manual'a i "ogarnięcie" procesora jest procesem dość długotrwałym i żmudnym, stąd też następuje próba przeskoczenia tematu za pomocą gotowych bibliotek.

    Nigdy jakoś nie miałem okazji "przegryzać się" przez ten 1000 stron Reference Manual. Od razu przechodzę do Register Descriptions, bo ile to razy można oglądać ramkę I2C czy czytać jak działa SPI.

    No właśnie... Po co przegryzać się przez 1000stron, skoro chce się skonfigurować np SPI i GPIO? Przecież do tego wystarczą generalnie 3 rozdziały (RCC, GPIO oraz SPI)... No chyba że każdy początkujący musi przegryźć się przez 1000stron, bo od razu musi wiedzieć wszystko o timerach, ethernecie, usb (oczywiście w 2 wariantach), kontrolerze pamięci zewnętrznej i innych rzeczach których raczej szybko nie wykorzysta...

    Cytat:
    Biblioteki do układów peryferyjnych, jestem zdecydowanym przeciwnikiem, są zbędne i robią niepotrzebny narzut oraz zaciemniają sprawę.

    Ja osobiście nie mam nic przeciwko "bibliotekom", tylko bardzo nie podobają mi się "biblioteki od ST" - taki typowy odmóżdżacz i przykład vendor-lock-in... Nie mówiąc już o "prostocie obsługi", a raczej braku. Jak ktoś uważa, że bez problemu z samą biblioteką ogarnie sprawę, to proponuję spróbować skonfigurować coś bardziej skomplikowanego niż GPIO bez patrzenia do manuala... GL&HF. Problemy które są z tą biblioteką na forum raczej nie pokazują jej prostoty, tylko to, że jej użytkownicy albo w ogóle nie wiedzą o co chodzi, albo jednak nie jest ona taka "oczywista" w obsłudze jakby to niektórzy chcieli widzieć.

    BTW - ten temat już był wałkowany - https://www.elektroda.pl/rtvforum/topic1478833.html

    4\/3!!

    0
  • #6 09 Kwi 2012 09:35
    felekfala
    Poziom 19  

    Osobiście także używam do ustawienia mikrokontrolera tylko rejestrów, bo całkowicie nie rozumiałem tej biblioteki, które i w jakiej kolejności funkcje mam wywoływać. Wszystko było fajnie jak się korzystało z książki Paprockiego, ale gdy chciałem przetwornik ADC ustawić według swojej potrzeby to nie ogarniałem jak do tego dojść przy użyciu SPL.

    Przeglądałem forum firmy ST, i zdecydowana większość osób, które tam piszą programują z użyciem SPL.
    Założyłem nawet taki wątek, gdzie zapytałem czy używać rejestrów czy SPL. niestety ze względu na słabą umiejętność pisania po angielsku nie wszystko dobrze przekazałem.
    Przeczytajcie sami:

    Link

    0
  • #7 09 Kwi 2012 09:59
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Już pierwsza odpowiedź jest bardzo słaba [;

    W jaki sposób biblioteka SPL ma pomóc w portowaniu kodu na inny układ (no chyba że ze STM32MD na STM32CL... [; )? Przecież ona jest tak najeżona specyficznościami STM, że nie ma ogóle mowy o łatwym przeportowaniu kodu na coś innego. Kwestia portowalności leży zupełnie gdzie indziej niż w SPL - należy napisać tak kod, aby moduły "sprzętowe" były max oddzielone od modułów "algorytmu", a SPL nie ma w takim rozdziale żadnego udziału, niczego nie ułatwia, niczego nie utrudnia.

    Podobała mi się też informacja, jakoby w manualu nie były opisane wszestkie drobne szczegóły dotyczące kolejności czy zależności - no to jak nie w manualu to niby gdzie są opisane <: Dobry żart.

    Opisy o tym jak to kod napisany bez biblioteki jest zupełnie niezrozumiały dla innych równie zabawne. No bo ludzie używający biblioteki właśnie widzą albo ją, albo RCC->CR = 0xFC5A490B; No to faktycznie - taki badziew jest niezrozumiały, niejasny, nieportowalny i niezarządzalny... No ale chyba między białym a czarnym jest jeszcze jakiś gradient. W sumie i tak dobrze, że nie zakładają że ktoś nieużywający biblioteki pisze w C, przecież mogli by założyć, że bez biblioteki można tylko pisać plik hex w notatniku... Ewentualnie fani biblioteki po prostu nie są w stanie ogarnąć kilku linijek z ustawieniami rejestrów, no ale wtedy jest to sytuacja beznadziejna.

    Szkoda słów <: Dobrze że do LPC i innych ARMów nie ma takich "superaśnych" bibliotek (;

    4\/3!!

    0
  • #8 09 Kwi 2012 10:01
    dziechu
    Poziom 27  

    Dlatego napisałem jek napisałem - co innego 'poważna' praca z podejściem od podstaw, co innego hobbystyczna zabawa i proste programy. Przecież napisałem że uruchomiłem to co chciałem na samych bibliotekach. Coś mi tak nie do końca pasuje co piszecie, bo z tego by wynikało że książki Paprockiego są dla początkujących, że on sam jest poczatkujący, że przykłady dodawane do np. do plytek discovery czy innych są dla poczatkujących... Znalazłem w manualu RM0008 wszystko co trzeba, to zaden problem. Nie trzeba czytać tych ponad 1000 stron, tylko te akyualnie potrzebne (może ze 100...). Ale trzeba też najpierw znaleźć ten dokument itd. co na początku okazuje się też nie takie oczywiste. Teraz próbuję cos zrobić z stm32f4disc. no i oczywiście okazuje się że już RM0008 jest nieaktualny, ale RM0090. Więc być może zaglądanie do RM0008 było niepotrzebne, bo program działa, drugi raz go nie będę pisał 'bez bibliotek', skoro działa, i może nie będę wracał do procesorów stm32f1xx... Dlatego jeszcze raz powtarzam - wszystko zależy od przeznaczenia, celu. Zobaczcie że na elektrodzie są tematy typu 'jak podłączyć LED do zasilacza 12V, bo nie świeci' :) Moim celem nie jest namawianie do stosowania bibliotek przez 'zaawansowanych', czy profesjonalistów, ale widzę że często odstrasza się tu od nich zupełnie początkujących, którzy chca sobie pomrugać ledami i to wszystko, może na tym skończy się ich przygoda z tymi procesorami. Wydaje mi sie że niesłusznie się ich odstrasza, bo dla początkujacego samo 'wystartowanie' procesora bez użycia bibliotek może być czarną magią (jak jeszcze było dla mnie miesiąc temu). A z bibliotekami znajdzie się 1000 razy więcej przykładów w necie, w książkach czy choćby w EP (tam też 90% przykładów i artykułów jest z bibliotekami, które ponoć do niczego się nie nadają???), niż bez. Czasem takie przykłady nie startują od razu, więc ludzie tu szukaja pomocy, a tu od razu "no bo po co używasz bibliotek, one nie działają, daj sobie spokój...".

    0
  • #9 09 Kwi 2012 10:27
    nibbit
    Poziom 19  

    Cytat:
    Szkoda słów <: Dobrze że do LPC i innych ARMów nie ma takich "superaśnych" bibliotek (;

    Ależ są ;] Np:

    "LPC175x and LPC176x CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jun 21, 2011)"
    http://ics.nxp.com/support/documents/microcontrollers/zip/lpc17xx.cmsis.driver.library.zip

    Tyle, że chyba nie tak popularne. Nie wiem, nie używam ;]

    Apropo tematu na stronie ST to najbardziej rozśmieszyło mnie zdanie: "but you're not programming an 8051, and it's not 1980."
    No cóż, po prostu nie idziemy z duchem czasu.

    Z praktyki dziechu miałem jeden przypadek jak ta wypaśna biblioteka nie zmieściła mi się do procka. To było parę lat temu kiedy jej z początku używałem. Flasha 32kB, a inity RCC, SPI, USART, PWM, ADC+DMA, NVIC, GPIO zajmowały 25% pamięci.

    0
  • #10 09 Kwi 2012 10:41
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Czyli czekasz na pochwałę za swoją decyzję o używaniu SPL? (; To że "wszyscy" czegoś używają, jeszcze nie oznacza że to coś jest dobre albo lepsze od czegoś innego... Wystartowanie bez bibliotek jest trudniejsze, bo wszyscy autorzy artykułów, przykładów czy książek idą na łatwiznę i używają tej pseudo-biblioteki... A potem - tak jak ktoś pisał powyżej, chcesz coś zrobić trochę inaczej niż w artykule/książce i nie wiadomo jak do tego podejść, bo "genialna w swojej prostocie" biblioteka wcale taka nie jest bez artykułów, przykładów i tysiąca stron podobnego tekstu wskazującego jak jej używać.

    Ty sobie jakoś z biblioteką poradziłeś, a problemy jakie z nią miałeś określasz jako nieistotne. No ale jakbyś miał jakiś problem z rejestrami, to już byłby mur nie do przeskoczenia i koniec świata. Innymi słowy - zacząłeś od tezy (biblioteka jest super), a teraz szukasz dowodów żeby ją obronić.

    A dla ST taka biblioteka jest super. Wychowają sobie grono ludzi, którzy świata poza biblioteką nie widzą, do średnio skomplikowanych programów ludzie Ci będą potrzebowali super kosmicznej wydajności, oczywiście nie kupią innych układów (bo nie ma na nie super-portowalnego SPL), więc będą musieli używać coraz szybszych układów od ST, STM32F2, STM32F4, STM32F8, ... 100, 200, 300MHz, ... ST opłaca się dużo inwestować w promocję tej biblioteki - po prostu. W promocję dostępu przez rejestry nie ma co inwestować, to się obroni samo. Tyle że pod tym względem ST nie ma przewagi nad jakimkolwiek innym producentem ARMów, bo niby jaką? Reklamują więc to co ich odróżnia - SPL.

    Ty używaj SPL, nikt Ci nie broni, ale czemu próbujesz jakąś wielką ideologię do tego zaprząc? Przykłady które podajesz są śmieszne. Przeczytałeś manuala do STM32F1 i jesteś wielce zdziwiony że nie pasuje do STM32F4... No to po co te manuale mają stronę tytułową na której pisze dla jakich układów są, nie łaska przeczytać i pomyśleć? Problemy ludzi z biblioteką są równie trywialne (żeby nie użyć innego słowa) jak podany przez Ciebie przykład o diodzie do 12V, ciekawe czy choć 10% użytkowników biblioteki wychodzi poza miganie diodą... A przykłady w necie z biblioteką fantastyczne - dowolna pierdoła zajmuje dziesiątki kB pamięci flash - rewelacja faktycznie. Po tym można się w istocie zastanawiać po co te ARMy, skoro wcale nie są dużo szybsze niż AVR. Jakoś tam nikt nie jest adwokatem stworzenia biblioteki na wzór SPL, a na pewno byłaby milion razy prostsza w użyciu i bardziej intuicyjna... Czemu? Czemu takich bibliotek nie robi Microchip, Atmel, NXP*, Freescale? Przecież jakby były takie super, to - powiedzmy sobie szczerze - by je napisali, to nic trudnego, kod SPL jest tak tępy, że aż prymitywny. Czemu tego nie robią?

    Ja zostanę przy swoim - SPL to odmóźdżacz, czy dla amatora, czy dla zawodowca. Jak ktoś sobie chce pomigać diodą, to nie musi tego robić na STM32F4, tylko na dowolnym innym, prostszym układzie.

    Ciekawe jaki procent użytkowników SPL słyszał choć o bitbandingu, najbardziej fantastycznej rzeczy w rdzeniu Cortex-M3? Pewnie 5%, a używa pewnie <1%... Zastanawiam się więc, po co tym ludziom ARM, przecież ich zadanie zrobiłaby bez problemu Atmega, bo zarżnięty SPLem STM32 będzie mniej więcej tak samo wydajny i "pojemny"...

    EDIT - dobra, jak inni producenci robią takie cudowne biblioteki jak SPL od ST to ja podziękuje również za nie. Wystarczy spojrzeć na bibliotekę od GPIO żeby od razu wiedzieć, że to będzie wydajnościowy i objętościowy "killer" (;

    4\/3!!

    1
  • #11 09 Kwi 2012 10:53
    gaskoin
    Poziom 38  

    Nie chodzi o to, że nie działają. Są bez sensu pod tym względem, że nie trzymają się kupy z opisem rdzenia. A czytając manual, wystarczy, że się przeczyta odpowiedni podrozdział w functional description i poustawia rejestry tam jak jest to napisane. Czasem układy są tak proste, że się przechodzi od razu do register description.

    Poza tym, są bardzo zasobożerne. Masz tam tysiąc ifów, które sprawdzają co ustawiłeś. W tych ifach jeszcze inne sprawdzenia. Ktoś napisał, że bardziej doświadczeni przeskakują od razu bibliotekę, a to nie prawda. Na AVR, PIC, MSP, LPC, Kinetisy, NIOSy i inne cuda nie ma czegoś takiego jak FWlib i co? Każdy kto je programuje musi być doświadczony bo wali na rejestrach ?

    Panuje nawet pogląd, że LPC się programuje tak jak AVR bo się używa zapisów z rejestrami. Wiele ludzi twierdzi, że są prostsze niż STM. ST upakowało naprawdę wypaśne peryferia, ale też je się da programować jak AVR:)

    Dla niedowiarków, przykład skonfigurowania Timera pod STM32F4DISCOVERY, żeby pompował w mikrofon :)

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #12 09 Kwi 2012 11:13
    tymon_x
    Poziom 30  

    gaskoin napisał:
    Panuje nawet pogląd, że LPC się programuje tak jak AVR bo się używa zapisów z rejestrami. Wiele ludzi twierdzi, że są prostsze niż STM. ST upakowało naprawdę wypaśne peryferia, ale też je się da programować jak AVR:)

    Najbardziej śmieszy opinia o tych "mega-wypaśnych" ustawień, jak to musi być skomplikowane, 32-bitowiec, ARM, 1000-stron manual i strasznie skomplikowane układy peryferyjne i mamy kolejne mity, jak to się ciężko programuje, że trzeba biblioteki. A poziom skomplikowania dla podstawowego działania UART/SPI/I2C jest taki sam jak dla każdego Atmegi/STM32/LPC1xxx/Kxx. Jeśli ludek potrafi samodzielnie uruchomić UART na Atmega, to nie będzie miał problemu zrobieniem tego na STM32. A tam jakoś ludzie nie używają spec-bibliotek do układów peryferyjnych.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Z mitami trzeba walczyć.

    Cytat:
    Na AVR, PIC, MSP, LPC, Kinetisy, NIOSy i inne cuda nie ma czegoś takiego jak FWlib i co? Każdy kto je programuje musi być doświadczony bo wali na rejestrach ?

    Atmel też ma taką bibliotekę ASF, Freescale na Kinetisy też ma swój śmieszny framework, w dodatku zżyty z ich RTOS MQX. NXP też coś takiego stara się rzeźbić. Nie wiem jak PIC i MSP. Nawet soft-processory mają Swoje odpowiedniki, jeśli chcecie zobaczyć prawdziwy koszmar, możecie zajrzeć do kodu MicroBlaze'a Xilinx, chociaż ona ma jakieś uzasadnienie, bo układy peryferyjne można remapować do dowolnego obszaru pamięci, wł/wył niektóre rejestry z poziomu konfiguratora przed syntezą w celu zmniejszenia zasobów. Ale tym się da poradzić za pomocą automatycznego wygenerowania nagłówka na podstawie sprzętu. Ale biblioteka bije na głowę wszystko, nawet tą z ST.

    Ja już widzę proces tworzenia takiego liba, a zaczyna się od działa... marketingu i promocji, a kończy się przydzielaniem zadania dla wysoko poziomowych programistów pod nadzorem project managera, który kończył informatykę. W tym nie ma tajemnicy...

    PS.
    Jak się rozwinie znowu bezsensowna wojna między uC, to zgłaszam do moderatora, bo już jeden temat tak mi ludziska roz* . A tego posty nie mają na celu. A porównania są celowe, żeby pokazać ludziom klapki na oczy.

    0
  • #13 09 Kwi 2012 11:35
    gaskoin
    Poziom 38  

    @tymon_x -> BRR (Baud rate register, jeśli ktoś nie wie) ustawia się prościej, niż tymi dzikimi obliczeniami podanymi w manualu. To jest f Rdzenia / baud.
    Np dla 72MHz i baud 115200 jest to 72000000/115200;
    36000000/9600 = 0xEA6 :)

    Konfiguracja dla I2c standard mode:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tydzień pisałem ten kod bo uruchomienie tego bez FWlib graniczyło z cudem.

    nibbit napisał:
    Cytat:
    Szkoda słów <: Dobrze że do LPC i innych ARMów nie ma takich "superaśnych" bibliotek (;

    Ależ są ;] Np:

    "LPC175x and LPC176x CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jun 21, 2011)"
    http://ics.nxp.com/support/documents/microcontrollers/zip/lpc17xx.cmsis.driver.library.zip

    Tyle, że chyba nie tak popularne. Nie wiem, nie używam ;]


    Z tego co widzę to to jest to samo co STMowa FWlib, też są struktury inicjalizacyjne assertparamy itd. Więc teraz każdy kto nie będzie jej używał będzie pro.

    0
  • #14 09 Kwi 2012 11:39
    Jado_one
    Poziom 22  

    PIC'e32 też maja swój odpowiednik SPL i też bywają kłopoty z nią :-)

    0
  • #15 09 Kwi 2012 11:45
    Freddie Chopin
    Specjalista - Mikrokontrolery

    To jak się wszyscy chwalimi super pro kodami, to i ja wrzucę coś komicznie kosmicznego from outer space:

    Kod: C
    Zaloguj się, aby zobaczyć kod

    Prawie nie do zrobienia bez biblioteki jak widać. Zupełnie niezrozumiałe i nie do ogarnięcia przez innych.

    Nadawanie przez I2C - masakraaaaa!

    Kod: C
    Zaloguj się, aby zobaczyć kod

    Gdyby tylko te wszystkie kroki i ich kolejność była opisana w manualu byłoby dużo łatwiej, tak niestety musiałem prawie strzelać na oślep i brnąć po ciemku.

    Ustawienie zegarów, totalny hardcore nie do ogarnięcia

    Kod: C
    Zaloguj się, aby zobaczyć kod


    No może wystarczy, bo mózg się przegrzewa od tego kosmosu!

    4\/3!!

    0
  • #16 09 Kwi 2012 12:07
    tymon_x
    Poziom 30  

    Freddie Chopin napisał:
    To jak się wszyscy chwalimi super pro kodami, to i ja wrzucę coś komicznie kosmicznego from outer space:
    Prawie nie do zrobienia bez biblioteki jak widać. Zupełnie niezrozumiałe i nie do ogarnięcia przez innych.

    No pewnie, że nie do ogarnięcia bo używasz bit-banding i new ST users będą się zastanawiać skąd wzięło się tajemnicze xxx_bb i co to robi i jak działa :P

    Pamiętajcie, za każdym razem kiedy używacie STL, Bóg zabija na świecie małego kotka.

    0
  • #17 09 Kwi 2012 20:29
    dziechu
    Poziom 27  

    Freddie Chopin napisał:
    Czyli czekasz na pochwałę za swoją decyzję o używaniu SPL? (; To że "wszyscy" czegoś używają, jeszcze nie oznacza że to coś jest dobre albo lepsze od czegoś innego...4\/3!!


    Oczywiście że nie oznacza, ale oznacza że wielu to używa, a moim zdaniem gdyby było tak skopane, to używałoby raczej niewielu. Jakoś to musi działać mimo wszystko.


    Freddie Chopin napisał:

    Wystartowanie bez bibliotek jest trudniejsze, bo wszyscy autorzy artykułów, przykładów czy książek idą na łatwiznę i używają tej pseudo-biblioteki... A potem - tak jak ktoś pisał powyżej, chcesz coś zrobić trochę inaczej niż w artykule/książce i nie wiadomo jak do tego podejść, bo "genialna w swojej prostocie" biblioteka wcale taka nie jest bez artykułów, przykładów i tysiąca stron podobnego tekstu wskazującego jak jej używać.4\/3!!


    Ale zrozum najczęstszą kolejność dla początkujących - nie wiem co to jest ten STM32 poza ogólnymi opisami - 32bit, szybki, dużo peryferiów. Kupuję płytkę prototypową np. STM32vldiscovery. Do płytki dostaję przykłady, oczywiście wszystki z bibliotekami, wię zaczynam oglądać, czytać, podpieram się książką Paprockiego gdzie także są przykłady z bibliotekami - jeszcze nie wchodzę na elektrodę i na suficie też mi nie pisze 'źle robisz, bardzo źle robisz.'. Więc robię coś z tymi bibliotekami, przykładami, coś zaczyna mi wychodzić, coś już łapię i do pewnego stopnia kontroluję. Potem przy problemie szukam pomocy na elektrodzie i czytam - wywal te dwa tygonie wysiłku do kosza, nie ciesz się że juz cos potrafisz, zapomnij wszystko i zacznij od zera, hahahaha.

    Freddie Chopin napisał:
    Ty sobie jakoś z biblioteką poradziłeś, a problemy jakie z nią miałeś określasz jako nieistotne. No ale jakbyś miał jakiś problem z rejestrami, to już byłby mur nie do przeskoczenia i koniec świata. Innymi słowy - zacząłeś od tezy (biblioteka jest super), a teraz szukasz dowodów żeby ją obronić.4\/3!!


    A gdzie ja napisałem że jest super? napisałem że w prostych przykładach działa i czasem dla prostego programu, szczególnie jednorazowaego może być po prostu wystarczająca.

    Freddie Chopin napisał:
    Ty używaj SPL, nikt Ci nie broni, ale czemu próbujesz jakąś wielką ideologię do tego zaprząc? Przykłady które podajesz są śmieszne. Przeczytałeś manuala do STM32F1 i jesteś wielce zdziwiony że nie pasuje do STM32F4... No to po co te manuale mają stronę tytułową na której pisze dla jakich układów są, nie łaska przeczytać i pomyśleć? 4\/3!!


    Jaką znowu ideologię? Że proste programy można napisać bez znajomości manuala i korzystając z bibliotek? I że taki program można w ten sposób napisać szybciej i będzie działał? To ideologia? To fakt. Nie chodzi o zdziwienie że inny manual, ale raczej zmarnowany czas, bo skoro zrobiłem program bez tego manuala a potem go przeczytałem, a rezygnując z stm32f1 i przechodząc na f4 muszę przeczytać innego manuala, to z tego wniosek że tego poprzedniego przeczytałem niepotrzebnie i tyle. Często jest tak że nowe procesory mają nowe funkcje, nowe mozliwości, ale pozostawia się nazwy podstawowych rejetrów takie same, inne nowe domyślnie ustawiają się w trybie kompatybilnym do tyłu - prosta sprawa a można wiekszość zrobić starymi kodami, przynajmniej na początek. Taka kompatybilność wstecz nie jest złą rzeczą.







    Freddie Chopin napisał:
    Problemy ludzi z biblioteką są równie trywialne (żeby nie użyć innego słowa) jak podany przez Ciebie przykład o diodzie do 12V, ciekawe czy choć 10% użytkowników biblioteki wychodzi poza miganie diodą... A przykłady w necie z biblioteką fantastyczne - dowolna pierdoła zajmuje dziesiątki kB pamięci flash - rewelacja faktycznie. Po tym można się w istocie zastanawiać po co te ARMy, skoro wcale nie są dużo szybsze niż AVR.
    4\/3!!


    Tak, ale pierwsze programy najczęściej zajmują 30 kB w pamieci np. 128kB, wię na prawdę nie ma dla mnie znaczenia czy zajmie 30 czy 10 kB, jak i tak 70% pozostanie wolne. Jak już będę robił duża aplikację i będę musiał liczyć się z pamiecią - to będzie inna historia i Twoje argumenty będą zasadne - teraz nie są.


    Freddie Chopin napisał:
    Ja zostanę przy swoim - SPL to odmóźdżacz, czy dla amatora, czy dla zawodowca. Jak ktoś sobie chce pomigać diodą, to nie musi tego robić na STM32F4, tylko na dowolnym innym, prostszym układzie.4\/3!!


    Nikt nie zaczyna od robienia aplikacji czytającej z pendrive MP3 i przepuszczającej to przez DSP z funkcjami korektoraitp. ale od mrugania LEDami. I niech sobie zamruga nimi przez biblioteki. Potem sam dojdzie do tego czy używać bibliotek czy nie, pewnie pod koniec nie będzie używał, ale przejście moim zdaniem bedzie łatwiejsze, bo - jak wspomniałem - przeważnie pierwszy kontak z stm32 to zabawa z przykładami z wykorzystaniem bibliotek - bo takie przyklady dodają. Np. staram sie cos zrobić z przykładem z STM32F4disc. tym Audio_playback_and_recorder - wszystko przez biblioteki. Mam to przerobić na program bez bibliotek? Może za 5 lat, teraz jestem duuuużo za cieńki, a może ktoś zrobiłby to z fachowców? Pewnie umiałby, ja byłbym szczęśliwy, ale kto tak sie poświęci? Nikt, więc dalej chcąc bawić sie tym przykładem będą biblioteki.

    0
  • #18 09 Kwi 2012 21:07
    Freddie Chopin
    Specjalista - Mikrokontrolery

    dziechu napisał:
    Oczywiście że nie oznacza, ale oznacza że wielu to używa, a moim zdaniem gdyby było tak skopane, to używałoby raczej niewielu.

    Jest to bardzo śmiała teza (;

    dziechu napisał:
    Jakoś to musi działać mimo wszystko.

    Nie no - "jakoś" działa. A mogłoby dużo lepiej (;

    dziechu napisał:
    Potem przy problemie szukam pomocy na elektrodzie i czytam - wywal te dwa tygonie wysiłku do kosza, nie ciesz się że juz cos potrafisz, zapomnij wszystko i zacznij od zera, hahahaha.

    Jakbym wszedł na forum informatyczne i powiedział, że znam się na programowaniu, bo umiem policzyć na PC kosinusa i wyświetlić wynik przez printf to też by mnie wyśmiali i to całkiem słusznie. Trochę pokory po prostu - poskładałeś coś z gotowych klocków (biblioteki, przykładów i artykułów), do "umienia czegoś" jeszcze daleka droga.

    dziechu napisał:
    A gdzie ja napisałem że jest super? napisałem że w prostych przykładach działa i czasem dla prostego programu, szczególnie jednorazowaego może być po prostu wystarczająca.

    Podobnie wystarczająca może być AtMega z BASCOMem, no i?

    dziechu napisał:
    Nie chodzi o zdziwienie że inny manual, ale raczej zmarnowany czas, bo skoro zrobiłem program bez tego manuala a potem go przeczytałem, a rezygnując z stm32f1 i przechodząc na f4 muszę przeczytać innego manuala, to z tego wniosek że tego poprzedniego przeczytałem niepotrzebnie i tyle.

    To Ty musisz niezłe kosmosy robić, że przeszedłeś tak szybko z F1 na F4... szacun (; No i w istocie czytanie manuala do F1 to całkowicie stracony czas, bo F4 są tak inne, że w ogóle nic się nie pokrywa. Czy Ty w ogóle czytasz to co piszesz? No i o co wam chodzi z tym "czytaniem manuala"? Ja żadnego w życiu nie przeczytałem - jak mi coś potrzeba (np. I2C), to sobie przeglądam rozdziały które mnie interesują i już, a nie jakieś wielkie czytanie od deski do deski... Usnąłbym po 3 stronach, bo to takie nudne.

    dziechu napisał:
    Tak, ale pierwsze programy najczęściej zajmują 30 kB w pamieci np. 128kB, wię na prawdę nie ma dla mnie znaczenia czy zajmie 30 czy 10 kB, jak i tak 70% pozostanie wolne.

    Dobre podejście. Ja np. na 30kB zmieściłem bardzo skomplikowane obliczenia zmiennoprzecinkowe używane do wyliczania trajektorii dla dwóch silników krokowych (oczywiście JEDNOCZEŚNIE), do tego oczywiście inne drobnostki jak jakieś diody, inne układy (potencjometry cyfrowe, ...), timery, scheduler funkcji, interpreter poleceń przesyłanych UARTem (z FIFO w dwie strony). No ale jak Twoje pierwsze programy zajmują 30kB i nie widzisz w tym problemu, a do tego już musiałeś przejść na F4 to... po prostu szacun.

    Jeśli ktoś początkujący musi przejśc z F1 na F4, a czas poświęcony na czytanie manuala do F1 uważa za zmarnowany, to po prostu świat już stanął na głowie. Wszystko dzięki SPL! Super sprawa faktycznie.

    4\/3!!

    0
  • #19 09 Kwi 2012 22:04
    lucasgg
    Poziom 10  

    Witam,

    dziechu napisał:
    Czy korzystać z firmowych bibliotek stlib?


    Jeżeli mają ułatwić Ci pracę to bym używał.

    Kilka plusów bym bibliotekom nie odmówił:

    - standaryzacja kodu - łatwiej się połapać w czyimś kodzie (np. pobrany przykład); w przypadku bibliotek użyte są w niemal każdym przypadku standardowe nazwy stałych; przy braku bibliotek również, ale często spotykamy w stylu:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    - (taki teoretyczny) w przypadku błędów w krzemie, producent może wprowadzić obejście bądź obsługę błędów (łatwiejsze wyłapanie błędów)

    - większa liczba przykładów w sieci, przykłady dostarczone przez producenta


    Osobiście do niektórych peryferiów stosuję, do niektórych nie. Do tej pory nie zawiodłem się ani na jednym podejściu ani na drugim.

    --
    Pozdrawiam,
    Łukasz Gryka

    0
  • #20 09 Kwi 2012 22:50
    gaskoin
    Poziom 38  

    Dziechu - przykłady które zamieściłem/liśmy, z wyjątkiem RCC będą działały równie dobrze na F1 i na F4 - zapewniam :)

    30kb pierwsze przykłady ? Co wam tyle zajmuje ? 5-6kb to obsługa USB, z 600b obsługa wyświetlacza, obsługa przetwornika audio to też jakieś groszowe sprawy ? Chciałbym wiedzieć, co tyle kodu zajmuje bo nie potrafię sobie wyobrazić, żeby początkujący tyle zajął.

    0
  • #21 10 Kwi 2012 11:01
    dziechu
    Poziom 27  

    30 kB, obsługa między innymi LCD graf. 25kB grafik, 5 kB kodu, ale nie w tym rzecz, chodzi o to że - jak sami piszecie - w 30 kB da się zmiescić tak dużo, że po przejmować się optymalnym wykorzystaniem pamieci mając 128 czy 256 kB miejsca? Nie chodzi mi w tym miejscu o 'filozofię', oczywiście że powinno sie robić porzadnie itd... Być może kilka lat temu widziałbym to inaczej.

    0
  • #22 10 Kwi 2012 11:24
    gaskoin
    Poziom 38  

    Ech, tu nie chodzi o oszczędzanie flasha tylko o wydajność, która jest konsekwencją rozmiaru kodu wynikowego). Ja rozumiem, że nie ma się co szarpać na oszczędność każdego bitu flasha, ale te biblioteki są iście niewydajne.
    Struktury inicjalizacyjne przejadają niepotrzebnie pamięć (a znając paru "programistów" wiem, że z reguły 90% kodu wisi w mainie tak więc nie ma mowy o zwolnieniu tej pamięci),

    Funkcje inicjujące przejadają procesor, parsując miliony możliwości ustawień. To samo robią funkcje do odbierania/wysyłania danych etc.
    Czytelność kodu - jakaś tam jest, ale jest on bardzo obszerny z racji tego, że trzeba uzupełnić trochę tych pól w strukturze.

    Przenośność - zerowa, nie wiem skąd argument o przenośności w dyskusji na forum ST. Przecież jak będę chciał przenieść kod na jakiegoś PICa, to bym musiał sam sobie napisać x struktur do inicjalizacji + funkcje parsujące parametry (nie mówiąc o funkcjach wysyłających dane). Normalnie się powinno robić to tak, że w osobnych plikach są funkcje do inicjalizacji/obsługi sprzętu i przerwania a w osobnych kod korzystający z tego. Wtedy to dopiero jest przenośne, bo biorąc inny procesor zaglądam tylko do poszczególnych funkcji hardware'owych i je zmieniam tak, żeby działały na nowym sprzęcie, a reszty kodu nawet nie dotykam i działa. To jest przenośność a nie pajacowanie z przepisywaniem struktur i funkcji ich używających.

    Poza tym biblioteka ma się nijak do dokumentacji, więc w niej na pewno pomocy szukać nie można. Każdy szanujący się inżynier powinien swobodnie posługiwać się dokumentacją.
    Z większych wad biblioteki można wspomnieć też to, że w żaden sposób nie wspiera ona bit bandingu. 95% osób używających fw lib nawet nie wie co to jest. Nie mówiąc już o tym, że korzystanie z manuala w tym przypadku jest proste, bo manual jest napisany tak łopatologicznie, że nikt nie powinien mieć problemów ze zrozumieniem czegokolwiek. Są rozdziały z opisem danej funkcji peryferium z podanym algorytmem ustawiania parametrów + czasami są szczegóły jak to działa "under the hood". I proszę mi nie pisać o milionie stron manuali, dostępnych w 1 egzemplarzu na świecie w języku suahili bo to jest śmieszne :) Zagląda się tylko w podrozdziały "functional description" mające góra 5 stron, z czego 4.5 się pomija i opis rejestrów.

    0
  • #23 10 Kwi 2012 11:28
    dziechu
    Poziom 27  

    [quote="Freddie Chopin"]

    dziechu napisał:
    Ja np. na 30kB zmieściłem bardzo skomplikowane obliczenia zmiennoprzecinkowe używane do wyliczania trajektorii dla dwóch silników krokowych (oczywiście JEDNOCZEŚNIE), do tego oczywiście inne drobnostki jak jakieś diody, inne układy (potencjometry cyfrowe, ...), timery, scheduler funkcji, interpreter poleceń przesyłanych UARTem (z FIFO w dwie strony). No ale jak Twoje pierwsze programy zajmują 30kB i nie widzisz w tym problemu, a do tego już musiałeś przejść na F4 to... po prostu szacun.

    Jeśli ktoś początkujący musi przejśc z F1 na F4, a czas poświęcony na czytanie manuala do F1 uważa za zmarnowany, to po prostu świat już stanął na głowie. Wszystko dzięki SPL! Super sprawa faktycznie.

    4\/3!!


    A ja w 8 kB asm zmieściłem sterowanie 6 silnikami krokowymi, 4 przekaźnikami, pomiarem 6 wartosci analogowych, dość skomplikowane obliczenia choć nie zmiennoprzecinkowe, komunikacja z dwoma podobnymi urządzeniami i oczywiście i/o - klawiatura, wyświetlacz (z pełnym sterowaniem segmentami 8x8). I co? ;)

    Freddi, masz spory problem z selekcją informacji ważnych i nieważnych. Cały czas tu piszesz co zrobiłeś w 30 kB, co Twoim zdaniem znaczy umieć albo nieumieć programować itd... Sam nieraz piszesz o tym że świat nie jest czano-biały a stale dzielisz ludzi na tylko dwie kategorie - umiejących programować super i nieumiejących nic zupełnie. Odpowiedz mi na proste pytania - urodziłeś się z tą wiedzą? A może kiedyś zaczynałeś i byłeś równie zielony a może bardziej? Dwa razy pytałem - jaka była twoja wiedza po pierwszych 20 czy 30 godzinach programowania w C? Ile masz praktyki? 5000 godzin? 10000? Bo ja w tej chwili ok. 30. A czytałeś manuala Z80? Bo jak nie, to co Ty wiesz o programowaniu? Wiesz jaki kod hex ma np. rozkaz skoku bezwarunkowego(jmp)? Albo powrotu z podprogramu(ret)? Nie? No to musisz zacząć od podstaw... to tak w Twoim stylu ;)Weź pod uwagę że nie zajmuje się programowaniem STM32 zawodowo w tej chwili, że tylko z ciekawości, a program które piszę, piszę tylko z nudów, nawet nie mam w tej chwili pomysłu na coś konkretnego, tak sobie uruchamiam wyswietlacz i cieszę się że działa itd... Zupełnie mi zwisa czy coś działa najlepiej jak może czy tylko wogóle działa, jeżeli zewnętrznie zachowuje się identycznie, a urządzenie bedzie leżało na biurku lub za tydzień zostanie rozebrane - dlatego ciagle powtarzam - wszystko zależy od celu. Nie traktuj prgramowania jak chirurgii amatorskiej, że wolno tylko robić wszystko super profesjonalnie albo w ogóle nie. Jest jeszcze 'pomiędzy'.

    0
  • #24 10 Kwi 2012 11:50
    gaskoin
    Poziom 38  

    dziechu napisał:
    Odpowiedz mi na proste pytania - urodziłeś się z tą wiedzą? A może kiedyś zaczynałeś i byłeś równie zielony a może bardziej?


    dziechu, zauważ, że to o czym pisze Freddie ma ruszać jedynie bzdurność bibliotek a nie wytykać Ci Twoje braku umiejętności. To, że ktoś jest początkujący nie oznacza, że ma używać badziewia. Z reguły to nie popłaca, ponieważ ciężko potem sobie przeskoczyć nagle do czegoś innego. To jest błąd popełniany przez większość programistów. Jeśli chcesz pisać w C i na rejestrach, to zacznij właśnie od tego, a nie od bascoma i fwlib bo to w niczym Ci nie pomoże.

    dziechu napisał:
    Weź pod uwagę że nie zajmuje się programowaniem STM32 zawodowo w tej chwili, że tylko z ciekawości, a program które piszę, piszę tylko z nudów, nawet nie mam w tej chwili pomysłu na coś konkretnego, tak sobie uruchamiam wyswietlacz i cieszę się że działa itd


    To po co się męczyć, skoro ma tylko działać? Lepiej włączyć PC - przecież wyświetla filmy i inne cuda robi a nic nie trzeba robić.


    dziechu napisał:
    Zupełnie mi zwisa czy coś działa najlepiej jak może czy tylko wogóle działa, jeżeli zewnętrznie zachowuje się identycznie, a urządzenie bedzie leżało na biurku lub za tydzień zostanie rozebrane - dlatego ciagle powtarzam - wszystko zależy od celu. Nie traktuj prgramowania jak chirurgii amatorskiej, że wolno tylko robić wszystko super profesjonalnie albo w ogóle nie. Jest jeszcze 'pomiędzy'.


    Nikt nie robi Ci na złość wytykając błędy, tylko raczej stara się naprowadzić jak zrobić coś dobrze. Nieużywanie tej biblioteki naprawdę jest na Twoją korzyść, nawet ST napisało gdzieś "not for commercial use". Niektórzy się denerwują, bo na forum padają w kółko te same pytania.
    Wyobraź sobie, że nagle w połowie projektu okaże się, że masz jeszcze 20GB flasha wolnego, a projekt kuleje? Co wtedy ? Pot i łzy bo teraz trzeba nagle przejrzeć manuala i poustawiać rejestry.

    0
  • #25 10 Kwi 2012 11:52
    dziechu
    Poziom 27  

    Gaskoin, masz rację, ja tylko jeszcze raz powtórzę - jeżeli piszesz pierwszy raz program na jakiś procesor tylko dla zabawy, pierwszy i byc może ostatni, a program jest dość prosty, to pewnie szybciej zrobisz to z bibliotekami (choćby czerpiąc z przykladów), niż bez. I tyle. Co innego jeżeli robisz to stale, piszesz program i wiesz że za miesiąc czy rok będziesz robił natepny program na ten procesor, i nastepny... Tak, wtedy biblioteki wywalić, napisać swoje, poznać kontroler na poziomie sprzetowym i wszystkie jego mozliwosci itd... No i ciągle brak odpowiedzi na pytania typu - dlaczego książki o stm32 (Paprocki) zawierają 90% przykladów z bibliotekami, dlaczego artykuły EP przedstawiają przykłady głównie z bibliotekami, powstają środowiska programowania jak CoIDE które automatycznie dołączają te biblioteki (komentarze o jakosci zbędne, byc może narzędzie dla profesjonalisty nic nie warte, ale dla poczatkujacego niezłe). Dlaczego wszystkie płyty uruchomieniowe jak seria discovery itp. zawierają wyłącznie przykłady z bibliotekami (to taki strzał w stopę firmy ST?)??? A tu opinie że biblioteki zupełnie nie nadaja się, że są zupełnie bezwartosciowe... A może znowu po prostu 'coś pomiędzy'?

    0
  • #26 10 Kwi 2012 11:55
    gaskoin
    Poziom 38  

    Ja zawodowo nie piszę na uC, na STM32F4 napisałem narazie jeden program i nie użyłem bibliotek ;)
    Nie czytam kursów, ale jak widziałem raz fragment "kursu" w EP (albo to było EDW? Nie pamiętam bo przeglądałem na stoisku gazety) to dla mnie pozostawiał on wiele do życzenia. I po raz kolejny powtórzę, że nie należy ślepo patrzeć na to, że artykułu są w GAZECIE, albo biblioteki napisała sama firma ST, tam też pracują ludzie, też się pewnie spieszą, czasem jest tak, że niski poziom załatwia jakiś jeden programista. Też byłem kiedyś na praktykach na studiach w dużej firmie. Ja tam byłem tylko praktykantem, ale jak zobaczyłem kod, napisany przez gościa, który pracował tam x lat to myślałem, że padnę i nie wstanę.

    0
  • #27 10 Kwi 2012 12:00
    dziechu
    Poziom 27  

    "To po co się męczyć, skoro ma tylko działać? Lepiej włączyć PC - przecież wyświetla filmy i inne cuda robi a nic nie trzeba robić."

    Bo zawsze wolałem lutować niż ogladać mecze albo filmy, elektronika (a potem dodatkowo informatyka, ale w koniecznym zakresie) to po prostu moje hobby od 4 kl. szkoły podstawowej.

    Czytam manuale procesorów także z samej ciekawosci, nie namawiam nikogo do nieczytania. Mi nie musicie pisać jakie są z tego korzyści. Bronię tylko pewnego, innego punktu widzenia, bo widzę jak ostro atakowane jest używanie tych bibliotek, a amatorzy i hobbisci, szczególnie tacy co staraja sie jak najdalej od sprzetu, mogą z tych bibliotek korzystać, chyba po to zostały stworzone. takie jest moje zdanie.

    0
  • #28 10 Kwi 2012 15:00
    Jado_one
    Poziom 22  

    gaskoin napisał:

    Przenośność - zerowa, nie wiem skąd argument o przenośności w dyskusji na forum ST. Przecież jak będę chciał przenieść kod na jakiegoś PICa, to bym musiał sam sobie napisać x struktur do inicjalizacji + funkcje parsujące parametry (nie mówiąc o funkcjach wysyłających dane). Normalnie się powinno robić to tak, że w osobnych plikach są funkcje do inicjalizacji/obsługi sprzętu i przerwania a w osobnych kod korzystający z tego. Wtedy to dopiero jest przenośne, bo biorąc inny procesor zaglądam tylko do poszczególnych funkcji hardware'owych i je zmieniam tak, żeby działały na nowym sprzęcie, a reszty kodu nawet nie dotykam i działa. To jest przenośność a nie pajacowanie z przepisywaniem struktur i funkcji ich używających.

    Masz tutaj 100% rację - ostatnio przenosiłem kod z PIC32 na STM32 i musiałem zmienić tylko obsługę sprzętową SPI, I2C, itd.... (czasami wystarczy zmienić tylko same nazwy rejestrów, nie licząc inicjalizacji) - i działa od pierwszego kopa.
    Gdybym miał to napisane z użyciem bibliotek - zarówno tych od STM jak i od PIC'a, to roboty byłoby X x więcej.

    0
  • #29 10 Kwi 2012 16:51
    dziechu
    Poziom 27  

    To na koniec ponowię jedno z pytań na które nie uzyskałem odpowiedzi. Chodzi o przyklad dołączony do STM32F4disc. Audio_Playback_and_Record - działa dość fajnie, odgrywa pliki wav z pendriva. Dołączyłem sobie LCD graf, dodałem kilka opcji itd... Wg Waszych porad zrezygnować z bibliotek, a w tym przykładzie jak? Ja na pewno nie przerobię tego przykładu na wersję bez bibliotek, zrobi to ktoś z Was i udostępni??? Bardzo wątpię. Więc jaki mam wybór? Mogę albo nadal kontynuować z tymi bibliotekami, albo zrezygnować całkiem i dalej mrugac ledami aż będę na tyle dobry że sobie sam przerobię, wolę obie wersje - bawić się przykładem z bibliotekami mrugać ledami bez bibliotek:)

    0
  • #30 10 Kwi 2012 16:58
    gaskoin
    Poziom 38  

    Napisanie tego przykładu samemu od zera to jest chwila...

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo