バリバリのSoCとSoM(1) NVIDIA Jetson Nano System-on-Module

前投稿で、「接続する前にちゃんと調べようね」と反省(いつものことですが)をいたしました。そこで、今回は、NVIDIA社のJetson Nanoのデータシートとキャリア・ボードの参照回路図を読んでいこうと思います。大した分量じゃないにもかかわらず、後回しにしていた私が悪い。

まず、読んでいくデータシートですが、Jetson Download Centerからどなたでもダウンロードできるようになっている以下のDATA SHEETです。

NVIDIA Jetson Nano System-on-Module

今まで持っていたバージョン(入手してはいたのですがちゃんと目を通していなかった)が今年5月の  [PRELIMINARY] v0.7だったですが、今回調べてみると10月にアップデートされておりv0.8になっていました。しかし、PRELIMINARY扱いは消えていません。v0.7とv0.8の違いはわずかなものです。動作条件(動作温度)の部分のみです。v0.7では、[x]となっていた動作温度のMAXに v0.8では、97という数字が入った(Cとあるので、摂氏温度に違いありますまい。)ただし詳しいことはJetson Nano Thermal Design Guideを見よとあります。このThermal Design Guideもそうなのですが、実際に製品化しようとすると見ないとならないような文書類については、

メンバ登録が必要

であります。その辺、勝手に書いてしまうのは憚られるので、詳細については各自、メンバ登録してくだされ。なお、機能豊富なSOMにしては、データシートの厚みは41ページほどしかないのですが、読んでいると細かいところは、

Jetson Nano Product Design Guide

を見ろよ、と振られてしまうところが多数だからじゃないかと思います。これもメンバ登録必要な部類。

さてこのデータシートは、Jetson Nano Developer Kitのキャリアボード上の260ピンSODIMMスロットに刺さっているモジュールのデータシートです。まずは、SODIMMソケット側からとった写真をご覧いただきましょう。
放熱フィンでモジュール表面は見えませんが、SODIMMスロットに刺さっているのは分かります。逆側から写した写真を前回投稿に含めましたが、逆側はネジどめされています。

さて、データシート全体にわたるテーマというか、一番説明したいことを引用するならば、

power-limited environments,

ってとこでしょうか。要は、電力の限られた組み込み用のモジュールだぜ、という点にフォーカスしておると。普通のGPUとは違う。当然ですか。なお、モジュール上には当然ある筈の SoC については、

NVIDIA Tegra X1 series SoC

とちょっと、釈然としない書き方であります。 Tegra X1というのは機種ではなく、シリーズだった? たしかに、Jetson NanoはTegra X1として知られている仕様のサブセットではあるようですが。

データシートを眺めていて意外なのは、CPU項目に以下のように書かれていることです。引用させていただきます。

ARM® Cortex® -A57 MPCore (Quad-Core) Processor with NEON Technology

あれれれ、NEON入っているの? Linuxの上でOSに聞くとNEON無いように見えるのだけれど。実際、使えるものだかどうだか確かめてみると面白いかもしれませんが、今回、データシートの

CPU/GPUなどの項目はスルー、ディスプレイとかイーサとか大物IOもスルー

であります。GPUの内部構成とか説明しているところは沢山あるでしょうから。前回の反省点にもとづき、電源とかGPIOとかを中心に眺めていきます。そのとき、データシートと合わせて見たのが以下です。

Jetson Nano Carrier Board OrCAD Schematics

モジュールが刺さっているキャリアボードの回路図です。

電源

後述の1端子をのぞき、モジュールの電源は5V単一です。3.3とか1.8とか、モジュール内で必要とされる電圧は、モジュール上で作っているとあります。キャリアボード上にも、3.3Vと1.8Vの電源がありますが、これらはキャリアボード上で使用するためのもののようです。勿論、ラズパイ互換の40ピンGPIOヘッダの3.3V電源端子に供給されている電圧はキャリアボード上の電源からです。電源端子で唯一例外といえるのが、モジュール内のRTC(リアル・タイム・クロック)のバックアップ用電源です。回路図面上はCR1225を接続するように書いてあります。実際、キャリアボードをひっくり返すと、バッテリフォルダをハンダづけするためのランドが見つかります。

ただ、ここにハンダづけしてしまうと、NVIDIA謹製「ボール紙」のJetson Nano置台上では、水平が取れなくなってしまう恐れがあります。ま、その時はキャリアボードに足をつければ良いだけですが(ちゃんと4隅に穴が開いているのはご存知のとおりです。)

 

GPIO端子など

さて、当方関心があるのはGPIOなど細々したIO関係の端子です。モジュール上は、GPIO端子という名の端子が0から14番まで存在します。これらの端子も、またそれ以外のいくつもの端子もGPIOとして使用できるのですが、GPIOと言いながら、何かしらの機能がアサインされている場合がままあります。多くは、「大きめのIO機能」のヘルパ端子みたいな使いかた。あるいは、キャリアボード上の回路で使ってしまっている。いずれにせよ、該当の機能を使用する場合は使用されてしまうので、オーディオとかカメラとか「大物」には気をつけないとなりません。もちろん、それら機能を使わないのであれば、GPIOとして使えます。実際、前回投稿では、本来オーディオ用の端子をGPIOの入力に流用してしまいました。なお、まったく、機能がアサインされていないピンが無いのかな、ということで調べてみました。フリーなのは以下の端子だけではないかと思われます。

GPIO12 (PIN15番)

さて、GPIOの行先で一番の関心はラズパイ互換の40ピンヘッダです。デフォルトでは以下の6ピンをのぞき全てGPIO入力設定のようです。

  • pin3 I2C1_SDA 3.3V 2.2kΩ
  • pin4 I2C1_SCL 3.3V 2.2kΩ
  • pin8 UART1_TXD_LS
  • pin10 UART1_RXD_LS
  • pin27 ID_I2C_SDA (I2C0) 3.3V 2.2kΩ
  • pin28 ID_I2C_SCL (I2C0) 3.3V 2.2kΩ

LSと末尾にあるUARTおよび他のGPIOとして使える信号群は、基本レベルシフタを通っており3.3Vです。レベルシフタの出力に4k入っていることは、前回投稿のとおり。しかし、ここに出ているI2Cの端子のみはモジュールの信号直結に見えます。モジュール内で3.3Vの電源に2.2kΩでプルアップされているようです。I2C接続する場合には忘れないようにしないと。

なお、I2Cはもう一チャンネル、I2C2というものがあり、こちらは1.8V系の信号用なのですが、キャリアボード上で使われています。マイクロチップ(実際はマイクロチップに買収されたアトメル)製コンフィグ用EEPROMに接続されています。

なお、上記のデフォルトの40ピンヘッダの使い方を変更しようとする場合、Linuxがブートのときに分かるようにしてやらないとイケないみたいです。その方法が、以下の文書に書かれています。

Customizing the Jetson Nano 40-pin Expansion Header

ただし、Linuxに読ませるファイルはCSV型式で、以下のExcelシートから生成するようになっているみたい。なお、以下のファイルは例によって「メンバ登録必要」でした。

Jetson Nano module pinmux spreadsheet

とりあえず、使いたいものはI2CとUARTなので、まあ変更の必要はなし、と。

バリバリのSoCとSoM(2) Jetson-nanoのi2cにデバイスをつなぐ へ進む