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

Nowe układy PSoC6 dedykowane do Internetu Rzeczy

ghost666 06 Lis 2017 20:09 2877 9
  • Nowe układy PSoC6 dedykowane do Internetu Rzeczy
    Układy z rodziny PSoC - Programmable System on a Chip - cieszą się dosyć dużą popularnością już od wielu lat. Firma Cypress, produkująca te elementy, prezentowała już wiele PSoCy dedykowanych do konkretnych zastosowań - były układy do sterowania silnikami BLDC itp. Teraz przyszedł czas na Internet Rzeczy. Cypress zaprezentował nowy zestaaw uruchomieniowy -
    CY8CKIT-062-BLE - dla platformy PSoC6, dedykowany do IoT. Obecnie dostępny jest on w przedsprzedaży, ale w ciągu kilku tygodni powinien trafić do dystrybutorów.

    Internet Rzeczy (IoT) jest gorącym tematem w przemyśle elektronicznym i nie ma się co dziwić, że firmy takie jak Cypress chętnie spoglądają w stronę tego typu aplikacji. Nie oznacza to oczywiście, że prezentowany układ nie sprawdzi się w innych rolach, jednakże jego projektanci skupili się głównie na implementacji funkcji potrzebnych w systemie Internetu Rzeczy. Oczywiście, dzięki ogromnej elastyczności układów PSoC doskonale sprawdzą się one w szeregu innych aplikacji.

    Moc Internetu Rzeczy

    Gdy mówimy o mocy w kontekście aplikacji IoT możemy mieć na myśli dwie istotne rzeczy:

    * Moc zasilania pobieraną przez układ. Im mniejsza ona jest, tym wydajniej i dłużej nasze urządzenie pracować będzie pomiędzy wymianami baterii lub ładowaniem akumulatorów.
    * Moc obliczeniową procesora, czyli to jak szybko CPU w urządzeniu może przetwarzać dane. Ma to ogromny wpływ na funkcjonalność projektowanego urządzenia.

    Te dwie kategorie są zazwyczaj ze sobą silnie związane - im większa moc obliczeniowa danego układu tym większy będzie pobór prądu z zasilania. W większości urządzeń konieczny jest kompromis, aby osiągnąć zadowalającą moc - tak pobieraną z zasilania jak i przetwarzania danych w CPU.

    Nowoczesnym sposobem rozwiązania tego 'konfliktu' jest dodanie drugiego, mniejsze procesora do systemu. Nie jest to może intuicyjnie najlepsze rozwiązanie, ale w większości systemów, np. w telefonach komórkowych z procesorami ARM, doskonale się sprawdza. Jest to tak zwana architektura big.little. W tego rodzaju procesorze dwa rdzenie - duży i mały - aktywowane są w zależności od obciążenia. Zazwyczaj uruchomiony jest mniejszy z nich, który charakteryzuje się mniejszym poborem mocy. Gdy potrzebna jest większa moc obliczeniowa, to aktywowany jest większy rdzeń - wiąże się to z poborem większego prądu z zasilacza, ale tylko chwilowo, gdy prowadzone są wymagające obliczenia.

    W nowych układach PSoC6 wykorzystano właśnie tego rodzaju architekturę, ale z pewnymi zmianami. W systemie tym zaimplementowano dwa równolegle działające rdzenie ARM: Cortex M4 z procesorem zmiennoprzecinkowym oraz mniejszy rdzeń Cortex M0+. Ten drugi, jakkolwiek pobierający o wiele niższą moc niż M4, nie jest jakoś szczególnie wolny - układy PSoC z rodziny 4 były wyposażone tylko w taki rdzeń i doskonale radziły sobie ze skomplikowanymi aplkacjami.

    Ogromną zaletą rozwiązania Cypressa, w porównaniu do architektury big.little jest fakt, że oba procesory mogą być aktywowane równocześnie. Dzięki temu można prowadzić na nim równocześnie dwie operacje, co czyni z wbudowanego w ten system procesora prawdziwie wielordzeniowy CPU, aczkolwiek nietypowy, bo asymetryczny.

    Bezpieczeństwo w IoT

    Niektórzy mogą się nie zgadzać, ale największym wyzwaniem w zakresie układów Internetu Rzeczy jest bezpieczeństwo danych. Cyberataki na ten sektor są niezwykle częste - nie ma miesiąca w którym nie okazuje się, że dokonano ataku na który sektor w ogóle nie był przygotowany. Jest w tym zakresie wiele do poprawy i jest to sprawa bardzo ważna, jakkolwiek przez niektórych lekceważona z uwagi na częste stosowanie systemów IoT w niewielkich i mało ważnych układach. Szczoteczka do zębów podpięta do sieci może nam sugerować że mycie zębów przez 30 sekund jest dostatecznie, ale pamiętajmy - urządzenia IoT to nie tylko drobny sprzęt tego rodzaju. Jeśli ta szczoteczka wyposażona byłaby w mikrofon to problem zaczyna już robić się poważny.

    W sektorach, gdzie bezpieczeństwo jest ważne, a wycieki danych kosztują operatorów miliony - np. w sektorze dekoderów telewizyjnych - wiele inwestuje się bezpieczeństwo. Wszystkie dane, we Flashu jak i w pamięci RAM, powinny być cały czas zaszyfrowane - nie można dopuścić do tego, aby jakiekolwiek niezaszyfrowane dane dostępne były poza mikrokontrolerem. Z tego też powoduje procesory na ten rynek projektowane są raczej na zamówienie, a ich dokładne specyfikacje ukryta za zasłonką umów NDA pomiędzy ich producentami a producentami rzeczonych dekoderów lub innych urządzeń.

    Możemy zaobserwować pewne podobieństwa w tym zakresie z układami PSoC6, których architektura posiada szereg podobieństw do tych bezpiecznych procesorów, o jakich mowa powyżej.

    W układach PSoC61, 62 oraz 63 zaimplementowano moduł kryptograficzny, który pozwala na zabezpieczenie kodu programu przez odczytem, a także uruchomieniem bez poprawnego klucza. Procesor ma jednorazowego zapisu bity konfiguracyjne, które mogą zostać zapisane tak, że konieczne jest podanie klucza do bezpiecznego załadowania systemu. Dzięki temu aplikacje są w pełni zabezpieczone przed uruchomieniem fałszywego kodu.

    Zintegrowany w systemie poczwórny port SPI pozwala na operacje wykonywania-kodu-na-miejscu bez narażania bezpieczeństwa procesora i aplikacji na złamanie. W układach PSoC62 i 63 zaimplementowano dodatkowo sprzętowe akceleratory kryptograficzne, aby zapewnić wysoką wydajność środowiska przy zachowaniu wysokiej wydajności procesora.

    Zestaw uruchomieniowy z CY8CKIT-062-BLE

    Tak jak wszystkie zestawy uruchomieniowe CY8CKIT, także i ten dostarczany jest w eleganckim pudełku zamykanym na cztery magnetyczne zapięcia.

    Nowe układy PSoC6 dedykowane do Internetu Rzeczy


    Wewnątrz zestawu znajdziemy:

    * Instrukcję
    * Kabel USB-A - USB-B
    * Płytkę uruchomieniową PSoC z Bluetooth, zasilaną poprzez złącze USB-C
    * Wyświetlacz CY8CKIT-28-EPD o przekątnej 2,7 cala, oparty o ekran w technologii cyfrowego papieru.
    * Dongle CY5677 CySmart do BLE 4.2.
    * Kabelki połączeniowe do wykonywania zworek w systemie.

    Płytka PSoC BLE wyposażona jest w złącza kompatybilne z PMOC a także z shieldami Arduino, co pozwala na szybkie prototypowanie w oparciu o szeroką gamę dostępnych modułów rozszerzeń. Dzięki temu modułowi można z łatwością rozszerzyć nasz projekt oparty o Arduino i wprowadzić go na zupełnie nowy, wysoki poziom.

    W zestawie znajdziemy nawet dongle Bluetooth, który po podłączeniu do komputera pozwala nam łatwo debugggować naszą aplikację i sprawdzić czy nasz system działa poprawnie. To bardzo istotne, aby korzystać z tego dongla, gdyż nawet jeżeli nasz komputer jest wyposażony w interfejs bluetooth niekoniecznie musi to być BLE 4.2, z którym to standardem najlepiej współpracuje płytka uruchomieniowa do PSoC6. Wyposażenie zestawu w taki interfejs na USB pozwala łatwo testować aplikację, gdyż daje pewny i poprawnie działający interfejs Bluetooth Low Energy w naszym komputerze.

    Bluetooth Low Energy

    Interfejs BLE jest jednocześnie bardzo prosty i skomplikowany. Cały system orbituje wokół profili GATT, które są bazą danych, która opisuje w jaki sposób dane mają być transmitowane do i z danego urządzenia. Wykorzystanie tych profili sprawia, że implementacja komunikacji po BLE to kwestia kilku chwil, ale jeżeli chcemy wyjść poza ramy definiowane przez GATT przygotować musimy się na o wiele więcej pracy.

    Jeśli chcecie dowiedzieć się więcej o BLE na PSoC to napisano sporo na temat wykorzystania tego interfejsu z układami z rodziny PSoC4. Jako że są to bardzo podobne platformy to wiedza ta pozostała cały czas aktualna.

    Zasilanie poprzez USB-C

    USB-C może być problematyczne, jeśli chodzi o kompatybilność, w szczególności jeśli chodzi o dostarczanie mocy zasilania. Aby nie wgłębiać się w szczegóły koniecznie trzeba wspomnieć o fakcie, że istnieją trzy standardy stosowalne do USB-C: PD1, PD2 oraz PD3. Zanim zaczniemy transfer danych musimy skonfigurować odpowiedni profil zasilania itp.

    Na szczęście w nowych płytkach uruchomieniowyh Cypressa zaimplementowano dobry kontroler zasilania - CYPD3126, który jest częścią rodziny układów mocy CCG3, które wspierają wiele różnych trybów zasilania układów.

    Układy PSoC są szczególne...

    Cały czas musimy pamiętać, że układy PSoC to nie jest zwykły mikrokontroler - w układzie tym oprócz rdzenia ARM zaimplementowano układ programowalny (FPGA/CPLD) i analogowy front-end pomagający w pomiarach wartości analogowych itp. Układy z rodzony PSoC6 dostępne są w tych samych wariantach w jakich dostępne były układy z rodzin PSoC4 i 5. Dodatkowo, najmocniejsze z nowych układów dostarczają na prawdę zauważalnej mocy obliczeniowej, którą dodatkowo wesprzeć można UDB - wewnętrznym blokiem FPGA. Można go wykorzystać do stworzenia dodatkowych timerów, rejestrów przesuwnych i wielu innych bloków, których może nam zbraknąć w samym procesorze.

    Analogicznie jak FPGA dla sekcji cyfrowej, tak zintegrowany analogowy front-end dostarcza możliwości konfigurowalnego przetwarzania sygnałów analogowych, co może być niezwykle istotne w wielu aplikacjach. Sekcja analogowa może pomóc w obsłużeniu funkcji takich jak sensory pojemnościowe i inne.

    Włączamy zasilanie



    Jak widać na wideo, układ dostarczany jest z wgranym programem demonstracyjnym. W aplikacji tej wykorzystany jest tak sensor dotykowy jak i wyświetlacz e-ink, które dostarczane są wraz z zestawem Cypressa. Źródła programów demonstracyjnych także dostępne są wraz z płytką rozwojową. Po zainstalowaniu plików do obsługi zestawu uruchomieniowego oraz najnowszego PSoC Creatora możemy bez problemu uzyskać dostęp do tych kodów źródłowych.

    Kody źródłowe przykładowych projektów są bardzo czytelnie napisane. Wszystko znajduje się w osobnym pliku, co czyni powtórne wykorzystywanie kodu bardzo prostym. Przyjrzyjmy się źródłom jakie dostarcza Cypress.

    Kod źródłowy z pliku cm0p:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod źródłowy z pliku cm4:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W oprogramowaniu dla tego układu PSoC są dwa pliki źródłowe zawierające funkcję main - cm4 i cm0p. Dlaczego? Z powodu implementacji dwóch rdzeni - ARM Cortex M4 oraz ARM Cortex M0+. Jeden main chodzi na jednym, a drugi na drugim procesorze. Jeśli uruchomimy powyższy projekt na układzie, to rdzeń M0+ będzie pracował, a drugi, większy z rdzeni nie będzie nic robił.

    Tego rodzaju architektura jest ogromną zaletą układów PSoC6. Dedykowane są one do zastosowań wymagających sporej mocy obliczeniowej, gdzie zwykły rdzeń M0+ mógłby sobie nie poradzić. Drugi projekty dokładnie pokazuje zalety takiego rozwiązania:

    Plik cm0p:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    i tak dalej...

    Jeśli zajrzymy do pliku źródłowego screen_contents.c znajdziemy w nim obsługę wyświetlacza e-ink oraz zapisane logo Cypressa, które będzie wyświetlane na tym ekranie.

    Dodatkowo, warto zauważyć wykorzystanie w źródłach słowa kluczowego const. Jeśli mamy poprawnie skonfigurowany kompilator to skompiluje on program w taki sposób, że zmienne opisane tym słowem kluczowym zapisywane będą nie w pamięci SRAM układu - której nie ma tak dużo - a w pamięci Flash. To bardzo istotne, bo pozwala na oszczędzanie pamięci RAM w układzie, której w słabszych członkach rodziny PSoC6 jest 'zaledwie' 512 kB.

    Podsumowanie

    Jak w większości projektów Cypressa, tak i te płytki uruchomieniowej stanowią bardzo dobre źródło do nauki wykorzystywania układów PSoC6 i stanowią doskonały punkt wyjscia do tworzenia własnych projektów wykorzystujących zalety architektury tych układów - bezpieczeństwo, BLE, rozbudowaną sekcję analogową i cyfrową etc. Prezentowany zestaw uruchomieniowy jest doskonałą metodą na przetestowanie i zrozumienie działania wszystkich tych modułów.

    Źródło: https://www.rs-online.com/designspark/psoc6-an-iot-enhanced-powerhouse

    Fajne! Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9500 postów o ocenie 7535, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • flexghzflexghz
  • #2
    tronics
    Poziom 37  
    Takie hybrydy CM0+CM4 robi też atmel i NXP. Fajnie by było gdyby pojawiły się tutoriale jak to rzeczywiście wykorzystać na forum, bo zastosowania są chyba dość specyficzne...
  • flexghzflexghz
  • #3
    ghost666
    Tłumacz Redaktor
    tronics napisał:
    Takie hybrydy CM0+CM4 robi też atmel i NXP. Fajnie by było gdyby pojawiły się tutoriale jak to rzeczywiście wykorzystać na forum, bo zastosowania są chyba dość specyficzne...


    CM0 i CM4 to jedno, PSoC to trochę więcej. W takim układzie mamy MCU + FPGA + układy analogowe.

    Tak wygląda schemat blokowy PSoC pierwszej generacji:

    Nowe układy PSoC6 dedykowane do Internetu Rzeczy


    Można tam zrobić wiele ciekawych rzeczy w blokach analogowych, np. wzmacniacz pomiarowy o regulowanym wzmocnieniu plus bufor do ADC.
  • #4
    tronics
    Poziom 37  
    Wiem jak wygląda PsoC bo mam PSoC4 (CM0) :) Bardzo przyjemne układy, bardzo wygodne, szkoda że to obarczone jednak wyższą ceną (co powoduje, że większość zachwalanych zalet jak dopasowanie sygnałów by uprościć layout jednak w zderzeniu z rzeczywistością przestaje być taką zaletą). Warto dodać, że wiele połączeń bloków funkcjonalnych można zrealizować BEZ KODU, tj. wykorzystując graficzny edytor. Trochę szkoda, że bloków funkcjonalnych "gotowców" jednak nie ma aż tak dużo jak by się chciało, ale tak czy siak jest przyjemnie, szybko i łatwo. Ciekawostka - PSoC3 miał rdzeń kompatybilny z '51 :)
  • #5
    ghost666
    Tłumacz Redaktor
    tronics napisał:
    Wiem jak wygląda PsoC bo mam PSoC4 (CM0) :) Bardzo przyjemne układy, bardzo wygodne, szkoda że to obarczone jednak wyższą ceną (co powoduje, że większość zachwalanych zalet jak dopasowanie sygnałów by uprościć layout jednak w zderzeniu z rzeczywistością przestaje być taką zaletą). Warto dodać, że wiele połączeń bloków funkcjonalnych można zrealizować BEZ KODU, tj. wykorzystując graficzny edytor. Trochę szkoda, że bloków funkcjonalnych "gotowców" jednak nie ma aż tak dużo jak by się chciało, ale tak czy siak jest przyjemnie, szybko i łatwo. Ciekawostka - PSoC3 miał rdzeń kompatybilny z '51 :)


    PSoC3 i PSoC4 są fajne - właśnie, przez to że rdzeń jest czymś normalnym i popularnym. Ja bawiłem się kiedyś PSoCem jedynką - fajnie, fajnie, ale ten Cypressowy rdzeń M8C to ból ;).

    W sumie chętnie bym pobawił się znowu nowymi PSoCami, polecasz jakieś tanie płytki uruchomieniowe? jak to się obecnie programuje? napisz więcej o swoich doświadczeniach z tymi układami :).
  • #6
    KeinXor
    Poziom 24  
    Do pierwszego kontaktu z rodziną układów PsoC polecam płytkę CY8CKIT-059
    http://www.cypress.com/documentation/developm...oc-5lp-prototyping-kit-onboard-programmer-and na płytce mamy zintegrowany programator/debugger

    Cypress udostępnia genialne środowisko „PSoC Creator” http://www.cypress.com/products/psoc-creator-integrated-design-environment-ide
    Działa bardzo sprawnie a przede wszystkim responsywnie czego nie można powiedzieć o tworach powstałych na bazie eclipse.
  • #7
    tronics
    Poziom 37  
    Jest dużo tutoriali na YT omawiających jak dane rzeczy zrobić w PSoC Creator... świetnie te lekcje wyglądają i można nauczyć się jak się poruszać w środowisku oraz jak wykorzystywać możliwości PSoC. Zrobienie np. regulatora PID jest w tej sytuacji stosunkowo łatwe.
  • #8
    logos
    Poziom 11  
    Popieram kolegę KeinXor . A kit CY8CKIT-062-BLE był dostępny w Mouser.com pod koniec października . Następna przewidywana dostawa 27 listopada .
  • #9
    ghost666
    Tłumacz Redaktor
    logos napisał:
    Popieram kolegę KeinXor . A kit CY8CKIT-062-BLE był dostępny w Mouser.com pod koniec października . Następna przewidywana dostawa 27 listopada .


    Przekonaliście mnie :D właśnie zamówiłem sobie CY8CKIT-059. Co bardzo mnie cieszy da się z pomocą środowiska Cypressa generować projekty do Keila w którym normalne najchętniej pracuję.

    Czy są jakieś biblioteki HAL do tych układów? czy trzeba wszystko samodzielnie pisać?
  • #10
    KeinXor
    Poziom 24  
    Zacznę od ostatniego pytania...
    ghost666 napisał:

    czy trzeba wszystko samodzielnie pisać?

    Nie, wszystko skonfigurujemy ze środowiska PSoC Creator.

    ghost666 napisał:

    Czy są jakieś biblioteki HAL do tych układów?

    Wybierając w środowisku konkretną architekturę PsoC 3/4/5/6 zostaną wygenerowane i dołączone odpowiednie zestawy biblotek.