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.
This layer depends on:
URI: git://git.yoctoproject.org/poky
branch: styhead
URI: git://git.openembedded.org/meta-openembedded
layers: meta-oe
branch: styhead
I. Configure yocto/oe Environment
II. Building meta-rockchip BSP Layers
III. Booting your Device
IV. Tested Hardwares
V. Supporting new Machine
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.
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
.
Under Linux, you can use upgrade_tool: http://opensource.rock-chips.com/wiki_Upgradetool to flash the image:
Put your device into rockusb mode: http://opensource.rock-chips.com/wiki_Rockusb
If it's maskrom rockusb mode, try to enter miniloader rockusb mode:
$ sudo upgrade_tool db <IMAGE PATH>/loader.bin
$ 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
The following undergo regular basic testing with their respective MACHINE types.
px3se evb board
rk3308 evb board
rk3326 evb board
px30 evb board
rk3328 evb board
rk3288 evb board
rk3399 sapphire excavator board
rk3399pro evb board
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}"
<jeffy.chen@rock-chips.com>