flashing yocto image to cm3 emmc - yocto

I am new to yocto world and i am trying to build a custom image for raspberrypi-cm3.
i have built the image with no errors and i have a generated image folder in the attached photo,enter image description here that contains multiple files that are confusing me such as
rpi-basic-image-raspberrypi-cm3.rootfs.tar.bz2
rpi-basic-image-raspberrypi-cm3.rootfs.ext3
image-kernelversion-machine.bin
rpi-basic-image-raspberrypi-cm3.rootfs.rpi-sdimg
bootcode.bin
and .dtb, .dtbo files
Now i am trying to understand what files are to be flashed to my emmc? how the boot partition will be created?
I have searched and found that i should create a .img where i copy all the files and flash it to the emmc.
But i am wondering how the emmc will be partionned.
As i knew there must be a boot partition and a rootfs partition.
i hope someone can explain to me how does the yocto images should be flashed on the emmc and what files should be considered.

Generated with meta-raspberrypi metadata layer binary file is - rpi-basic-image-raspberrypi-cm3.rootfs.rpi-sdimg, ready to install without any additional modification, so please try install it on Your eMMC:
sudo umount /dev/sdX
sudo dd if=tmp/deploy/images/rpi-basic-image-raspberrypi-cm3.rootfs.rpi-sdimg bs=4M of=/dev/sdX
sudo umount /dev/sdX

Related

Retain built image from a different configuration in Yocto

I have different configuration files all corresponding to the same hardware board. The configurations correspond to different recipes that we want to include or exclude for our customers. Each configuration file also specifies a directory where the final built images are placed (with DEPLOY_DIR_IMAGE=deploy/images/somedir_suffix).
The problem is that whenever I build an image, bitbake -r foo.conf core-image-minimal, the previously built image, in a different directory, is also deleted. How can I build an image without cleaning / deleting the contents of the other directories in deploy/images ?
Our yocto version is 2.3

Yocto project, try to add my device driver config into the Linux kernel configuration file

I am trying to add my own device driver to Linux kernel with Yocto Project.
I added my configuration like CONFIG_MY_DRIVER=y into the defconfig file in the BSP layer folder, meta-bsp/recipes-kernel/linux/linux-my/ and modified the bb file by adding SRC_URI += "file://defconfig".
After BitBake, I found that the .config file in the build directory didn't have CONFIG_MY_DRIVER=y, but the .config.old file did. It seems that the .config file has been overwritten by some background task. I am not familiar with it, can anyone help me to figure out it?
At the same you have to copy the CONFIG_MY_DRIVER=y into receipe-kernel/linux/linux-my/defconfig ,defconfig should reflected after adding the option into the yocto layer, Then fetch into kernel .bblayer
SRC_URI = "git address file://defconfig"
then start the bitbake server.

do_rootfs error when bitbake sdcard image

I have created sdcard images for imx6 with Yocto project. I try to create an image with "bitbake core-image-x11" command but I keep having these errores.I think the first proble is about disk partition and the other problem is about do_rootfs function. Please do help if you have solved this.errors
The error is shown in your screenshot.
/usr/IMX/fsl-community-bsp-new/build/tmp/deploy/images/imx6qsabresd/zImage-imx6qsabresd.bin: No such file or directory.
You need to ensure that this file exists in your deploy directory prior to executing the do_rootfs to create your sdcard image.
Please post your .bbclass or .bbappend file, or local.conf so we can obtain more information.

How to setup an own device tree for a RaspberryPI in yocto?

