Difference between revisions of "AIR 020 Development"

From ESS-WIKI
Jump to: navigation, search
 
(26 intermediate revisions by 3 users not shown)
Line 30: Line 30:
  
 
<span style="color:#FF0000;">'''JP5.1.0'''</span>
 
<span style="color:#FF0000;">'''JP5.1.0'''</span>
 +
 +
==== '''CAN''' ====
 +
<pre>$ modprobe can
 +
$ modprobe can-dev
 +
$ modprobe mttcan
 +
$ ip link set can0 type can bitrate 500000
 +
$ ip link set can0 up
 +
$ ip link set can1 type can bitrate 500000
 +
$ ip link set can1 up
 +
</pre>
 +
 +
In other terminal, run below command
 +
<pre>$ candump can1
 +
</pre>
 +
 +
then run
 +
<pre>$ cansend can0 123#abcdabcd
 +
</pre>
 +
 +
==== '''WatchDog''' ====
 +
<pre>root@linux:/home/ubuntu$ sudo -s
 +
root@linux:/home/ubuntu# sync; sleep 2; sync; echo c > /proc/sysrq-trigger
 +
</pre>
 +
 +
==== '''TPM''' ====
 +
 +
Pre-install TPM-tools
 +
<pre>$ sudo apt install --yes tpm2-tools
 +
</pre>
 +
 +
(1)產生randon code
 +
<pre>root@linux:/home/ubuntu# tpm2_getrandom --hex 20
 +
</pre>
 +
 +
(2) 對指定檔案 msg.dat 加密
 +
<pre>root@linux:/home/ubuntu# tpm2_createprimary -C p -c platform_primary.ctx
 +
root@linux:/home/ubuntu# tpm2_create -C platform_primary.ctx -G rsa2048 -u key.pub -r key.priv
 +
root@linux:/home/ubuntu# tpm2_load -C platform_primary.ctx -u key.pub -r key.priv -c key.ctx
 +
root@linux:/home/ubuntu# echo "my test" >msg.dat
 +
root@linux:/home/ubuntu# tpm2_rsaencrypt -c key.ctx -o msg.enc msg.dat
 +
root@linux:/home/ubuntu# cat msg.enc
 +
root@linux:/home/ubuntu# tpm2_rsadecrypt -c key.ctx -o msg.ptext msg.enc
 +
root@linux:/home/ubuntu# cat msg.ptext
 +
root@linux:/home/ubuntu# cat msg.dat
 +
</pre>
 +
 +
(3) 將資料儲存至 tpm 內存
 +
<pre>root@linux:/home/ubuntu# tpm2_nvdefine -Q 0x1500031 -C o -s 32 -a "ownerread|policywrite|ownerwrite"
 +
root@linux:/home/ubuntu# echo "write_tpm_adv" >  adv.data
 +
root@linux:/home/ubuntu# tpm2_nvwrite -Q 0x1500031 -C o -i adv.data
 +
root@linux:/home/ubuntu# tpm2_nvread -Q 0x1500031 -C o -s 32 -o read.data
 +
root@linux:/home/ubuntu# cat read.data
 +
</pre>
 +
 +
(4) 確認已經寫入儲存區域 
 +
<pre>root@linux:/home/ubuntu# tpm2_nvreadpublic > nv.out
 +
root@linux:/home/ubuntu# cat nv.out
 +
</pre>
 +
 +
Error
 +
<pre>ERROR: Esys_NV_DefineSpace(0x14C) - tpm:error(2.0): NV Index or persistent object already defined
 +
ERROR: Failed to create NV index 0x1500031.
 +
</pre>
 +
 +
fixed
 +
<pre>root@linux:/home/ubuntu# tpm2_nvundefine 0x1500031
 +
</pre>
 +
 +
==== '''RTC''' ====
 +
 +
DUT AC on:<br/> 1. Power on DUT and boot into OS.<br/> 2. Connect a LAN cable from the DUT to DHCP server.<br/> 3. Get a dynamic IP from DHCP server.<br/> 4. Type cmd to disable ntp service in DUT.
 +
<pre># sudo timedatectl set-ntp false</pre>
 +
 +
