Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

PSoC 6 – Ein Kraftpaket für IoT

Main_9b5be531d6b2957d4ec44ebe5dcd90a45b2457f5.jpg

Diejenigen, die unsere früheren Beiträge gelesen haben, werden merken, dass wir über die PSoC-Produktlinie, sei es ein BLDC-Motor-Kit oder die neugestaltete Elektronik des Lochstreifenlesers, nur gute Dinge zu sagen hatten. Wir haben in der Vergangenheit durchaus Gefallen an der Verwendung von PSoC ICs gefunden.

Als uns die Gelegenheit geboten wurde, einen Blick auf das PSoC 6 CY8CKIT-062-BLE Kit zu werfen, ergriffen wir sie. Uns wurde ein Early Access Program (EAP)-Kit bereitgestellt, das sich jedoch sehr nah am Standard-Kit orientiert, das innerhalb von ein paar Wochen ab dem Zeitpunkt des Schreibens des Beitrags erhältlich sein wird.

IoT-Fokus

Da es sich um das heißeste Thema handelt, dürfte es nicht überraschen, dass das Internet der Dinge (IoT) im Fokus des neuen PSoC-Sortiments steht. Das bedeutet nicht, dass das PSoC6 nicht für andere Rollen geeignet wäre, aber es gibt einige wichtige Anpassungen, die es von früheren Versionen abgrenzen wird, die auf IoT-Endpunkt-Anwendungen abzielen. Aufgrund der Flexibilität der PSoC-Familie werden diese Spezialisierungen nahezu mit Sicherheit auf anderen Gebieten zur Anwendung kommen.

IoT-Leistung

Leistung hat für IoT-Endpunkte zweierlei Bedeutungen:

  • Die erste ist die Leistung, angegeben in Watt, die signifikante Auswirkungen auf die Akkulebensdauer des Geräts hat.
  • Die zweite ist die Rechenleistung, die in der CPU-Geschwindigkeit angegeben wird und die eine signifikante Auswirkung auf das Benutzererlebnis hat.

Diese Funktionen schließen sich in der Regel gegenseitig aus, und mehr CPU-Geschwindigkeit bedeutet in der Regel mehr Leistungsverbrauch. Dies endet üblicherweise in einem Kompromiss zwischen Geschwindigkeit und Leistungsverbrauch.

Eine moderne Methode diesem Problem zu begegnen, ist das Hinzufügen einer kleineren CPU. Dies mag zwar auf den ersten Blick nicht einleuchten, ist aber in vielen Bereichen des CPU-Designs gängige Praxis. Ein geläufiges Beispiel wäre das neue Samsung Exynos 9 (Galaxy Note 8 usw.), das die neue ARM big.little-Architektur verwendet, die es der CPU ermöglicht, von CPUs mit hoher Rechenleistung auf CPUs mit niedriger Rechenleistung spontan zu wechseln, wenn Aufgaben weniger Rechenleistung erfordern.

Die neue PSoC 6 Architektur zielt darauf ab, eine dritte Option anzubieten, womit der Spagat gelingt. Der PSoC 62 verfügt über einen ARM Cortex-M4 mit Gleitkommaeinheit und einen zweiten, rechenschwachen „Low Power“-M0+. Ein zu beachtender Punkt ist, dass die niedrige Rechenleistung aus gutem Grund in den Angeboten steht: der M0+ hat es in sich: Er ist die CPU im PSoC 4-Sortiment, die für einige Anwendungen für sich allein mehr als genug ist. Im Gegensatz zur big.little-Architektur sind beide Kerne parallel verfügbar und können sich so die Arbeitslast untereinander aufteilen. Wie bei der big.little-Architektur kann das System die CPU mit höherer Rechenleistung jedoch abschalten und auf die CPU mit niedrigerer Rechenleistung wechseln, wenn Aufgaben weniger Rechenleistung erfordern. Durch die Implementierung der Architektur wird der PSoC 6 auf diese Weise zu einem wahren, asymmetrischen Mehrkernprozessor.

