Emulation von Embedded Linux-Systemen mit QEMU

Emulation von Embedded Linux-Systemen mit QEMU

 

1. Einleitung

Die Entwicklung eingebetteter Software beruht auf eingebetteten Hardwaregeräten wie Entwicklungsboards, externen Modulgeräten usw., aber wenn die Debugging-Arbeit nichts mit Peripheriegeräten zu tun hat, kann nur das Kernel-Debugging mit QEMU simuliert werden, ohne Hardware zu kaufen.

Es ist für Linux- und Windows-Hosts und emulierte PowerPC-, ARM-, MIPS- und SPARC-Ziele verfügbar. QEMU verfolgt den Ansatz, eine minimale Übersetzungsschicht zwischen dem Host und dem Zielprozessor bereitzustellen. Der Host-Prozessor ist derjenige, auf dem der Emulator ausgeführt wird, und der Zielprozessor wird emuliert.

Im Folgenden finden Sie eine detaillierte Einführung in den Prozess zum Einrichten der QEMU-Entwicklungsumgebung.

 

2. Umgebung

2.1 Verwendete Umgebung

* Ubuntu-18.04.1

ODER:

* PC: Windows10

* Virtuelle Maschine: VirtualBox-5.18

* Virtuelles Betriebssystem: Ubuntu-18.04.1

* Simuliertes Entwicklungsboard: vexpres

2.2 Werkzeuge, die beim Einrichten der Umgebung verwendet werden

*qemu-4.2.0

* linux-4.14.172 (Linux-Kernel)

* u-boot-2017.05

* Busybox-1.31.1

* Arm-Linux-GNUEABI-GCC

Legen Sie alle zugehörigen Dateien in /home/joe/qemu . ab

3. Installieren Sie Cross-Compilation-Tools

# sudo apt install gcc-arm-linux-gnueabi

 

Überprüfen Sie, ob die Installation erfolgreich war

$ arm-linux-gnueabi-gcc -v

Verwenden von eingebauten Inspektionen.

COLLECT_GCC=arm-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabi/7/lto-wrapper

Ziel: arm-linux-gnueabi

Konfiguriert mit: ../src/configure -v –with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04′–with-bugurl=file:///usr

Gewindemodell: Posix

gcc-Version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)

 

4. Konfigurieren und kompilieren Sie den Linux-Kernel

4.1 Linux-Kernel herunterladen

Laden Sie die erforderliche Kernel-Version von www.kernel.org herunter.

Hier lade ich die relativ neueste langfristig unterstützte Kernel-Version linux-4.4.157 herunter

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.157.tar.xz  zum /qemu-Verzeichnis

4.2 Entpacken des Linux-Kernels

# tar xvjf linux-4.4.157.tar.xz

4.3 Linux-Kernel kompilieren

// Geben Sie das Kernel-Quelldateiverzeichnis ein

# cd linux-4.4.157

make CROSS_COMPILE=arm-linux-gnueabi-ARCH=arm vexpress_defconfig

make CROSS_COMPILE=arm-linux-gnueabi-ARCH=arm menuconfig

Wenn das Ausführen von menuconfig anzeigt, dass das ncurses-Paket fehlt, führen Sie einfach den folgenden Befehl aus, um es zu installieren)

$ sudo apt-get install libncurses5-dev

Rufen Sie die Menükonfiguration auf und nehmen Sie die folgenden Einstellungen vor

Kompilieren mit Cross-Toolchain

Generieren Sie nach erfolgreicher Kompilierung eine Kernel-Image-Datei unter dem Verzeichnis

arch/arm/boot, zImage und dtb können zur bequemen Verwendung in einen separaten Ordner kopiert werden

 

5. QEMU-Tools installieren

5.1 QEMU . installieren

* wget https://download.qemu.org/qemu-4.2.0.tar.xz.

* tar xvJf qemu-4.2.0.tar.xz

* CD-Qemu-4.2.0

5.2 Installieren Sie abhängige Pakete, bevor Sie QEMU konfigurieren

