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.
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 źródłowy z pliku cm4:
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:
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
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.
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 / C++
Kod źródłowy z pliku cm4:
Kod: C / C++
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 / C++
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