NVIDIA JetPack4.2.2 新版本系统上修改Jetson-TX2配置为配置3
简述 NVIDIA Jetson 的系统版本升级后它的配置方式和驱动等都发生了变化,若是想修改默认配置为配置3,就不能按照JetPack4之前的版本来修改了,在这里为各位分享我在新版本系统上修改配置3的方法。 配置3:使能2个USB3.0和3个PCIe
设置步骤
修改ODMDATA值,将文件p2771-0000.conf.common中的ODMDATA修改为0x6090000 .
local board_id
="${1}";
local board_version
="${2}";
local board_sku
="${3}";
local board_revision
="${4}";
local bdv
=$
{board_version
^^};
local bid
=$
{board_id
^^};
local uboot_build
=500;
local fromfab
="-a00";
local tofab
="-c03"; #
default = C03
local pmicfab
="-c00"; #
default = C00
local bpfdtbfab
="-c00"; #
default = C00
local tbcdtbfab
="-c03"; #
default = C03
local kerndtbfab
="-c03"; #
default = C03
ODMDATA
=0x6090000; #
default = C0X
修改tegra186-quill-p3310-1000-a00-00-base.dts文件,更改如下:
#if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
xhci@
3530000 {
status
= "okay";
phys
= <&{/xusb_padctl@
3520000/pads
/usb2
/lanes
/usb2
-0}>,
<&{/xusb_padctl@
3520000/pads
/usb2
/lanes
/usb2
-1}>,
<&{/xusb_padctl@
3520000/pads
/usb2
/lanes
/usb2
-2}>,
<&{/xusb_padctl@
3520000/pads
/usb3
/lanes
/usb3
-1}>;
phy
-names
= "usb2-0", "usb2-1", "usb2-2", "usb3-1";
};
#else
xhci@
3530000 {
status
= "okay";
phys
= <&tegra_xusb_padctl
TEGRA_PADCTL_PHY_UTMI_P(0)>,
<&tegra_xusb_padctl
TEGRA_PADCTL_PHY_UTMI_P(1)>,
<&tegra_xusb_padctl
TEGRA_PADCTL_PHY_UTMI_P(2)>,
<&tegra_xusb_padctl
TEGRA_PADCTL_PHY_USB3_P(1)>;
phy
-names
= "utmi-0", "utmi-1", "utmi-2", "usb3-1";
nvidia
,boost_cpu_freq
= <800>;
};
#endif
#if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
xusb_padctl@
3520000 {
status
= "okay";
pinctrl
-0 = <&vbus_en0_default_state
>;
pinctrl
-1 = <&vbus_en1_default_state
>;
pinctrl
-2 = <&vbus_en0_sfio_tristate_state
>;
pinctrl
-3 = <&vbus_en1_sfio_tristate_state
>;
pinctrl
-4 = <&vbus_en0_sfio_passthrough_state
>;
pinctrl
-5 = <&vbus_en1_sfio_passthrough_state
>;
pinctrl
-names
= "vbus_en0_default", "vbus_en1_default",
"vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
"vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough";
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
{
usb2
-0 {
status
= "okay";
mode
= "otg";
vbus
-supply
= <&vdd_usb0_5v
>;
nvidia
,oc
-pin
= <0>;
};
usb2
-1 {
status
= "okay";
mode
= "host";
vbus
-supply
= <&vdd_usb1_5v
>;
nvidia
,oc
-pin
= <1>;
};
usb2
-2 {
status
= "okay";
mode
= "host";
vbus
-supply
= <&battery_reg
>;
nvidia
,oc
-pin
= <1>;
};
usb3
-1 {
nvidia
,usb2
-companion
= <1>;
status
= "okay";
nvidia
,function
= "xusb";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_HOST_ONLY
>;
nvidia
,lanes
= "otg-2";
};
};
};
#endif
pinctrl@
3520000 {
status
= "okay";
pinctrl
-0 = <&tegra_xusb_padctl_pinmux_default
>;
pinctrl
-1 = <&vbus_en0_sfio_tristate_state
>;
pinctrl
-2 = <&vbus_en1_sfio_tristate_state
>;
pinctrl
-3 = <&vbus_en0_sfio_passthrough_state
>;
pinctrl
-4 = <&vbus_en1_sfio_passthrough_state
>;
pinctrl
-5 = <&vbus_en0_default_state
>;
pinctrl
-6 = <&vbus_en1_default_state
>;
pinctrl
-names
= "default",
"vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
"vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough",
"vbus_en0_default", "vbus_en1_default";
tegra_xusb_padctl_pinmux_default
: pinmux
{
usb2
-micro
-AB
{
nvidia
,lanes
= "otg-0";
nvidia
,function
= "xusb";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_OTG_CAP
>;
nvidia
,oc
-pin
= <0>;
};
usb2
-std
-A
-port2
{
nvidia
,lanes
= "otg-1";
nvidia
,function
= "xusb";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_HOST_ONLY
>;
nvidia
,oc
-pin
= <1>;
};
usb3
-std
-A
-port2
{
nvidia
,lanes
= "usb3-0";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_HOST_ONLY
>;
nvidia
,oc
-pin
= <1>;
};
usb3
-std
-A
-port3
{
nvidia
,lanes
= "usb3-1";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_HOST_ONLY
>;
nvidia
,oc
-pin
= <1>;
};
e3325
-usb3
-std
-A
-HS
{
nvidia
,lanes
= "otg-2";
nvidia
,function
= "xusb";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_HOST_ONLY
>;
status
= "okay";
};
e3325
-usb3
-std
-A
-SS
{
nvidia
,lanes
= "usb3-0";
nvidia
,port
-cap
= <TEGRA_PADCTL_PORT_HOST_ONLY
>;
status
= "disabled";
};
};
};
pcie
-controller@
10003000 {
status
= "okay";
pci@
1,0 {
nvidia
,num
-lanes
= <2>;
status
= "okay";
};
pci@
2,0 {
nvidia
,num
-lanes
= <1>;
status
= "okay";
};
pci@
3,0 {
nvidia
,num
-lanes
= <1>;
status
= "okay";
};
};
修改tegra186-quill-p3310-1000-a00-plugin-manager.dtsi文件,注释掉以下程序段,更改如下:
修改tegra186-quill-p3310-1000-c03-00-base.dts文件,更改如下:
gpio@
2200000 {
sdmmc
-wake
-support
-input
{
status
= "okay";
};
sdmmc
-wake
-support
-output
{
status
= "okay";
};
pcie0_lane2_mux
{
status
= "okay";
};
};
pcie
-controller@
10003000 {
pci@
1,0 {
nvidia
,num
-lanes
= <2>;
nvidia
,disable
-clock
-request
;
status
= "okay";
};
pci@
2,0 {
nvidia
,num
-lanes
= <1>;
status
= "okay";
};
pci@
3,0 {
nvidia
,num
-lanes
= <1>;
status
= "okay";
};
};
xhci@
3530000 {
phys
= <&tegra_xusb_padctl
TEGRA_PADCTL_PHY_UTMI_P(0)>,
<&tegra_xusb_padctl
TEGRA_PADCTL_PHY_UTMI_P(1)>,
<&tegra_xusb_padctl
TEGRA_PADCTL_PHY_UTMI_P(2)>,
<&tegra_xusb_padctl
TEGRA_PADCTL_PHY_USB3_P(0)>;
phy
-names
= "utmi-0", "utmi-1", "utmi-2", "usb3-0";
};
修改tegra186-quill-power-tree-p3310-1000-a00-00.dtsi文件,更改如下:
pinctrl@
3520000 {
vbus
-0-supply
= <&vdd_usb0_5v
>;
vbus
-1-supply
= <&vdd_usb1_5v
>;
vbus
-2-supply
= <&battery_reg
>;
vbus
-3-supply
= <&vdd_usb2_5v
>;
vddio
-hsic
-supply
= <&battery_reg
>;
avdd_usb
-supply
= <&spmic_sd3
>;
vclamp_usb
-supply
= <&spmic_sd2
>;
avdd_pll_erefeut
-supply
= <&spmic_sd2
>;
};
以上修改完成,重新将内核代码编译后,再将设备树和镜像烧录到TX2中。
sudo ./flash.sh -r -K kernel/Image -d kernel/dtb/tegra186-quill-p3310-1000-c03-00-base.dtb -o 0x6090000 p2771-0000.conf.common jetson-tx2 mmcblk0p1
测试验证
由于设计的PCIe是连接的百兆以太网网卡,所以在系统网络设置里会看到三个外扩的可用的以太网(电路设计的是外扩3个),连上网线测试可以上网。2个USB都可以接鼠标键盘U盘等设备。