# apt installiere zlib1g-dev
# apt installiere libglib2.0-0 libglib2.0-dev
# apt installiere libsdl1.2-dev
# apt installiere libpixman-1-dev libfdt-dev

Um zu verhindern, dass die Dateien nach der Kompilierung unordentlich werden, erstellen Sie das Builder-Verzeichnis als Zwischenzielpfad für die Kompilierung.

QEMU konfigurieren, kompilieren und installieren.

5.3 Konfigurieren Sie QEMU, um alle Boards unter der Arm-Architektur zu unterstützen

#./configure-target-list = arm-soldmmu -audio-drv-list =

Wenn pixman fehlt, wenn die folgende Eingabeaufforderung erscheint,

Verwenden Sie sudo apt-get install libpixman-1-dev, um es zu installieren.

5.4 QEMU-Version anzeigen

5.5 Von QEMU unterstützte Entwicklungsboards anzeigen

5.6 QEMU . ausführen

# qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append „console=ttyAMA0“

ODER:

$pwd

/home/joe/qemu

# qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-.4.157/arch/arm/boot/zImage -dtb linux-4.4.157/arch/arm/boot/dts/vexpress-v2p-ca9. dtb -nographic -append „console=ttyAMA0“

Um qemu besser testen und starten zu können, können Sie das Startskript start.sh erstellen und dem Skript die Berechtigung erteilen, chmod +x start.sh auszuführen

 

#! / Bin / bash

 

qemu-system-arm \

-M vexpress-a9 \

-m 512M \

-kernel /home/joe/jemu/linux-4.4.157/arch/arm/boot/zImage \

-dtb /home/joe/jemu/linux-4.4.157/arch/arm/woot/dts/vexpress-v2p-ca9.dtb \

-nografisch \

- "console=ttyAMA0" anhängen

 

6. Erstellen Sie ein Root-Dateisystem

Verwenden Sie busybox, um ein einfaches Root-Dateisystem zu erstellen.

6.1 Busybox-Tool herunterladen

Laden Sie busybox von https://busybox.net/downloads/ herunter

# wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2

# tar xjvf busybox-1.31.1.tar.bz2

# cd busybox-1.31.1

# defconfig erstellen

# make CROSS_COMPILE=arm-linux-gnueabi-

# Installieren Sie cross_compile = arm-linux-gnuebi-

Die folgenden Informationen werden angezeigt, um anzuzeigen, dass die Installation erfolgreich war.

Nach Abschluss der Installation wird standardmäßig das Verzeichnis ./_install für die generierte Zieldatei verwendet.

 

6.2 Root-Dateisystem generieren

6.2.1 Busybox kompilieren und installieren

# mkdir rootfs

# sudo cp -r _install/* rootfs/

6.2.2 Glibc-Bibliothek hinzufügen, Loader und dynamische Bibliothek im Root-Dateisystem hinzufügen

# sudo cp -r _install/* rootfs/

# sudo cp -p / usr / arm-linux-gnueabi / lib / * rootfs / lib /

6.2.3 Erstellen Sie 4 tty-Endgeräte (c steht für Zeichengerät, 4 ist die Hauptgerätenummer und 1~4 sind die Nebengerätenummern)

 

6.3 SD-Karten-Dateisystem-Image erstellen

6.3.1 Ein leeres SD-Karten-Image erstellen

# DD if = / dev / null von = rootfs.ext3 BS = 1M Anzahl = 32

6.3.2 SD-Karte als exts-Dateisystem formatieren

# mkfs.ext3 rootfs.ext3

6.3.3 Rootfs auf SD-Karte brennen

# sudo mount -t ext3 rootfs.ext3 /mnt -o Schleife

# sudo cp -rf rootfs/* /mnt/

# sudo umount /mnt

 

7. Überprüfen Sie

7.1 Qemu . starten

Führen Sie den folgenden Befehl aus, um zu testen, ob der kompilierte Kernel erfolgreich ausgeführt werden kann

# sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel ~/qemu/zImage –dtb ~/qemu/vexpress-v2p-ca9.dtb -nographic -append „console=ttyAMA0“

