Hello!
I am building WIFI backports driver modules for Jetson Nano B01 platform. Below are the packages and versions used for the build:
Linux Driver Package -32.7.3
JetPack - 4.6.3
Kernel version - 4.9.299 tegra
Infineon wifi backport package- v5.15.58-backports
I am facing issues while building latest Infineon WIFI backport drivers ,which is v5.15.58 backports ,against the latest Jetson Linux kernel 4.9.299. I have followed the steps for kernel build as well as cross compiling the backport modules as mentioned below :
1.Manually downloaded the latest kernel source package 32.7.3 from the below link.
https://developer.nvidia.com/embedded/linux-tegra-r3273
Also, downloaded and extracted the Jetson Linux toolchain from the below link.
https://developer.nvidia.com/embedded/dlc/l4t-gcc-7-3-1-toolchain-64-bit
- The paths for the toolchain and kernel output directory are set for Jetson Nano Linux kernel as mentioned below :
-
export TEGRA_KERNEL_OUT=/home/eng/Documents/NvidiaNano/L4T_Kernel_Blt
-
export CROSS_COMPILE=/home/eng/Documents/NvidiaNano/Env_Setup/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-
export ARCH=arm64
-
export LOCALVERSION=“-tegra”
3.Cleaning the kernel for a clean build and Jetson nano configuration is made as the default configuration in kernel, which is tegra_defconfig as shown in the below commands :
-
make distclean
-
make ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=“-tegra” CROSS_COMPILE=“${CROSS_COMPILE}” tegra_defconfig
- The kernel is configured with respect to WIFI by setting the flags as mentioned below in the menuconfig.
- make ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=“-tegra” menuconfig
Setting the below configuration in .config file.
CONFIG_CFG80211=m
CONFIG_BCMDHD=n
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
- After configuring the kernel with respect to WIFI, kernel configuration is saved through the below command :
- make ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=“-tegra” CROSS_COMPILE=“${CROSS_COMPILE}” savedefconfig
- Compilation of the kernel and image file generation in the output kernel directory,that is ,L4T_Kernel_Blt .
- make ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=“-tegra” -j8
- The images -Image,Image.gz and dts are generated in the output kernel directory .The Linux kernel image and dts are stored in arch/arm64/boot/Image and arch/arm64/boot/dts respectively. They are copied to JetPack 4.6.3 release packages in the below path :
~/nvidianew/nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/
- The kernel modules and firmware is installed through the below command :
- sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=~/nvidianew/nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/rootfs/
- Running the applybinaries.sh in JetPack4.6.3 release package and copy the kernel_supplements.tbz2 from rootfs to kernel in Jetpack package.
*cp ~/nvidianew/nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/rootfs/kernel_supplements.tbz2 ~/nvidianew/nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel
- The kernel headers for Jetson nano kernel is extracted and then prepared through the below commands :
-
mkdir FMAC_module
-
mkdir mod_dep
-
cd mod_dep
-
tar -xjf /nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/kernel_headers.tbz2
-
make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j8 modules_prepare
- Kernel headers are installed through the below step:
- make ARCH=arm64 INSTALL_HDR_PATH=$TEGRA_KERNEL_OUT headers_install
- Building WIFI backports modules (v5.15.58) for Nvidia kernel 4.9.
The steps done are mentioned below :
a) Backports package is diwnloaded from the below link :
b) Extract the packages and go into backport source code directory.
cd v5.15.58-backports
c) The MY_KERNEL ,MY_ROOT and CROSS_COMPILE paths are exported for compilation. MY_KERNEL represents compiled target Jetson kernel built in Step 6. MY_ROOT represents the rootfs path where the modules were installed.
-
export MY_KERNEL=/home/eng/Documents/NvidiaNano/L4T_Kernel_Blt
-
export CROSS_COMPILE=/home/eng/Documents/NvidiaNano/Env_Setup/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-
export MY_ROOT=/home/eng/nvidianew/nvidia_sdk/JetPack_4.6.3_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/rootfs/lib/modules/4.9.299-tegra/
d) The .config file is generated using defconfig-brcmfmac,which is configuration for FMAC driver as mentioned below in the command:
make ARCH=arm64 KLIB=$MY_ROOT KLIB_BUILD=$MY_KERNEL defconfig-brcmfmac
e) Kernel modules are cross compiled and FMAC driver modules(.ko files) are generated through the below command :
make ARCH=arm64 KLIB=$MY_ROOT KLIB_BUILD=$MY_KERNEL LOCALVERSION=“-tegra” modules
I am facing the issue in this command while generating driver modules.
I am getting implicit declaration error for the functions BUILD_BUG_ON ,BUILD_BUG,etc.
I am attaching the screenshots and logs of the errors for the same.
I have used the backports package(v5.15.58) which is the latest release in december 2022.
I wanted to enquire whether v5.15.58 backports is compatible with Nvidia 32.7.3 kernel 4.9 for latest Jetpack 4.6.3.
Thanks and Regards,
Akshay Dharmapuri
WIFI_modules_build_error.txt (21.5 KB)