To execute menuconfig for U-Boot type
bitbake u-boot -c devshell
make menuconfig
The Art of the Electronics
To execute menuconfig for U-Boot type
bitbake u-boot -c devshell
make menuconfig
mtdpart
2. Partition erase
nand.erase part NAND.partition-name
nand.erase chip
3. Write partition
nand write ${loadaddr} NAND.partition-name ${filesize}
Przewodnik pozwala w prosty sposób skompilować OpenStLinuxa dla zestawu STM32MP1 DK2
Aby przeprowadzić poprawnie instalację wymagany jest następujący sprzęt
Zestaw STM32MP1 DK2

Aby przeprowadzić kompilację wymagany jest system Ubuntu 20.04 lub kompatybilny
Na początku należy upewnić się że następujące pakiety są zainstalowane w naszym systemie
sudo apt-get install curl gawk wget git diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm libncurses-dev python libegl1-mesa libssl-dev pylint python3-git python3-jinja2 python3-pip libmpc-dev libgmp-dev
W kolejnym kroku należy ściągnąć w odpowiednią lokalizację aplikację ’repo’
mkdir ~/usr mkdir ~/usr/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/usr/bin/repo sudo cp ~/usr/bin/repo /usr/bin sudo chmod a+rx /usr/bin/repo rm -rf ~/usr/bin/
Następnie przygotowujemy niezbędne narzędzia i Yocto
mkdir openstlinux-5.10-dunfell-mp1-21-03-31
cd openstlinux-5.10-dunfell-mp1-21-03-31
repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-5.10-dunfell-mp1-21-03-31
repo sync
DISTRO=openstlinux-weston MACHINE=stm32mp1-disco source layers/meta-st/scripts/envsetup.sh
bitbake st-image-weston
Po kilku godzinach lub minutach w zależności od sprzętu powinniśmy otrzymać gotowy obraz
Gotowy obraz można znaleźć w katalogu
/.../openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1-disco/tmp-glibc/deploy/images
Kolejnym krokiem jest przygotowanie karty SD
cd ~/openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1-disco/tmp-glibc/deploy/images/stm32mp1-disco/scripts
./create_sdcard_from_flashlayout.sh ../flashlayout_st-image-weston/trusted/FlashLayout_sdcard_stm32mp1-disco-trusted.tsv
Na końcu wypalamy przygotowany obraz na karcie SD pamiętając o odpowiednim wstawieniu urządzenia karty „/dev/sdx„. UWAGA! – błędne podanie wartości ’x’ zniszczy system plików komputera na którym było wszystko przygotowywane.
sudo dd if=/home/mw/openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1-disco/tmp-glibc/deploy/images/stm32mp1-disco/FlashLayout_sdcard_stm32mp1-disco-trusted.raw of=/dev/sdx bs=8M conv=fdatasync status=progress