5. Synchronize system time and RTC time with NTP server.
 +
<pre># ntpdate tock.stdtime.gov.tw <===安裝ntpdate方式: $sudo apt-get install ntpdate <enter>
 +
# hwclock -w
 +
</pre>
 +
 +
6. Keep the DUT on for 24 hours.<br/> 7. Synchronize system time and RTC time with NTP server again and check inaccuracies.
 +
<pre># ntpdate tock.stdtime.gov.tw && hwclock -s &&ntpdate -u tock.stdtime.gov.tw
 +
</pre>
 +
 +
==== '''Camera''' ====
 +
 +
The imx219 mode:<br/> Size: Discrete 3280x2464 Interval: Discrete 0.048s (21.000 fps)<br/> Size: Discrete 3280x1848 Interval: Discrete 0.036s (28.000 fps)<br/> Size: Discrete 1920x1080 Interval: Discrete 0.033s (30.000 fps)<br/> Size: Discrete 1640x1232 Interval: Discrete 0.033s (30.000 fps)<br/> Size: Discrete 1280x720 Interval: Discrete 0.017s (60.000 fps)<br/> <br/> Preview command:<br/> 3280x2464
 +
<pre>$ gst-launch-1.0 nvarguscamerasrc&nbsp;! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=NV12, framerate=21/1'&nbsp;! nv3dsink</pre>
 +
 +
3280x1848
 +
<pre>$ gst-launch-1.0 nvarguscamerasrc&nbsp;! 'video/x-raw(memory:NVMM), width=3280, height=1848, format=NV12, framerate=28/1'&nbsp;! nv3dsink</pre>
 +
 +
1920x1080
 +
<pre>$ gst-launch-1.0 nvarguscamerasrc&nbsp;! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=29/1'&nbsp;! nv3dsink</pre>
 +
 +
1640x1232
 +
<pre>$ gst-launch-1.0 nvarguscamerasrc&nbsp;! 'video/x-raw(memory:NVMM), width=1640, height=1232, format=NV12, framerate=29/1'&nbsp;! nv3dsink</pre>
 +
 +
1280x720
 +
<pre>$ gst-launch-1.0 nvarguscamerasrc&nbsp;! 'video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=59/1'&nbsp;! nv3dsink</pre>
 +
 +
&nbsp;
 +
 +
  
 
==== '''GPIO Expander''' ====
 
==== '''GPIO Expander''' ====
Line 35: Line 137:
 
Test GPIO high/low<br/> [[File:020gpio.jpg|300px|air020gpio.png]]
 
Test GPIO high/low<br/> [[File:020gpio.jpg|300px|air020gpio.png]]
  
*GPIO0 (228)&nbsp;: gpio-419 (PN.01)
+
[[File:GPIO-TABLE.png|700px|485-RTS-PIN.png]]
*GPIO1 (118)&nbsp;: gpio-440 (PQ.05)
 
*GPIO2 (127)&nbsp;: gpio-318 (PCC.01)
 
*GPIO3 (206)&nbsp;: gpio-443 (PR.00)
 
*GPIO4 (208)&nbsp;: gpio-437 (PQ.02)
 
*GPIO5 (211)&nbsp;: gpio-453 (PS.04)
 
*GPIO6 (212)&nbsp;: gpio-436 (PQ.01)
 
*GPIO7 (218)&nbsp;: gpio-321 (PCC.04)
 
  
 
<br/> 1).Switch to root
 
<br/> 1).Switch to root
 
<pre>ubuntu@localhost:~ sudo -s
 
<pre>ubuntu@localhost:~ sudo -s
 +
password:ubuntu
 
</pre>
 
</pre>
  
2).Commnad&nbsp;: where <GPIO>&nbsp;: gpio number and <LEVEL>&nbsp;: high(1)/low(0)<br/> For example, pull up GPIO0 to high.
+
2).Commnad&nbsp;: where <GPIO>&nbsp;: gpio number and <LEVEL>&nbsp;: high(1)/low(0)
 +
 
 +
<font color="#0070c0">Xavier-NX</font> JetPack 4.x:
 +
 
 +
For example, pull up GPIO1&nbsp;to high.
 +
