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:
- Just apply the patch for the security issue, much easier. This patch is already on the oe-core list.
- 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:
- 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
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
Sonarqube Does Not Come Back Up After I Enable Postgres and Set Sonar.Properties
Watchman Makes Fsnotify Spuriously Detect File Changes
Sorting in Fortran, Undefined Reference to Qsort_
Floating Point Exception (Core Dumped) While Doing Division in Assembly
Google Suggest Query Using Curl
Count Total Number of Pattern Between Two Pattern (Using Sed If Possible) in Linux
How to Read The Password from The Text File in Perl
Make Command Not Working in Ns 2.35
Does Zgrep Unzip a File Before Searching
How to Do In-Memory Binary Search in Bash
Recursively Listing The Contents of a Tar/Zip Archive
Aosp Build Error: Unrecognized Module Type "Hidl_Package_Root"