Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak oszacować ilość potrzebnej pamięci w mikrokontrolerze??

jari17 18 Lut 2018 14:46 930 8
  • #1 18 Lut 2018 14:46
    jari17
    Poziom 4  

    Tak jak w temacie. Jak szacujecie ilość potrzebnej pamięci w mikrokontrolerze przy projektowaniu układów cyfrowych??

    0 8
  • Arrow Multisolution Day
  • #2 18 Lut 2018 15:00
    BlueDraco
    Specjalista - Mikrokontrolery

    Zajętość pamięci RAM jest oczywista - to po prostu rozmiar wszystkich zmiennych, jakie mogą zaistnieć w najgorszym przypadku przy największym poziomie zagnieżdżenia procedur plus po jakieś 20 bajtów na każdy poziom zagnieżdżenia. Flash - zaczynasz pisać program i widzisz, ile tego trzeba.

    0
  • #3 18 Lut 2018 19:13
    3099750
    Użytkownik usunął konto  
  • Arrow Multisolution Day
  • Pomocny post
    #4 18 Lut 2018 19:26
    grko
    Poziom 33  

    @jari17 Oszacowanie ilości potrzebnej pamięci w nietrywialnych projektach jest bardzo trudne. Chodzi tutaj zarówno o pamięć FLASH oraz RAM. Z tą drugą jest gorzej ze względu na to, że nie ma pewnego sposobu na oszacowanie ilości pamięci potrzebnej na stos. Jeżeli do tego dochodzi jakiś RTOS to zapotrzebowanie na pamięć RAM rośnie znacznie wraz z ilością wątków. Dodatkowo wykorzystanie zewnętrznych bibliotek sprawia trudność w oszacowaniu na wstępnym etapie projektowania.

    Według mnie najlepiej wybrać pinowo kompatybilną rodzinę procesorów i w prototypach używać MCU z największą ilością pamięci FLASH/RAM. Gdy już widać ile program zajmuje wtedy można już zdecydować o wersji procesora, która ma być montowana na produkcji. Takie podejście pozwoli zaoszczędzić czas na etapie projektowania, ułatwi debugowanie programu oraz ograniczy stosowanie mikrooptymalizacji.

    0
  • #5 19 Lut 2018 00:03
    AndrzejKor
    Poziom 11  

    Dobry wieczór
    Moje doświadczenie z mikrokontrolerami jest nie za zbytnie. Ale w zeszłym roku tworzyłem projekt. Mam do pomocy elektronika,
    On się zna. I było to tak :
    Początek na Nuvotonie (Nu-LB-NUC140 bo taki był pod ręką), ale Keil i ograniczenie do 32k. Przekroczyłem szybciutko.
    Gura (Guru od elektroniki) dała mi płytkę Discovery z STM32F051, 64k przekroczyłem w czerwcu. Wreszcie, wygląda na to, że
    wystarczy 256k Flasha i 32k ramu na STM32F091RCT6. Programy piszę od czasu, w którym nie było jeszcze komputerów,
    i nie potrafiłem oszacować, choćby z grubsza ile czego będzie potrzebne przy projekcie. na razie jest 181k kodu i 4k wolnego w ramie, ale projekt się kończy i wodotryski, które jeszcze trzeba dorobić nie zajmą dużo.
    Tak na wszelki wypadek walczę z STM32F429Zi - tak, gdyby się przelało.
    Za każdym przekroczeniem granicy i zmianą procesora bolało mocno, choć CoIDE pomagało jak umiało, tyle, że ja nie umiałem,
    nadal niewiele umiem a uczę się coraz wolniej. Wydaje mi się, że dopiero po zrobieniu trzech poważniejszych projektów można
    móc oszacować jakie zasoby będą niezbędne i zupełnie nie jest istotne jaki to będzie język.

    Z ukłonami
    Andrzej Korycki

    0
  • #6 19 Lut 2018 00:29
    michalko12
    Specjalista - Mikrokontrolery

    AndrzejKor napisał:
    Wydaje mi się, że dopiero po zrobieniu trzech poważniejszych projektów można móc oszacować jakie zasoby będą niezbędne i zupełnie nie jest istotne jaki to będzie język


    Praktyka to raz, precyzyjna lista założeń to dwa. Jeśli jest praktyka to na podstawie takiej listy można orientacyjnie do każdej pozycji przypisać ilość potrzebnej pamięci. Po zsumowaniu można spokojnie dołożyć jeszcze 30-50%.

    0
  • #7 19 Lut 2018 08:39
    BlueDraco
    Specjalista - Mikrokontrolery

    Nie twierdzę, że zajęcie 128 KiB jest niemożliwe, ale o to naprawdę trzeba się albo dobrze postarać, albo niefrasobliwie narozrabiać. Mam taki jeden duży projekt - ok. 60 plików źródłowych, kilkadziesiąt tysięcy linii kodu, 40 KiB danych stałych, urządzenie złożone USB, rasteryzacja grafiki, skomplikowane sterowanie obiektem w czasie rzeczywistym (ADC, timery, 2.5 tys. linii kodu algorytmu sterowania) - razem zajmuje to ok. 160 KiB Flash.

    0
  • #8 19 Lut 2018 10:14
    michalko12
    Specjalista - Mikrokontrolery

    BlueDraco napisał:
    Nie twierdzę, że zajęcie 128 KiB jest niemożliwe, ale o to naprawdę trzeba się albo dobrze postarać, albo niefrasobliwie narozrabiać.

    Wystarczy korzystać z "uniwersalnych bibliotek".

    0
  • #9 19 Lut 2018 11:05
    AndrzejKor
    Poziom 11  

    Dziędobry ponownie.
    Nie korzystałem z żadnych bibliotek za wyjątkiem HAL i FatFs, ale kodu (plików c) naklepałem 745kb (wiem, że piszę rozwlekle)
    i fioletowego pojęcia nie mam ile to linii (69 plikow).
    Nie ma jeszcze obsługi błędów transmisji od czujników pomiarowych, ale czujniki pomiarowe "urodziły" się wczoraj (18-02-2018).
    A dobra awaria tego programu może spowodować pożar.
    Doświadczenia z bibliotekami (darmowymi) mam jak najgorsze. Co spróbowałem, to nie działało.
    Nie korzystam z żadnych printfów, wszystko wyrzeźbione ręcznie.
    Dlatego następny projekt zacznę już od razu od STM32F091RCT6, a jeżeli zaistnieje cień podejrzenia, że może się nie zmieścić
    to STM32F429ZIT6.
    W moim wypadku było tak, że założenia powstawały w trakcie pisania programu. Co miesiąc, dwa demonstrowałem Zleceniodawcy postęp prac a On mówił, że może jeszcze to i tamto. Urządzenie powstaje jedno i koszt procesora nie ma znaczenia.
    Gorzej gdy ma to być duża seria i wtedy koszt procesora ma znaczenie i wtedy ocena potrzebnych zasobów warta jest sporych pieniądorów i trzeba je brać (i się nie pomylić).

    Z ukłonami
    Andrzej Korycki

    0