<pre>root@localhost:/home/ubuntu# echo 393 > /sys/class/gpio/export
 +
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/gpio393/direction
 +
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/gpio393/value</pre>
 +
 
 +
<font color="#0070c0">Xavier-NX</font> JetPack 5.1:
 +
 
 +
For example, pull up GPIO1&nbsp;to high.
 
<pre>root@localhost:/home/ubuntu# echo 419 > /sys/class/gpio/export
 
<pre>root@localhost:/home/ubuntu# echo 419 > /sys/class/gpio/export
 
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/PN.01/direction
 
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/PN.01/direction
 
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/PN.01/value
 
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/PN.01/value
 +
</pre>
 +
 +
<font color="#0070c0">Orin-Nano</font> JetPack 6.2:
 +
 +
For example, pull up GPIO1&nbsp;to high.
 +
<pre>root@localhost:/home/ubuntu# echo 391 > /sys/class/gpio/export
 +
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/PH.00/direction
 +
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/PH.00/value
 
</pre>
 
</pre>
  
 
==== '''UART''' ====
 
==== '''UART''' ====
 
+
<font color="#0070c0">Xavier-NX</font> COM1: ttyTHS1 , COM2: ttyTHS0 <br/>
 +
<font color="#0070c0">Orin-Nano</font> COM1: ttyTHS1 , COM2: ttyTHS2 <br/>
 +
<br/> Switch to root
 +
<pre>ubuntu@localhost:~ sudo -s
 +
password:ubuntu
 +
</pre>
 +
[[File:Jetson air020 board com.jpg|400px|Jetson air020 board com.jpg]]
 +
[[File:020 comport table.png|800px|020 comport table.png]]
 
===== '''RS-232''' =====
 
===== '''RS-232''' =====
  
<font color="#0070c0">Xavier-NX</font><br/> COM1&nbsp;: COM1_SW1 OFF-OFF-OFF-OFF
+
<font color="#0070c0">Xavier-NX</font> COM1: ttyTHS1 , COM2: ttyTHS0 <br/>  
 +
COM1&nbsp;: COM1_SW1 OFF-OFF-OFF-OFF
 
<pre>stty -F /dev/ttyTHS1 speed 115200 raw -echo
 
<pre>stty -F /dev/ttyTHS1 speed 115200 raw -echo
 
cat /dev/ttyTHS1 &
 
cat /dev/ttyTHS1 &
Line 69: Line 192:
 
echo "1234" > /dev/ttyTHS0
 
echo "1234" > /dev/ttyTHS0
 
</pre>
 
</pre>
 +
 +
<font color="#0070c0">Orin-Nano</font> COM1: ttyTHS1 , COM2: ttyTHS2 <br/>
  
 
===== '''RS-422''' =====
 
===== '''RS-422''' =====
  
<font color="#0070c0">Xavier-NX</font><br/> COM1&nbsp;: COM1_SW1 ON-OFF-ON-OFF<br/> COM2&nbsp;: COM2_SW1 ON-OFF-ON-OFF<br/> COM2 -> COM1
+
<font color="#0070c0">Xavier-NX</font><br/>
 +
COM1&nbsp;: COM1_SW1 ON-OFF-ON-OFF<br/>
 +
COM2&nbsp;: COM2_SW1 ON-OFF-ON-OFF<br/> COM2 -> COM1
 
<pre>stty -F /dev/ttyTHS1 speed 115200
 
<pre>stty -F /dev/ttyTHS1 speed 115200
 
stty -F /dev/ttyTHS0 speed 115200
 
stty -F /dev/ttyTHS0 speed 115200
Line 85: Line 212:
 
echo "1234" > /dev/ttyTHS1
 
echo "1234" > /dev/ttyTHS1
 
</pre>
 
</pre>
 +
 +
<font color="#0070c0">Orin-Nano</font> COM1: ttyTHS1 , COM2: ttyTHS2 <br/>
  
 
===== '''RS-485''' =====
 
===== '''RS-485''' =====
  
