Jetson Nano/Development/Building the Kernel from Source: Difference between revisions

m
no edit summary
mNo edit summary
Line 57: Line 57:
Follow the steps:
Follow the steps:


<source lang="bash">
<syntaxhighlight lang="bash">
cd $JETSON_NANO_KERNEL_SOURCE
cd $JETSON_NANO_KERNEL_SOURCE
TOOLCHAIN_PREFIX=$HOME/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
TOOLCHAIN_PREFIX=$HOME/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
Line 67: Line 67:
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} -j8 --output-sync=target dtbs
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} -j8 --output-sync=target dtbs
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra INSTALL_MOD_PATH=$KERNEL_MODULES_OUT modules_install
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra INSTALL_MOD_PATH=$KERNEL_MODULES_OUT modules_install
</source>
</syntaxhighlight>


==Flash Jetson NANO==
==Flash Jetson NANO==
Line 73: Line 73:


NVIDIA_SDK_MANAGER contains the directory where NVIDIA SDK manager was installed. For example.
NVIDIA_SDK_MANAGER contains the directory where NVIDIA SDK manager was installed. For example.
<source lang="bash">
<syntaxhighlight lang="bash">
export NVIDIA_SDK_MANAGER=$HOME/nvidia/nvidia_sdk/
export NVIDIA_SDK_MANAGER=$HOME/nvidia/nvidia_sdk/
</source>
</syntaxhighlight>
===Select DTB and directory based on Jetson Nano module type===
===Select DTB and directory based on Jetson Nano module type===


====Production module (P3448-0020)====
====Production module (P3448-0020)====
<source lang="bash">
<syntaxhighlight lang="bash">
export DTB=tegra210-p3448-0002-p3449-0000-b00.dtb
export DTB=tegra210-p3448-0002-p3449-0000-b00.dtb
JETPACK_4_3_P3448=${NVIDIA_SDK_MANAGER}/JetPack_4.3_Linux_P3448-0020/Linux_for_Tegra
JETPACK_4_3_P3448=${NVIDIA_SDK_MANAGER}/JetPack_4.3_Linux_P3448-0020/Linux_for_Tegra
</source>
</syntaxhighlight>


====Devkit module (P3448)====
====Devkit module (P3448)====
<source lang="bash">
<syntaxhighlight lang="bash">
export DTB=tegra210-p3448-0000-p3449-0000-a02.dtb
export DTB=tegra210-p3448-0000-p3449-0000-a02.dtb
JETPACK_4_3_P3448=${NVIDIA_SDK_MANAGER}/JetPack_4.3_Linux_P3448/Linux_for_Tegra
JETPACK_4_3_P3448=${NVIDIA_SDK_MANAGER}/JetPack_4.3_Linux_P3448/Linux_for_Tegra
</source>
</syntaxhighlight>
Make sure the Jetson Nano is in recovery mode
Make sure the Jetson Nano is in recovery mode


===Copy kernel, device tree and modules into jetpack===
===Copy kernel, device tree and modules into jetpack===


 
<syntaxhighlight lang="bash">
<source lang="bash">
cd ${JETPACK_4_3_P3448}
cd ${JETPACK_4_3_P3448}
# Copy kernel generated
# Copy kernel generated
Line 100: Line 99:
# Copy device tree generated
# Copy device tree generated
cp $JETSON_NANO_KERNEL_SOURCE/build/arch/arm64/boot/dts/${DTB} kernel/dtb/
cp $JETSON_NANO_KERNEL_SOURCE/build/arch/arm64/boot/dts/${DTB} kernel/dtb/
</source>
</syntaxhighlight>


===Apply root filesystem patch===
===Apply root filesystem patch===
Line 110: Line 109:


Patch: fix_dtb_lost.patch
Patch: fix_dtb_lost.patch
<source lang="diff">
<syntaxhighlight lang=="diff">
diff --git a/rootfs/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh b/rootfs/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh
diff --git a/rootfs/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh b/rootfs/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh
index 921efc2..fe60093 100755
index 921efc2..fe60093 100755
Line 124: Line 123:
                                 # sys_maj_rev == qspi_maj_rev
                                 # sys_maj_rev == qspi_maj_rev
                                 # sys_min_rev >= qspi_min_rev
                                 # sys_min_rev >= qspi_min_rev
</source>
</syntaxhighlight>


====Apply the patch====
====Apply the patch====


<source lang="bash">
<syntaxhighlight lang="bash">
cd ${JETPACK_4_3_P3448}
cd ${JETPACK_4_3_P3448}
sudo patch -p 1 < fix_dtb_lost.patch
sudo patch -p 1 < fix_dtb_lost.patch
</source>
</syntaxhighlight>


===Flash memory===
===Flash memory===
Line 137: Line 136:


====Flash production module====
====Flash production module====
<source lang="bash">
<syntaxhighlight lang="bash">
sudo ./flash.sh jetson-nano-emmc mmcblk0p1
sudo ./flash.sh jetson-nano-emmc mmcblk0p1
</source>
</syntaxhighlight>


====Flash Devkit module====
====Flash Devkit module====
<source lang="bash">
<syntaxhighlight lang="bash">
sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1
sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1
</source>
</syntaxhighlight>


====Flash device tree only====
====Flash device tree only====
This command flashes only the device tree, excluding the kernel image and filesystem. Make sure the Jetson NANO is in recovery mode.
This command flashes only the device tree, excluding the kernel image and filesystem. Make sure the Jetson NANO is in recovery mode.


<source lang="bash">
<syntaxhighlight lang="bash">
cd ${JETPACK_4_3_P3448}
cd ${JETPACK_4_3_P3448}
# Copy device tree generated
# Copy device tree generated
cp $JETSON_NANO_KERNEL_SOURCE/build/arch/arm64/boot/dts/${DTB} kernel/dtb/
cp $JETSON_NANO_KERNEL_SOURCE/build/arch/arm64/boot/dts/${DTB} kernel/dtb/
</source>
</syntaxhighlight>


=====Flash production module DTB=====
=====Flash production module DTB=====
<source lang="bash">
<syntaxhighlight lang="bash">
sudo ./flash.sh -r -k DTB jetson-nano-emmc mmcblk0p1
sudo ./flash.sh -r -k DTB jetson-nano-emmc mmcblk0p1
</source>
</syntaxhighlight>


=====Flash Devkit module DTB=====
=====Flash Devkit module DTB=====
<source lang="bash">
<syntaxhighlight lang="bash">
sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1
sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1
</source>
</syntaxhighlight>


<noinclude>
<noinclude>