IoT-Sicherheit

Manche würden behaupten, die Sicherheit ist bis dato einer der größten Problembereiche beim IoT. Datendiebstahl ist auf dem Vormarsch und kaum ein Monat vergeht, ohne dass eine große Firma wegen eines weiteren Verstoßes gegen die Datensicherheit in den Schlagzeilen ist. Aus diesen Gründen ist IoT-Sicherheit etwas, das definitiv verbessert werden könnte. Der Gedanke an eine intelligente Zahnbürste, die der Welt erzählt, dass wir nur 30 Sekunden und nicht eine ganze Minute Zähne putzen, klingt nicht beängstigend, aber IoT-Geräte sind nicht auf Zahnbürsten beschränkt. Wenn Ihr Gerät ein Mikrofon hätte, könnten die Dinge noch viel ernster werden!

In der Vergangenheit wurde am Set-Top-Box-Design gearbeitet, wo ein Großteil des Software- und Hardware-Designs sicherheitsrelevant ist und Möglichkeiten für Hackerangriffe verhindert. Verstöße kosten Millionen und es wurde jede Anstrengung unternommen, um sicherzustellen, dass Gefährdungen selten waren. Die primäre Verteidigungsstrategie bestand darin, alles im Flash- und Arbeitsspeicher zu verschlüsseln – zu keinem Zeitpunkt sollten in einem modernen Design unverschlüsselte Daten zum Vorschein kommen. Wie Sie sich vielleicht vorstellen können, machte dies die CPUs zu diesem Zweck etwas individuell und geheim entsprechend der Geheimhaltungsvereinbarung.

Geht man weiter ins Jahr 2017 und wirft man einen Blick auf die PSoC 6-Architektur, so gibt es doch etliche Ähnlichkeiten zu den CPUs von früher.

Die Architektur der PSoC 61, 62 und 63 umfasst ein Kryptografiemodul, damit Code so gesichert wird, dass er ohne den richtigen Schlüssel nicht gelesen (oder gebootet) werden kann. Die CPU hat einmalige Sicherungen, sodass diese Funktion in den Chip „gebrannt“ werden kann und einen Secure Boot erzwingt. Dies verhindert, dass das System gehackt und schädlicher Code ausgeführt wird. Der Quad SPI-Erweiterungs-Port ermöglicht den Execute-in-place-Vorgang, der ohne eine kryptografische Engine jeden integrierten Sicherheitsmechanismus vollständig umgehen würde. Bei der PSoC 62 und 63 wurde dies berücksichtigt und es stehen Kryptografie-Beschleunigerkarten zur Verfügung, um sicherzustellen, dass sich Execute-in-place nicht auf die vertraute Umgebung oder Leistung auswirkt.

Das CY8CKIT-062-BLE-Kit (EAP-Kit in unserem Fall)

Wie bei allen Cypress CY8CKITs ist es ansprechend aufbereitet und wird mit einer magnetisch verschließbaren Aufbewahrungsbox geliefert (mit mindestens 4 Neodym-Magneten).

contents_e8ef65c909f423b2bb8e440520885ded64ccf06e.jpg

Im Inneren des Kits befinden sich:

  • Anleitung/Schnellstartübersicht
  • USB-Kabel Typ A auf Typ C
  • PSoC-BLE-dev-Platine (Versorgung über USB-C)
  • CY8CKIT-28-EPD 2,7 Zoll E-ink Display
  • CY5677 CySmart BLE 4.2 Dongle
  • Verschiedene Überbrückungskabel

Das PSoC-BLE-Kit verfügt sowohl über PMOD und Arduino Shield-Verbindungen, um eine zügige Prototypenerstellung zu ermöglichen und Ihr Arduino Projekt auf die nächste Stufe zu heben. Ist dies nicht genug, so enthält es, genauso wie das PSoC 4-Kit (CY8CKIT-042-BLE), alles für den Einstieg Erforderliche, darunter das Äquivalent des Spülbeckens – einen Bluetooth Dongle, damit Sie Ihr Gerät korrekt debuggen können. Ihr Laptop hat möglicherweise Bluetooth, aber es ist sehr wahrscheinlich, dass er nicht BLE-kompatibel ist, weshalb Cypress ein bekanntes und fehlerfrei arbeitendes BLE-Gerät anbietet.