調整COM的dip switch皆是調整_SW1那組<br/> COM1&nbsp;: COM1_SW1<br/> COM2&nbsp;: COM2_SW2<br/> [[File:Jetson air020 board com.jpg|400px|Jetson air020 board com.jpg]] [[File:AIR 020 COM.jpeg|600px|AIR 020 COM.jpeg]]<br/> &nbsp;
+
Need to adjust the COM port SW1 as shown below.<br/> COM1&nbsp;: COM1_SW1<br/> COM2&nbsp;: COM2_SW1<br/>  
 +
[[File:485-RTS-PIN.png|700px|485-RTS-PIN.png]]
 +
<br/> &nbsp;
  
 
<font color="#0070c0">Xavier-NX</font>
 
<font color="#0070c0">Xavier-NX</font>
  
COM1&nbsp;: /dev/ttyTHS1<br/> COM2&nbsp;: /dev/ttyTHS0<br/> [硬體控制]<br/> COM2&nbsp;-> COM1<br/> COM1_SW1 ON-ON-ON-ON, COM2_SW1&nbsp;ON-ON-ON-OFF
+
COM1&nbsp;: /dev/ttyTHS1<br/> COM2&nbsp;: /dev/ttyTHS0<br/>
 +
[Hardware flow control]<br/>  
 +
COM2&nbsp;-> COM1<br/> COM1_SW1 ON-ON-ON-ON, COM2_SW1&nbsp;ON-ON-ON-OFF
 
<pre>stty -F /dev/ttyTHS1 speed 115200
 
<pre>stty -F /dev/ttyTHS1 speed 115200
 
stty -F /dev/ttyTHS0 speed 115200
 
stty -F /dev/ttyTHS0 speed 115200
Line 106: Line 239:
 
</pre>
 
</pre>
  
<br/> [軟體控制]<br/> <br/> COM1_SW1/COM2_SW1&nbsp;ON-ON-OFF-OFF<br/> COM2&nbsp;-> COM1<br/> UART0_RTS (103)&nbsp;: gpio-482 (PX.06)
+
<br/> [Software flow control]<br/> <br/> COM1_SW1/COM2_SW1&nbsp;ON-ON-OFF-OFF<br/> COM2&nbsp;-> COM1<br/> UART0_RTS (103)&nbsp;: gpio-482 (PX.06)
 
<pre>echo 482 > /sys/class/gpio/export
 
<pre>echo 482 > /sys/class/gpio/export
 
echo out > /sys/class/gpio/PX.06/direction
 
echo out > /sys/class/gpio/PX.06/direction
Line 127: Line 260:
 
echo 0 > /sys/class/gpio/PR.04/value
 
echo 0 > /sys/class/gpio/PR.04/value
 
</pre>
 
</pre>
 +
 +
<font color="#0070c0">Orin-Nano</font> COM1: ttyTHS1 , COM2: ttyTHS2 <br/>
  
 
== Reference ==
 
== Reference ==

Latest revision as of 03:22, 16 July 2025

Flash Mac Address

GBE in eeprom

$ sudo ./eeprom $SOC $mac_address

Where SOC

  186 : TX2-NX
  194 : XavierNX
  210 : Nano 

Intel I210

$ sudo -s
$ BDF=`lspci | grep 210 | awk '{print $1}'`
$ setpci -s $BDF COMMAND=0007

Get NIC

$./EepromAccessTool

Flash I210 address with mac_address = D4E5F6123456 ( If mac address = D4:E5:F6:12:34:56 )

$ ./EepromAccessTool -nic=<NIC> -f=Dev_Start_I210_Copper_NOMNG_8Mb_A2_3.25_0.03.hex -mac=$mac_address

Cold reboot the device.

Tools

Test Command

JP5.1.0

CAN

$ modprobe can
$ modprobe can-dev
$ modprobe mttcan
$ ip link set can0 type can bitrate 500000
$ ip link set can0 up
$ ip link set can1 type can bitrate 500000
$ ip link set can1 up

In other terminal, run below command

$ candump can1

then run

$ cansend can0 123#abcdabcd

WatchDog

root@linux:/home/ubuntu$ sudo -s
root@linux:/home/ubuntu# sync; sleep 2; sync; echo c > /proc/sysrq-trigger

TPM

Pre-install TPM-tools