Assumed that Linux Ubuntu 20.04 or higher is installed
Nothing currently
Nothing currently
sudo apt-get install gawk wget diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm libgmp3-dev libmpc-dev
Note: More information can be found on the Yocto reference manual.
2. Download the necessary Yocto packaged listed below. Be sure to be at the root of the home folder.
mkdir yocto cd yocto mkdir build git clone git://git.yoctoproject.org/poky --depth 1 -b dunfell cd poky git clone git://git.openembedded.org/meta-openembedded --depth 1 -b dunfell git clone https://github.com/meta-qt5/meta-qt5.git --depth 1 -b dunfell git clone git@github.com:voloviq/meta-jupiternano.git --depth 1 -b dunfell
3. Select directory to build LinuxNano version
source oe-init-build-env ~/yocto/build/jupiternano
4. Modify bblayers.conf(located in ~/yocto/build/jupiternano/conf)
BBLAYERS ?= ” \
${HOME}/yocto/poky/meta \
${HOME}/yocto/poky/meta-poky \
${HOME}/yocto/poky/meta-openembedded/meta-oe \
${HOME}/yocto/poky/meta-openembedded/meta-networking \
${HOME}/yocto/poky/meta-openembedded/meta-python \
${HOME}/yocto/poky/meta-qt5 \
${HOME}/yocto/poky/meta-jupiternano \
„
Note: Please adapt PATH of conf/bblayers.conf if necessary.
5. Modify local.conf(located in ~/yocto/build/jupiternano/conf) file
modify line with „MACHINE ??” to add „jupiternano”
align DL_DIR = „${HOME}/yocto/downloads”
align SSTATE_DIR = „${HOME}/yocto/sstate-cache”
align TMPDIR = „${HOME}/yocto/tmp”
add at the end following records
RM_OLD_IMAGE = „1”
INHERIT += „rm_work”
Note: Please adapt the rest of conf/local.conf parameters if necessary.
6. Build objects
console image
bitbake console-image
qt5 image
bitbake qt5-image
qt5 toolchain sdk
bitbake meta-toolchain-qt5
7. After compilation images appears in Nano version
~/yocto/tmp/deploy/images/jupiternano
8. Insert SD CARD into dedicated CARD slot and issue the following command to write an image
Note:
Be 100% sure to provide a valid device name (of=/dev/sde/mmcblk0). Wrong name „/dev/sde/mmcblk0” dameage Your system file !
Jupiter Nano version
sudo dd if=~/yocto/tmp/deploy/images/jupiternano/qt5-image-jupiter-nano.wic of=/dev/mmcblk0 bs=1024
To handle any GPIO pin there is common rule
Port should be calculated as follow
For instance PA5, PB11, PE12
PA5 this would be (1 - 1) * 32 + 5 = 0+5 = 5 (since 'a' is the 1st letter)
PB11 this would be (2 - 1) * 32 + 11 = 32+11 = 43 (since 'b' is the 2nd letter)
PE12 this would be (5 - 1) * 32 + 12 = 128+12 = 140 (since 'e' is the 5th letter)
First is export
echo 43 > /sys/class/gpio/export
than port direction configure
as input
echo "in" > /sys/class/gpio/gpio43/direction
as output
echo "out" > /sys/class/gpio/gpio43/direction
To read port
cat /sys/class/gpio/gpio43/value
To set '0′ or '1′
echo 0 > /sys/class/gpio/gpio43/value
echo 1 > /sys/class/gpio/gpio43/value
To release port
echo 43 > /sys/class/gpio/unexport
Aby sprawdzić z jakimi parametrami został uruchomiony kernel należy wydać polecenie z linii komend
cat /proc/cmdline
Przewodnik pozwala w prosty sposób skompilować OpenStLinuxa dla zestawu OCTAVO – OSD32MP1-BRK
Aby przeprowadzić poprawnie instalację wymagany jest następujący sprzęt
Zestaw OCTAVO – OSD32MP1-BRK