Oder mit Skript:

 

Im obigen Test meldet der Kernel Panik, was darauf hindeutet, dass uns das Root-Dateisystem fehlt.

Das obige Problem ist auf das Busybox-Tool zurückzuführen, das in der x86-Umgebung generiert wurde.

Wir haben make install bei der Installation von busybox verwendet, also sollten Sie verwenden

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-install

 

Das Kompilierungstool generiert das Busybox-Tool, das von der Arm-Plattform verwendet wird

# Datei rootfs/bin/busybox

rootfs/bin/busybox: ELF 32-bit LSB Executable, ARM, EABI5 Version 1 (SYSV), dynamisch gelinkt, Interpreter /lib/ld-, für GNU/Linux 3.2.0, BuildID[sha1]=cbcd33b8d6c946cb19408a5e8e714de554c87f52, stripped

 

7.2 Erneut verifizieren

Nun hat Qemu den Linux-Kernel gestartet und das Dateisystem erfolgreich gemountet und kann mit einfachen Funktionen über das serielle Terminal mit dem System interagieren. Das Problem, dass /etc/init.d/rcS im Druckprozess nicht ausgeführt werden kann, Sie müssen nur die Datei /etc/init.d/rcS hinzufügen. Der Inhalt der Datei kann eine Prompt-Anweisung sein.

 

7.3 QEMU . beenden

Zwei Möglichkeiten, qemu . zu beenden

* In einer anderen Terminaleingabe: kill all qemu-system-arm

* Bei Qemu-Eingabe: Strg+A; x

QEMU: Beendet

 

8. Starten Sie den Linux-Kernel über u-boot

Eingebettete Systeme umfassen normalerweise: u-boot, kernel, rootfs und appfs. Die Positionsbeziehung dieser Teile auf der ARM-Entwicklungsplatine, wie in der Abbildung unten gezeigt

 

Bootloader BootParameter Kernel rootfs Apps

 

Rootfs können in Board oder PC ausgeführt werden

 

8.1 U-Boot vorbereiten

8.1.1 u-boot herunterladen

http://ftp.denx.de/pub/u-boot/, wir verwenden: u-boot-2021.01.tar.bz2

# tar -jxvf u-boot-2018.09.tar.bz2

8.1.2 U-Boot kompilieren

# vim-Makefile

CROSS_COMPILE = arm-linux-gnueabi-

# vim config.mk

ARCH = Arm

# make vexpress_ca9x4_defconfig, Fehler

Benötigen: sudo apt install bison

Sudo apt install flex

dann: # make -j4 error

Benötigen: export CROSS_COMPILE=arm-linux-gnueabi-

export ARCH=arm

nochmal: # make vexpress_ca9x4_defconfig

# make -j4

 

 8.1.3 Test, u-boot starten

$ sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot-2021.01/u-boot –nographic

 

8.2 Zusammenstellung der Kernel-Konfiguration

Verwenden Sie u-boot, um das Kernel-Image zu booten:

Muss den Kernel in das uImage-Format kompilieren,

Muss die Ladeadresse von uImage im Speicher angeben

Geben Sie beim Kompilieren des Kernels Folgendes an: make LOADADDR=? uImage -j4

 

# cd /home/joe/qemu/linux-4.4.157

# make LOADADDR=0x60003000 uImage -j4

 

Nachdem die U-Boot-Kompilierung abgeschlossen ist, wird eine mkimage-Datei im Tool-Ordner erstellt, kopieren Sie diese Datei in den bin-Ordner unter dem Cross-Compiler-Verzeichnis.

$ cd qemu/linux-4.4.157

Fehler:

$ sudo apt installiere u-boot-tools

Holen Sie sich uImage

9. QEMU-Netzwerkfunktionseinstellungen

Wenn die virtuelle Qemu-Maschine beim u-Boot startet, muss uImage in den Speicher geladen werden und uImage kann über den TFTP-Server an die angegebene Adresse im Speicher heruntergeladen werden.

