| Quick links |
| =========== |
| Git repository web frontend: |
| http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/ |
| Mailing list (yocto mailing list): |
| yocto@yoctoproject.org |
| Issues management (Github Issues): |
| https://github.com/agherzan/meta-raspberrypi/issues |
| |
| |
| Contents: |
| ========= |
| 1. Description |
| 2. Yocto BSP Layer - Raspberry Pi |
| 2.A. How to use it |
| 2.B. Images |
| 3. Optional build configuration |
| 3.A. Compressed deployed files |
| 3.B. GPU memory |
| 3.C. Add purchased license codecs |
| 3.D. Disable overscan |
| 3.E. Set overclocking options |
| 3.F. Video camera support with V4L2 drivers |
| 3.G. Enable offline compositing support |
| 3.H. Enable kgdb over console support |
| 3.I. Boot to U-Boot |
| 3.J. Image with Initramfs |
| 3.K. Device tree support |
| 3.L. Enable SPI bus |
| 3.M. Enable I2C |
| 3.N. Enable PiTFT support |
| 3.O. Enable UART support |
| 4. Extra apps |
| 4.A. omxplayer |
| 5. Board Configuration |
| 5.A. Audio Routing |
| 6. Source code and mirrors |
| 7. Contribution |
| 7.A. Mailing List |
| 7.B. Github Issues |
| 8. Maintainers |
| |
| |
| 1. Description |
| ============== |
| |
| This is the general hardware specific BSP overlay for the RaspberryPi device. |
| |
| More information can be found at: |
| http://www.raspberrypi.org/ (Official Site) |
| |
| The core BSP part of meta-raspberrypi should work with different |
| OpenEmbedded/Yocto distributions and layer stacks, such as: |
| * Distro-less (only with OE-Core). |
| * Angstrom. |
| * Yocto/Poky (main focus of testing). |
| |
| 2. Yocto BSP Layer - RaspberryPi |
| ================================ |
| |
| This layer depends on: |
| |
| URI: git://git.yoctoproject.org/poky |
| branch: master |
| revision: HEAD |
| |
| URI: git://git.openembedded.org/meta-openembedded |
| layers: meta-oe, meta-multimedia, meta-networking, meta-python |
| branch: master |
| revision: HEAD |
| |
| 2.A. How to use it |
| ================== |
| a. source poky/oe-init-build-env rpi-build |
| b. Add needed layer to bblayers.conf: |
| - meta-raspberrypi |
| c. Set MACHINE in local.conf to one of the supported boards: |
| - raspberrypi |
| - raspberrypi0 |
| - raspberrypi0-wifi |
| - raspberrypi2 |
| - raspberrypi3 |
| - raspberrypi-cm (dummy alias for raspberrypi) |
| - raspberrypi-cm3 (dummy alias for raspberrypi2) |
| d. bitbake rpi-hwup-image |
| e. dd to a SD card the generated sdimg file (use xzcat if rpi-sdimg.xz is used) |
| f. Boot your RPI. |
| |
| 2.B. Images |
| -=========== |
| * rpi-hwup-image |
| Hardware up image |
| * rpi-basic-image |
| Based on rpi-hwup-image with some added features (ex: splash) |
| * rpi-test-image |
| Image based on rpi-basic-image which includes most of the packages in this |
| layer and some media samples. |
| |
| 3. Optional build configuration |
| =============================== |
| |
| There are a set of ways in which a user can influence different paramenters of the build. |
| We list here the ones that are closely related to this BSP or specific to it. For the rest |
| please check: http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html |
| |
| 3.A. Compressed deployed files |
| ============================== |
| 1. Overwrite IMAGE_FSTYPES in local.conf |
| IMAGE_FSTYPES = "tar.bz2 ext3.xz" |
| 2. Overwrite SDIMG_ROOTFS_TYPE in local.conf |
| SDIMG_ROOTFS_TYPE = "ext3.xz" |
| 3. Overwrite SDIMG_COMPRESSION in local.conf |
| SDIMG_COMPRESSION = "xz" |
| *Accommodate the values above to your own needs (ex: ext3 / ext4). |
| |
| 3.B. GPU memory |
| =============== |
| Variable : Details |
| GPU_MEM : GPU memory in megabyte. Sets the memory split between the ARM and |
| GPU. ARM gets the remaining memory. Min 16. Default 64. |
| GPU_MEM_256 : GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by the |
| 512MB RP. Overrides gpu_mem. Max 192. Default not set. |
| GPU_MEM_512 : GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by the |
| 256MB RP. Overrides gpu_mem. Max 448. Default not set. |
| GPU_MEM_1024: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by the |
| 256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set. |
| |
| 3.C. Add purchased license codecs |
| ================================= |
| To add you own licenses use variables KEY_DECODE_MPG2 and KEY_DECODE_WVC1 in |
| local.conf. Example: |
| KEY_DECODE_MPG2 = "12345678" |
| KEY_DECODE_WVC1 = "12345678" |
| You can supply more licenses separated by comma. Example: |
| KEY_DECODE_WVC1 = "0x12345678,0xabcdabcd,0x87654321" |
| |
| 3.D. Disable overscan |
| ===================== |
| By default the GPU adds a black border around the video output to compensate for |
| TVs which cut off part of the image. To disable this set this variable in |
| local.conf: |
| DISABLE_OVERSCAN = "1" |
| |
| 3.E. Set overclocking options |
| ============================= |
| The Raspberry PI can be overclocked. As of now overclocking up to the "Turbo |
| Mode" is officially supported by the raspbery and does not void warranty. |
| Check the config.txt for a detailed description of options and modes. Example: |
| # Turbo mode |
| ARM_FREQ = "1000" |
| CORE_FREQ = "500" |
| SDRAM_FREQ = "500" |
| OVER_VOLTAGE = "6" |
| |
| 3.F. Video camera support with V4L2 drivers |
| =========================================== |
| Set this variable to enable support for the video camera (Linux 3.12.4+ required) |
| VIDEO_CAMERA = "1" |
| |
| 3.G. Enable offline compositing support |
| ======================================= |
| Set this variable to enable support for dispmanx offline compositing |
| DISPMANX_OFFLINE = "1" |
| |
| This will enable the firmware to fall back to off-line compositing of |
| Dispmanx elements. Normally the compositing is done on-line, during scanout, |
| but cannot handle too many elements. With off-line enabled, an off-screen |
| buffer is allocated for compositing. When scene complexity (number and sizes |
| of elements) is high, compositing will happen off-line into the buffer. |
| |
| Heavily recommended for Wayland/Weston. |
| |
| See: http://wayland.freedesktop.org/raspberrypi.html |
| |
| 3.H. Enable kgdb over console support |
| ===================================== |
| To add the kdbg over console (kgdboc) parameter to the kernel command line, |
| set this variable in local.conf: |
| ENABLE_KGDB = "1" |
| |
| 3.I. Boot to U-Boot |
| =================== |
| To have u-boot load kernel image, set in your local.conf |
| KERNEL_IMAGETYPE = "uImage" |
| |
| This will make kernel.img be u-boot image which will load uImage. |
| By default, kernel.img is the actual kernel image (ex. Image). |
| |
| 3.J. Image with Initramfs |
| ========================= |
| To build an initramfs image : |
| * Set this 3 kernel variables (in linux-raspberrypi.inc for example) |
| - kernel_configure_variable BLK_DEV_INITRD y |
| - kernel_configure_variable INITRAMFS_SOURCE "" |
| - kernel_configure_variable RD_GZIP y |
| * Set the yocto variables (in linux-raspberrypi.inc for example) |
| - INITRAMFS_IMAGE = "<a name for your initramfs image>" |
| - INITRAMFS_IMAGE_BUNDLE = "1" |
| * Set the meta-rasberrypi variable (in raspberrypi.conf for example) |
| - KERNEL_INITRAMFS = "-initramfs" |
| |
| 3.K. Device tree support |
| ========================= |
| Device tree for RPi is only supported when using linux-raspberrypi 3.18+ |
| kernels. |
| |
| * Set KERNEL_DEVICETREE (in conf/machine/raspberrypi.conf) |
| - the trailer is added to the kernel image before kernel install task. |
| While creating the SDCard image, this modified kernel is put on |
| boot partition (as kernel.img) as well as DeviceTree blobs (.dtb files). |
| |
| NOTE: KERNEL_DEVICETREE is default enabled for kernel >= 3.18 and always disabled for |
| older kernel versions. |
| |
| 3.L. Enable SPI bus |
| ==================== |
| When using device tree kernels, set this variable to enable the SPI bus |
| ENABLE_SPI_BUS = "1" |
| |
| 3.M. Enable I2C |
| =============== |
| When using device tree kernels, set this variable to enable I2C |
| ENABLE_I2C = "1" |
| |
| 3.N. Enable PiTFT support |
| ========================= |
| Basic support for using PiTFT screens can be enabled by adding |
| below in local.conf: |
| |
| MACHINE_FEATURES += "pitft" |
| - This will enable SPI bus and i2c device-trees, it will also setup |
| framebuffer for console and x server on PiTFT. |
| |
| NOTE: To get this working the overlay for the PiTFT model must be build, |
| added and specified as well (dtoverlay=<driver> in config.txt) |
| |
| Below is a list of currently supported PiTFT models in meta-raspberrypi, |
| the modelname should be added as a MACHINE_FEATURES in local.conf like below: |
| - MACHINE_FEATURES += "pitft <modelname>" |
| |
| List of currently supported models: |
| - pitft22 |
| - pitft28r |
| |
| 3.O. Enable UART |
| =============== |
| RaspberryPi 0, 1, 2 and CM will have UART console enabled by default. |
| |
| RaspberryPi 0 WiFi and 3 does not have the UART enabled by default because this |
| needs a fixed core frequency and enable_uart wil set it to the minimum. Certain |
| operations - 60fps h264 decode, high quality deinterlace - which aren't |
| performed on the ARM may be affected, and we wouldn't want to do that to users |
| who don't want to use the serial port. Users who want serial console support on |
| RaspberryPi3 will have to explicitely set in local.conf: ENABLE_UART = "1". |
| |
| Ref.: https://github.com/raspberrypi/firmware/issues/553 |
| https://github.com/RPi-Distro/repo/issues/22 |
| |
| 4. Extra apps |
| ============= |
| |
| 4.A. omxplayer |
| ============== |
| omxplayer depends on libav which has a commercial license. So in order to be |
| able to compile omxplayer you will need to whiteflag the commercial license |
| adding to you local.conf: |
| LICENSE_FLAGS_WHITELIST = "commercial" |
| |
| 5. Board Configuration |
| ====================== |
| |
| 5.A. Audio Routing |
| ================== |
| To load audio driver |
| |
| modprobe snd-bcm2835 |
| |
| To test audio playback |
| |
| e.g. aplay test.wav |
| |
| Note that without HDMI connected this emits audio from the 3.5in jack connector |
| as expected. However With an HDMI display connected there is no audio output from |
| the jack connector. |
| |
| To force the audio routing via the 3.5in jack connector use |
| |
| amixer cset numid=3 1 |
| |
| Options to amixer cset are: |
| |
| 0=auto |
| 1=headphones |
| 2=hdmi |
| |
| 6. Source code and mirrors |
| ========================== |
| |
| Main repo: |
| git://git.yoctoproject.org/meta-raspberrypi |
| http://git.yoctoproject.org/git/meta-raspberrypi |
| |
| Github mirror: |
| https://github.com/agherzan/meta-raspberrypi |
| |
| Bitbucket mirror: |
| https://bitbucket.org/agherzan/meta-raspberrypi |
| |
| |
| 7. Contributing |
| =============== |
| |
| 7.A. Mailing list |
| ================= |
| The main communication tool we use is a mailing list: |
| yocto@yoctoproject.org |
| https://lists.yoctoproject.org/listinfo/yocto |
| |
| Feel free to ask any kind of questions but always prepend your email subject |
| with "[meta-raspberrypi]". This is because we use the 'yocto' mailing list and |
| not a perticular 'meta-raspberrypi' mailing list. |
| |
| 7.B. Patches and pull requests |
| ============================== |
| |
| To contribute to this project you should send pull requests to the github mirror |
| (<https://github.com/agherzan/meta-raspberrypi>). **Additionally** you can send |
| the patches for review to the above specified mailing list. |
| |
| When creating patches, please use something like: |
| |
| git format-patch -s --subject-prefix='meta-raspberrypi][PATCH' origin |
| |
| When sending patches to mailing list, please use something like: |
| |
| git send-email --to yocto@yoctoproject.org <generated patch> |
| |
| 7.C. Github issues |
| ================== |
| In order to manage and trace the meta-raspberrypi issues, we use github issues: |
| https://github.com/agherzan/meta-raspberrypi/issues |
| |
| If you push patches which have a github issue associated, please provide the |
| issue number in the commit log just before "Signed-off-by" line(s). Example line |
| for a bug: |
| [Issue #13] |
| |
| |
| 8. Maintainers |
| ============== |
| |
| Andrei Gherzan <andrei at gherzan.ro> |