Linaro / meta-qcom

OpenEmbedded/Yocto Project BSP layer for Qualcomm based platforms
MIT License
64 stars 76 forks source link

info: flash core-image-minimal into rb3gen2 qcs6490 #616

Open Scott31393 opened 4 months ago

Scott31393 commented 4 months ago

Hi All,

Sorry for bothering. I'm working on top of your meta-qcom

My target is to run mainline linux kernel into rb3gen2 (6490) board. I want ask if you can share some guide to flash the yocto images generated with this layer. I'm able to build/flash the qcom bsp based on the following yocto manifest: https://github.com/quic-yocto/qcom-manifest/blob/qcom-linux-kirkstone/qcom-6.6.28-QLI.1.1-Ver.1.1.xml using qdl tool.

My plan is to do a test on mainline linux kernel. I think to flash those images into the board you are using a different partitioning schema with a different approach. When I'm trying to flash the bsp using the following cmd I'm getting:

fastboot flash boot ./boot-qcs6490-rb3gen2-qcom-armv8a.img
Sending 'boot' (8264 KB)                           OKAY [  0.444s]
Writing 'boot'                                     FAILED (remote: 'No such partition.')
fastboot: error: Command failed

Qcom bsp is providing efi partition once I flash all the images using qdl. Maybe I need to build another image?

Do you have some tips/guide to share? :) Many thanks in advance!

Thanks & Regards, Tommaso

Scott31393 commented 4 months ago

Update:

Fixing the following issue from: recipes-kernel/images/linux-qcom-uki.bb

