Line 4: |
Line 4: |
| | | |
| === 概述 === | | === 概述 === |
− | NVIDIA为每个Jetpack版本都发布了Linux开发文档。比如L4T [https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/SD/Kernel.html 35.1]和[https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-325/#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/kernel_custom.html# 32.5]。 | + | NVIDIA为每个Jetpack版本都发布了Linux开发文档。比如L4T [https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/SD/Kernel.html 35.1]和[https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-325/#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/kernel_custom.html# 32.5]。本章节是以官方的Kernel Customization章节为基础的,不够详尽之处,请参考官方文档。 |
| + | |
| + | 我们使用安装Ubuntu的host pc和Jetson板子作开发环境。 |
| + | |
| + | * Jetpack4.x |
| + | |
| + | 驱动与linux内核编译到一起,在host pc上进行。dtb的编译也在host pc进行。 |
| + | |
| + | * Jetpack5.x |
| + | |
| + | 驱动独立于linux内核,编译为modules,在Jetson板上进行。dtb的编译在host pc进行。 |
| | | |
| ==== 版本对应关系 ==== | | ==== 版本对应关系 ==== |
Line 33: |
Line 43: |
| 以下操作均为在HOST PC进行。 | | 以下操作均为在HOST PC进行。 |
| | | |
− | *编译工具链 | + | ==== 编译工具链 ==== |
| + | |
| + | * Jetpack4.x |
| | | |
| 请参考[https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fxavier_toolchain.html%23wwpID0ESHA 这个链接]安装编译工具链。 | | 请参考[https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fxavier_toolchain.html%23wwpID0ESHA 这个链接]安装编译工具链。 |
| | | |
− | *L4T源码和Rootfs | + | * Jetpack5.x |
| + | |
| + | 请参考[https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/AT/JetsonLinuxToolchain.html 这个链接]安装编译工具链。 |
| | | |
| + | ==== L4T源码和Rootfs ==== |
| 首先使用SDK Manager在HOST PC上面下载对应的Linux_for_Tegra开发包。 | | 首先使用SDK Manager在HOST PC上面下载对应的Linux_for_Tegra开发包。 |
| | | |
− | 可以通过SDK Manager或者[https://developer.nvidia.com/embedded/downloads 直接下载]两种方式来获得源码。具体参考官方文档,此处不再赘述。 | + | 可以通过SDK Manager或者[https://developer.nvidia.com/embedded/downloads 直接下载]两种方式来获得源码。具体参考官方文档,此处不再赘述。我推荐直接下载的方式。 |
| | | |
| 使用SDK Manager时同步代码采用如下指令: | | 使用SDK Manager时同步代码采用如下指令: |
Line 85: |
Line 100: |
| <code>./source_sync.sh -t jetson_34.1.1</code> | | <code>./source_sync.sh -t jetson_34.1.1</code> |
| | | |
− | *配置开发环境
| + | ''- Jetpack5.0.2'' |
| + | |
| + | <code>./source_sync.sh -t jetson_35.1</code> |
| | | |
| + | ==== 配置开发环境 ==== |
| 以下步骤假设SDK安装目录为<TOPDIR>,源代码在$L4T_DIR/sources目录。 | | 以下步骤假设SDK安装目录为<TOPDIR>,源代码在$L4T_DIR/sources目录。 |
| | | |
| <code>export TOP_DIR=<absolute path to top dir accroding to your jetpack version and board name;for example /home/xumm/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_XAVIER_NX_DEVKIT/></code> | | <code>export TOP_DIR=<absolute path to top dir accroding to your jetpack version and board name;for example /home/xumm/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_XAVIER_NX_DEVKIT/></code> |
| | | |
− | - 通用部分
| + | * 通用部分 |
| | | |
| <code>export L4T_DIR=$TOP_DIR/Linux_for_Tegra</code> | | <code>export L4T_DIR=$TOP_DIR/Linux_for_Tegra</code> |
Line 100: |
Line 118: |
| | | |
| <code>export ARCH=arm64</code> | | <code>export ARCH=arm64</code> |
− |
| |
− | <code>export CROSS_COMPILE=aarch64-linux-gnu-</code>
| |
− |
| |
− | <code>export CROSS32CC=arm-linux-gnueabihf-gcc</code>
| |
| | | |
| <code>export TEGRA_KERNEL_OUT=$L4T_DIR/sources/kernel/out_kernel</code> | | <code>export TEGRA_KERNEL_OUT=$L4T_DIR/sources/kernel/out_kernel</code> |
Line 116: |
Line 130: |
| | | |
| <code>export XAVIER_DTS_PATH=$L4T_DIR/sources/hardware/nvidia/platform/t19x</code> | | <code>export XAVIER_DTS_PATH=$L4T_DIR/sources/hardware/nvidia/platform/t19x</code> |
| + | |
| + | * Jetpack 4.x |
| + | |
| + | <code>export CROSS_COMPILE=aarch64-linux-gnu-</code> |
| + | |
| + | <code>export CROSS32CC=arm-linux-gnueabihf-gcc</code> |
| + | |
| + | <code>export COMMON_DTS_PATH=$TEGRA_KERNEL_OUT/arch/arm64/boot/dts/</code> |
| + | |
| + | * Jetpack 5.x |
| + | |
| + | <code>export CROSS_COMPILE_AARCH64_PATH=$HOME/l4t-gcc</code> |
| + | |
| + | <code>export CROSS_COMPILE_AARCH64=$HOME/l4t-gcc/bin/aarch64-buildroot-linux-gnu-</code> |
| + | |
| + | <code>export CROSS_COMPILE=$CROSS_COMPILE_AARCH64</code> |
| + | |
| + | <code>export COMMON_DTS_PATH=$TEGRA_KERNEL_OUT/arch/arm64/boot/dts/nvidia</code> |
| + | |
| === 下载我们的bsp包=== | | === 下载我们的bsp包=== |
| <code>cd $L4T_DIR</code> | | <code>cd $L4T_DIR</code> |
Line 122: |
Line 155: |
| | | |
| <code>export RELEASE_PACK_DIR=$L4T_DIR/nvidia_jetson_veye_bsp</code><code><nowiki/></code><code><nowiki/></code><code><nowiki/></code> | | <code>export RELEASE_PACK_DIR=$L4T_DIR/nvidia_jetson_veye_bsp</code><code><nowiki/></code><code><nowiki/></code><code><nowiki/></code> |
− | ===编译kernel=== | + | ===编译kernel (Jetpack4.x)=== |
| 本章节针对Jetpack4.x版本。 | | 本章节针对Jetpack4.x版本。 |
| | | |
Line 172: |
Line 205: |
| <code>./l4t_sign_image.sh --file kernel/Image --chip 0x19</code> | | <code>./l4t_sign_image.sh --file kernel/Image --chip 0x19</code> |
| | | |
− | === 编译modules === | + | === 编译modules(Jetpack5.x) === |
| Jetpack5.x以后的版本,非MV系列产品,可以直接以modules方式编译驱动,得到ko文件。推荐直接在Jetson Board上面编译驱动。 | | Jetpack5.x以后的版本,非MV系列产品,可以直接以modules方式编译驱动,得到ko文件。推荐直接在Jetson Board上面编译驱动。 |
| | | |
| <code>cd $RELEASE_PACK_DIR/drivers_source/cam_drv_src/</code> | | <code>cd $RELEASE_PACK_DIR/drivers_source/cam_drv_src/</code> |
| | | |
− | <code>make -f Makefile_local</code> | + | <code>make</code> |
| | | |
| ===编译DTS=== | | ===编译DTS=== |
Line 229: |
Line 262: |
| | | |
| <code>cd $L4T_DIR/sources/kernel/kernel-5.10/</code> | | <code>cd $L4T_DIR/sources/kernel/kernel-5.10/</code> |
− |
| |
− |
| |
| | | |
| | | |