Załóżmy, że zaczynasz projekt osadzony ze znaną funkcjonalnością. Kiedy wybierasz mikrokontroler, jak wybierasz, ile pamięci RAM potrzebujesz?
Czy najpierw używasz płyty programisty i kodujesz swój projekt, a następnie sprawdzasz, ile pamięci użyłeś, a następnie wybierasz odpowiedni mikrokontroler, który pasuje do tej pamięci?
Czy po prostu wybierasz mocny mikrokontroler do prototypu, a następnie zmniejszasz go, gdy masz działający produkt?
Czy po prostu wybierasz coś, co na pewno będzie wystarczające, a jeśli zabraknie ci miejsca, po prostu zaktualizuj do większej gęstości pamięci, w przeciwnym razie po prostu zachowaj istniejący mikrokontroler?
Co uważa się za dobrą praktykę?
microcontroller
embedded
design
memory
efox29
źródło
źródło
Odpowiedzi:
Osobiście w projektach hobbystycznych używam najmocniejszego mikrokontrolera w rodzinie o odpowiednim rozmiarze. Następnie opracowuję płytkę drukowaną, piszę kod i tworzę prototyp.
Ma to tę zaletę, że znam dość małą liczbę mikrokontrolerów, więc mogę szybko prototypować bez konieczności czytania całego arkusza danych. Mam też dla nich tablice Breakout i szablony kodów.
Jeśli to działa i robię więcej niż garstkę, kupuję najtańszy mikrokontroler, który ma odpowiednie urządzenia peryferyjne i wystarczającą ilość pamięci do wszystkiego, co wcześniej kodowałem. Może to być denerwujące, jeśli zmienią się rejestry wewnętrzne (dzieje się to na PIC) lub jeśli jeden z mikrokontrolerów ma dodatkowe urządzenia peryferyjne, które należy wyłączyć, aby kod działał.
Jednak do celów produkcyjnych pozwoliłoby to na zmniejszenie ilości każdej jednostki.
źródło
Oczywiście w przypadku pojedynczego domowego prototypu dobrym pomysłem może być rozpoczęcie od najpotężniejszego ze wszystkich kompatybilnych mikrofonów, a następnie zmniejszenie skali.
Jeśli jednak chcesz wygrać wycenę, musisz powiedzieć klientowi cenę, zanim będziesz mieć pieniądze na cokolwiek.
Dlatego dobrą praktyką jest zapisanie jakiejś specyfikacji przed rozpoczęciem programowania. Wiesz, co chcesz zrobić i powinieneś zapisać, jak zamierzasz to zrobić.
To „jak” obejmuje również myślenie o projekcie oprogramowania, odpowiadanie na pytania takie jak:
Podsumowanie wszystkich tych wartości daje przybliżone oszacowanie. To, na ile możesz zaufać, zależy od tego, jak szczegółowa jest twoja analiza, i zależy od twojego doświadczenia :-)
Dodanie marginesu co najmniej 30..50% szacunków jest z pewnością dobrym pomysłem.
Gdy twój produkt zostanie ukończony i będziesz mieć około 80..90% pamięci RAM w użyciu, możesz być całkiem pewien, że twój wybór był właściwy - przynajmniej jeśli chodzi o pamięć RAM.
źródło
Gdyby tylko możliwe było najpierw zakodowanie systemu wbudowanego, a następnie zbudowanie sprzętu. To ułatwiłoby wszystkim życie. Niestety oznacza to również, że terminy są poza oknem. Zazwyczaj sprzęt musi być zaprojektowany na długo przed wykonaniem oprogramowania, ponieważ części sprzętu często mają długi czas realizacji.
W związku z tym programiści oprogramowania wbudowanego SW będą zwykle musieli oszacować pamięć swojego programu i zapotrzebowanie na procesor. Pierwszym krokiem powinno być przekonanie osób zajmujących się sprzętem, aby dały ci najmocniejszy mikrokontroler / procesor z największą ilością pamięci RAM. To rzadko działa, ponieważ mają własne cele dotyczące wymagań, ale od czasu do czasu masz szczęście.
Jeśli to nie zadziała, następną rzeczą do zrobienia jest projektowanie oprogramowania na wysokim poziomie i rozbicie modułów na funkcje. Następnie oszacujesz wiersze kodu dla każdej funkcji dla każdego modułu w systemie. Następnie możesz użyć formuły, aby przekonwertować wiersze kodu na szacunkową pamięć kodu. Zbadasz również wszelkie nietypowe wymagania dotyczące pamięci (takie jak duże tablice) i dodasz szacunki, aby to uwzględnić. Następnie dodaj procent do tej sumy, aby pokryć wszystko, co przegapiłeś. Następnie podwoj to, aby spełnić typowe 50% wymaganie wykorzystania.
Tak, to wymaga czasu. Tak, konieczne jest przeskakiwanie przez wszystkie obręcze, ponieważ zmiana sprzętu jest naprawdę trudna po zbudowaniu.
źródło
Ogólnie rzecz biorąc, dostawcy mikrokontrolerów umieszczają w swoich urządzeniach szereg pamięci odpowiednich do typowych zastosowań. Jeśli więc potrzebujesz tylko kilku pinów I / O i jednego SPI w małym urządzeniu, prawdopodobnie nie znajdziesz niczego, co jest dostarczane z 500 kB bajtów Flash i 64 kB bajtów RAM. W przypadku większych urządzeń, które są bliższe pakietom SoC, nawet najmniejsze jest prawie na pewno wystarczająco duże, chyba że planujesz poważne pauzowanie liczb, takie jak przetwarzanie obrazu.
W środowisku profesjonalnym kluczem do wyboru odpowiedniego mikrokontrolera jest wykorzystanie danych historycznych. Będziesz miał zapis innych opracowanych projektów i będziesz wiedział, jaka pamięć i inne zasoby krzemu są wymagane do wdrożenia każdej funkcji. Będziesz wiedział, co powinien zrobić produkt, a zatem będziesz mieć dobrą listę funkcji, a także będziesz mógł szybko i dokładnie obliczyć zasoby, które musi zapewnić mikrokontroler. Próba odgadnięcia wymagań dotyczących zasobów na podstawie wstępnej specyfikacji projektu (opracowanej na początku projektu, gdy dostępnych jest najmniej informacji o systemie) jest niewiarygodna w najlepszym momencie i tylko bardzo doświadczeni inżynierowie, którzy opracowali kompleksowe baza danych historycznych we własnych głowach odniesie jakikolwiek sukces w stosowaniu tej metody.
Wiele firm przyjęło podejście „zwinne” zarówno do oprogramowania, jak i do projektowania elektronicznego, które obejmuje zbudowanie „biblioteki” małych, funkcjonalnych kart (np. Kart RS-485, kart ADC itp.) Wraz z ogólnymi kartami platform obsługującymi mikrokontrolery , w podobny sposób jak korzystanie z zestawu deweloperskiego i wtyczek. Produkt można następnie szybko prototypować (w ciągu kilku godzin), wybierając i łącząc zestaw płyt wymaganych dla funkcji. Oprogramowanie jest podobnie złożone z modułów bibliotecznych i można je szybko przenosić i testować. Po określeniu rozmiaru części kodu specyficznej dla sprzętu zwykle wystarczy wybrać najmniejszą część, która będzie go zawierała. Wyjątkiem jest wspomniany powyżej, w którym funkcjonalność urządzenia obejmuje duże zbiory danych lub bardzo złożone algorytmy. Ta metoda zapewnia dokładne,
(Inną zaletą podejścia zwinnego jest to, że umożliwia równoległe tworzenie oprogramowania i elektroniki, przy czym projektowanie elektroniki stanowi ćwiczenie polegające na zintegrowaniu zestawu kart rozszerzeń i wykonaniu odpowiednich EMC i innych trudnych czynności w tym samym czasie, co opracowywane jest oprogramowanie aplikacji na zestawach protoype. Niektóre operacje przenoszenia i integracji są nadal konieczne, ale dzieje się tak, gdy dostępne jest zarówno działające oprogramowanie, jak i elektronika.)
źródło