NOTE: Resolving any missing task queue dependencies
ERROR: /qualcom/yocto-mainline/poky/meta-qcom/recipes-kernel/images/linux-qcom-uki.bb:do_configure[depends], dependency ${@ in '      systemd-boot:do_deploy     virtual/kernel:do_deploy      ${@ '${INITRAMFS_IMAGE}:do_image_complete' if d.getVar('INITRAMFS_IMAGE') else ''}' does not contain exactly one ':' character.
 Task 'depends' should be specified in the form 'packagename:task'
ERROR: Command execution failed: Exited with 1

I'm able to bitbake esp-qcom-image using that image I can flash efi partition given by the vendor bsp using:

fastboot flash efi ./boot-qcs6490-rb3gen2-qcom-armv8a.img

Unfortunately now I'm getting some issue from the kernel that has no bootargs. I guess this because KERNEL_CMDLINE_EXTRA variable is empty and the kernel is not able to mount the fs.

Booting Linux on physical CPU 0x0000000000 [0x412fd050]
Linux version 6.6.35-yocto-standard (oe-user@oe-host) (aarch64-poky-linux-gcc (GCC) 14.1.0, GNU ld (GNU Binutils)
....
...
Call trace:
 dump_backtrace+0x90/0xe8
 show_stack+0x18/0x24
 dump_stack_lvl+0x48/0x60
 dump_stack+0x18/0x24
 panic+0x304/0x35c
 mount_root_generic+0x280/0x350
 mount_root+0x178/0x33c
 prepare_namespace+0x6c/0x2b0
 kernel_init_freeable+0x2e8/0x3e4
 kernel_init+0x28/0x1dc
 ret_from_fork+0x10/0x20
SMP: stopping secondary CPUs
Kernel Offset: disabled
CPU features: 0x0,c0000000,70020143,1000720b
Memory Limit: none
---[ end Kernel panic - not syncing: Invalid configuration from end user prevents continuing ]---

I will continue tomorrow :)

Scott31393 commented 4 months ago

Hi All,

Finally I'm able to run the core-image-minimal, below some steps. First of all I flash the qcom yocto image into the the qcs6490rb3gen2 board, or flash the prebuild images.

Then:

# step 1: build required yocto images

git clone git://git.yoctoproject.org/poky
git clone https://github.com/openembedded/meta-openembedded.git
cd poky
source oe-init-build-env ../build-qcom-armv8a

bitbake-layers add-layer ../meta-qcom
bitbake-layers add-layer ../meta-openembedded/

bitbake initramfs-qcom-image core-image-minimal esp-qcom-image
------------------------------------------------------------------------------------------

# step 2: create uki.efi image
# ukify tool is located at: tmp/sysroots-components/x86_64/systemd-boot-native/usr/bin/ukify

cd <deploy-dir>

ukify build --efi-arch=aa64  \
    --stub=./linuxaa64.efi.stub \
    --linux=./Image \
    --initrd=./initramfs-qcom-image-qcom-armv8a.cpio.gz \
    --cmdline="root=/dev/disk/by-partlabel/system rw rootwait console=ttyMSM0,115200n8 \
            earlycon pcie_pme=nomsi kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 k \
            pti=off kasan=off kasan.stacktrace=off no-steal-acc page_owner=on swiotlb=128" \
    --devicetree=./qcs6490-rb3gen2.dtb \
    --output=./uki.efi

# copy uki.efi into esp-qcom-image-qcom-armv8a.rootfs.vfat image (efi.img)

sudo mount esp-qcom-image-qcom-armv8a.rootfs.vfat /mnt
sudo cp uki.efi /mnt/EFI/Linux/linux-qcom-armv8a.efi
sudo umount /mnt
------------------------------------------------------------------------------------------

# step 3: flash efi and system partition

adb shell reboot bootloader
fastboot erase efi
fastboot erase system
fastboot flash efi ./esp-qcom-image-qcom-armv8a.rootfs.vfat
fastboot flash system ./core-image-minimal-qcom-armv8a.rootfs-20240723215932.ext4
fastboot reboot

core-image-minimal logs:

Poky (Yocto Project Reference Distro) 5.0+snapshot-e18d60deb0496f7c91f2de900d6c024b45b7910a qcom-armv8a /dev/ttyMSM0
qcom-armv8a login: root
root@qcom-armv8a:~# uname -a
Linux qcom-armv8a 6.6.35-yocto-standard #1 SMP PREEMPT Fri Jun 28 17:07:28 UTC 2024 aarch64 GNU/Linux

Question:

Thanks in advance, Tommaso

lumag commented 4 months ago

@Scott31393 For uki image you should be able to run bitbake linux-qcom-uki. If that doesn't work, we have an issue that must be fixed.

Regarding HDMI. Unfortunately the HDMI support wasn't backported yet, you can try combining the logic in #593 and the patch at https://lore.kernel.org/linux-arm-msm/20240528141954.7567-1-quic_vvalluru@quicinc.com/

lumag commented 4 months ago

Regarding wayland. This question is off-topic for the meta-qcom (it is purely a BSP and doesn't provide any higher-level integration). As a part of the RPB effort we have been providing the RPB-weston image, but this image hasn't been tested for quite a while.

Scott31393 commented 4 months ago

Hi @lumag,

@Scott31393 For uki image you should be able to run bitbake linux-qcom-uki. If that doesn't work, we have an issue that must be fixed.

I will work on fix that, thanks.

Regarding HDMI. Unfortunately the HDMI support wasn't backported yet, you can try combining the logic in #593 and the patch at https://lore.kernel.org/linux-arm-msm/20240528141954.7567-1-quic_vvalluru@quicinc.com/

Thanks for sharing. Will do a try on this.

What about a new machine qcs6490.conf or rb3gen2.conf that inherit from generic qcom-armv8a.conf and put here some board specific customization like: KERNEL_CMDLINE_EXTRA and others? Do you agree on that or I'm completely wrong?

Thanks, Tommaso

lumag commented 4 months ago

The meta-qcom idea is to have a generic machines only. The rootfs should work on every supported board without the need to further customize it (such customizations often end up being poorly designed or not really fitting). You can still put custom kernel command line options to qcom-armv8a.conf (or to local.conf), they are specied per the dtb.

KERNEL_CMDLINE_EXTRA[sdm845-db845c] ?= "clk_ignore_unused pd_ignore_unused"
Scott31393 commented 4 months ago

The meta-qcom idea is to have a generic machines only. The rootfs should work on every supported board without the need to further customize it (such customizations often end up being poorly designed or not really fitting). You can still put custom kernel command line options to qcom-armv8a.conf (or to local.conf), they are specied per the dtb.

KERNEL_CMDLINE_EXTRA[sdm845-db845c] ?= "clk_ignore_unused pd_ignore_unused"

Already saw that, thanks the same. Thanks for sharing the idea behind.

Regards, Tommaso

Thejesh99 commented 4 months ago

https://github.com/Linaro/meta-qcom/issues/616#issuecomment-2246432930 can anyone provide a more detailed yocto build for qualcomm robotics RB3 gen 2 vision kit

ricardosalveti commented 3 months ago

#616 (comment) can anyone provide a more detailed yocto build for qualcomm robotics RB3 gen 2 vision kit

There is the downstream BSP which was released earlier this month (https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-115/overview.html?product=1601111740013072 and https://github.com/quic-yocto/meta-qcom-hwe / https://github.com/quic-yocto/qcom-manifest). BSP is kirkstone based at the moment (work ongoing to have an updated version).

Thejesh99 commented 3 months ago

can anyone give me the correct machine name for robotics rb3 gen 2

Thejesh99 commented 3 months ago

how to check pre build images in the qualcomm robotics rb3 gen 3

ricardosalveti commented 3 months ago

can anyone give me the correct machine name for robotics rb3 gen 2

qcm6490 on the downstream BSP.

ricardosalveti commented 3 months ago

how to check pre build images in the qualcomm robotics rb3 gen 3

For the BSP:

https://artifacts.codelinaro.org/artifactory/qli-ci/flashable-binaries/qimpsdk/qcm6490/x86/qcom-6.6.28-QLI.1.1-Ver.1.1_qim-product-sdk-1.1.3.zip -> qcm6490/qcom-multimedia-image.

As described at https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-253/ubuntu_host.html?product=1601111740013072

Thejesh99 commented 3 months ago

I'm encountering an issue where no login page is shown while following the steps described at Qualcomm Documentation.

How can I flash the prebuilt images, and where can I find prebuilt images for the Qualcomm Robotics RB3 Gen 2 Vision Kit? Screenshot from 2024-07-31 11-58-01

ricardosalveti commented 3 months ago

I'm encountering an issue where no login page is shown while following the steps described at Qualcomm Documentation.

Would you mind sending your question at https://mysupport.qualcomm.com/supportforums/s/topic/0TO4V000000Ey0jWAC/qualcomm-linux? That would be the proper location for debugging issues with qualcomm linux itself.

Thejesh99 commented 3 months ago

how to remove existing image and flash new image from the qualcomm robotics rb 3 gen 3