Yocto for Nvidia Jetson Fails Because of Gcc 7 - Cannot Compute Suffix of Object Files

Yocto for Nvidia Jetson fails because of GCC 7 - cannot compute suffix of object files

I had the same problem and after a quick investigation I discovered that the reason of the failure is the flag -fmacro-debug-prefix not present in gcc7.

It is used in bitbake.conf by the variableDEBUG_PREFIX_MAP, if you set it to not contain the flag in your local.conf that problem will disappear (maybe others will appear:P).

I'm not an expert of Yocto so maybe such change could have unexpected side effect (probably the path during debug will be screwed up).

Cannot update Yocto Bitbake Recipe for Bzip2 from 1.0.6 to 1.0.7 for CVE-2019-12900 for Nvidia Jetson Nano

Two ideas:

  1. Just apply the patch for the security issue, much easier. This patch is already on the oe-core list.
  2. Take the upgrade patch that is also on the list

Yocto Bitbake Recipes for Nvidia Jetson Nano for Python whl files not on PyPi

Probably (untested) something like needs to be added to your recipes:

DEPENDS += 'pip-native'

do_install() {
pip install ${S}/tensorflow_gpu-1.13.1+nv19.5-cp36-cp36m-linux_aarch64.whl
}

but there could be more tweaks necessary.

Flashing custom Yocto image to Jetson Nano production module eMMC?

I had a conversation with the maintainer of the meta-tegra layer and ended up with creating a new machine configuration:

#@TYPE: Machine
#@NAME: Nvidia Jetson Nano
#@DESCRIPTION: Nvidia Jetson Nano prod board

KERNEL_ARGS ?= "console=ttyS0,115200 console=tty0 fbcon=map:0 net.ifnames=0"
KERNEL_ROOTSPEC ?= "root=/dev/mmcblk0p${@uboot_var('distro_bootpart')} rw rootwait"
IMAGE_ROOTFS_ALIGNMENT ?= "1024"

require conf/machine/include/tegra210.inc

KERNEL_DEVICETREE ?= "_ddot_/_ddot_/_ddot_/_ddot_/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0002-p3449-0000-b00.dtb"

MACHINE_FEATURES += "ext2 ext3 vfat"

UBOOT_MACHINE = "p3450-porg_defconfig"

EMMC_SIZE ?= "17179869184"
EMMC_DEVSECT_SIZE ?= "512"
BOOTPART_SIZE ?= ""
BOOTPART_LIMIT ?= "10485760"
ROOTFSPART_SIZE ?= "3221225472"
ODMDATA ?= "0x94000"
EMMC_BCT ?= "P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg"
NVIDIA_BOARD ?= "t210ref"
NVIDIA_PRODUCT ?= "p3450-porg"
NVIDIA_BOARD_CFG ?= ""
TEGRA210_REDUNDANT_BOOT ?= "0"
PARTITION_LAYOUT_TEMPLATE ?= "flash_l4t_t210_emmc_p3448.xml"
TEGRA_SPIFLASH_BOOT ?= "0"
TEGRA_FAB ?= "300"
TEGRA_BOARDID ?= "3448"

The machine configuration is almost identical to the devkit's, but some parts had to be changed to match to Jetson Nano Production Module configurations, i.e. change the KERNEL_DEVICETREE the the one matching the newer eMMC Jetson Nano and change TEGRA_FAB accordingly. Then change the PARTITION_LAYOUT_TEMPLATE to match the emmc layout instead of the spi_sd layout (the flash_l4t_t210_emmc_p3448 is the default p3448 emmc layout provided with meta-tegra).

After this, Yocto will produce a tegraflash zip that contains the necessary partition files and a rootfs image (along side some flashing tools). Put the Jetson Nano production module into recovery mode (FORCE RECOVERY + RESET), plug in the micro-usb cable and run the doflash.sh script to flash the nano, and voila.

How do i patch in yocto?

The concept of patching by adding patch files to meta layers and referencing them in SRC_URI only applies to patching the source code of packages. You can't use it to patch meta data (recipes) itself as you are trying to.

Instead you can manually change your local recipes, or add bbappends to your layer to change the existing recipes in poky. The best way to fix it permanently is to look for upstream fixes and update your poky layer if there are fixes, or if not send patches to upstream to fix it.

For the bbappend solution for libxcrypt, you would for example create a libxcrypt.bbappend with something like this as content:

TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir} "
CPPFLAGS_reomve_class-nativesdk = "-Wno-error=missing-attributes"

Yocto Warrior Cannot Set Password for root or other users

usermod with -p (minus p) needs a hash generated from openssl passwd command so you need to set Yocto variable as following:

EXTRA_USERS_PARAMS = "usermod -p $(openssl passwd <some_password>) root;"

If you want to append something to bitbake variable, you need to use _append or += operators, ie:

EXTRA_USERS_PARAMS_append = " useradd testing;"
EXTRA_USERS_PARAMS_append = " useradd mts;"
...

Cross compile OpenCV with CUDA on x86-64 host for nvidia tk1 (arm) target using Yocto Project?

I figured it out:

  1. One needs to use an nvcc binary that supports the host architecture. To specify the target architecture on can pass it cross compilation flags (see http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#cross-compilation). These are passed via the the cmake flag -DCUDA_NVCC_FLAGS
  2. EXTRA_OECMAKE_append = "-DCUDA_NVCC_EXECUTABLE=${PATH_TO_THE_NVCC_BINARY}"

The whole statement in the bbappend file could look like this

EXTRA_OECMAKE_append = " \
-DCUDA_NVCC_EXECUTABLE=${NVCC_BINARY} \
-DCUDA_NVCC_FLAGS="--compiler-bindir ${GCC_BINARY}" \
"


Related Topics



Leave a reply



Submit