9.1 Prüfen Sie, ob der Host-Kernel das tun/tap-Modul unterstützt

// Installieren Sie die beiden Tools, von denen das Bridged-Netzwerk abhängt

# sudo apt installieren UML-Utilities Bridge-Utils

Tun-Gerätedatei erstellen: /dev/net/tun (normalerweise automatisch erstellt)

Ändern Sie /etc/network/interfaces (konfigurieren Sie das Netzwerk, starten Sie es neu, damit es wirksam wird)

# sudo vim / etc / network / interfaces

auto loiface lo inet loopbackauto enp0s3 // Name der virtuellen Netzwerkkarteauto br0iface br0 inet dhcpbridge_ports enp0s3

 

NIEMALS neu starten

# Neustart

Dann überprüfen Sie die Netzwerkumgebung von Qemu

Der virtuelle Netzwerkport br0 ist der Netzwerkport für die Kommunikation zwischen der virtuellen Qemu-Maschine und dem Linux-Host.

 

10. TFTP-Server installieren

Erstellen Sie einen TFTP-Server, um uImage in den Speicher herunterzuladen, wenn Sie uImage für das Qemu-Simulationsentwicklungsboard starten

 

10.1 tftp-Tool installieren

 

$ APT-GET INSTALL TFTP-HPA TFTPD-HPA XINETD

 

10.2 Ändern Sie die Konfigurationsdatei und legen Sie das TFTP-Serververzeichnis fest

# sudo vim /etc/default/tftpd-hpa

......

TFTP_DIRECTORY=“/home/joe/tftpboot“

......

10.3 Erstellen Sie ein tftp-Verzeichnis auf dem Linux-Host

# mkdir /home/joe/tftpboot

# chmod 777 /home/joe/tftpboot

 

10.4 Starten Sie den tftp-Dienst neu

# sudo /etc/init.d/tftpd-hpa Neustart

 

10.5 Kernel-Startparameter in u-boot einstellen

uImage und cexpress-v2p-ca9.dtb nach tftpboot kopieren

Qemu starten, um zu überprüfen

 

$ sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot-2021.01/u-boot –nographic -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -sd rootfs. ext3

 

Nun ist das rootfs-Verzeichnis ein einfaches Root-Dateisystem, das in eine Spiegeldatei umgewandelt werden kann, und die Spiegeldatei kann auf das Entwicklungsboard gebrannt werden, oder der Linux-Kernel kann per U-Boot in Qemu gestartet und auf dem gemountet werden Spiegeldatei. Es kann auch so eingestellt werden, dass es über das NFS-Netzwerkdateisystem bootet.

 

11. NFS-Dateisystem mounten

11.1 NFS-Dienst installieren und konfigurieren

11.1.1 installieren

$ sudo apt installieren nfs-kernel-server

 

11.1.2 Konfiguration

$ sudo mkdir /home/joe/qemu/rootfs

$ sudo chown niemand:nogroup /home/joe/qemu/rootfs

$ sudo chmod 777 / home / joe / qemu / rootfs

$ sudo nano /etc/exports

Hinzufügen: /home/joe/qemu/rootfs *(rw,sync,no_root_squash)

 

nfs-Server neu starten:

$ sudo /etc/init.d/nfs-kernel-server restart

Oder: $systemctl restart nfs-kernel-server

 

Überprüfen Sie, ob das freigegebene NFS-Verzeichnis erstellt wurde

$ sudo showmount -e

Bei Verwendung des NFS-Netzwerkdateisystems muss der Linux-Host die System-Firewall schließen, da sonst bei laufendem System Anomalien auftreten.

 

Zusammenfassung

Hoffentlich wissen Sie mit Hilfe dieses Blogs mehr über QEMU. Alle oben demonstrierten Techniken wurden in verschiedenen Einreichungen für unser Programm verwendet. Es gibt keinen einzigen, festen Weg, um mit QEMU zu emulieren. Entdecken Sie verschiedene Techniken und sehen Sie, was für Sie funktioniert. Machen Sie sich mit dem Wissen vertraut und Sie werden überrascht sein, wie es Ihnen auf unerwartete Weise helfen kann.

