Skip to content

Commit

Permalink
WIP: NVIDIA Jetson flashing
Browse files Browse the repository at this point in the history
Document how to enable NVIDIA Jetson to boot SUSE Linux.

Signed-off-by: Andreas Färber <[email protected]>
  • Loading branch information
afaerber committed Jun 4, 2024
1 parent 86c986e commit 76326e8
Show file tree
Hide file tree
Showing 2 changed files with 165 additions and 0 deletions.
20 changes: 20 additions & 0 deletions articles/nvidia-jetson.asm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
</resources>-->
<!-- Tasks -->
<resources>
<resource xml:id="_nvidia-jetson-firmware" href="../tasks/nvidia-jetson-firmware.xml">
<description>Firmware</description>
</resource>
<resource xml:id="_nvidia-jetson-sidecar-kmp" href="../tasks/nvidia-jetson-kmp.xml">
<description>KMP</description>
</resource>
Expand Down Expand Up @@ -72,6 +75,11 @@
<revdescription>
<itemizedlist>
<!-- Group by type of change (added/removed/changed)-->
<listitem><para>Added sections:</para>
<itemizedlist>
<listitem><para>Added section on flashing</para></listitem>
</itemizedlist>
</listitem>
<listitem><para>Changed sections:</para>
<itemizedlist>
<listitem><para>Updated section on KMP with more detailed uname -r output</para></listitem>
Expand All @@ -81,6 +89,17 @@
</itemizedlist>
</revdescription>
</revision>
<revision><date>2024-06-04</date>
<revdescription>
<itemizedlist>
<listitem><para>Changed sections:</para>
<itemizedlist>
<listitem><para>Extended section on flashing with tip on board configs</para></listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</revdescription>
</revision>
</revhistory>
<!-- TODO: provide a listing of possible and validatable meta entry values. Maybe in our geekodoc repo? -->
<!-- add author's e-mail -->
Expand Down Expand Up @@ -206,6 +225,7 @@
<title>You are a very special concept now!</title>
</merge>
</module>-->
<module resourceref="_nvidia-jetson-firmware" renderas="section"/>
<module resourceref="_nvidia-jetson-sidecar-kmp" renderas="section"/>
<module resourceref="_nvidia-jetson-sidecar-libs" renderas="section"/>
<!--<module resourceref="_reference-example" renderas="section"/>
Expand Down
145 changes: 145 additions & 0 deletions tasks/nvidia-jetson-firmware.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file originates from the project https://github.com/openSUSE/doc-kit -->
<!-- This file can be edited downstream. -->
<!DOCTYPE topic
[
<!ENTITY % entities SYSTEM "../common/generic-entities.ent">
%entities;
]>
<!-- refers to legacy doc: <add github link to legacy doc piece, if applicable> -->
<!-- point back to this document with a similar comment added to your legacy doc piece -->
<!-- refer to README.md for file and id naming conventions -->
<!-- metadata is dealt with on the assembly level -->
<topic xml:id="nvidia-jetson-firmware"
role="task" xml:lang="en"
xmlns="http://docbook.org/ns/docbook" version="5.2"
xmlns:its="http://www.w3.org/2005/11/its"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:trans="http://docbook.org/ns/transclusion">
<info>
<title>Preparing firmware for &nvidia; &jetson; platforms</title><!-- can be changed via merge
in the assembly -->
<!-- add author's e-mail -->
<meta name="maintainer" content="[email protected]" its:translate="no"/>
<abstract><!-- can be changed via merge in the assembly -->
<para>
UEFI system firmware allows &suse; Linux media and installations to boot.
</para>
</abstract>
</info>
<section xml:id="nvidia-jetson-firmware-introduction">
<title>Introduction</title>
<para>
&suse; Linux installation media are formatted as UEFI Removable Media
and require &armreg; EBBR compliant boot firmware on the system.
</para>
</section>
<section xml:id="nvidia-jetson-firmware-requirements">
<title>Requirements</title>
<itemizedlist>
<listitem>
<para>
&nvidiareg; &jetsonreg; &xavierreg;, &orinreg; or later System-on-Module or &nvidia; IGX &orin; based system
</para>
</listitem>
<listitem>
<para>
Second system (e.g., notebook) with USB connection to your &nvidia; based system
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="nvidia-jetson-firmware-flash">
<title>Flashing the firmware</title>
<para>
Follow &nvidia; or OEM provided instructions for flashing your system.
&suse; Linux installation will be easiest if boot firmware and operating system
do not share the same storage device, i.e., SPI flash for firmware.
</para>
<procedure>
<step>
<para>
Power on the &nvidia; system and enter Force Recovery Mode (RCM)
according to its vendor instructions.
</para>
</step>
<step>
<para>
Flash the boot firmware via USB from the secondary system:
</para>
<screen>&prompt.sudo;<command>./flash.sh <replaceable>target-board-config</replaceable> external</command></screen>
<note>
<para>
The target board parameter depends on your system and your intended usage.
</para>
</note>
</step>
</procedure>
<tip>
<title>Finding the right config for your system</title>
<para>
Only some board config files have human-recognizable aliases.
</para>
<para>
You can try resolving the aliases to the product codes for module and board and
checking for any additional <literal>-qspi</literal> config files:
</para>
<screen>&prompt.user;<command>ls -l igx-orin*</command>
lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 31. Mai 21:39 igx-orin-devkit.conf -> p3740-0002-p3701-0008.conf
&prompt.user;<command>ls -1 p3740-0002-p3701-0008*</command>
p3740-0002-p3701-0008.conf
p3740-0002-p3701-0008<emphasis role="bold">-qspi</emphasis>.conf
&prompt.user;<command>ls -l jetson-orin*</command>
lrwxrwxrwx 1 &exampleuser; &examplegroup; 29 4. Jun 15:37 jetson-orin-nano-devkit.conf -> p3768-0000-p3767-0000-a0.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 34 4. Jun 15:38 jetson-orin-nano-devkit-nvme.conf -> p3768-0000-p3767-0000-a0-nvme.conf
&prompt.user;<command>ls -1 p3768-0000-p3767-0000-a0*</command>
p3768-0000-p3767-0000-a0.conf
p3768-0000-p3767-0000-a0-maxn.conf
p3768-0000-p3767-0000-a0-nvme.conf
p3768-0000-p3767-0000-a0<emphasis role="bold">-qspi</emphasis>.conf
&prompt.user;<command>ls -l jetson-agx-orin*</command>
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-jao-32gb.conf -> p3737-0000-p3701-0000-as-p3701-0004.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:38 jetson-agx-orin-devkit-as-nano4gb.conf -> p3737-0000-p3701-0000-as-p3767-0004.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:38 jetson-agx-orin-devkit-as-nano8gb.conf -> p3737-0000-p3701-0000-as-p3767-0003.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-nx-16gb.conf -> p3737-0000-p3701-0000-as-p3767-0000.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-nx-8gb.conf -> p3737-0000-p3701-0000-as-p3767-0001.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 4. Jun 15:38 jetson-agx-orin-devkit.conf -> p3737-0000-p3701-0000.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 4. Jun 15:37 jetson-agx-orin-devkit-industrial.conf -> p3737-0000-p3701-0008.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:38 jetson-agx-orin-devkit-industrial-maxn.conf -> p3737-0000-p3701-0008-maxn.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:37 jetson-agx-orin-devkit-industrial<emphasis role="bold">-qspi</emphasis>.conf -> p3737-0000-p3701-0008<emphasis role="bold">-qspi</emphasis>.conf
lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:37 jetson-agx-orin-devkit-maxn.conf -> p3737-0000-p3701-0000-maxn.conf
&prompt.user;<command>ls -1 p3737-0000-p3701-0000*</command>
p3737-0000-p3701-0000-as-p3701-0004.conf
p3737-0000-p3701-0000-as-p3767-0000.conf
p3737-0000-p3701-0000-as-p3767-0001.conf
p3737-0000-p3701-0000-as-p3767-0003.conf
p3737-0000-p3701-0000-as-p3767-0004.conf
p3737-0000-p3701-0000.conf
p3737-0000-p3701-0000.conf.common
p3737-0000-p3701-0000-maxn.conf
p3737-0000-p3701-0000<emphasis role="bold">-qspi</emphasis>.conf</screen>
<!--
&prompt.user;<command>ls -1 p3737-0000-p3701-0008*</command>
p3737-0000-p3701-0008.conf
p3737-0000-p3701-0008-maxn.conf
p3737-0000-p3701-0008<emphasis role="bold">-qspi</emphasis>.conf
-->
</tip>
</section>
<section xml:id="nvidia-jetson-firmware-summary">
<title>Summary</title>
<para>
You have updated the boot firmware and possibly changed its storage location.
During system boot it should identify on serial console similar to:
</para>
<screen>Jetson System firmware version 36.3.0-gcid-35925539 date 2024-04-04T17:32:50+00:</screen>
<!-- TODO update this -->
</section>
<section xml:id="nvidia-jetson-firmware-troubleshooting">
<title>Troubleshooting</title>
<para>
Refer to &nvidia; documentation.
</para>
</section>
</topic>

0 comments on commit 76326e8

Please sign in to comment.