$ sudo apt install --yes tpm2-tools

(1)產生randon code

root@linux:/home/ubuntu# tpm2_getrandom --hex 20

(2) 對指定檔案 msg.dat 加密

root@linux:/home/ubuntu# tpm2_createprimary -C p -c platform_primary.ctx
root@linux:/home/ubuntu# tpm2_create -C platform_primary.ctx -G rsa2048 -u key.pub -r key.priv
root@linux:/home/ubuntu# tpm2_load -C platform_primary.ctx -u key.pub -r key.priv -c key.ctx
root@linux:/home/ubuntu# echo "my test" >msg.dat
root@linux:/home/ubuntu# tpm2_rsaencrypt -c key.ctx -o msg.enc msg.dat
root@linux:/home/ubuntu# cat msg.enc
root@linux:/home/ubuntu# tpm2_rsadecrypt -c key.ctx -o msg.ptext msg.enc
root@linux:/home/ubuntu# cat msg.ptext 
root@linux:/home/ubuntu# cat msg.dat

(3) 將資料儲存至 tpm 內存

root@linux:/home/ubuntu# tpm2_nvdefine -Q 0x1500031 -C o -s 32 -a "ownerread|policywrite|ownerwrite"
root@linux:/home/ubuntu# echo "write_tpm_adv" >  adv.data
root@linux:/home/ubuntu# tpm2_nvwrite -Q 0x1500031 -C o -i adv.data
root@linux:/home/ubuntu# tpm2_nvread -Q 0x1500031 -C o -s 32 -o read.data
root@linux:/home/ubuntu# cat read.data

(4) 確認已經寫入儲存區域 

root@linux:/home/ubuntu# tpm2_nvreadpublic > nv.out
root@linux:/home/ubuntu# cat nv.out

Error

ERROR: Esys_NV_DefineSpace(0x14C) - tpm:error(2.0): NV Index or persistent object already defined
ERROR: Failed to create NV index 0x1500031.

fixed

root@linux:/home/ubuntu# tpm2_nvundefine 0x1500031

RTC

DUT AC on:
1. Power on DUT and boot into OS.
2. Connect a LAN cable from the DUT to DHCP server.
3. Get a dynamic IP from DHCP server.
4. Type cmd to disable ntp service in DUT.

# sudo timedatectl set-ntp false

5. Synchronize system time and RTC time with NTP server.

# ntpdate tock.stdtime.gov.tw <===安裝ntpdate方式: $sudo apt-get install ntpdate <enter> 
# hwclock -w 

6. Keep the DUT on for 24 hours.
7. Synchronize system time and RTC time with NTP server again and check inaccuracies.

# ntpdate tock.stdtime.gov.tw && hwclock -s &&ntpdate -u tock.stdtime.gov.tw 

Camera

The imx219 mode:
Size: Discrete 3280x2464 Interval: Discrete 0.048s (21.000 fps)
Size: Discrete 3280x1848 Interval: Discrete 0.036s (28.000 fps)
Size: Discrete 1920x1080 Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1640x1232 Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720 Interval: Discrete 0.017s (60.000 fps)

Preview command:
3280x2464

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=NV12, framerate=21/1' ! nv3dsink

3280x1848

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=1848, format=NV12, framerate=28/1' ! nv3dsink

1920x1080

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=29/1' ! nv3dsink

1640x1232

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1640, height=1232, format=NV12, framerate=29/1' ! nv3dsink

1280x720

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=59/1' ! nv3dsink

 


GPIO Expander

Test GPIO high/low
air020gpio.png

485-RTS-PIN.png


1).Switch to root

ubuntu@localhost:~ sudo -s
password:ubuntu

2).Commnad : where <GPIO> : gpio number and <LEVEL> : high(1)/low(0)

Xavier-NX JetPack 4.x:

For example, pull up GPIO1 to high.

root@localhost:/home/ubuntu# echo 393 > /sys/class/gpio/export
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/gpio393/direction
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/gpio393/value

Xavier-NX JetPack 5.1:

For example, pull up GPIO1 to high.

root@localhost:/home/ubuntu# echo 419 > /sys/class/gpio/export
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/PN.01/direction
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/PN.01/value