Wir müssen an dieser Stelle ehrlich sein und zugeben, dass unser PSOC 4-Kit weniger genutzt wurde als der mitgelieferte CY5677 CySmart BLE-Dongle, da er sich als ein sehr praktisches Debugging-Tool für alle BLE-Geräte und nicht nur für Cypress Geräte erwiesen hat!

BLE

Wir haben über BLE bereits im Thunderboard Artikel gesprochen. Für diejenigen, die den Artikel verpasst haben, ist zu sagen, BLE ist kompliziert und einfach zugleich. Es dreht sich alles um GATT-Profile, die wie eine Datenbank dafür fungieren, wie die Daten an das Gerät und von selbigem übertragen werden sollen. Hält man sich an diese Profile, ist die Implementierung eines einfachen Herzfrequenzsensors in ein paar Stunden erledigt. Bewegt man sich außerhalb der Grenzen eines GATT-Profils, ist viel mehr Arbeit nötig.

Wenn Sie mehr über BLE erfahren möchten: Das PSoC4 Kit ist mit ausgezeichneten Tutorials erschienen, und diese sind immer noch für die BLE-Aspekte von PSoC6 relevant.

Versorgung über USB-C

USB-C kann ein Sorgenkind sein, wenn es auf Kompatibilität, insbesondere PD (Power Delivery = Leistungsentfaltung) ankommt. Ohne zu sehr ins Detail zu gehen, es gibt sehr viele Konfigurationen und Normen, die für USB-C gelten: PD1, PD2 und nun PD3. Damit gilt es sich zuerst zu beschäftigen, bevor wir zum Übertragen von Daten und zu den Anforderungen für High-Speed-Switching oder AUX-Modus kommen….

All dies läuft auf einen grundsoliden PD-Controller hinaus, und das Cypress-Kit wird geliefert mit einem CYPD3126, Teil der CCG3-Familie von Power Delivery ICs, die vollständig ausgestattet sind (PD3 und selbst Billboard-Support (AUX-Modus)). Wenn er wie CCG2 funktioniert, erwarten wir nur Gutes.

PSoC ist speziell

Wenn Sie entweder den BLDC- oder den neulichen Artikel über Lochstreifenleser gelesen haben, wissen Sie, PSoC ist nicht nur ein Micro-, es ist ein FPGA/CPLD- und Analog-Front-End für den Bootvorgang. PSoC6 verfügt über Varianten, die alle Annehmlichkeiten von PSoC 4 und 5 unterstützen, und High-End-Geräte; diese sind daher wirklich leistungsstark. Bei digitalen Designs kann dank UDB (interner FPGA) eine deutliche Einsparung der Bauteile erreicht werden. Benötigen Sie weitere Timer oder Schieberegister, kein Problem!

Die integrierte analoge Fabric macht das gleiche für die analoge Domain. Es ist durchaus möglich, dass man bei vielen Designs nahezu keine andere Hardware benötigt. Dazu zählen Probleme mit Cap Touch oder andere solche analogen Domains.

Anschluss an den Netzstrom

Wie man im Video sehen kann, wird das Gerät vorprogrammiert mit einer der Demos geliefert. In der Demo sind sowohl Touch- als auch E-Ink aktiviert, und wie bei allen Cypress Kits, wird der gesamte Quellcode zur Verfügung gestellt.

Nach Installation der Kit-Dateien und des neuesten PSoC Creator können wir die Demos öffnen und einen schnellen Blick unter die Haube werfen.

Das Öffnen der E-INK Demo sollte den früheren Nutzern des PSoC Creator bekannt vorkommen, da wir sie für das PSoC-BLDC-Kit-Beispiel verwendet haben.