Einführung in das Orient Display Embedded Project

Einführung in das Orient Display Embedded Project

Orient Display ist eines der weltweit führenden Displays Hersteller von LCD-Displays die 1996 von Führungskräften mit mehr als 25 Jahren Erfahrung in Forschung und Entwicklung sowie in der Produktion gegründet wurde. Neben Display konzentrierte sich Orient Display auch auf Embedded-Technologien, die die ARM-Architektur einschließen, und hat reiche Erfahrung mit Embedded-Produkten gesammelt.

Der technische Service von Orient Display umfasst jetzt Hardware, Software und Beratung.

 

Unsere Hardware-Team fertigen Prototypen in kürzester Zeit nach Ihren Designvorstellungen und Anforderungen. Wir sind spezialisiert auf das Design kostengünstiger oder komplexer Hochleistungsplatinen, um Ihren Anspruch an hohe Zuverlässigkeit in einem kurzen Entwicklungszyklus zu erfüllen.

- Schematisches Design

– PCB-Layout

– Branchenspezifische Produktanpassung

 

Unsere Software-Team ist spezialisiert auf Linux-basierte ARM®-DesignsPowerPC und x86-Prozessor, um nur einige zu nennen. Als Komplettlösungsanbieter für Linux, Android und WinCE in Embedded Systemen lösen wir die systembezogenen End-to-End-Probleme Ihrer Produkte.

– Systemmigration, Optimierung und Anpassung

– Entwicklung vorantreiben

– Kernel-Schneiderei

– Portierung von LINUX KERNEL auf ARM, PPC oder x86 Board

– APP-Entwicklung (Anwendung, Linux QT, Linux C/++)

 

Unsere FAE Team stellen Ihnen auch die komplette Technologiepalette für Ihre Produkte oder Halbzeuge zur Verfügung.

– Wir bieten Beratung zu Software- und Hardwareressourcen unserer Produkte;

– Wir lösen Probleme, die bei der Verwendung von Software- und Hardwarehandbüchern unserer Produkte auftreten;

– Technischer After-Sales-Support für OEM und ODM;

– Datenpflege und -aktualisierung;

– Produkte von Orient Display werden von unseren TIEFSTPREISGARANTIE.

 

Entwicklungssequenz

 

1. Analyse der Systemanforderungen

* Designaufgaben, Ziele, Spezifikationen

– Diese von unseren Kunden bereitgestellt

* Funktionale und nicht-funktionale Anforderung

– Berücksichtigen Sie Systemleistung, Kosten, Stromverbrauch, Volumen, Gewicht und andere Faktoren

 

2. Architekturdesign

Eine gute Architektur ist der Schlüssel zum Erfolg des Designs. In diesem Schritt ist es oft notwendig, folgende Dinge zu tun:

  • Wählen Sie den Hauptchip aus:

— ARM Cortex A, R oder M oder PowerPc oder ColdFire

  • Bestimmen Sie das RTOS:

– Linux, uClinux, Vxworks, freeRTOS, WinCE

  • Anzeige auswählen:

- TFT-Panel, Sonnenlichtlesbares TFT, LCD-Glasplatten, Grafisches LCD,  OLED-Display, Touch Panels, Eingebettetes LCD-Display or Maßgeschneiderte Anzeige by Anzeige ausrichten

  • Programmiersprache:

— c/c++, Python, Java

  • Entwicklungswerkzeuge:

u-boot, busybox, QT, Ubuntu, stm32CubeIde, Visual Studio, Android Studio, Keil uVision, RT-Tread Studio

 

3. Hardware- und Software-Co-Design

Um den Produktentwicklungszyklus zu verkürzen:

Hardware:  Wir beginnen normalerweise ein Projekt von einem Evaluation Board wie Orient Display AIY-A002M, AIY-A003M und AIY-A005M. später wird die maßgeschneiderte Platine für das Projekt angepasst, Teile, die nicht benötigt werden, verwerfen.

