Sowohl Espressif als auch Shenzhen Xunlong arbeiten an neuen Produkten, die mittlerweile – wenn auch in beschränkter Stückzahl – allgemein verfügbar werden. Hier zwei kurze Hands-On-Berichte zu ESP32-C5 und OrangePi RV2 samt Kauf- und Mitmachanleitungen und praktischen Hinweisen.
ESP32-C5 – Verfügbarkeit über Wireless-Tag, Programmierung mit ESP_IDF
Sowohl mit dem ESP32-C5 als auch mit dem ESP32-P4 hat man im Hause Espressif seine liebe Not – beide waren als Prototypen einige Zeit über wireless-tag erhältlich. Die Verfügbarkeit des P4 ist derzeit wieder pausiert (Auguren rechnen mit mindestens 120 Tagen Verspätung), während der C5 derzeit über https://www.alibaba.com/product-detail/esp32-esp32-c5-2-4G-5G_1601251918870.html?spm=a2747.product_manager.0.0.594871d2U01ATW zu erwerben ist.
Das dort feilgebotene Produkt ist indes ein reines Modul – zu seiner Inbetriebnahme ist erstens eine Trägerplatine und zweitens ein USB-Seriell-Wandler erforderlich. Für zweiteres empfiehlt sich ein FT2232-MiniModule, während der Autor unter https://www.pcbway.com/project/shareproject/ESP32_C5_board_for_wireless_tag_modules_e850606a.html ein primitives Evaluationsboard hochgeladen hat.
Im Prinzip handelt es sich dabei um eine Platine, die das Boot-Pin des ESP32 ansprechbar macht und so die Aktivierung des Bootloaders erlaubt. Das genaue Pinout des Moduls präsentiert sich wie in der folgenden Abbildung gezeigt; eigene Trägerdesigns sind natürlich erwünscht. Der Autor hat ein DXF-File mit dem Layout sowie eine T3001-Datei, und stellt diese auf Email-Anfrage zur Verfügung.
Bildquelle: Autor
Die Verbindung mit dem Kommandogerät erfolgt dann wie in der Abbildung gezeigt. Zu beachten ist, dass die 3V3-Quelle des MiniModule nicht zur Versorgung des ESP32 ausreicht, wenn dieser sein Funkmodul aktiviert.
Bildquelle: Autor
ESP32-C5 – Programmierung mit ESP_IDF
Für die Programmierung des resultierenden Boards ist eine brandaktuelle Version von IDF erforderlich – die im Repositorium befindliche Codebasis unterstützt diese in der Variante Master. Im Interesse der Stabilität ist es empfehlenswert, eine weitere Variante von ESP_IDF in einem eigenen Ordner herunterzuladen.
1 |
tamhan@tamhan-gf65:~$ mkdir esp-master |
2 |
tamhan@tamhan-gf65:~$ cd esp-master/ |
3 |
tamhan@tamhan-gf65:~/esp-master$ git clone --recursive https://github.com/espressif/esp-idf.git |
Die restliche Installation verläuft dann im Allgemeinen so, wie man es erwarten würde. Wichtig ist lediglich, in install.sh nach folgendem Schema das Herunterladen der Tools für den C5 zu avisieren:
1 |
./install.sh esp32c5 |
Im eigentlichen Projekt ist es dann erforderlich, nach folgendem Schema den C5 als Zielsystem zu deklarieren:
Nach dieser Arbeit kann beispielsweise Hello World kompiliert werden, was zur in der Abbildung gezeigten Ausgabe führt.
Bildquelle: Tamoggemon Holding k.s.
ESP32-C5 – zu beachtendes!
Bei Verwendung des weiter oben genannten Moduls ist zu beachten, dass es sich dabei um Prototypenmaterial handelt. Im Rahmen der “Finalisierung” ist – siehe Screenshot – davon auszugehen, dass ESP_IDF diese Halbleiter nicht mehr weiter unterstützt.
Bildquelle: Tamoggemon Holding k.s.
Außerdem gibt es derzeit – wie in der Abbildung gezeigt – ein vergleichsweise umfangreiches Erratasheet zu beachten.
Bildquelle: Tamoggemon Holding k.s.
OrangePi RV2 – RISC/V, zur Zweiten
Mit dem RV2 schickt man im Hause OrangePi die zweite Variante eines auf RISC/V basierenden Einplatinencomputer ins Rennen. Intention ist nach wie vor das Ermöglichen von Experimentieren mit RISC/V-Linux, ohne dabei große Umkosten zu verursachen.
Im Bereich der Hardware findet sich dabei – Stichwort eMMC-Modul und zwei M2-Speicherplätze – so ziemlich alles, was man als Anhänger des Industrial Computing begehrt.
Bildquelle: Tamoggemon Holding k.s.
Als Betriebssystem steht eine Variante von Ubuntu zur Verfügung, die sich wie in den Abbildungen gezeigt identifiziert.
Bildquelle: Tamoggemon Holding k.s.
OrangePi RV2 – der Fluch der fehlenden Pakete
Interessant ist, dass das Herunterladen von Paketen per apt-get eine Verbindung zur Cloud von Huawei herstellt – dies lässt sich beispielsweise anhand von iperf überprüfen:
1 |
orangepi@orangepirv2:~$ sudo apt-get install iperf |
2 |
[sudo] password for orangepi: |
3 |
Reading package lists... Done |
4 |
. . . |
5 |
Get:1 http://repo.huaweicloud.com/ubuntu-ports noble/universe riscv64 iperf riscv64 2.1.9+dfsg-1 [141 kB] |
Nicht alle von ARMBian und Co bekannten Pakete stehen dabei auch für den RISC/V-Kern zur Verfügung. Ein prominentes “Fehlzeichen” ist Sysbench – wer das System selbst kompiliert, wird nach folgendem Schema abgewiesen:
1 |
make[3]: Entering directory '/home/orangepi/sysbench/third_party/luajit/luajit/src' |
2 |
lj_arch.h:59:2: error: #error "No support for this architecture (yet)" |
3 |
59 | #error "No support for this architecture (yet)" |
4 |
| ^~~~~ |
OrangePi RV2 – einige Benchmarks
In Ermangelung von SysBench sind nur einige kleinere Tests möglich. Erstens die Ergebnisse von iperf, die auf gute Ethernet-Performance hinweisen:
1 |
root@orangepirv2:~# iperf -c 192.168.1.74 |
2 |
------------------------------------------------------------
|
3 |
Client connecting to 192.168.1.74, TCP port 5001 |
4 |
TCP window size: 16.0 KByte (default) |
5 |
------------------------------------------------------------
|
6 |
[ 1] local 192.168.1.76 port 48812 connected with 192.168.1.74 port 5001 (icwnd/mss/irtt=14/1448/315) |
7 |
[ ID] Interval Transfer Bandwidth |
8 |
[ 1] 0.0000-10.0321 sec 1.10 GBytes 940 Mbits/sec |
Als zweiter Test bietet sich die Verwendung von Stress-Ng an. Das System ist zwar per Se kein Benchmark, zeigt aber, dass die acht Kerne identisch aufgebaut sind:
1 |
root@orangepirv2:~# stress-ng --cpu 1 --cpu-method matrixprod --metrics-brief --perf -t 60 |
2 |
stress-ng: info: [7400] setting to a 1 min, 0 secs run per stressor |
3 |
stress-ng: info: [7400] dispatching hogs: 1 cpu |
4 |
stress-ng: metrc: [7400] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s |
5 |
stress-ng: metrc: [7400] (secs) (secs) (secs) (real time) (usr+sys time) |
6 |
stress-ng: metrc: [7400] cpu 720 62.47 60.34 0.02 11.52 11.93 |
7 |
|
8 |
|
9 |
root@orangepirv2:~# stress-ng --cpu 4 --cpu-method matrixprod --metrics-brief --perf -t 60 |
10 |
stress-ng: info: [7402] setting to a 1 min, 0 secs run per stressor |
11 |
stress-ng: info: [7402] dispatching hogs: 4 cpu |
12 |
stress-ng: metrc: [7402] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s |
13 |
stress-ng: metrc: [7402] (secs) (secs) (secs) (real time) (usr+sys time) |
14 |
stress-ng: metrc: [7402] cpu 2800 60.90 241.45 0.21 45.97 11.59 |
15 |
|
16 |
root@orangepirv2:~# stress-ng --cpu 8 --cpu-method matrixprod --metrics-brief --perf -t 60 |
17 |
stress-ng: info: [7407] setting to a 1 min, 0 secs run per stressor |
18 |
stress-ng: info: [7407] dispatching hogs: 8 cpu |
19 |
stress-ng: metrc: [7407] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s |
20 |
stress-ng: metrc: [7407] (secs) (secs) (secs) (real time) (usr+sys time) |
21 |
stress-ng: metrc: [7407] cpu 5358 60.47 479.94 0.73 88.61 11.15 |
OrangePi RV2 – GPIO-Experimente
Der GPIO-Header des RV2 ist nur 26 Pins groß, wird allerdings schon jetzt vollständig von WiringOPI unterstützt. Die Abbildung zeigt das GPIO-Komplement.
Bildquelle: Tamoggemon Holding k.s.
Für einen kleinen Rauchtest bietet sich dann folgendes Programm an:
1 |
#include <stdio.h> |
2 |
#include <wiringPi.h> |
3 |
|
4 |
|
5 |
int main (void) |
6 |
{
|
7 |
int i = 0; |
8 |
unsigned char gpio_num = 0; |
9 |
|
10 |
wiringPiSetup(); |
11 |
pinMode (5, OUTPUT) ; |
12 |
|
13 |
for ( ;; ) |
14 |
{
|
15 |
|
16 |
digitalWrite (5, HIGH); // On |
17 |
digitalWrite (5, LOW); // Off |
18 |
digitalWrite (5, HIGH); // On |
19 |
digitalWrite (5, LOW); // Off |
20 |
}
|
21 |
}
|
Lohn der Mühen ist das in der Abbildung gezeigte Schirmbild.
Bildquelle: Tamoggemon Holding k.s.
Zuerst erschienen bei Mikrocontroller.net News
Quelle: Weiterlesen