Aby przeprowadzić kompilację wymagany jest system Ubuntu 20.04 lub kompatybilny
Na początku należy upewnić się że następujące pakiety są zainstalowane w naszym systemie
sudo apt-get install curl gawk wget git diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm libncurses-dev python libegl1-mesa libssl-dev pylint python3-git python3-jinja2 python3-pip libmpc-dev libgmp-dev
W kolejnym kroku należy ściągnąć w odpowiednią lokalizację aplikację ’repo’
mkdir ~/usr mkdir ~/usr/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/usr/bin/repo sudo cp ~/usr/bin/repo /usr/bin sudo chmod a+rx /usr/bin/repo rm -rf ~/usr/bin/
Następnie przygotowujemy niezbędne narzędzia i Yocto
mkdir openstlinux-5.10-dunfell-mp1-21-11-17
cd openstlinux-5.10-dunfell-mp1-21-11-17
repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-5.10-dunfell-mp1-21-11-17
repo sync
cd layers/meta-st
git clone -b dunfell https://github.com/voloviq/meta-osd32mp1-brk.git
cd ../../
DISTRO=openstlinux-weston MACHINE=osd32mp1-brk source layers/meta-st/scripts/envsetup.sh
bitbake st-image-weston
Po kilku godzinach lub minutach w zależności od sprzętu powinniśmy otrzymać gotowy obraz
Gotowy obraz można znaleźć w katalogu
~/openstlinux-5.10-dunfell-mp1-21-11-17/build-openstlinuxweston-osd32mp1-brk/tmp-glibc/deploy/images/osd32mp1-brk
Kolejnym krokiem jest przygotowanie karty SD
cd ~/openstlinux-5.10-dunfell-mp1-21-11-17/build-openstlinuxweston-osd32mp1-brk/tmp-glibc/deploy/images/osd32mp1-brk/scripts
./create_sdcard_from_flashlayout.sh ../FlashLayout_sdcard_stm32mp157c-osd32mp157c-512m-baa_minimalconfig-mx-trusted.tsv
Na końcu wypalamy przygotowany obraz na karcie SD pamiętając o odpowiednim wstawieniu urządzenia karty „/dev/sdx„. UWAGA! – błędne podanie wartości ’x’ zniszczy system plików komputera na którym było wszystko przygotowywane.
sudo dd if=~/openstlinux-5.10-dunfell-mp1-21-11-17/build-openstlinuxweston-osd32mp1-brk/tmp-glibc/deploy/images/osd32mp1-brk/FlashLayout_sdcard_stm32mp157c-osd32mp157c-512m-baa_minimalconfig-mx-trusted.raw of=/dev/sdx bs=8M conv=fdatasync status=progress
Pierwszą czynnością jaką należy wykonać na stacji roboczej(przez stację roboczą rozumie się system z zdalną zawartością root-fsa)
sudo apt-get install nfs-kernel-server xinetd tftpd tftp tftpd-hpa
Konfiguracja serwera tftp
sudo nano /etc/xinetd.d/tftp
należy zaktualizować wpis zmieniając katalog dostępowy na najbardziej nam odpowiadający
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /home/mw/tftpboot
disable = no
}
Dla Ubuntu 22.04 należy zaktualizować wpis
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/mw/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /home/mw/tftpboot
disable = no
}
następnie tworzymy katalog dostępowy i nadajemy uprawnienia
sudo mkdir /home/mw/tftpboot
sudo chmod -R 777 /home/mw/tftpboot
sudo chown -R nobody /home/mw/tftpboot
Na końcu uruchamiamy proces
sudo service xinetd restart
Dla Ubuntu 22.04
sudo systemctl restart tftpd-hpa
Następnie konfigurujemy serwer nfs poprzez utworzenie katalogu dostępowego i nadanie mu odpowiednich uprawnień
mkdir -p /home/mw/nfs/cubieboard-nfs
sudo chmod 777 /home/mw/nfs/cubieboard-nfs
Kolejnym krokiem jest modyfikacja pliku
sudo nano /etc/default/nfs-kernel-server
NEED_SVCGSSD="no"

Należy się również upewnić że niżej wymienione wpisy istnieją w pliku
/etc/idmapd.conf

Jedną z ostatnich czynności jest podpięcie klienta poprzez dodanie odpowiedniego wpisu w pliku
sudo nano /etc/exports
dodać odpowiednio przygotowany wpis
/home/mw/nfs/cubieboard-nfs 192.168.0.49/24(rw,fsid=root,no_root_squash,no_subtree_check)

Ostatnią czynnością jest zrestartowanie
sudo /etc/init.d/nfs-kernel-server restart
Oczywiście należy się upewnić że w katalogu serwera nfs-a znajduje się odpowiednio przygotowany system plików dla urządzenia. Można to podczas kompilacji wykonać na przykład tak
tar -C /home/mw/nfs/cubieboard-nfs -xzf /home/mw/yocto/tmp/deploy/images/cubieboard/console-image-cubieboard.tar.gz
Należy również zadbać aby w katalogu tftpboot znalazły się najbardziej aktualne pliki kernela i dts-a (pliki muszą mieć dokładnie takie nazwy)