Softwareentwicklungssequenz:

  • Normalerweise wählen wir u-boot als Bootloader, es 1) init CPU in einen bekannten Zustand 2) init Speicher 3) init Interrupt 4) init Clock 5) Laden des Kernels auf die laufende Adresse
  • Kernel konfigurieren:

1) Kernelsystem konfigurieren: *Speicherverwaltung, *Dateisysteme, *Gerätetreiber, *Netzwerkstack, *I/O-Systeme

2) E/A-Gerätetreiber schreiben *char-Gerätetreiber, *Block-Gerätetreiber, *Net-Gerätetreiber

  • Anwendungen auswählen:

*Eine Benutzerbibliothek auswählen *Benutzeranwendung erstellen *Initialisierungsprozess konfigurieren *Stamm-FS erstellen

 

4. SSystemintegration

Integrieren Sie Software, Hardware und Ausführungsgeräte des Systems zusammen, debuggen, finden und verbessern Sie die Fehler im Einheitsdesignprozess.

 

5. Systemtest

Testen Sie das entworfene System, um zu sehen, ob es die in der Spezifikation angegebenen funktionalen Anforderungen erfüllt. Das größte Merkmal des Entwicklungsmodells für eingebettete Systeme ist die umfassende Entwicklung von Soft- und Hardware.

 

Fazit

Orient Display verfügt über ein erstaunliches Team talentierter Experten mit der Erfahrung und den Fähigkeiten, ein eingebettetes Displaymodul vom Konzept bis zur Produktion zu entwickeln.

Bei Fragen wenden Sie sich bitte an unsere Ingenieure unter: tech@orientdisplay.com.

So wählen Sie ARM-Prozessoren aus

So wählen Sie ARM-Prozessoren aus

Einleitung

Das breiteste Spektrum von Mikroprozessor Kerne für fast alle Anwendungsmärkte. Entdecken ARM. Leistungs-, Strom- und Kostenanforderungen für fast alle Anwendungsmärkte, Prozessoren sind entscheidend. Die Systemleistung hängt stark von seiner Hardware ab; Dieser Artikel führt Sie durch eine Studie des ARM-Prozessors und ist eine große Hilfe bei Ihrer Entscheidungsfindung.

 

Eine kurze Einführung in ARM

Abbildung 1. Roadmap für ARM-Prozessoren

 

Vor 2003 gibt es klassische ARM-Prozessoren, darunter ARM7 (ARMv4-Architektur), ARM9 (ARMv5-Architektur), ARM11 (ARMv6-Architektur). ARM7 hat keine MMU (Memory Management Unit), kann kein Mehrbenutzer-Mehrprozesssystem wie Linux und WinCE ausführen. Kann nur Systeme wie ucOS und ucLinux ausführen, die keine MMU benötigen. ARM9 und ARM11 sind eingebettete CPUs mit MMU, die Linux ausführen können.

Nach 2003 wurde die ARMv7-Architektur nach Cortex benannt und in drei Serien unterteilt: Cortex-A, Cortex-R und Cortex-M.

  • Cortex-A — Anwendungsprozessorkerne für leistungsintensive Systeme
  • Kortex-R – Hochleistungskerne für Echtzeitanwendungen
  • Kortex-M – Mikrocontroller-Kerne für eine Vielzahl von Embedded-Anwendungen

Einfach ausgedrückt, Cortex-A Serie eignen sich für Anwendungen mit hohen Rechenanforderungen, mit umfangreichen Betriebssystemen und interaktiven Medien- und Grafikerlebnissen. Kortex-R sind dafür geeignet, die Zuverlässigkeit, Hochverfügbarkeit, Fehlertoleranz, Wartbarkeit und Echtzeitreaktion erfordern. Kortex-M Serie sind auf kosten- und leistungsempfindliche MCUs und Endanwendungen ausgerichtet.

 

Cortex-A VS. Cortex-R VS. Cortex-M

Cortex-A

