基础镜像制作
环境准备
- 安装编译依赖工具
sudo apt install build-essential bc
sudo apt-get install git bison flex libssl-dev zip libncurses-dev make git
sudo apt-get install build-essential bc
创建工具链放置目录
mkdir $HOME/l4t-gcc-toolchain
cd $HOME/l4t-gcc-toolchain
- 下载并解压交叉编译工具链
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/toolchain/aarch64--glibc--stable-2022.08-1.tar.bz2
tar xf aarch64--glibc--stable-2022.08-1.tar.bz2
- 进入到缓存好的刷机固件目录
cd $HOME/nvidia/nvidia_sdk/JetPack_6.2.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra/source #根据实际目录进行修改
- 同步源码
./source_sync.sh -k -t <release-tag> #<release-tag>替换为你自己的发行版本如 jetson_36.4.3
修改添加设备树和驱动
4G模块
需要改动内核镜像
Intel无线网卡
参考 网卡说明 在开发板安装驱动后进入 /usr/lib/modules/$(uname -r)/
提取 ko驱动kernel/update/dkms updates
复制到固件缓存目录 Linux_for_Tegra/rootfs/lib/modules/5.15.148-tegra/updates/
文件夹
r8125网卡
在开发板上编译安装好的ko驱动放入/ Linux_for_Tegra/rootfs/lib/modules/
$(uname5.15.148-tegra/updates/dkms
支持HDMI 4K
修改
tegra234-dcb-p3737-0000.dtsi
替换
nvidia,dcb-image
字段,对应的HDMI-dcb二进制串可在源码的 source/hardware/nvidia/t23x/nv-public/overlay/tegra234-dcb-p3767-0000-hdmi.dts
中找到。USB设备树
修改tegra234-dcb-p3737-0000.dtsi
tegra234-p3768-0000.dtsi
的 padctl@3520000
节点 添加usb3-2相关设置
padctl@3520000 { status = "okay"; pads { usb2 { lanes { usb2-0 { nvidia,function = "xusb"; status = "okay"; }; usb2-1 { nvidia,function = "xusb"; status = "okay"; }; usb2-2 { nvidia,function = "xusb"; status = "okay"; }; }; }; usb3 { lanes { usb3-0 { nvidia,function = "xusb"; status = "okay"; }; usb3-1 { nvidia,function = "xusb"; status = "okay"; }; usb3-2 { nvidia,function = "xusb"; status = "okay"; }; }; }; }; ports { /* recovery port */ usb2-0 { mode = "otg"; vbus-supply = <&vdd_5v0_sys>; status = "okay"; usb-role-switch; }; /* hub */ usb2-1 { mode = "host"; vbus-supply = <&vdd_1v1_hub>; status = "okay"; }; /* M.2 Key-E */ usb2-2 { mode = "host"; vbus-supply = <&vdd_5v0_sys>; status = "okay"; }; /* hub */ usb3-0 { nvidia,usb2-companion = <1>; status = "okay"; }; /* J5 */ usb3-1 { nvidia,usb2-companion = <0>; status = "okay"; }; usb3-2 { nvidia,usb2-companion = <2>; status = "okay"; }; }; }; usb@3550000 { status = "okay"; phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>, <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>; phy-names = "usb2-0", "usb3-0"; }; usb@3610000 { status = "okay"; phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>, <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>, <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>, <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>, <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>, <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>; phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0", "usb3-1", "usb3-2"; };