ユーザ用ツール

サイト用ツール


gpio制御

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
gpio制御 [2021/12/09 12:01] admingpio制御 [2021/12/10 13:14] (現在) makotoa67
行 1: 行 1:
 ===== GPIO制御 ===== ===== GPIO制御 =====
  
-sysfs経由のGPIO制御だと応答速度が遅い。+とあるイメージセンサを用いた撮像部を作ることになった。 
 +イメージセンサの撮像開始をGPIO入力でタイミングを取る必要があった。 
 +sysfs経由のGPIO制御だと応答速度が遅い。また、PythonのライブラリJetson.GPIOはよくみかけた
 プロジェクトの要求仕様的に、その遅い応答速度では満足できなかった。 プロジェクトの要求仕様的に、その遅い応答速度では満足できなかった。
 本当は、 本当は、
行 9: 行 11:
  
 などもすべて自作のGPIO制御部にて実施したかったが、GPIO系の制御レジスタの制御のみでは駄目で(仕様としてはできそうだったのだが)、結局、sysfsの助けを借りて、初期化時はsysfsを用いてポートの初期化を行い、ポートの変化の箇所だけmmap経由でのGPIOレジスタReadとすることで応答速度を確保。 などもすべて自作のGPIO制御部にて実施したかったが、GPIO系の制御レジスタの制御のみでは駄目で(仕様としてはできそうだったのだが)、結局、sysfsの助けを借りて、初期化時はsysfsを用いてポートの初期化を行い、ポートの変化の箇所だけmmap経由でのGPIOレジスタReadとすることで応答速度を確保。
 +
  
 今回、Jetson Xavier NXへのプロジェクト一式を移植する際に、GPIOポートの制御部分のXavier NX対応を検討した。 今回、Jetson Xavier NXへのプロジェクト一式を移植する際に、GPIOポートの制御部分のXavier NX対応を検討した。
-mmapでGPIOレジスタのアドレスの近辺の値の変化を観測しつつgpio-tegra186.cも読ん大体把握。 +Jetson Nanoは、Tegra X1のTRMで確認できたGPIOレジスタの詳細情報がXavier NXは見つからず
-大体把握できたあたりで、たまたま、libgpiodの存在を知った+
  
-ただし、Qiitaにlibgpiodの使い方を書いている人がいたので二番煎じになたの経緯を含めて紹介してみる。経緯興味れないが。+結局、「シェルで/sys/class/gpio経由でポートを制御ながらmmapでマッピングして値の変化を見るプログラムを動かして」というかなり泥臭い手法で、ようやく、GPIOのReadデータがこのオフセットに、Writeデータはこのオフセットに、などという位置がわかって来て、gpio-tegra186.cも読んで大体把握。ようやく、制御できる目処が立って来たあたりで、、 
 + 
 +たまたま、libgpiodの存在を知った。 
 + 
 +[[https://qiita.com/Qiita]]でも記事をアップしようかと思ったら、[[libgpiod]]自体については、[[https://qiita.com/wancom/items/b041ee7408a87fabf48e | libgpiodの使い方]]を書いている人がいること気づいた。 
 + 
 +__//我がら、libgpiodにどり着くの、遅い。 
 +振り返ってみると、Jetson NanoでGPIOと格闘していたのは...2021年1月ごろそのときにはlibgpiodの存在に気づきたかった。 
 +結構試行錯誤たよう記憶。。。// 
 +__ 
 + 
 +なので、JetsonシリーズのGPIO制御ということでQiitaに投稿([[https://qiita.com/MakotoA67/items/cf506337f3cee867a5f2| この記事]])
  
 また、Jetson NanoとJetson Xavier NXだけでなく、Raspberry Pi 4でも動作確認を取ることで、ポータビリティも確認できた。 また、Jetson NanoとJetson Xavier NXだけでなく、Raspberry Pi 4でも動作確認を取ることで、ポータビリティも確認できた。
 +ざっくりとした応答時間を計測してみたので、以下に紹介する。
 +
 +  * Nanoは**3~7usec**
 +  * Xavier NXは**15usec**前後
 +  * Raspberry Pi4では**5~10usec**
 +
 +というところ。
 +
 +ちなみに、この時間は、トリガとなる入力ポートの変化から、それを検知して他のポートの出力ポートに出力するまでの時間をオシロで計測した時間。
  
 +この計測をした際に、特に、他のプロセスを動かしていたわけではないが、何か動いていたかもしれないので、参考値ということで。
gpio制御.1639018872.txt.gz · 最終更新: 2021/12/09 12:01 by admin