Die Prozessoren der Cortex-A-Kategorie sind Linux- und Android-Geräten gewidmet. Alle Geräte – angefangen von Smartwatches und Tablets bis hin zu Netzwerkgeräten – können von Cortex-A-Prozessoren unterstützt werden.

  • Cortex-A-Prozessoren (A5, A7, A8, A9, A12, A15 und A17) basieren auf der ARMv7-A-Architektur
  • Der Satz gemeinsamer Funktionen für A-Prozessoren umfasst eine Media Processing Engine (NEON), ein Tool für Sicherheitszwecke (Trustzone) und verschiedene unterstützte Befehlssätze (ARM, Thumb, DSP etc.)
  • Die Hauptmerkmale der Cortex-A-Prozessoren sind Spitzenleistung und brillante Energieeffizienz, die eng gebündelt sind, um den Benutzern den bestmöglichen Service zu bieten

Die Hauptmerkmale des Cortex-A-Prozessors:

Cortex-A5: Der Cortex A5 ist das kleinste und leistungsschwächste Mitglied der Cortex A-Serie, kann aber dennoch Multicore-Leistung zeigen, er ist mit A9- und A15-Prozessoren kompatibel.

Cortex-A7: Der Stromverbrauch des A7 ist fast der gleiche wie der des A5, aber die Leistung des A7 ist 20 % höher als die des A5 sowie die volle Architekturkompatibilität mit Cortex-A15 und Cortex-A17. Der Cortex-A7 ist die ideale Wahl für kostensensible Smartphone- und Tablet-Implementierungen.

Contrex-A15: Der Cortex-A15 ist das leistungsstärkste Mitglied dieser Serie und bietet die doppelte Leistung als A9. A15 findet seine Anwendung in High-End-Geräten, stromsparenden Servern und drahtloser Infrastruktur. Dies ist die erste Prozessorunterstützung für Datenmanagement- und virtuelle Umgebungslösungen.

Contrex-A17: Der Cortex-A17 zeigt 60 % mehr Leistung als der A9. Das Hauptziel ist die Befriedigung der Bedürfnisse von Geräten der Premiumklasse.

Contrex-A50: Contrex-A50, neueste Serie, basieren auf der ARMv8-Architektur und bringen Arch64-Bit-Unterstützung mit, ein energieeffizientes System. Ein offensichtlicher Grund für die Umstellung auf 64-Bit ist die Unterstützung von mehr als 4 GB physischem Speicher, die bereits bei Cortex-A15 und Cortex-A7 erreicht wird.

 

Kortex-R

Cortex-R-Prozessoren zielen auf Hochleistungs-Echtzeitanwendungen wie Festplattencontroller, Netzwerkgeräte, Mediaplayer und andere ähnliche Geräte ab. Darüber hinaus bieten sie auch eine hervorragende Unterstützung für die Automobilindustrie wie Airbags, Bremssysteme und Motormanagement.

Kortex-R4:  Cortex-R4 ist gut für Automobilanwendungen geeignet. Er kann mit bis zu 600 MHz getaktet werden, verfügt über eine 8-stufige Pipeline mit Dual-Isse, Pre-Fetch und einem Interrupt-System mit niedriger Latenzzeit und ist somit ideal für sicherheitskritische Systeme.

Kortex-R5: Cortex-R5 erweitert die von R4 angebotenen Funktionen und erhöht die Effizienz, Zuverlässigkeit und verbessert das Fehlermanagement. Die Dual-Core-Implementierung ermöglicht den Aufbau sehr leistungsfähiger, flexibler Systeme mit Echtzeitreaktionen.

Kortex-R7: Der Cortex-R7 erweitert die Leistung deutlich. Sie verfügen über eine 11-stufige Pipeline und ermöglichen sowohl eine Ausführung außerhalb der Reihenfolge als auch eine Verzweigungsvorhersage auf hoher Ebene. Tools können für Lock-Step, symmetrische und asymmetrische Multiprocessing implementiert werden. Der generische Interrupt-Controller ist ein weiteres wichtiges Merkmal, das erwähnt werden sollte.

 

Kortex-M

