Zuvor ein Artikel zum Erstellen einer ** TOPPERS / ASP ** -Entwicklungsumgebung unter WindowsPC + VirtualBox + Linux "** TOPPERS / ASP Erstellen und Ausführen ** "," ** TOPPERS / ASP (Version 2020-03-10) Erstellen und ausführen ** ". Bei dieser Methode muss VirtualBox auf einem Windows-PC installiert werden, und die Installation einer Anwendung ist auf vom Unternehmen bereitgestellten PCs usw. beschränkt. Da Linux auf VirtualBox ausgeführt wird, besteht das Problem, dass die Belastung des Windows-PCs wie CPU-Leistung, Speicher und Festplattenkapazität zunimmt. Aus diesem Grund planen wir, eine Entwicklungsumgebung für Cortex-M für TOPPERS / ASP auf Raspai zu erstellen, die vermutlich eine große Anzahl von Benutzern und Eigentümern hat, damit die Entwicklung ohne Belastung des Windows-PCs durchgeführt und für die Entwicklung verwendet werden kann. Ich tat. Darüber hinaus ist Raspeye eine sehr kleine Mikrocomputerplatine, die leicht zu transportieren und zu installieren ist. Da eine Micro-SD-Karte als Start- und Betriebsdiskette verwendet wird, kann die Umgebung problemlos ausgeliehen, ausgeliehen und kopiert werden, sodass sie von vielen Menschen verwendet wird. Ich fragte mich, ob ich es bekommen könnte.
Linux für Raspeye hat mehrere SD-Karten-Images im Internet veröffentlicht, aber die neue Version der werkzeugübergreifenden ARM-Kette, die später erläutert wird, ist nur für 64-Bit-Umgebungen verfügbar ** für ARM64 ** Ich habe mich für ** Ubuntu 20.04.1 LTS ** entschieden. (Neueste Version zum 30. September 2020) Daher sind Raspberry Pi 3, Raspberry Pi 3+ und Raspberry Pi 4 erforderlich, damit der Raspeltorte verwendet werden kann.
Laden Sie das SD-Karten-Image von "Ubuntu 20.04.1 LTS" "Download 64-Bit" auf der folgenden Download-Seite herunter. Da Sie die Datei im xz-Format herunterladen können, schreiben Sie die erstellte Bilddatei, indem Sie sie mit einer Bildschreibsoftware auf die Micro-SD-Karte erweitern.
** 64bit Ubuntu 20.04.1 LTS für Raspberry Pi ** https://ubuntu.com/download/raspberry-pi https://ubuntu.com/download/raspberry-pi/thank-you?version=20.04.1&architecture=arm64+raspi
In ** ubuntu 20.04 ** können Sie die IP-Adresse von eth0 des kabelgebundenen LAN per DHCP abrufen. Sie können im Netzwerk kommunizieren, indem Sie das LAN-Kabel in der Netzwerkumgebung anschließen, in der der DHCP-Server betrieben wird. Durch Hinzufügen einer Einstellungsdatei unter ** / etc / netplan ** und Definieren der IP-Adresse usw. ist es auch möglich, mit einer festen IP-Adresse zu arbeiten. Unten finden Sie die Konfigurationsdatei, die ich in meiner häuslichen Umgebung verwende.
/etc/netplan/99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses: [192.168.0.140/24]
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.1, 8.8.8.8, 8.8.4.4]
Wenn Sie über das Netzwerk kommunizieren können, verwenden Sie den Befehl "** apt-get install ", um die folgende zusätzliche Middleware aus dem Internet herunterzuladen und zu installieren. Verwenden Sie vor "apt-get install" den Befehl " apt-get update **", um die Download-Informationen auf die neuesten Informationen zu aktualisieren.
net-tools
g++
libboost-all-dev
libxerces-c-dev
make
minicom
samba
Laden Sie eine Toolchain wie einen Cross-Compiler von der Seite ** GNU Arm Embedded Toolchain Downloads ** herunter und entpacken Sie sie auf Rasppie. Dieses Mal habe ich die Toolkette für ** GCC10 ** verwendet, aber es gibt kein Problem, wenn Sie die stabile Version "** 9-2020-q2-update 30. Juni 2020 **" herunterladen und verwenden. Laden Sie ** Linux AArch64 Tarball ** herunter.
GNU Arm Embedded Toolchain: 10-2020-q2-preview June 29, 2020 gcc-arm-none-eabi-10-2020-q2-preview-aarch64-linux.tar.bz2 https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q2/gcc-arm-none-eabi-10-2020-q2-preview-aarch64-linux.tar.bz2?revision=a7134e5c-fad8-490c-a62b-9200acca15ef&la=en&hash=12954B763712885C1DDE3318D10DF96B1606463A
Extrahieren Sie die Datei im Format tar.bz2 nach dem Herunterladen mit dem Befehl tar in das durch "-C" angegebene Installationszielverzeichnis. Das folgende Beispiel zeigt einen Befehl, der unter ** / home / ubuntu / bin ** erweitert wird.
mkdir ~/bin
tar xjf gcc-arm-none-eabi-10-2020-q2-preview-aarch64-linux.tar.bz2 -C ~/bin
Um die diesmal erweiterte Toolchain zu verwenden, legen Sie den Pfad der Ausführungsdatei in der Umgebungsvariablen PATH fest, bevor Sie TOPPERS / ASP erstellen. In meiner häuslichen Umgebung habe ich "~ / .bashrc" die folgende Definition hinzugefügt, damit sie jederzeit nach dem Anmelden verwendet werden kann.
export PATH=~/bin/gcc-arm-none-eabi-10-2020-q2-preview/bin:$PATH
Verwenden Sie Configurator Release 1.9.6, um den Configurator zu erstellen, damit Sie den TOPPERS / ASP-Kernel erstellen können. Aufgrund der folgenden Hinweise auf der Konfiguratorseite war es jedoch nicht möglich, es zu erstellen, da es heruntergeladen wurde.
Aufgrund eines aktuellen Problems mit der Boost-Bibliothek für 64-Bit-Linux
Cfg, das auf 64-Bit-Linux basiert, funktioniert nicht richtig.
Wenn Sie cfg unter 64-Bit-Linux verwenden, siehe unten unter 32-Bit-Linux
Verwenden Sie Binärdateien oder erstellen Sie aus dem Quellcode unter 32-Bit-Linux
Verwenden Sie eine statisch verknüpfte Binärdatei.
In dem Artikel, den ich zuvor geschrieben habe, habe ich eine Entwicklungsumgebung mit 32-Bit-Linux erstellt, um dieses Problem zu vermeiden. Dieses Mal haben wir einen Fix hinzugefügt, um dieses Problem zu vermeiden.
Konfigurator Release 1.9.6 https://www.toppers.jp/download.cgi/cfg-1.9.6.tar.gz
Laden Sie zunächst die folgenden Dateien von der Konfiguratorseite herunter und legen Sie sie in einem beliebigen Verzeichnis ab. In der folgenden Erläuterung werden Befehlseingaben usw. unter der Annahme beschrieben, dass sie im folgenden Verzeichnis abgelegt sind.
/home/ubuntu/toppers
● Bereitstellung der Quelle Extrahieren Sie die heruntergeladene tar.gz-Datei. Durch Extrahieren mit dem folgenden Befehl wird ein cfg-Verzeichnis generiert und die Quelldateien usw. werden darunter erweitert.
tar zxf cfg-1.9.6.tar.gz
● Bereitstellung der Quelle Wechseln Sie in das Verzeichnis cfg.
cd cfg
● Hinzufügen einer Header-Datei für libboost Beim Erstellen des Konfigurators wird der Fehler aufgrund einer unzureichenden Einbeziehung der Header-Datei gestoppt. Fügen Sie daher die Include-Definition wie folgt zur Datei toppers / text.hpp und toppers / cpp.hpp hinzu.
toppers/text.hpp
54 #include "toppers/text_line.hpp"
55 #include "toppers/misc.hpp"
56 #include <boost/next_prior.hpp> /*※ hinzufügen*/
57 #include <boost/utility.hpp>
58 #include <boost/iterator/iterator_facade.hpp>
toppers/cpp.hpp
44 #include "toppers/codeset.hpp"
45 #include "toppers/diagnostics.hpp"
46 #include <boost/next_prior.hpp> /*※ hinzufügen*/
47 #include <boost/utility.hpp>
48 #include <boost/filesystem/path.hpp>
● Konfigurationsausführung Nehmen Sie vorgefertigte Umgebungseinstellungen für den Konfigurator vor. Da das Konfigurationsskript jedoch unmittelbar nach der Erweiterung "0x0d" im Zeilenvorschubcode enthält, tritt ein Fehler auf. Verwenden Sie daher den folgenden Befehl, um unnötigen Code zu löschen.
mv configure configure.org
tr -d '\r' < configure.org > configure
chmod u+x configure
Führen Sie nach der Korrektur die Konfiguration mit dem folgenden Befehl aus.
./configure --with-libraries=/usr/lib/aarch64-linux-gnu
Erstellen Sie nach erfolgreicher Ausführung des Konfigurationsskripts den Konfigurator mit dem folgenden Befehl. Mit Raspberry Pi 3 dauert es weniger als 20 Minuten.
make OPTIONS=-std=c++11
Wenn der Befehl cfg / cfg abgeschlossen ist, ist er erfolgreich.
cfg/cfg -v
TOPPERS Kernel Configurator version 1.9.6
TOPPERS / ASP-Kernel-Ziel unabhängiges Teilepaket ** asp-1.9.3.tar.gz ** und ARM Cortex-M4-Architektur / GCC-abhängiges Teilepaket ** asp_arch_arm_m4_gcc-1.9.6.tar.gz ** ** / Laden Sie es in das Verzeichnis home / ubuntu / toppers ** herunter und erstellen Sie den ASP-Kernel.
● Bereitstellung der Quelle Extrahieren Sie die heruntergeladene tar.gz-Datei. Durch Extrahieren mit dem folgenden Befehl wird ein Asp-Verzeichnis generiert und die Quelldateien usw. werden darunter erweitert.
cd /home/ubuntu/toppers
tar xzf asp-1.9.3.tar.gz
tar xzf asp_arch_arm_m4_gcc-1.9.6.tar.gz
● Kopie des Konfigurators Asp kopiert den Build und den erstellten Konfigurator nach: Sie können das erforderliche Verzeichnis mit dem folgenden Befehl erstellen und kopieren.
mkdir -p asp/cfg/cfg
cp cfg/cfg/cfg asp/cfg/cfg
Führen Sie den folgenden Befehl aus, und wenn die Versionsinformationen ausgegeben werden, ist die Kopie erfolgreich.
asp/cfg/cfg/cfg -v
TOPPERS Kernel Configurator version 1.9.6
● Vermeiden von Konfigurationsfehlern Im bereitgestellten ASP-Kernel funktioniert "** PROVIDE () **", das in dem Linker-Skript verwendet wird, das zum Zeitpunkt der Kernel-Erstellung in GCC7 oder höher von GNU Arm Embedded Toolchain verwendet wurde, nicht wie beabsichtigt und wird immer als "" beschrieben. ** hardware_init_hook = 0 ** "ist aktiviert und die Funktionsadresse hardware_init_hook ** generiert immer eine Binärdatei an der Adresse 0x0 **. Dies bedeutet, dass beim Ausführen des ASP-Kernels auf der Karte zur Adresse 0x0 gesprungen wird und ** das Zurücksetzen wiederholt wird **. Kommentieren Sie den Code für hardware_init_hook wie folgt aus: Das Folgende ist eine Modifikation des Linkerskripts für stm32f401nucleo_gcc.
asp/target/stm32f401nucleo_gcc/stm32f4xx_rom.ld
10 PROVIDE(hardware_init_hook = 0);
11 PROVIDE(software_init_hook = 0);
12 PROVIDE(software_term_hook = 0);
13 STARTUP(start.o)
↓
10 /* PROVIDE(hardware_init_hook = 0); */
11 PROVIDE(software_init_hook = 0);
12 PROVIDE(software_term_hook = 0);
13 STARTUP(start.o)
Wenn es unverändert bleibt, tritt beim Generieren von cfg1_out während der Erstellung ein Fehler auf. Fügen Sie daher zum Starten einen alternativen Prozess von "PROVIDE (hardware_init_hook = 0)" hinzu. Fügen Sie der Endzeile von start.S die folgende Verarbeitung hinzu, wie unten gezeigt.
asp/arch/arm_m_gcc/common/start.S
.weak hardware_init_hook
bx lr
● ASP-Kernelkonfiguration Sean Konfigurieren Sie den ASP-Kernel in dem Verzeichnis, in dem Sie Ihre Anwendung erstellen. Dieses Mal werden wir auf die STM32F401 Nucleo-64-Karte abzielen und eine Anwendungserstellungsumgebung im Verzeichnis / home / ubuntu / toppers / f401 / obj erstellen. Erstellen Sie das Verzeichnis f401 / obj mit dem folgenden Befehl.
cd /home/ubuntu/toppers
mkdir -p f401/obj
Wechseln Sie mit dem folgenden Befehl in das Verzeichnis f401 / obj und führen Sie die Konfiguration aus.
cd f401/obj
../../asp/configure -T stm32f401nucleo_gcc -dROM
Es ist erfolgreich, wenn die folgenden Dateien generiert werden.
-rw-rw-r-- 1 ubuntu ubuntu 15335 Aug 30 18:22 Makefile
-rw-rw-r-- 1 ubuntu ubuntu 15652 Aug 30 18:22 sample1.c
-rw-rw-r-- 1 ubuntu ubuntu 918 Aug 30 18:22 sample1.cfg
-rw-rw-r-- 1 ubuntu ubuntu 3246 Aug 30 18:22 sample1.h
Die Nucleo-Karte kann als Festplattenlaufwerk angesehen werden, indem Sie sie über USB an Ihren PC anschließen. Sie können Programme in dieses Verzeichnis schreiben, indem Sie den generierten Binärcode kopieren. Fügen Sie die Beschreibung zur Generierung der BIN-Datei zum folgenden Teil des Makefiles hinzu, damit der Binärcode beim Erstellen der Anwendung generiert wird.
Makefile
327 $(OBJFILE): $(APPL_CFG) kernel_cfg.timestamp $(ALL_OBJS) $(LIBS_DEP)
328 $(LINK) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) $(START_OBJS) \
329 $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) $(ALL_LIBS) $(END_OBJS)
330 $(NM) -n $(OBJFILE) > $(OBJNAME).syms
331 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
332 $(CFG) --pass 3 --kernel asp $(INCLUDES) \
↓
327 $(OBJFILE): $(APPL_CFG) kernel_cfg.timestamp $(ALL_OBJS) $(LIBS_DEP)
328 $(LINK) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) $(START_OBJS) \
329 $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) $(ALL_LIBS) $(END_OBJS)
330 $(NM) -n $(OBJFILE) > $(OBJNAME).syms
331 $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
**332 $(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin ← ★ hinzugefügt**
333 $(CFG) --pass 3 --kernel asp $(INCLUDES) \
Nach dem Hinzufügen können Sie die Anwendung erstellen, indem Sie make im Verzeichnis f401 / obj ausführen.
cd f401/obj
make
Wenn die folgenden Dateien generiert werden, ist der Build erfolgreich.
-rwxrwxr-x 1 ubuntu ubuntu 363656 Aug 30 18:35 asp*
-rwxrwxr-x 1 ubuntu ubuntu 28442 Aug 30 18:35 asp.bin*
-rwxrwxr-x 1 ubuntu ubuntu 85392 Aug 30 18:35 asp.srec*
-rw-rw-r-- 1 ubuntu ubuntu 8109 Aug 30 18:35 asp.syms
Wenn Sie asp.bin auf die Nucleo-64-Karte STM32F401 kopieren und das Programm ausführen, wird die folgende Meldung an den virtuellen COM-Port der Nucleo-64-Karte STM32F401 ausgegeben.
● Kopieren Sie die Datei asp.bin auf einen Windows-PC Durch Installieren und Einstellen von Samba auf Raspai können Sie die Datei asp.bin auf Raspai in STM32F401-Nucleo schreiben, indem Sie den Explorer auf einem Windows-PC ziehen und dort ablegen.
Bei der Entwicklung mit Raspai ist es neben der Methode zum Umschreiben der auf Raspai über einen Windows-PC generierten Binärdatei auf die Zielplatine auch möglich, den Raspai allein zu betreiben, indem Monitor, Tastatur und Zielplatine mit Raspai verbunden werden. Da auf die STM32F401-Nucleo-Karte von Linux aus als / dev / ttyACM des virtuellen COM-Ports und / dev / sda1 des Massenspeichers über eine USB-Verbindung zugegriffen werden kann, wird die Ausgabe von syslog () nach der Ausführung vom Schreiben auf die Zielkarte auch nur von Raspeye allein betrieben. können.
● Betriebskonfiguration über Windows-PC
● Betriebskonfiguration von Raspeye allein
Wenn Sie Raspberry Pi 3, Raspberry Pi 3+ oder Raspberry Pi 4 haben, versuchen Sie, die Umgebung und das Programm zu erstellen, indem Sie die hier beschriebenen Schritte ausführen. Es gibt viele Artikel und Informationen, die Raspeye selbst als Board oder Controller für elektronische Arbeiten verwenden, aber ich denke, Sie können verstehen, dass es wie dieses Mal ausreichend als Entwicklungsumgebung verwendet werden kann.
Recommended Posts