Nach Durchsuchen des Codes haben wir die Quelldateien schnell gefunden. Es gibt separate Dateien für alles, was die erneute Verwendung des Codes wesentlich vereinfacht.

/* Header file includes */
#include <project.h>
#include "touch.h"
#include "screen.h"

/*******************************************************************************
* Function Name: int main()
********************************************************************************
*
* Summary: 
* Main function that continuously reads touch information and updates the screen
* accordingly
*
* Parameters:
* None
*
* Return:
* int
*
* Side Effects:
* None 
*
*******************************************************************************/
int main(void)
{
  /* Variable used to store the touch information */
  touch_data_t touchData;

  /* Enable global interrupts */
  __enable_irq();

  /* Initialize the display, touch detection and low power modules */
  InitScreen();
  InitTouch();

  for (;;)
  {
    /* Read the touch information from the CapSense buttons and the slider */
    touchData = GetTouch();

    /* Update the screen according to the touch input */
    UpdateScreen(touchData);
  }
}

/* [] END OF FILE */

cm0p_code

/* Header file includes*/
#include <project.h>

/*******************************************************************************
* Function Name: int main()
********************************************************************************
*
* Summary: 
* Empty function : Code execution will not happen as the Cortex-M4 is not enabled
  by the Cortex-M0+ in this project.
*
* Parameters:
* None
*
* Return:
* int
*
* Side Effects:
* None 
*
*******************************************************************************/
int main(void)
{
}

/* [] END OF FILE */

cm4_code

Im Gegensatz zu früheren PSoC-Beispielen gibt es zwei „Haupt“-Dateien: main_cm4 und main_cm0s. M4 und M0+ sind die beiden Kerne. Für das Beispiel wurden die Dateien geöffnet, der gesamte Code wurde in der cm0p-Datei ausgeführt, sodass der M4-Kern inaktiv war. Ein weiteres Beispiel der Rechenleistung des M0+ für sich genommen. Die PSoC6-Produkte richten sich an Anwendungen mit besonders hohen Anforderungen, in denen sich typische CPUs schwer tun würden.

/* Array that stores the text pages */  
char const textPage [TOTAL_TEXT_PAGES][TEXT_PAGE_CHARACTER_SIZE] =
{  
  /* Pages of "PSoC 6 MCU FEATURES" menu item */
  /* Page 1 */
  { 
  "PSoC 6 MCU FEATURES (Page 1 of 8)"\
  "                 "\
  "CPU Subsystem:          "\
  "150-MHz ARM Cortex-M4 CPU with  "\
  "single-cycle multiply (Floating "\
  "Point and Memory Protection Unit)"\
  "                 "\
  "100-MHz Cortex M0+ CPU      "\
  "                 "\
  "Two DMA controllers with sixteen "\
  "channels each          "\
  "                 "\
  },
  
  /* Page 2 */
  { 
  "PSoC 6 MCU FEATURES (Page 2 of 8)"\

etc...

In der screen_contents.c-Datei können wir die E-Ink Display Dateien sehen, einschließlich des Cypress Artwork.

Ein interessanter Punkt, der genannt werden muss, ist, dass mit der richtigen Einrichtung des Compilers die Verwendung der „const“-Datei bedeutet, dass diese Daten im Flash gespeichert werden und keinen SRAM verbrauchen, was wichtig ist, wenn Sie nur 512 k RAM in den kleineren Teilen haben.

Abschließende Worte

Wie üblich sind die Beispieldateien ein guter Start für jedes Projekt. Mit der Dual-Prozessor-Architektur von PSoC 6 ist er wahrscheinlich der einzige Chip, der für eine komplette IoT-Lösung erforderlich ist: Sicherheit, BLE, analog oder digital, er hat alles. Das CY8CKIT-62-BLE ist bis dato eines der komplett ausgestatteten Entwicklungskits und wird in Zukunft sehr nützlich werden.

Karl is a design engineer with over a decade of experience in high speed digital design and technical project leadership in the commercial electronics sector.