Cortex-M wurde speziell für den MCU-Markt entwickelt. Die Cortex-M-Serie basiert auf der ARMv7-M-Architektur (verwendet für Cortex-M3 und Cortex-M4), und die kleinere Cortex-M0+ basiert auf der ARMv6-M-Architektur. Man kann mit Sicherheit sagen, dass der Cortex-M für die 32-Bit-Welt das geworden ist, was der 8051 für die 8-Bit-Welt ist – ein Industriestandard-Core, der von vielen Herstellern geliefert wird. Die Cortex-M-Serie lässt sich beispielsweise als Softcore in einem FPGA implementieren, viel häufiger findet man sie jedoch als MCU mit integrierten Speichern, Taktgebern und Peripheriegeräten implementiert. Einige sind auf Energieeffizienz optimiert, einige auf hohe Leistung und einige sind auf ein bestimmtes Marktsegment wie Smart Metering zugeschnitten

Für Anwendungen, die besonders kostensensibel sind oder von 8-Bit auf 32-Bit migrieren, ist das kleinste Mitglied der Cortex-M-Serie möglicherweise die beste Wahl.

Kortex-M0: Der Cortex-M0+ verwendet den Thumb-2-Befehlssatz und verfügt über eine 2-stufige Pipeline. Wesentliche Merkmale sind der Bus für Single-Cycle-GPIO und der Micro-Trace-Puffer.

Kortex-M3&M4:  Cortex-M3 und Cortex-M4 sind sehr ähnliche Kerne. Jeder bietet eine 3-stufige Pipeline, mehrere 32-Bit-Busse, Taktraten bis zu 200 MHz und sehr effiziente Debug-Optionen. Der wesentliche Unterschied besteht in der DSP-Fähigkeit des Cortex-M4-Kerns. Cortex-M3 und Cortex-M4 teilen sich dieselbe Architektur und denselben Befehlssatz (Thumb-2). Wenn Ihre Anwendung Fließkomma-Mathematik erfordert, werden Sie dies auf einem Cortex-M4 erheblich schneller erledigen als auf einem Cortex-M3. Das heißt, für eine Anwendung, die nicht die DSP- oder FPU-Funktionen des Cortex-M4 nutzt, werden Sie die gleiche Leistung und den gleichen Stromverbrauch auf einem Cortex-M3 sehen. Mit anderen Worten, wenn Sie DSP-Funktionalität benötigen, entscheiden Sie sich für einen Cortex-M4. Andernfalls erledigt der Cortex-M3 die Arbeit.

 

Zusammenfassung

Abbildung 2. Kortex-Übersicht

 

ARM-Prozessoren bieten eine Vielzahl von Fähigkeiten für unterschiedliche Zwecke. Mit ein wenig Überlegung und Recherche können Sie den richtigen Prozessor finden, der Ihren Anwendungsanforderungen entspricht. sei es für ein High-End-Tablet oder einen ultra-günstigen drahtlosen Sensorknoten.

Es ist eine Herausforderung, die richtige Wahl des Cortex-Kerns zu treffen und die Idee in die Realität umzusetzen. Aber ein Team von erfahrenen Fachleuten kann sich um alle Fragen kümmern und Konzepte jeder Komplexität umsetzen.

Orient Display konzentriert sich seit vielen Jahren auf ARM-Prozessor-bezogene Technologien und hat umfangreiche Erfahrungen in der Entwicklung und Implementierung von ARM-Architekturprodukten gesammelt. Neben der kontinuierlichen Einführung von Entwicklungsplattformen und Coreboards, die den allgemeinen Bedürfnissen des Marktes entsprechen, geht es auch auf die individuellen Projektbedürfnisse der Kunden ein. Bieten Sie maßgeschneiderte Dienstleistungen an.

Unser Hardware-Team kann in kürzester Zeit Prototypen nach Ihren Designideen und Bedürfnissen herstellen. Unser Softwareteam kann Ihnen helfen, alle Funktionen der Schneidtreiberschicht anzupassen.

Kontakt und wir helfen Ihnen, Ihre Pläne von der ersten Idee bis zum fertigen Produkt zu machen.