Orin-Nano JetPack 6.2:

For example, pull up GPIO1 to high.

root@localhost:/home/ubuntu# echo 391 > /sys/class/gpio/export
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/PH.00/direction
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/PH.00/value

UART

Xavier-NX COM1: ttyTHS1 , COM2: ttyTHS0
Orin-Nano COM1: ttyTHS1 , COM2: ttyTHS2

Switch to root

ubuntu@localhost:~ sudo -s
password:ubuntu

Jetson air020 board com.jpg 020 comport table.png

RS-232

Xavier-NX COM1: ttyTHS1 , COM2: ttyTHS0
COM1 : COM1_SW1 OFF-OFF-OFF-OFF

stty -F /dev/ttyTHS1 speed 115200 raw -echo
cat /dev/ttyTHS1 &
echo "1234" > /dev/ttyTHS1

COM2 : COM2_SW1 OFF-OFF-OFF-OFF

stty -F /dev/ttyTHS0 speed 115200 raw -echo
cat /dev/ttyTHS0 &
echo "1234" > /dev/ttyTHS0

Orin-Nano COM1: ttyTHS1 , COM2: ttyTHS2

RS-422

Xavier-NX
COM1 : COM1_SW1 ON-OFF-ON-OFF
COM2 : COM2_SW1 ON-OFF-ON-OFF
COM2 -> COM1

stty -F /dev/ttyTHS1 speed 115200
stty -F /dev/ttyTHS0 speed 115200
cat /dev/ttyTHS1 &
echo "1234" > /dev/ttyTHS0

COM1 -> COM2

stty -F /dev/ttyTHS0 speed 115200
stty -F /dev/ttyTHS1 speed 115200
cat /dev/ttyTHS0 &
echo "1234" > /dev/ttyTHS1

Orin-Nano COM1: ttyTHS1 , COM2: ttyTHS2

RS-485

Need to adjust the COM port SW1 as shown below.
COM1 : COM1_SW1
COM2 : COM2_SW1
485-RTS-PIN.png
 

Xavier-NX

COM1 : /dev/ttyTHS1
COM2 : /dev/ttyTHS0
[Hardware flow control]
COM2 -> COM1
COM1_SW1 ON-ON-ON-ON, COM2_SW1 ON-ON-ON-OFF

stty -F /dev/ttyTHS1 speed 115200
stty -F /dev/ttyTHS0 speed 115200
cat /dev/ttyTHS1 &
echo "1234" > /dev/ttyTHS0

COM1 -> COM2
COM1_SW1 ON-ON-ON-OFF, COM2_SW1 ON-ON-ON-ON

stty -F /dev/ttyTHS0 speed 115200
stty -F /dev/ttyTHS1 speed 115200
cat /dev/ttyTHS0 &
echo "1234" > /dev/ttyTHS1


[Software flow control]

COM1_SW1/COM2_SW1 ON-ON-OFF-OFF
COM2 -> COM1
UART0_RTS (103) : gpio-482 (PX.06)

echo 482 > /sys/class/gpio/export
echo out > /sys/class/gpio/PX.06/direction
stty -F /dev/ttyTHS1 speed 115200
stty -F /dev/ttyTHS0 speed 115200
cat /dev/ttyTHS1 &
echo 1 > /sys/class/gpio/PX.06/value
echo "1234" > /dev/ttyTHS0
echo 0 > /sys/class/gpio/PX.06/value

COM1 -> COM2
UART1_RTS (207) : gpio-447 (PR.04)

echo 447 > /sys/class/gpio/export
echo out > /sys/class/gpio/PR.04/direction
stty -F /dev/ttyTHS1 speed 115200
stty -F /dev/ttyTHS0 speed 115200
cat /dev/ttyTHS0 &
echo 1 > /sys/class/gpio/PR.04/value
echo "1234" > /dev/ttyTHS1
echo 0 > /sys/class/gpio/PR.04/value

Orin-Nano COM1: ttyTHS1 , COM2: ttyTHS2

Reference

JP 4.5.1 / JP 4.6.1
AIR-020-RS-485
Calculate GPIO value from pin number