Exécutez le projet Yocto sur le Raspberry Pi Zero WH. Vous pouvez utiliser le Wi-Fi, vous pouvez utiliser gcc et vous pouvez contrôler l'USB avec libusb. J'ai évoqué diverses informations, mais j'avais des problèmes ici et là. Maintenant que ça marche enfin, je vais résumer ce que j'ai fait.
Cela ressemble à ceci lorsque je l'écris dans un diagramme.
À peu près comme le montre la figure ci-dessus.
Du côté du PC hôte
Le côté cible
Ainsi, Yocto Projecto utilisera 3.1 (Dunfell). J'utilise Dunfell car il est proche de la date de sortie d'Ubuntu 20.04.1.
Environ 128 Go de disque dur virtuel sont alloués à Ubuntu. Même avec 64 Go, je pense que ce qui est écrit après cela peut être fait à la dernière minute. À 32 Go, DiskFull n'a pas pu être généré. S'il vous plaît soyez prudente.
https://blog.web.nifty.com/engineer/1040 Je l'ai utilisé comme référence. Je fais presque le même flux qu'ici. Cela diffère ici et là en raison de la différence de version et du package que vous souhaitez mettre.
Il est supposé que Virtual Box 6.1 est installé sur le PC Windows10 et Ubuntu 20.04.1 est en cours d'exécution. Je n'expliquerai pas l'environnement jusqu'ici en détail.
Installez en vous référant à cet article
$ sudo apt-get install sed wget subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat make gcc build-essential xsltproc g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm libxml-parser-perl
Je pense que ce n'était pas suffisant. Je vais l'ajouter si je me souviens.
C'est comme travailler dans yocto / rpi0 dans votre répertoire personnel. Cette zone est votre choix. Apportez la branche Dunfell de Poky et de meta-raspberrypi.
$ mkdir yocto
$ cd yocto
$ mkdir rpi0
$ cd rpi0
$ git clone git://git.yoctoproject.org/poky.git -b dunfell
$ cd poky
$ git clone git://git.yoctoproject.org/meta-raspberrypi -b dunfell
$ source oe-init-build-env ../build
Si la commande réussit, le répertoire de construction sera créé et vous y serez déplacé.
J'apporte meta-openembedded et meta-linaro. Branche à Dunfell pour s'adapter au-dessus. J'ai apporté meta-linaro avec l'intention de faire gcc linaro, mais je ne l'ai pas vraiment utilisé. Peut-être que cela fonctionnera après cela sans cela. Cependant, je ne l'ai pas confirmé sans meta-linaro, je vais donc le laisser ici pour le moment.
$ cd ../poky
$ git clone git://git.openembedded.org/meta-openembedded -b dunfell
$ git clone git://git.linaro.org/openembedded/meta-linaro.git -b dunfell
$ cd ../build
$ nano conf/bblayers.conf
Je l'utilise souvent avec Raspberry Pi, c'est donc un groupe nano. Ajoutez des séries meta-openembedded et meta-raspberrypi à bblayers.conf.
bblayers.conf
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
/home/mine/yocto/rpi0/poky/meta \
/home/mine/yocto/rpi0/poky/meta-poky \
/home/mine/yocto/rpi0/poky/meta-yocto-bsp \
/home/mine/yocto/rpi0/poky/meta-openembedded/meta-oe \
/home/mine/yocto/rpi0/poky/meta-openembedded/meta-networking \
/home/mine/yocto/rpi0/poky/meta-openembedded/meta-perl \
/home/mine/yocto/rpi0/poky/meta-openembedded/meta-python \
/home/mine/yocto/rpi0/poky/meta-raspberrypi \
"
Modification de local.conf
$ nano conf/local.conf
Pour référence est copié presque tel quel.
Les différences sont expliquées ci-dessous.
J'ai ajouté ceux-ci en haut de local.conf et laissé les autres à leurs valeurs par défaut.
dl_dir ?= "${topdir}/downloads"
La ligne n'est pas commentée et activée.
local.conf
# machine setting
MACHINE = "raspberrypi0-wifi"
DISTRO_FEATURES_append = " bluez5"
COMBINED_FEATURES_append = " alsa ext2 usb-gadget usbhost wifi bluetooth"
# images
IMAGE_INSTALL_append = " linux-firmware-bcm43430 connman connman-client pulseaudio pulseaudio-server usbutils sudo "
IMAGE_INSTALL_append = " libusb-compat libusb-compat-dev libusb1 nano net-tools bash libjpeg-turbo libjpeg-turbo-dev tiff "
IMAGE_FEATURES_append = " ssh-server-dropbear"
EXTRA_IMAGE_FEATURES_append = " tools-sdk "
# use systemd
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES_append = " systemd"
# host setup
hostname_pn-base-files = "yoctopi"
INHERIT_append = " extrausers"
EXTRA_USERS_PARAMS = "useradd -P raspberry pi;usermod -P raspberry root;"
MACHINE
Cette fois, j'ai vérifié avec Raspberry Pi Zero WH, donc j'ai spécifié raspberrypi0-wifi
. raspberrypi
, raspberrypi0
, raspberrypi0-wifi
, raspberrypi2
, raspberrypi3
, raspberrypi3-64
, raspberrypi-cm
, raspberrypi-cm3
Il semble y avoir plusieurs définitions (non confirmées).usbgadget
de COMBINED_FEATURES_append
est laissé tel quel, une erreur de construction se produira. Je pense que cette façon d'écrire est correcte quel que soit le matériel que je regarde, mais en de rares occasions, les sites à l'étranger disent «usb-gadget», et lorsque j'essaye de l'écrire avec l'idée de m'accrocher à la paille, l'erreur disparaît. C'était. Je ne sais pas si c'est correct. Le nom a-t-il changé?IMAGE_INSTALL_append
. Je ne sais pas si les outils réseau ont fonctionné. J'ai ajouté bash pour le moment, mais je ne l'ai pas utilisé.EXTRA_IMAGE_FEATURES_append
manuel, j'ai écrit tools-sdk
ici. Il semble que gcc sera ajouté si vous le gardez. Cela fonctionne, donc je suis content de ça.EXTRA_USERS_PARAMS
Je n'ai pas envie de me connecter à Internet, donc la sécurité est minimale. Le mot de passe root est également "framboise". Si quelqu'un veut le copier, soyez prudent.Construisez avec la commande bitbake dans le répertoire de construction.
J'ai écrit sur différents sites pour construire avec $ bitbake rpi-hwup-image
, mais quand je l'ai essayé, j'ai reçu un avertissement comme" rpi-hwup-image est obsolète ". Le nouveau semble utiliser core-image-base
.
$ bitbake core-image-base
Dans mon environnement, attendez environ 8 heures. ..
En cas de succès, vous aurez un fichier dans build / tmp / deploy / images / raspberrypi0-wifi /
.
Il semble qu'il existe un fichier avec l'extension .rpi-sdimg dans l'ancien environnement, mais il semble qu'il ne puisse pas être créé par défaut depuis un certain temps (il semble qu'il puisse être créé en fonction du réglage).
Donc, j'utilise un fichier avec un nom comme core-image-base-raspberrypi0-wifi-YYYYMMDDhhmmss.rootfs.wic.bz2
. YYYYMMDDhhmmss contient-il l'heure de début de la construction? Y a-t-il une heure de fin de construction? (Je m'en fous trop)
Écrivez depuis Ubuntu avec la commande dd.
Insérez le lecteur de carte USB dans votre PC Windows 10 et sélectionnez [Device] -> [USB] -> [Card reader device-like name] dans le menu VirtualBox pour le rendre visible par Ubuntu. Lorsque je l'ai vérifié avec l'application "Disk", il a été attribué à / dev / sdb dans mon environnement. Je pense que c'est différent dans chaque environnement.
De plus, je ne sais pas si c'est nécessaire ou inutile, mais pour le moment, j'initialise toutes les partitions de la carte SD à chaque fois, la formate avec ext4 et l'écris. L'écriture prend quelques minutes, il est donc difficile de recommencer, afin d'éviter tout échec.
$ cp tmp/deploy/images/raspberrypi0-wifi/core-image-base-raspberrypi0-wifi-YYYYMMDDhhmmss.rootfs.wic.bz2 [Répertoire quelque part approprié]
$ cd [Répertoire quelque part approprié]
$ bunzip2 core-image-base-raspberrypi0-wifi-YYYYMMDDhhmmss.rootfs.wic.bz2
$ sudo dd if=core-image-base-raspberrypi0-wifi-YYYYMMDDhhmmss.rootfs.wic of=/dev/sdb bs=1M
J'ai peur quand quelque chose d'étrange se produit, alors je le copie dans un répertoire approprié et je travaille dessus. Il semble que vous puissiez extraire le fichier .wic.bz2 avec bunzip2 et l'écrire sur la carte SD tel quel avec la commande dd.
Insérez la carte SD avec le Yocto écrit dedans dans Raspberry Pi Zero WH, connectez HDMI et le clavier, et allumez l'alimentation.
Lancez depuis l'écran arc-en-ciel familier aux utilisateurs de Raspi. Ensuite, un message de démarrage est sorti ...
yoctopi login:
Si le message sort, c'est un succès. Vous pouvez vous connecter en tant qu'utilisateur pi ou root et l'utiliser autant que vous le souhaitez.
Est-ce que c'est comme ça?
$ nano hoge.c
hoge.c
#include <stdio.h>
int main()
{
printf("hogehoge!\n");
return 0;
}
$ gcc hoge.c -o hoge
$ ./hoge
hogehoge!
Je n'écrirai pas "Hello world!" Oh, c'était une disposition de clavier alphabétique dans l'état par défaut. Si vous connectez un clavier japonais, vous serez confus en tapant des symboles.
$ nano testUsb.c
testUsb.c
#include <stdio.h>
#include <usb.h>
int main()
{
usb_init();
printf("usb_init(): OK\n");
return 0;
}
$ gcc testUsb.c -o testUsb -lusb
$ ./testUsb
usb_init(): OK
Il n'y avait rien de correct, mais si vous construisez sans -lusb, vous obtiendrez une erreur de lien car il n'y a pas de usb_init (), donc libusb semble fonctionner tel quel.
J'ai inclus connman dans l'édition de local.conf, alors connectons-le au Wi-Fi. Comme ça.
$ connmanctl
connmanctl> technologies
connmanctl> enable wifi
connmanctl> scan wifi
connmanctl> services
[De nombreux points d'accès scannés sortent]
connmanctl> agent on
connmanctl> connect [Entrez l'un des points d'accès numérisés]
Passphrase? [Entrez la phrase de passe]
connmanctl> quit
Si vous vous connectez à un point d'accès ouvert, vous n'avez pas besoin de «agent activé». Si vous vous connectez au point d'accès avec cela, vous pouvez également vous connecter à SSH à partir d'un PC sur le LAN. Il semble que les paramètres du point d'accès qui était connecté une fois sont enregistrés quelque part, et à partir de la prochaine fois qu'il a été connecté sans autorisation.
Pour l'instant, Yocto Project 3.1 (Dunnfell) fonctionne sur Raspberry Pi Zero WH. Il semble que vous puissiez faire diverses choses car il est connecté au Wi-Fi et que le langage C fonctionne, mais en réalité, on ne sait pas quoi utiliser.
De plus, avec les paramètres introduits ici, Perl et Python étaient censés fonctionner, mais Perl fonctionnait et Python ne l'était pas. Nous étudions ce qui ne va pas, mais si quelqu'un sait comment faire fonctionner Python, faites-le moi savoir.
Recommended Posts