OrangePi RV2 und ESP32-C5 im Hands-on

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