Jak sprawdzić, czy mikroprocesor ma wystarczającą moc

9

Wszyscy wiedzą, że łatwo jest opracować dowód koncepcji urządzenia osadzonego na rasbperry pi lub nawet na komputerze PC, chociaż jeśli chodzi o wybór mikroprocesora dla swojego produktu, trudno jest mieć pewność, że wybór pozwoli na działanie koncepcji optymalnie.

Obecnie mam projekt przesyłania strumieniowego multimediów z powodzeniem działający na Raspberry Pi, chociaż pi jest zbyt duże i nieporęczne, aby mogło być odpowiednie jako urządzenie końcowe. Stwierdzono również, że urządzenie końcowe jest niestandardowe. Trudno mi znaleźć zaufanie do procesorów, których mogę użyć.

Jaki jest dobry proces, aby dowiedzieć się, czy procesor ma wystarczającą moc, aby uruchomić moją aplikację?

Zasadniczo moje wymagania to:

  • Host USB lub wbudowany stos TCP / IP do działania WiFi
  • Protokół mediów I2S / PCM
  • I2C do konfiguracji urządzeń peryferyjnych

Znalezienie wiórów o tych właściwościach jest bardzo proste. To nie może być prostsze. Problem polega na tym, aby stwierdzić, czy układ jest wystarczająco szybki, przetwarzający i operacyjny.

Spojrzałem dość często na LPC4337 i wydaje mi się, że byłby odpowiedni, chociaż środowisko programistyczne sprawia mi sporo kłopotów, dlatego wciąż się rozglądam, co doprowadziło mnie do CC3200 z Texas Instruments , chociaż ten kontroler działa tylko z częstotliwością 80 MHz i nie jestem pewien, czy będzie on wystarczająco mocny do strumieniowego przesyłania multimediów w czasie rzeczywistym.

Jakie są kroki, aby upewnić się, że procesor jest wystarczająco szybki dla mojej aplikacji? Na przykład, skąd mam wiedzieć, czy procesor 80 MHz będzie wystarczająco dobry, czy też potrzebuję czegoś rzędu 204 MHz lub więcej?

Funkyguy
źródło
1
Myślę, że musisz również podać wymagania dotyczące zasilania.
kolosy
To nie odpowiada na twoje pytanie, ale możesz zastanowić się nad nową rodziną mikrokontrolerów PIC32MZ , które mają dwa razy więcej pamięci Flash (2 MB) i trzy razy więcej pamięci RAM (512 KB), wraz z hostem USB 2.0, I²S i pięcioma I²C moduły w tej samej cenie co LPC4337. IDE (MPLAB X) i kompilator można wypróbować za darmo, ale po okresie próbnym musisz zapłacić za zoptymalizowany kompilator, jeśli chcesz (niezoptymalizowany kompilator GCC pozostaje darmowy). Microchip ma biblioteki wolne od tantiem dla stosów USB i TCP / IP.
tcrosley
2
Myślę, że niektórym brakuje sedna pytania. Nie szukam rekomendacji części. Łatwo jest upewnić się, że na chipie jest wystarczająca ilość miejsca lub że znajdują się odpowiednie urządzenia peryferyjne. Bardziej szukam parametrów przetwarzania i kroków jako wskazówek, aby upewnić się, że wybrałem wystarczająco mocny procesor. Jak w jego prędkości.
Funkyguy
Jeśli nie wiesz, czego potrzebujesz na podstawie specyfikacji, czy możesz po prostu zamówić próbki i prototyp?
Roger Rowland,
@RogerRowland Mógłbym, chociaż jest to bardzo długi proces. Niestety istnieje jakiś sposób na znalezienie minimalnych specyfikacji dla programu
Funkyguy,

Odpowiedzi:

5

To zależy od tego, jak pewny siebie musisz być. Pracuję w przemyśle kosmicznym i zwykle osiąga się to poprzez tak zwane „budżety procesora, pamięci RAM i ROM”. Budżet, bez względu na to, czy kosztuje masę mocy, czy cokolwiek innego, rozkłada proces na elementy możliwe do zarządzania, które można skwantyfikować i zsumować, aby uzyskać ogólne zapotrzebowanie. Następnie bierzesz czynnik bezpieczeństwa, który zależy od dojrzałości twojego projektu, zmniejszając się z czasem, aby uwzględnić wzrost popytu. Na początku w dużej mierze opiera się na doświadczeniu, a następnie jest udoskonalany w miarę wybierania technologii.

  • ROM jest stosunkowo łatwy. Wiesz, ile stosu / biblioteki / sterownika z grubsza zajmuje pamięć ROM: albo podane przez autora, albo możesz je skompilować bez przesyłania. Ta liczba może się jednak bardzo zmienić za każdym razem, gdy zmienisz kod z powodu optymalizacji kompilatora.
  • Pamięć RAM jest znacznie trudniejsza. Niektóre narzędzia w wyspecjalizowanych zintegrowanych środowiskach programistycznych dają oszacowania czasu działania i widzę, jak można to zrobić, ale nie znam żadnego ogólnego narzędzia - powiedzmy, dostarczonego przez GCC (ktoś wie inaczej?). Niestety brzmi to tak, jakby sprowadzało się to do liczenia największych lub najczęściej przydzielanych elementów kodu (uwzględniających czas życia zmiennych).
  • Procesor jest bardziej złożony, ponieważ w zależności od architektury (CISC lub RISC) MIPS (miliony instrukcji na sekundę, proporcjonalne do częstotliwości taktowania procesora) może być reprezentatywny lub nie. Ponieważ jeśli masz pod ręką kod, możesz podzielić najważniejsze sekcje na instrukcje i obliczyć wymagane MIPS na podstawie wymaganego czasu. Każde nieprzerwane przerwanie POWINNY być uważane za wywołane w tym momencie - prawo Murphy'ego i tak dalej.

