Skip to content

Commit

Permalink
Merge pull request #7 from zauberzeug/orin
Browse files Browse the repository at this point in the history
Add support for Jetson Orin
  • Loading branch information
falkoschindler committed Oct 10, 2023
2 parents 1ce9093 + 8758ef3 commit f153679
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 15 deletions.
38 changes: 25 additions & 13 deletions esp.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
from contextlib import contextmanager
from time import sleep
from typing import Optional, Union


class Esp:

def __init__(self, nand: bool = False, xavier: bool = False, device: Optional[str] = None) -> None:
def __init__(self,
nand: bool = False,
xavier: bool = False,
orin: bool = False,
device: Optional[str] = None,
) -> None:
print('Initializing ESP...')
self.en = 436 if xavier else 216
self.g0 = 428 if xavier else 50
self.en = 436 if xavier else 492 if orin else 216
self.g0 = 428 if xavier else 460 if orin else 50
self.gpio_en = f'gpio{self.en}' if not orin else 'PAC.06'
self.gpio_g0 = f'gpio{self.g0}' if not orin else 'PR.04'
if device is None:
self.device = '/dev/ttyTHS' + ('0' if xavier else '1')
self.device = '/dev/ttyTHS' + ('0' if xavier else '0' if orin else '1')
else:
self.device = device
self.on = 1 if nand else 0
Expand All @@ -20,31 +28,35 @@ def write(self, path: str, value: Union[str, int]) -> None:
print(f'echo {value:3} > /sys/class/gpio/{path}')
with open(f'/sys/class/gpio/{path}', 'w') as f:
f.write(f'{value}\n')
except:
except Exception:
print(f'could not write {value} to {path}')

@contextmanager
def pin_config(self) -> None:
print('Configuring pins...')
self.write('export', self.en)
self.write('export', self.g0)
self.write(f'gpio{self.en}/direction', 'out')
self.write(f'gpio{self.g0}/direction', 'out')
self.write(f'{self.gpio_en}/direction', 'out')
self.write(f'{self.gpio_g0}/direction', 'out')
yield
self.write('unexport', self.en)
self.write('unexport', self.g0)

@contextmanager
def flash_mode(self):
print('Bringing microcontroller into flash mode...')
self.write(f'gpio{self.en}/value', self.on)
self.write(f'gpio{self.g0}/value', self.on)
self.write(f'gpio{self.en}/value', self.off)
self.write(f'{self.gpio_en}/value', self.on)
sleep(0.5)
self.write(f'{self.gpio_g0}/value', self.on)
sleep(0.5)
self.write(f'{self.gpio_en}/value', self.off)
yield
self.activate()

def activate(self) -> None:
print('Bringing microcontroller into normal operation mode...')
self.write(f'gpio{self.g0}/value', self.off)
self.write(f'gpio{self.en}/value', self.on)
self.write(f'gpio{self.en}/value', self.off)
self.write(f'{self.gpio_g0}/value', self.off)
sleep(0.5)
self.write(f'{self.gpio_en}/value', self.on)
sleep(0.5)
self.write(f'{self.gpio_en}/value', self.off)
5 changes: 3 additions & 2 deletions flash.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@


def help() -> None:
print(f'{sys.argv[0]} [nano | xavier] [nand]')
print(f'{sys.argv[0]} [nano | xavier | orin] [nand]')
print(f' nano flashing Jetson Nano (default)')
print(f' xavier flashing Jetson Xavier')
print(f' orin flashing Jetson Orin')
print(f' nand Robot Brain has piggyboard with NAND gate (eg. older version)')
print(f' usb use /dev/tty.SLAB_USBtoUART as serial device')
print(f' /dev/<name> use /dev/<name> as serial device')
Expand All @@ -24,7 +25,7 @@ def help() -> None:
for p in sys.argv:
if p.startswith('/dev/'):
device = p
esp = Esp(nand='nand' in sys.argv, xavier='xavier' in sys.argv, device=device)
esp = Esp(nand='nand' in sys.argv, xavier='xavier' in sys.argv, orin='orin' in sys.argv, device=device)

with esp.pin_config(), esp.flash_mode():
print('Flashing...')
Expand Down

0 comments on commit f153679

Please sign in to comment.