mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 21:09:03 +02:00
352 lines
11 KiB
Plaintext
352 lines
11 KiB
Plaintext
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
|
|
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
|
|
- 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 1, 2 and CM will have UART console enabled by default.
|
|
|
|
RaspberryPi 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.
|
|
|
|
To contribute to this layer you should send the patches for review to the
|
|
above specified mailing list.
|
|
The patches should be compliant with the openembedded patch guidelines:
|
|
http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
|
|
|
|
|
|
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.B. 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>
|