Article précédent sur la création d'un environnement de développement ** TOPPERS / ASP ** à l'aide de WindowsPC + VirtualBox + Linux "** TOPPERS / ASP Construire et exécuter ** "," ** TOPPERS / ASP (version du 10/03/2020) Créez et exécutez ** ". Avec cette méthode, il est nécessaire d'installer VirtualBox sur un PC Windows, et l'installation d'applications arbitraires est limitée sur les PC fournis par l'entreprise, etc. Étant donné que Linux fonctionne sur VirtualBox, il y a un problème que la charge sur le PC Windows telle que la puissance du processeur, la mémoire et la capacité du disque dur augmente. Pour cette raison, nous prévoyons de créer un environnement de développement pour Cortex-M pour TOPPERS / ASP sur Raspai, qui est censé avoir un grand nombre d'utilisateurs et de propriétaires, afin que le développement puisse être effectué sans imposer une charge sur le PC Windows, et l'utiliser pour le développement. J'ai fait. De plus, Raspeye est une très petite carte micro-ordinateur facile à transporter et à installer, et comme elle utilise une carte micro SD comme disque de démarrage et d'opération, il est facile de prêter et d'emprunter l'environnement et de le copier, il est donc utilisé par de nombreuses personnes. Je me suis demandé si je pouvais l'obtenir.
Linux pour Raspeye a plusieurs images de carte SD publiées sur Internet, mais la nouvelle version de la chaîne d'outils croisés d'ARM, qui sera expliquée plus loin, n'est disponible que pour les environnements 64 bits ** pour ARM64 ** J'ai décidé d'utiliser ** Ubuntu 20.04.1 LTS **. (Dernière version au 30 septembre 2020) Par conséquent, Raspberry Pi 3, Raspberry Pi 3+ et Raspberry Pi 4 sont nécessaires pour utiliser la tarte à la framboise.
Téléchargez l'image de la carte SD à partir de «Ubuntu 20.04.1 LTS» «Télécharger 64 bits» sur la page de téléchargement suivante. Puisque vous pouvez télécharger le fichier au format xz, écrivez le fichier image créé en le développant sur la carte micro SD à l'aide d'un logiciel d'écriture d'image.
** Ubuntu 20.04.1 LTS 64 bits pour Raspberry Pi ** https://ubuntu.com/download/raspberry-pi https://ubuntu.com/download/raspberry-pi/thank-you?version=20.04.1&architecture=arm64+raspi
Dans ** ubuntu 20.04 **, vous pouvez obtenir l'adresse IP de eth0 du LAN câblé par DHCP. Vous pouvez communiquer sur le réseau en connectant le câble LAN dans l'environnement réseau où le serveur DHCP fonctionne. De plus, en ajoutant un fichier de paramétrage sous ** / etc / netplan ** et en définissant l'adresse IP etc., il est possible de fonctionner avec une adresse IP fixe. Vous trouverez ci-dessous le fichier de configuration que j'utilise dans mon environnement domestique.
/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]
Une fois que vous êtes en mesure de communiquer sur le réseau, utilisez la commande "** apt-get install " pour télécharger et installer le middleware supplémentaire suivant à partir d'Internet. Avant "apt-get install", utilisez la commande " apt-get update **" pour mettre à jour les informations de téléchargement avec les dernières informations.
net-tools
g++
libboost-all-dev
libxerces-c-dev
make
minicom
samba
Téléchargez une chaîne d'outils telle qu'un compilateur croisé depuis la page ** GNU Arm Embedded Toolchain Downloads ** et décompressez-la sur Rasppie. Cette fois, j'ai utilisé la chaîne d'outils pour ** GCC10 , mais il n'y a pas de problème si vous téléchargez et utilisez la version stable " 9-2020-q2-update 30 juin 2020 **". Téléchargez ** Linux AArch64 Tarball **.
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
Après avoir téléchargé le fichier au format tar.bz2, extrayez-le dans le répertoire de destination de l'installation spécifié par "-C" avec la commande tar. Voici un exemple de commande qui se développe sous ** / home / ubuntu / bin **.
mkdir ~/bin
tar xjf gcc-arm-none-eabi-10-2020-q2-preview-aarch64-linux.tar.bz2 -C ~/bin
Pour utiliser la chaîne d'outils développée cette fois, définissez le chemin du fichier d'exécution dans la variable d'environnement PATH avant de créer TOPPERS / ASP. Dans mon environnement personnel, j'ai ajouté la définition suivante à "~ / .bashrc" afin qu'elle puisse être utilisée à tout moment après la connexion.
export PATH=~/bin/gcc-arm-none-eabi-10-2020-q2-preview/bin:$PATH
Utilisez Configurator version 1.9.6 pour construire le configurateur afin que vous puissiez construire le noyau TOPPERS / ASP. Cependant, il n'a pas été possible de le créer car il a été téléchargé en raison des remarques suivantes sur la page du configurateur.
Parce qu'il y a un problème actuel avec la bibliothèque boost pour Linux 64 bits
Cfg construit sur Linux 64 bits ne fonctionne pas correctement.
Lors de l'utilisation de cfg sur Linux 64 bits, pour Linux 32 bits ci-dessous
Utilisez des binaires ou compilez à partir des sources sur Linux 32 bits
Utilisez un binaire lié statiquement.
Dans l'article que j'ai écrit plus tôt, j'ai construit un environnement de développement utilisant Linux 32 bits pour éviter ce problème. Cette fois, nous avons inclus un correctif pour éviter ce problème.
Configurateur version 1.9.6 https://www.toppers.jp/download.cgi/cfg-1.9.6.tar.gz
Tout d'abord, téléchargez les fichiers suivants à partir de la page du configurateur et placez-les dans n'importe quel répertoire. Dans l'explication suivante, l'entrée de commande, etc. sera décrite en supposant qu'elle est placée dans le répertoire suivant.
/home/ubuntu/toppers
● Déploiement de la source Extrayez le fichier tar.gz téléchargé. L'extraction avec la commande suivante générera un répertoire cfg, et les fichiers source, etc. seront développés en dessous.
tar zxf cfg-1.9.6.tar.gz
● Déploiement de la source Accédez au répertoire cfg.
cd cfg
● Ajout d'un fichier d'en-tête pour libboost Lors de la construction du configurateur, il s'arrête avec une erreur due à une inclusion insuffisante du fichier d'en-tête, alors ajoutez la définition d'inclusion au fichier toppers / text.hpp et au fichier toppers / cpp.hpp comme suit.
toppers/text.hpp
54 #include "toppers/text_line.hpp"
55 #include "toppers/misc.hpp"
56 #include <boost/next_prior.hpp> /*※ ajouter à*/
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> /*※ ajouter à*/
47 #include <boost/utility.hpp>
48 #include <boost/filesystem/path.hpp>
● Exécution de la configuration Définissez les paramètres d'environnement de pré-construction pour le configurateur. Cependant, comme le script de configuration immédiatement après l'expansion contient "0x0d" dans le code de saut de ligne, une erreur se produira telle quelle. Par conséquent, utilisez la commande suivante pour supprimer le code inutile.
mv configure configure.org
tr -d '\r' < configure.org > configure
chmod u+x configure
Après correction, exécutez la configuration avec la commande suivante.
./configure --with-libraries=/usr/lib/aarch64-linux-gnu
Après une exécution réussie du script de configuration, créez le configurateur avec la commande suivante. Cela prend moins de 20 minutes avec Raspberry Pi 3.
make OPTIONS=-std=c++11
Si la commande cfg / cfg est terminée, elle réussit.
cfg/cfg -v
TOPPERS Kernel Configurator version 1.9.6
Paquet de partie indépendante de la cible du noyau TOPPERS / ASP ** asp-1.9.3.tar.gz ** et architecture ARM Cortex-M4 / package de partie dépendante de GCC ** asp_arch_arm_m4_gcc-1.9.6.tar.gz ** ** / Téléchargez dans le répertoire home / ubuntu / toppers ** et compilez le noyau ASP.
● Déploiement de la source Extrayez le fichier tar.gz téléchargé. L'extraction avec la commande suivante générera un répertoire asp, et les fichiers source, etc. seront développés en dessous.
cd /home/ubuntu/toppers
tar xzf asp-1.9.3.tar.gz
tar xzf asp_arch_arm_m4_gcc-1.9.6.tar.gz
● Copie du configurateur Asp copie la construction et le configurateur créé dans: Vous pouvez créer et copier le répertoire requis avec la commande suivante.
mkdir -p asp/cfg/cfg
cp cfg/cfg/cfg asp/cfg/cfg
Exécutez la commande suivante et lorsque les informations de version sont sorties, la copie réussit.
asp/cfg/cfg/cfg -v
TOPPERS Kernel Configurator version 1.9.6
● Éviter les erreurs de configuration Dans le noyau ASP déployé, "** PROVIDE () **" utilisé dans le script de l'éditeur de liens utilisé au moment de la construction du noyau dans GCC7 ou version ultérieure de la chaîne d'outils intégrée GNU Arm ne fonctionne pas comme prévu et est toujours décrit comme "" ** hardware_init_hook = 0 ** "est activé et l'adresse de la fonction hardware_init_hook ** génère toujours un binaire à l'adresse 0x0 **. Cela signifie que lorsque vous exécutez le noyau ASP sur la carte, il passera à l'adresse 0x0 et ** répétera la réinitialisation **. Alors commentez le code pour hardware_init_hook comme suit: Ce qui suit est une modification du script de l'éditeur de liens pour 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)
De plus, s'il est laissé tel quel, une erreur se produira lors de la génération de cfg1_out pendant la construction, alors ajoutez un processus alternatif de "PROVIDE (hardware_init_hook = 0)" pour démarrer.S. Ajoutez le traitement suivant à la ligne de fin de start.S comme indiqué ci-dessous.
asp/arch/arm_m_gcc/common/start.S
.weak hardware_init_hook
bx lr
● Configuration du noyau ASP Sean Configurez le noyau ASP dans le répertoire dans lequel vous créez votre application. Cette fois, en ciblant la carte STM32F401 Nucleo-64, nous allons créer un environnement de construction d'application dans le répertoire / home / ubuntu / toppers / f401 / obj. Créez le répertoire f401 / obj avec la commande suivante.
cd /home/ubuntu/toppers
mkdir -p f401/obj
Accédez au répertoire f401 / obj avec la commande suivante et exécutez la configuration.
cd f401/obj
../../asp/configure -T stm32f401nucleo_gcc -dROM
Il réussit lorsque les fichiers suivants sont générés.
-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
La carte Nucleo peut être considérée comme un lecteur de disque en la connectant à votre PC via USB, et vous pouvez écrire des programmes dans ce répertoire en copiant le code binaire généré. Ajoutez la description de génération de fichier .bin à la partie suivante du Makefile afin que le code binaire soit généré lors de la génération de l'application.
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 ← ★ ajouté**
333 $(CFG) --pass 3 --kernel asp $(INCLUDES) \
Après l'ajout, vous pouvez créer l'application en exécutant make dans le répertoire f401 / obj.
cd f401/obj
make
Si les fichiers suivants sont générés, la génération réussit.
-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
Lorsque vous copiez asp.bin sur la carte STM32F401 Nucleo-64 et exécutez le programme, le message suivant est émis sur le port COM virtuel de la carte STM32F401 Nucleo-64.
● Copiez le fichier asp.bin sur un PC Windows En installant et en définissant Samba sur Raspai, vous pouvez écrire le fichier asp.bin sur Raspai dans STM32F401-Nucleo en faisant glisser et en déposant sur Explorer sur un PC Windows.
En développement avec Raspai, en plus de la méthode de réécriture du fichier binaire généré sur Raspai via un PC Windows vers la carte cible, il est également possible de faire fonctionner le Raspai seul en connectant le moniteur, le clavier et la carte cible à Raspai. Étant donné que la carte STM32F401-Nucleo est accessible depuis Linux en tant que / dev / ttyACM du port COM virtuel et / dev / sda1 du stockage de masse via une connexion USB, la sortie syslog () après l'exécution de l'écriture sur la carte cible est également exploitée par Raspeye seul. pouvez.
● Configuration opérationnelle via PC Windows
● Configuration opérationnelle de Raspeye seul
Si vous avez Raspberry Pi 3, Raspberry Pi 3+ ou Raspberry Pi 4, pourquoi ne pas essayer de créer l'environnement et de construire le programme en suivant les étapes décrites ici. Il existe de nombreux articles et informations qui utilisent Raspeye lui-même comme carte ou contrôleur pour le travail électronique, mais je pense que vous pouvez comprendre qu'il peut être suffisamment utilisé comme environnement de développement comme cette fois.