Powyższe jest niezwykle trudne do dokładnego ustalenia, kiedy uruchamiają się harmonogramy, gdy tylko masz wątki (chyba że wątki są przydzielane ręcznie do rdzeni) i systemów operacyjnych. Powinny być łatwe do zarządzania dla prostych kodów mikrokontrolera, ale czy warto to dla twojej aplikacji?

To tylko mój udział: chociaż projektuję zintegrowane systemy, nie odpowiadałem za te konkretne budżety (które są dla mnie wkładem), a tak naprawdę bardzo interesują mnie historie ekspertów na ten temat.

Dodatek: W przypadku systemów czasu rzeczywistego zwykle łatwiej jest ocenić adekwatność systemu do zadania poprzez maksymalny czas próbkowania, który zależy od opóźnień / opóźnień w transmisji informacji w całym przepływie pracy oraz maksymalnego czasu potrzebnego próbka zadania.

Pan Mystère
źródło
avrdudemoże dostarczyć oszacowanie ilości pamięci RAM zajętej przez zmienne globalne, ale musisz uruchomić ją z opcją suchego uruchamiania, ponieważ jest to zasadniczo narzędzie do przesyłania.
felixphew
1
Najtrudniejszą częścią do oszacowania IMO jest użycie stosu i sterty. Nasz obecny system wbudowany (zastrzeżony system operacyjny), działający na PIC32, zwykle ma ponad 25 zadań, z których wiele wymaga kilku K stosu lub więcej, gdy są one aktywne. Dostajesz kilka takich, plus duże zużycie stosu i wkrótce możesz być bliski wyczerpania pamięci RAM. Właśnie napisałem procedurę rekurencyjną tydzień temu i musiałem bardzo uważać na użycie lokalnego stosu zmiennych (bez tablic itp.)
tcrosley,
Ciekawe dzięki. Czy szacujesz ilość pamięci RAM przydzielonej przez Twój kod (analiza kodu lub konkretne narzędzie), czy mierzysz ją w czasie wykonywania? Wydaje mi się, że MIPS jest nieco trudniejszy do oszacowania, ponieważ nie można go oszacować na podstawie analizy kodu bez podziału go na instrukcje, w przeciwieństwie do użycia pamięci RAM (możliwe, niełatwe). Wątki sprawiają, że zadanie jest niesamowicie trudniejsze, ale wygląda na to, że analiza procesora nadal wymaga więcej kroków - jest to po prostu mniejszy problem. Co myślisz?
Mister Mystère,
2

Mam zamiar uprościć twoje pytanie: „Jak sprawdzić, czy mikroprocesor jest wystarczająco szybki ”?
Musisz zidentyfikować proces / procedurę, która wymaga najszybszego czasu wykonania. Jeśli twój procesor może wykonać instrukcje wymagane w danym czasie lub krócej, jest wystarczająco szybki.
Spójrzmy na przykład: Twoim najszybszym wymaganiem jest przetworzenie utraty zasilania ; wymaga to wykonania 10 000 instrukcji w 10 milisekund. Będziesz potrzebował procesora z co najmniej 1 MIP. Aby przekonwertować to na „MHz”, musisz znać liczbę cykli zegara na instrukcję (cci). Załóżmy, że jest to 10 cci, twój procesor musiałby pracować z częstotliwością 10 MHz lub szybszą.

Guill
źródło
0

Jeśli szukasz obniżenia kosztu BOM, czasami producenci Shenzhen mają zaskakujące oferty. Jeden przykład: Allwinner A10 ma większą moc obliczeniową i opcje połączeń niż Raspberry Pi, ale prawdopodobnie będzie tańszy, jeśli zostanie użyty w twoim projekcie. Jeśli patrzysz na tę samą cenę co Pi, Allwinner A31s jest 6-8 razy mocniejszy.

Maxthon Chan
źródło