JeffyCN / meta-rockchip

Yocto BSP layer for the Rockchip SOC boards
Other
129 stars 97 forks source link
meta-rockchip px3se rk3288 rk3308 rk3326 rk3399 rockchip rocko thud yocto

meta-rockchip

Yocto BSP layer for the Rockchip SOC boards

This README file contains information on building and booting the meta-rockchip BSP layers.

Please see the corresponding sections below for details.

Dependencies

This layer depends on:

Table of Contents

I. Configure yocto/oe Environment

II. Building meta-rockchip BSP Layers

III. Booting your Device

IV. Tested Hardwares

V. Supporting new Machine

I. Configure yocto/oe Environment

In order to build an image with BSP support for a given release, you need to download the corresponding layers described in the "Dependencies" section. Be sure that everything is in the same directory.

~ $ mkdir yocto; cd yocto
~/yocto $ git clone git://git.yoctoproject.org/poky -b styhead
~/yocto $ git clone git://git.openembedded.org/meta-openembedded.git -b styhead

And put the meta-rockchip layer here too.

Then you need to source the configuration script:

~/yocto $ source poky/oe-init-build-env

Having done that, you can build a image for a rockchip board by adding the location of the meta-rockchip layer to bblayers.conf, along with any other layers needed.

For example:

# build/conf/bblayers.conf
BBLAYERS ?= " \
  ${TOPDIR}/../meta-rockchip \
  ${TOPDIR}/../poky/meta \
  ${TOPDIR}/../poky/meta-poky \
  ${TOPDIR}/../poky/meta-yocto-bsp \
  ${TOPDIR}/../meta-openembedded/meta-oe \

To enable a particular machine, you need to add a MACHINE line naming the BSP to the local.conf file:

  MACHINE = "xxx"

All supported machines can be found in meta-rockchip/conf/machine.

II. Building meta-rockchip BSP Layers

You should then be able to build a image with "rockchip-image" enabled in the local.conf file:

INHERIT:append = " rockchip-image"
$ bitbake core-image-minimal

At the end of a successful build, you should have an .wic image in /path/to/yocto/build/tmp/deploy/images/<MACHINE>/, also with an rockchip firmware image: update.img.

III. Booting your Device

Under Linux, you can use upgrade_tool: http://opensource.rock-chips.com/wiki_Upgradetool to flash the image:

  1. Put your device into rockusb mode: http://opensource.rock-chips.com/wiki_Rockusb

  2. If it's maskrom rockusb mode, try to enter miniloader rockusb mode:

$ sudo upgrade_tool db <IMAGE PATH>/loader.bin
  1. Flash the image (wic image or rockchip firmware image)
$ sudo upgrade_tool wl 0 <IMAGE PATH>/<IMAGE NAME>.wic # For wic image
$ sudo upgrade_tool uf <IMAGE PATH>/update.img # For rockchip firmware image

IV. Tested Hardwares

The following undergo regular basic testing with their respective MACHINE types.

V. Supporting new Machine

To support new machine, you can either add new machine config in meta-rockchip/conf/machine, or choose a similar existing machine and override it's configurations in local config file.

In general, a new machine needs to specify it's u-boot config, kernel config, kernel device tree and wifi/bt firmware:

For example:

KBUILD_DEFCONFIG = "rk3326_linux_defconfig"
KERNEL_DEVICETREE = "rockchip/rk3326-evb-lp3-v10-linux.dtb"
UBOOT_MACHINE = "evb-rk3326_defconfig"
RK_WIFIBT_RRECOMMENDS = " \
        rkwifibt-firmware-ap6212a1-wifi \
        rkwifibt-firmware-ap6212a1-bt \
        brcm-tools \
"

If you want to use your own local u-boot and kernel sources, a simple way is to override related configurations in local config file.

For example using the kernel/ and u-boot/ in the same directory of meta-rockchip:

# build/conf/local.conf
PREFERRED_VERSION_linux-rockchip := "6.1%"
LINUXLIBCVERSION := "6.1-custom%"

SRC_URI:pn-linux-rockchip = " \
        git://${TOPDIR}/../kernel;protocol=file;usehead=1 \
        file://cgroups.cfg \
"
SRCREV:pn-linux-rockchip = "${AUTOREV}"
KBRANCH = "HEAD"

SRC_URI:pn-linux-libc-headers = " \
        git://${TOPDIR}/../kernel;protocol=file;usehead=1 \
"
SRCREV:pn-linux-libc-headers = "${AUTOREV}"

SRC_URI:pn-u-boot-rockchip = " \
        git://${TOPDIR}/../u-boot;protocol=file;usehead=1 \
        git://${TOPDIR}/../rkbin;protocol=file;usehead=1;name=rkbin;branch=HEAD;destsuffix=rkbin \
"
SRCREV:pn-u-boot-rockchip = "${AUTOREV}"
SRCREV_rkbin:pn-u-boot-rockchip = "${AUTOREV}"

Maintainers