I like to disable and enable some pins in my RPi project.
These are GPIO 6, GPIO 5 and GPIO 26. I like to use these PINs in my own kernel driver.
For this project I connect a simple electric board via the GPIOs. The minimal system is build via yocto. I like to change the device tree file to disable/enable GPIOs.
I need to change or make my own dts file. For that I think I will need to:
find the original RPi dts
patch it or create my own dts
add it to the layer.conf
add file to the kernel recipe via append
How can I do this? or where can I find the sources?
Actually I am struggling to find the dts files for the RPi2 I am using. I was checking the "raspberrypi2-poky-linux-gnueabi" recipe results(and do not find any files).
I do not find any tutorial how to setup yocto + meta-raspberrypi + own dts. it would be great if we can figure out the necessary steps.
I'm not convinced this question has been well answered, so let me take a few minutes and document what I've done to add device tree overlays to my yocto builds.
This is a multi-problem process.
I'm going to make a few assumptions:
* You source your oe-init-build-env in a shell, and do your bitbake builds manually in a terminal (or you know how to do it with equivalent tooling)
* You know (or are already learning) the basics of device trees...
Start with your own meta layer. Mine is out on github.
You'll need to create an *-overlay.dts source file. You can start with a simple place holder, and stuff it (quite literally) anywhere on your system. We'll import it to your meta layer in the next step using bitbake to do some of the staging and what-not for us.
recipetool appendsrcfile -wm rpi /path/to/your-layer-meta virtual/kernel /path/to/your-overlay.dts 'arch/${ARCH}/boot/dts/overlays/your-overlay.dts
At this point, you should end up with a recipes-kernel/linux directory with an appropriate bbappend targeting the $MACHINE type of -wm (rpi, as above), ready to copy the device tree source file into the proper spot for bitbake to find it when it building the kernel. But it still won't be included in your kernel build.
We need to add the overlay reference to the KERNEL_DEVICETREE variable, in places that will cover the scopes of: linux, bootfiles, and the sdcard_image-rpi.bbclass from meta-raspberrypi.
In the linux bbappend created in step 3, add KERNEL_DEVICETREE += "overlays/your-overlay.dtbo" to make the linux kernel build include your dts as something to compile into a dtbo.
To make the sdcard_image-rpi.bbclass copy the file, you'll need to add KERNEL_DEVICETREE =+ "overlays/your-overlay.dtbo" to your image recipe.
To make the overlay active, you'll need to create a recipes-bsp/bootfiles/rpi-config_git.bbappend whereyou can append a do_deploy step to add the dtoverlay=your line to config.txt.
I use my layer for more than one project, so I felt OK with having the dts compile with every kernel but only copy it to images where my image recipe added it to the KERNEL_DEVICETREE. For further insurance that I don't get these things interferring in images I don't want them in, my rpi-config append has a test to see if I should add the dtoverlay line to the config.txt
Of course, this was all assuming you were going to use your own home-grown DTS without starting from a kernel-sourced one. The process would be largely the same, but you'd be able to patch the existing, or copy it, or whatever you want to do in your linux recipe.
I hope this helps! I know it's an old question.
First you need to find the kernel used on your yocto project, the recipe is linux-raspberry.bb or something like linux-*.bb. The preferred kernel is probably set in your local.conf or machine.conf: PREFERRED_PROVIDER_virtual/kernel ?= "linux-raspberry"
This is indirectly set via "meta-raspberrypi/conf/machine/include/rpi-default-providers.inc" which is included via "rpi-base.inc"
Once found, take a look at the recipe, clone the git repository of the kernel, on the right branch, and reset at the right SRCREV.
Once downloaded, the dts files are in /path/of/my/kernel/linux-raspberry/arch/arm/boot/dts/. You can find the name of the devicetree file used in the kernel recipe, local.conf or machine.conf, with the variable KERNEL_DEVICETREE = "..."
For the meta-raspberry and rpi2 selected, the dts files can be found in <path to build dir>/linux-raspberrypi2-standard-build/source/arch/arm/boot/dts/. The source dir is a linked dir to the git sources.
You can add a new dtb by creating dtsi/dts files (don't forget to add it in the Makefile).
Create a patch, add it to the kernel recipe:
SRC_URI += "file://0001-mypatch.patch"
and put the patch file like this in your meta
├── files
│   └── 0001-mypatch.patch
└── linux-raspberry.bb
Modify the KERNEL_DEVICETREE variable to add your new dtb.
Now you can bitbake your kernel/image, your new dtb will be created.

Building poky-tiny for the i.MX6 Ultra Lite Evaluation Kit

I'm currently trying to build poky-tiny for imx6ulevk (using the BSP Yocto Project Environment provided by NXP).
I first followed the Quick Start Guide, tested and everything worked just fine. I then went to the usual local.conf file (/build/conf/local.conf) and changed the DISTRO variable to poky-tiny.
In poky-tiny distro file (/sources/poky/meta-yocto/conf/distro/poky-tiny.conf), I changed the virtual/kernel in the variable PREFERRED_PROVIDER_virtual/kernel to linux-imx and the PREFERRED_VERSION_linux-imx to 3.14.38 which is compatible (I think).
I finally added to the local.conf the variable IMAGE_FSTYPES with the value tar.bz2 ext3 sdcard.
At this point I tried to build using:
bitbake core-image-minimal
this runs without any problems. But it doesn't generate sdcard image or any u-boot images as is expected. The only files generated are:
core-image-minimal-imx6ulevk-20160517152114.rootfs.cpio.gz
core-image-minimal-imx6ulevk-20160517152114.rootfs.manifest
core-image-minimal-imx6ulevk.cpio.gz
core-image-minimal-imx6ulevk.manifest
modules-imx6ulevk.tgz
zImage
zImage--3.14.38-r0-imx6ul-14x14-evk-20160517152114.dtb
zImage--3.14.38-r0-imx6ul-14x14-evk-csi-20160517152114.dtb
zImage--3.14.38-r0-imx6ulevk-20160517152114.bin
zImage-imx6ul-14x14-evk-csi.dtb
zImage-imx6ul-14x14-evk.dtb
zImage-imx6ulevk.bin
And I got stuck without knowing how to deploy to the imx6ulevk. What did I do wrong? Why is yocto not generating the usual sdcard image?
If anyone gets this what worked for me was the following:
Turns out poky-tiny for imx6ulevk does not create sdcard images normally. So what you need to do, once you build it with a proper kernel, is to manually create a bootable sdcard. This can be done by using gparted cleaning everything in it and adding 2 partitions, then proceed as follow:
1 - First you use gunzip in the file core-image-minimal-imx6ulevk-...-rootfs.cpio.gz.
2 - Call cpio on the generated file: cpio -i -vd < core-image-minimal...-.cpio
3 - You just generated the root file system copy everything into one of the partitions.
4 - the zImage...* files are the generated kernel for the poky-tiny distro. Copy all but the symbolic links to the second partition. You might need to rename the files (I had to) if you're not sure what to rename to, first build regular poky using sdcard image and check out the proper names.
That's pretty much it, you should be able to boot imx6ulevk using the provided files.