Version
R32.6.1
Version
R32.6.1
Then can I reboot ?
I suggest that instead of replacing the old entry you make a new one. Then, if something goes wrong, you can use the serial console during boot to pick the original. You could eliminate the original content if the new content works well. Example, based on your listed extlinux.conf
:
TIMEOUT 30
DEFAULT updated
MENU TITLE L4T boot options
LABEL updated
MENU LABEL updated tree
LINUX /boot/Image
INITRD /boot/initrd
FDT /boot/new.dtb
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
Assuming security fuses are not burned, and if there is no FDT entry in extlinux.conf
, then it boots to the signed partition device tree. Otherwise it will boot to the FDT entry of extlinux.conf
. No need to flash if just working on the FDT entry.
Incidentally, a .dtsi
file is a subset of a .dts
file. The dtc
tool (“sudo apt-get install device-tree-compiler
”) @JerryChang mentioned is used quite often to convert between formats. You won’t be able to convert a .dtsi
file though since it is only a fragment. If you have a complete .dts
or .dtb
file, then you can easily convert back and forth between formats. A lot of people take the binary .dtb
and convert it to the source .dts
, edit, and then convert it back to the binary .dtb
for testing.
Thanks! Your suggestion is very helpful !!
However, I still have a problem. When I try to convert the .dtb file in /boot , the out put .dts file usually use hex code, like this
That’s why I asked how to convert a .dtsi
file set to a .dtb
.
In addition, I would like to ask how to determine whether the change will take effect.
Hello, is there anyone else who can answer my question?
I still want to find a PIN. I want to use a high-level trigger to wake up my Jetson at a specified time.
As for the prompt given above, I tried to use the trigger IO port of the SD card, but it did not lead out a pin, so I cannot use it.
In addition, I modified extlinux.conf
, but it doesn’t seem to work. In order to determine whether the dtb file I modified works, I deleted the startup function of the power key, but it seems that it still starts when I press the PWR BTN, so I guess the changes I made may not take effect.
The part I changed is :
gpio-keys {
compatible = "gpio-keys";
gpio-keys,name = "gpio-keys";
status = "okay";
sw_wake {
label = "sw-wake";
interrupt-parent = <0x26>;
interrupts = <0x0 0xb3 0x4>;
linux,code = <0x74>;
wakeup-source;
};
forcerecovery {
label = "force-recovery";
gpios = <0x13 0x30 0x1>;
linux,code = <0x8f>;
gpio-key,wakeup;
debounce-interval = <0x0a>;
nvidia,pmc-wakeup = <0x56 0x0 0x43 0x01>;
};
wakeup_key {
label = "wakeup_key";
gpios = <0x13 0x69 0x1>; //GPIO13
linux,code = <0x74>; //Wakeup
gpio-key,wakeup;
debounce-interval = <0x1e>;
nvidia,pmc-wakeup = <0x56 0x0 0x4 0x0>;
};
};
So I want to confirm two things:
FYI, passing content as hexadecimal is not a problem. That notation is passed to the driver, and in the C language, if I enter “37
” or “0x25
” the result is the same. Device tree content is basically passed to drivers. Hexadecimal is used extensively in the device tree and in the kernel. Is there a problem with hexadecimal?
Also, if the kernel sees something passed to it which a particular driver does not understand, then typically it is just ignored without error (this is not an actual argument to a C function whereby the arguments are strongly typed…it is an environment which is iterated through and each “interesting” part is passed to the interested code, while other parts are ignored; you might get a warning when running that code, but this is different than an actual dtc
tool error).
If you make a change, then you can examine it in a subdirectory of “/proc/device-tree
”. This is the kernel, in RAM, reflecting the structure of the device tree as it sees it. It is true though that in some cases earlier boot code can change this before passing it to the kernel, but that is rare. And so if you’ve made a change, then compare your change and see if it made its way in. To export that content as a “.dts
” source file:
dtc -I fs -O dts -o extracted.dts /proc/device-tree
(then compare that node in extracted.dts
to the node you edited)
Also, a full serial console boot log usually shows what is used from extlinux.conf
.
Hello!
I try to compile the dtb file , but it said that there is a syntax error , can you tell me how to write it?
power_key {
label = "power-key";
gpios = <&tegra_aon_gpio TEGRA194_AON_GPIO(EE, 4) GPIO_ACTIVE_LOW>;
linux,code = <KEY_WAKEUP>;
gpio-key,wakeup;
debounce-interval = <30>;
nvidia,pmc-wakeup = <&tegra_pmc PMC_WAKE_TYPE_GPIO 29 PMC_TRIGGER_TYPE_HIGH>; // ERROR
};
wake_key {
label = "wakeup-key";
gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(N, 1) GPIO_ACTIVE_LOW>;
linux,code = <KEY_WAKEUP>;
gpio-key,wakeup;
nvidia,pmc-wakeup = <&tegra_pmc PMC_WAKE_TYPE_GPIO 4 PMC_TRIGGER_TYPE_HIGH>; // ERROR
debounce-interval = <30>;
};
BTW,
if the wakeup pin of GPIO13 is NO, can I use GPIO13 as wake up pin ?
And what‘s the real mean of these code ?
hello 7175380,
please refer to kernel documentation for using this wake up events.
nvidia,pmc-wakeup : <pmc_phandle event_type event_offset trigger_type>
pmc_phandle: the phandle of PMC device tree node
event_type: 0 = PMC_WAKE_TYPE_GPIO; 1 = PMC_WAKE_TYPE_EVENT
event_offset: the offset of PMC wake mask register
trigger_type: set 0 when event_type is PMC_WAKE_TYPE_GPIO,
if event_type is PMC_WAKE_TYPE_EVENT,
0 = PMC_TRIGGER_TYPE_NONE
1 = PMC_TRIGGER_TYPE_RISING
2 = PMC_TRIGGER_TYPE_FALLING
4 = PMC_TRIGGER_TYPE_HIGH
8 = PMC_TRIGGER_TYPE_LOW
Hello JerryChang! Thanks for your reply!
About this one, what is the the phandle of PMC device tree node of Xavier NX ?
And about this one, how to solve it?
hello 7175380,
honestly, you may trace the code.
please see-also developer guide, Pinmux Changes.
there’s python script to convert pinmux dts into cfg format.
i.e. $OUT/Linux_for_Tegra/kernel/pinmux/t19x/pinmux-dts2cfg.py
Sorry, I didn’t describe my problem clearly.
My mean is that I have got the cfg file and how can I overwrite the current pin mapping?
hello 7175380,
you need to update the PINMUX_CONFIG
, then please perform full flash the target to apply the cfg file.
please also check flash configuration file, i.e. p3668.conf.common
PINMUX_CONFIG="tegra19x-mb1-pinmux-p3668-a01.cfg";
Hello! I am so sorry I have tried several times, but I can’t solve the problem. What should I do?
Error: arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t19x/jakku/kernel-dts/common/tegra194-p3509-0000-a00.dtsi:38.36-37 syntax error
FATAL ERROR: Unable to parse input tree
and this is tegra194-p3509-0000-a00.dtsi(a part of it):
/*
* Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <dt-bindings/gpio/tegra194-gpio.h>
#include "dt-bindings/input/input.h"
#include "tegra194-fixed-regulator-p3509-0000-a00.dtsi"
#include "tegra194-p3509-disp.dtsi"
#include "tegra194-audio-p3668.dtsi"
#include "tegra194-super-module-e2614-p3509.dtsi"
#include "tegra194-camera-jakku-rbpcv3-imx477.dtsi"
#include "tegra194-camera-jakku-rbpcv2-imx219.dtsi"
/ {
gpio-keys {
compatible = "gpio-keys";
gpio-keys,name = "gpio-keys";
forcerecovery {
label = "force-recovery";
gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(G, 0) GPIO_ACTIVE_LOW>;
linux,code = <BTN_1>;
};
power_key {
label = "power-key";
gpios = <&tegra_aon_gpio TEGRA194_AON_GPIO(EE, 4) GPIO_ACTIVE_LOW>;
linux,code = <KEY_WAKEUP>;
gpio-key,wakeup;
debounce-interval = <30>;
nvidia,pmc-wakeup = <&tegra_pmc PMC_WAKE_TYPE_EVENT 29 PMC_TRIGGER_TYPE_HIGH>;
};
wake_key {
label = "wakeup-key";
gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(N, 1) GPIO_ACTIVE_LOW>;
linux,code = <KEY_WAKEUP>;
gpio-key,wakeup;
nvidia,pmc-wakeup = <&tegra_pmc PMC_WAKE_TYPE_EVENT 4 PMC_TRIGGER_TYPE_HIGH>;
debounce-interval = <30>;
};
};
This is what I add.
hello 7175380,
please check you’ve added this header file, # include <dt-bindings/soc/tegra-pmc.h>
since you’re going to use wake up events in the PMC.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.