Raspberry Pi Zero W
- Doc
- https://jumpnowtek.com/rpi/Raspberry-Pi-Systems-with-Yocto.html
- https://www.youtube.com/watch?v=MjJw3c_5VC0
- https://jumpnowtek.com/rpi/Using-DS18B20-1-wire-Temp-Sensors-with-the-Raspberry-Pi.html
- Yocto compatible layers, contains e.g. meta-bsp for rpi etc. Should be first choice
- General layer index, Should be second choice:
- http://git.yoctoproject.org/cgit/cgit.cgi/poky/- meta-poky reference layer, contains tools to build project
- http://git.openembedded.org/meta-openembedded - meta-openembedded a layer that contains all useful tools across the embedded world.
- https://www.yoctoproject.org/docs/2.7/ref-manual/ref-manual.html#ref-features - features shipped by YOCTO project
- bitbake core-image-minimal - build image
- bitbake core-image-minimal -c populate_sdk - build image with sdk
- -g - create dependency graph e.g. bibake -g foo example
- bitbake -c compile name - compile package
MACHINEL_EXTRA_RRECOMMENDS_append - do obrazu (NIE DLA obrazów typu core-image) dodane zostaną zdefiniowane paczki (np. sterownik wifi) CHYBA, że taki steronik znajduje się już w kernelu. Wtedy nie zostanie dodany, ale build się nie wywali.
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS_append - do obrazu (nawet bazującego na core-image) dodane zostaną zdefiniowane paczki (np. sterownik wifi) CHYBA, że taki steronik znajduje się już w kernelu. Wtedy nie zostanie dodany, ale build się nie wywali.
IMAGE_FEATURES += "ssh-server-dropbear tools-debug debug-tweaks" - dodaje ficzery (zdefiniowane wcześniej), dla danego obrazu. Może być tak, że np. ficzer ssh-server-dropbear zawiera wiele paczek.
CORE_IMAGE_EXTRA_INSTALL += "ethtool evtest fbset i2c-tools memtester" - do obrazu core image zostaną doadne jakieś pakiety, które nie są zdefiniowane jako ficzery, mogą to być np. pojedyncze paczki.
core-image-minimal (core-image-minimal.bb) nadpisuje IMAGE_INSTALL całkowicie! -
IMAGE_INSTALL = "packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL}"
core-image-base - zawiera dużo więcej paczek. To co znajduje się w core-image-base jest w (core-image.bbclass)
CORE_IMAGE_BASE_INSTALL = '\
packagegroup-core-boot \ -> packagegroup-core-boot.bb
packagegroup-base-extended \ -> package-group-base.bb
\
${CORE_IMAGE_EXTRA_INSTALL} \
'
CORE_IMAGE_EXTRA_INSTALL ?= ""
IMAGE_INSTALL ?= "${CORE_IMAGE_BASE_INSTALL}"
Zawierają np.:
- link do repo z kodem
- zależności
- dodaj recepture do katalogu, np. meta-somlabs/recipies-somlabs/somlabs-example
|-- somlabs-example
|-- somlabs-example
|-- main.c
|-- somlabs-example.bb
W pliku .bb dla recepty należy dodać:
[...]
inherit systemd
SYSTEMD_AUTO_ENABLE = "enable"
SYSTEMD_SERVICE_${PN} = "somlabs-example.service"
[...]
|-- somlabs-example
|-- somlabs-example
|-- main.c
|-- somlabs-example.service
|-- somlabs-example.bb
- bitbake -c menuconfig busybox - opens menuconfig for busybox package
- bitbake -c diffconfig busybox -> creates fragment to use in .bbappend
- recipetool appendsrcfile -w [path to layer] busybox [path to fragment generated in step #2]
bzip2 -d -f core-image-minimal-raspberrypi0-wifi-20210228190520.rootfs.wic.bz2
sudo dd if=core-image-minimal-raspberrypi0-wifi-20210228190520.rootfs.wic of=/dev/mmcblk0 bs=1M status=progress
sudo bmaptool copy --nobmap hhctrl-image-dev-hhctrl.wic.bz2 /dev/mmcblk0
- add following line to conf (local.conf / machine.conf etc) TOOLCHAIN_TARGET_TASK_append = " kernel-devsrc"
- compile sdk -> - bitbake core-image-minimal -c populate_sdk
- install sdk -> (sudo) /home/pp/yocto-hh/build/tmp/deploy/sdk/sheli-dev-glibc-x86_64-core-image-minimal-arm1176jzfshf-vfp-hhctrl-toolchain-1.0.0.sh
- add compiler to path -> export PATH=$PATH:/opt/sheli-dev/1.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH
- go to kernel dir -> cd /opt/sheli-dev/1.0.0/sysroots/arm1176jzfshf-vfp-poky-linux-gnueabi/usr/src/kernel
- log as root -> su (root)
- make scripts -> ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- make scripts
- make prepare -> ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- make modules_prepare / prepare
- source sdk evn -> source /opt/sheli-dev/1.0.0/environment-setup-arm1176jzfshf-vfp-poky-linux-gnueabi
- compile module -> KERNEL_SRC=/opt/sheli-dev/1.0.0/sysroots/arm1176jzfshf-vfp-poky-linux-gnueabi/usr/src/kernel make
- add to machine conf -> KERNEL_DEVICETREE_append += " overlays/pwm.dtbo"
- add to boot/config.txt -> dtoverlay=pwm (or dtoverlay=pwm,pin=12,func=4 if you want to remap pin to GPIO12, default GPIO18)
- optionally this one supports 2chan pwm -> pwm-2chan-overlay.dts
- optionally add dtoverlay=pwm to RPI_EXTRA_CONFIG
How To use PWM in Linux through sysfs
- https://www.yoctoproject.org/pipermail/yocto/2018-June/041372.html
- https://github.com/drewmoseley/meta-wifi-credentials/blob/master/sysvinit/recipes-connectivity/wpa-supplicant/wpa-supplicant_%25.bbappend - multiple ways to enable wlan configuration
- https://raspberrypi.stackexchange.com/questions/48351/configure-wlan-for-raspberrypi3-using-image-created-with-yocto - adding broadcom drivers to kernel
- https://raspberrypi.stackexchange.com/questions/48351/configure-wlan-for-raspberrypi3-using-image-created-with-yocto