Systemy wbudowane tradycyjnie były urządzeniami o ograniczonych zasobach, które miały określony cel. Nie są to na ogół sprzęty przeznaczone do złożonych obliczeń, a często wykorzystywane w formie prostego kontrolera, węzła czujnika itp. W rezultacie twórcy takowych bywają nierzadko zmuszeni do równoważenia kosztów elementów (BoM) z funkcjami i potrzebami oprogramowania. W wyniku czego powstaje koncept, który realizuje ustalone założenie wydajnie i ekonomicznie. W ciągu ostatnich kilku lat widoczne jest tworzenie szerokiego spektrum systemów, które wydają się ignorować tę równowagę. Na przykład inteligentne termostaty, które można w teorii zbudować przy użyciu układu z rdzeniem ARM Cortex-M4 o częstotliwości zegara mniejszej niż 100 MHz i kilkuset kilobajtach pamięci. Zamiast tego elementy te zawierają wielordzeniowe jednostki ARM Cortex-M7 (lub nawet rdzenie z rodziny Cortex-A) działające z częstotliwością taktowania na poziomie 600 MHz i więcej, z kilkoma megabajtami pamięci... To prowadzi do pytania, czy twórcy omawianych sprzętów przesadzają obecnie w projektach swoich systemów?
Aktualnie jest więcej jednostek z dużo większą pamięcią i mocą obliczeniową, niż jest to wymagane do wykonania danego zadania. W pewnym stopniu nacisk na IoT i urządzenia brzegowe spowodował nowy poziom złożoności systemów wbudowanych, które kiedyś były optymalizowane pod kątem kosztów i wydajności. Ponadto łączność i konieczność potencjalnego dodawania funkcji do produktu przez dekadę lub dłużej w przyszłości skłania programistów do przeceniania swoich potrzeb, a więc i do działań związanych z przeprojektowywaniem. Chociaż pozostawienie dodatkowej przestrzeni na przyszłą rozbudowę jest zawsze świetnym pomysłem, często implementacje te są mocno nadmiarowe. Nierzadko zdarza mi się spotkać zespół, który nie rozumie wydajności systemu lub potrzeb programowych. Mimo to wybrali już najnowocześniejszy mikrokontroler, jaki mogli znaleźć. Zapytany o dobór części w oparciu o wymagania, wielokrotnie da się usłyszeć: „Nie wiemy, więc na wszelki wypadek uwzględniliśmy największy układ, jaki był dostępny”. To nie jest inżynieria; to projekt kierowany strachem.
Tak, mikrokontrolery, jak i pamięć są tańsze niż kiedykolwiek. Można łatwo umieścić Raspberry Pi z Linuxem w prawie każdym produkcie i nazwać to dobrym rozwiązaniem. Czy jednak nie jest to trochę przesadne z punktu widzenia kosztów? A co z etyką i roztrwanianiem energii? Wiele osób mówi, że nie muszą optymalizować mocy, ponieważ ich urządzenia są podłączone do sieci zasilającej. Czy oznacza to, że nie trzeba troszczyć się o to, czy marnujemy zasoby, szkodzimy środowisku czy po prostu generujemy wysokie rachunki za energię elektryczną po stronie klienta, w taki sam sposób, jak o dostarczenie działającego produktu?
Inny duży problem, który widzi się w zakresie przeprojektowania, dotyczy programistów. Przygotowanie i wdrażanie wydajnego oprogramowania wydaje się rzadkością. Częściowo mankament ten wynika z braku edukacji i łatwości wejścia w tę dziedzinę ze względu na tworzenie aplikacji internetowych i mobilnych. Ponadto brakuje doświadczonego personelu z branży oprogramowania wbudowanego, a luki te są wypełniane przez ludzi, którzy są przyzwyczajeni do dostępności wielu GHz i gigabajtów pamięci. Wydajność nigdy nie jest brana pod uwagę; po prostu wystarczy sprawić, by rozwiązanie działało, a kogo to obchodzi, ile cykli procesora czy pamięci zużywa! Na skutek tego obecnie wiele systemów wbudowanych jest istotnie przekształcanych i to nie w dobry sposób, który skutkuje niezawodnym produktem. Zamiast tego są budowane z myślą o wygodzie projektowania, co może zaszkodzić firmom, które je konstruują, a nawet samym konsumentom. Oczywiście nadmierna inżynieria może być subiektywna. Jednak należy mieć nadzieję, że ten post pomoże i pozwoli zatrzymać się oraz pomyśleć o tym, jak kreujemy swoje urządzenia. W cyklu projektowania jest wiele do zrównoważenia i dobrze byłoby, aby systemy były podbudowywane inżynierią, a nie zgadywaniem lub strachem.
Źródło: https://www.embedded.com/are-embedded-systems-overengineered/
Aktualnie jest więcej jednostek z dużo większą pamięcią i mocą obliczeniową, niż jest to wymagane do wykonania danego zadania. W pewnym stopniu nacisk na IoT i urządzenia brzegowe spowodował nowy poziom złożoności systemów wbudowanych, które kiedyś były optymalizowane pod kątem kosztów i wydajności. Ponadto łączność i konieczność potencjalnego dodawania funkcji do produktu przez dekadę lub dłużej w przyszłości skłania programistów do przeceniania swoich potrzeb, a więc i do działań związanych z przeprojektowywaniem. Chociaż pozostawienie dodatkowej przestrzeni na przyszłą rozbudowę jest zawsze świetnym pomysłem, często implementacje te są mocno nadmiarowe. Nierzadko zdarza mi się spotkać zespół, który nie rozumie wydajności systemu lub potrzeb programowych. Mimo to wybrali już najnowocześniejszy mikrokontroler, jaki mogli znaleźć. Zapytany o dobór części w oparciu o wymagania, wielokrotnie da się usłyszeć: „Nie wiemy, więc na wszelki wypadek uwzględniliśmy największy układ, jaki był dostępny”. To nie jest inżynieria; to projekt kierowany strachem.
Tak, mikrokontrolery, jak i pamięć są tańsze niż kiedykolwiek. Można łatwo umieścić Raspberry Pi z Linuxem w prawie każdym produkcie i nazwać to dobrym rozwiązaniem. Czy jednak nie jest to trochę przesadne z punktu widzenia kosztów? A co z etyką i roztrwanianiem energii? Wiele osób mówi, że nie muszą optymalizować mocy, ponieważ ich urządzenia są podłączone do sieci zasilającej. Czy oznacza to, że nie trzeba troszczyć się o to, czy marnujemy zasoby, szkodzimy środowisku czy po prostu generujemy wysokie rachunki za energię elektryczną po stronie klienta, w taki sam sposób, jak o dostarczenie działającego produktu?
Inny duży problem, który widzi się w zakresie przeprojektowania, dotyczy programistów. Przygotowanie i wdrażanie wydajnego oprogramowania wydaje się rzadkością. Częściowo mankament ten wynika z braku edukacji i łatwości wejścia w tę dziedzinę ze względu na tworzenie aplikacji internetowych i mobilnych. Ponadto brakuje doświadczonego personelu z branży oprogramowania wbudowanego, a luki te są wypełniane przez ludzi, którzy są przyzwyczajeni do dostępności wielu GHz i gigabajtów pamięci. Wydajność nigdy nie jest brana pod uwagę; po prostu wystarczy sprawić, by rozwiązanie działało, a kogo to obchodzi, ile cykli procesora czy pamięci zużywa! Na skutek tego obecnie wiele systemów wbudowanych jest istotnie przekształcanych i to nie w dobry sposób, który skutkuje niezawodnym produktem. Zamiast tego są budowane z myślą o wygodzie projektowania, co może zaszkodzić firmom, które je konstruują, a nawet samym konsumentom. Oczywiście nadmierna inżynieria może być subiektywna. Jednak należy mieć nadzieję, że ten post pomoże i pozwoli zatrzymać się oraz pomyśleć o tym, jak kreujemy swoje urządzenia. W cyklu projektowania jest wiele do zrównoważenia i dobrze byłoby, aby systemy były podbudowywane inżynierią, a nie zgadywaniem lub strachem.
Źródło: https://www.embedded.com/are-embedded-systems-overengineered/
Cool? Ranking DIY