Po skonfigurowaniu tftp oraz nfs-a na stacji roboczej można przystąpić do konfiguracji modułu Cubieboard
Podstawowym warunkiem konfiguracji jest wgrany bootloader 1 i 2 poziomu na płytkę(na pamięć NAND lub SD kartę)
Po wystartowaniu U-Boot-a drugiego poziomu należy od razu go zatrzymać naciskając w konsoli dowolny przycisk

Pierwszą czynnością jest ustawienie adresu IP Cubieboard-a oraz adresu serwera sieciowego. Wykonujemy to poprzez wprowadzenie dwóch wpisów
setenv ipaddr 192.168.0.70
setenv serverip 192.168.0.34
setenv bootcmd 'tftp $kernel_addr_r zImage; tftp $fdt_addr_r sun4i-a10-cubieboard.dtb; tftp 0x43100000 boot.scr; source 0x43100000'
saveenv
W powyższym przykładzie założono że adres modułu Cubieboard to 192.168.0.70 natomiast stacji roboczej zawierającej rootfs-a dostępnego po NFS-ie to 192.168.0.34
Uproszczony przewodnik pokazujący w jaki sposób skonfigurować serwer NFS i uruchomić system dla modułu Beaglebone Black
Pierwszą czynnością jaką należy wykonać na stacji roboczej(przez stację roboczą rozumie się system z zdalną zawartością root-fsa)
sudo apt-get install nfs-kernel-server xinetd tftpd tftp
Konfiguracja serwera tftp
sudo nano /etc/xinetd.d/tftp
należy zaktualizować wpis zmieniając katalog dostępowy na najbardziej nam odpowiadający
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /home/mw/tftpboot
disable = no
}
następnie tworzymy katalog dostępowy i nadajemy uprawnienia
sudo mkdir /home/mw/tftpboot
sudo chmod -R 777 /home/mw/tftpboot
sudo chown -R nobody /home/mw/tftpboot
Na końcu uruchamiamy proces
sudo service xinetd restart
Następnie konfigurujemy serwer nfs poprzez utworzenie katalogu dostępowego i nadanie mu odpowiednich uprawnień
mkdir -p /home/mw/nfs/bbb-nfs
sudo chmod 777 /home/mw/nfs/bbb-nfs
Kolejnym krokiem jest modyfikacja pliku
sudo nano /etc/default/nfs-kernel-server
NEED_SVCGSSD="no"

Należy się również upewnić że niżej wymienione wpisy istnieją w pliku
/etc/idmapd.conf

Jedną z ostatnich czynności jest podpięcie klienta poprzez dodanie odpowiedniego wpisu w pliku
/etc/exports
dodać odpowiednio przygotowany wpis
/home/mw/nfs/bbb-nfs 192.168.0.49/24(rw,fsid=root,no_root_squash,no_subtree_check)

Ostatnią czynnością jest zrestartowanie
sudo /etc/init.d/nfs-kernel-server restart
sudo ln -s bin/busybox init
Można zamiast montować system plików manualnie zastąpić go automatycznym wpisem, modyfikując plik
sudo nano /etc/fstab

Oczywiście należy się upewnić że w katalogu serwera nfs-a znajduje się odpowiednio przygotowany system plików dla urządzenia. Można to podczas kompilacji wykonać na przykład tak
tar -C /home/mw/nfs/bbb-nfs -xzf /home/mw/yocto/tmp/deploy/images/beaglebone/console-image-beaglebone.tar.gz
Należy również zadbać aby w katalogu tftpboot znalazły się najbardziej aktualne pliki kernela i dts-a (pliki muszą mieć dokładnie takie nazwy)

Po skonfigurowaniu tftp oraz nfs-a na stacji roboczej można przystąpić do konfiguracji modułu Beaglebone Black
Podstawowym warunkiem konfiguracji jest wgrany bootloader 1 i 2 poziomu na płytkę(na pamięć MMC lub SD kartę)
Po wystartowaniu U-Boot-a drugiego poziomu należy od razu go zatrzymać naciskając w konsoli dowolny przycisk

Pierwszą czynnością jest ustawienie adresu IP Beaglebone-a oraz adresu serwera sieciowego. Wykonujemy to poprzez wprowadzenie dwóch wpisów
setenv ipaddr 192.168.0.70
setenv serverip 192.168.0.34
setenv bootcmd 'tftp 0x81000000 zImage; tftp 0x82000000 am335x-boneblack.dtb; bootz 0x81000000 - 0x82000000'
setenv bootargs root=/dev/nfs rw ip=dhcp console=ttyO0,115200n8 nfsroot=192.168.0.34:/home/mw/nfs/bbb-nfs,v3,tcp
setenv mmcrootfstype nfs
na końcu zapisujemy wyżej wprowadzone ustawienia wydając komendę
saveenv
i uruchamiamy system poprzez wydanie komendy
boot
Oczywiście należy się upewnić że 'kernel’ został skompilowany z opcją 'CONFIG_ROOT_NFS’
W powyższym przykładzie założono że adres modułu Beaglebone Black to 192.168.0.70 natomiast stacji roboczej zawierającej rootfs-a dostępnego po NFS-ie to 192.168.0.34
Przewodnik pozwala w prosty sposób skompilować Linuxa dla zestawu C.H.I.P – Allwinner R8
Aby przeprowadzić poprawnie instalację wymagany jest następujący sprzęt
Zestaw C.H.I.P – Allwinner R8

Aby przeprowadzić kompilację wymagany jest system Ubuntu 20.04 lub kompatybilny
Na początku należy upewnić się że następujące pakiety są zainstalowane w naszym systemie
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm libncurses-dev
Następnie przygotowujemy niezbędne narzędzia i Yocto
mkdir yocto
cd yocto
mkdir build
git clone git://git.yoctoproject.org/poky –depth 1 -b dunfell
cd poky
git clone git://git.openembedded.org/meta-openembedded –depth 1 -b dunfell
git clone https://github.com/meta-qt5/meta-qt5.git –depth 1 -b dunfell
git clone https://github.com/voloviq/meta-chip.git –depth 1 -b dunfell
source oe-init-build-env ~/yocto/build/chip
W następnym kroku należy zaktualizować pliki bblayers.conf oraz local.conf
w bblayers.conf aktualizujemy wpisy do postaci jak poniżej
BBLAYERS ?= „\
${HOME}/yocto/poky/meta \
${HOME}/yocto/poky/meta-poky \
${HOME}/yocto/poky/meta-openembedded/meta-oe \
${HOME}/yocto/poky/meta-openembedded/meta-networking \
${HOME}/yocto/poky/meta-openembedded/meta-python \
${HOME}/yocto/poky/meta-qt5 \
${HOME}/yocto/poky/meta-chip \
„
w local.conf dodajemy i aktualizujemy wpisy
„MACHINE ??” ustawiamy „chip”
Aktualizujemy i odznaczamy wpisy
DL_DIR = „${HOME}/yocto/downloads”
SSTATE_DIR = „${HOME}/yocto/sstate-cache”
TMPDIR = „${HOME}/yocto/tmp”
Na końcu pliku dodajemy 2 wpisy
RM_OLD_IMAGE = „1„
INHERIT += „rm_work”
Kompilację rozpoczynamy w konsoli wydaniem komendy
bitbake console-image
lub
bitbake qt5-image
UWAGA:
W HTML-u znak ” użyty jest źle kopiowany ze strony do notatnika na przykład. Należy zwrócić uwagę aby użyć prawidłowego znaku „.