ユーザ用ツール

サイト用ツール


gpio制御

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
gpio制御 [2021/12/09 13:08] makotoa67gpio制御 [2021/12/10 13:14] (現在) makotoa67
行 11: 行 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対応を検討した。
-Jetson Nanoでは、Tegra X1のTRMで確認できたGPIOレジスタの詳細情報が、Xavier NXでは見つからず。結局、 +Jetson Nanoでは、Tegra X1のTRMで確認できたGPIOレジスタの詳細情報が、Xavier NXでは見つからず。
-自分でmmapでGPIOレジスタのアドレスの近辺の値の変化を観測しつつ、gpio-tegra186.cも読んで大体把握。 +
-大体把握できたあたりで、たまたま、libgpiodの存在を知った+
  
-ただし、Qiitaに[[libgpiodの使方 | https://qiita.com/wancom/items/b041ee7408a87fabf48e]]を書いている人がいたので二番煎じになたの経緯を含めて紹介してみる。経緯興味れないが。+結局、「シェルで/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 +  * Nanoは**3~7usec** 
-  * Xavier NXは15usec前後 +  * Xavier NXは**15usec**前後 
-  * Raspberry Pi4では5~10usec+  * Raspberry Pi4では**5~10usec**
  
 というところ。 というところ。
 +
 +ちなみに、この時間は、トリガとなる入力ポートの変化から、それを検知して他のポートの出力ポートに出力するまでの時間をオシロで計測した時間。
 +
 この計測をした際に、特に、他のプロセスを動かしていたわけではないが、何か動いていたかもしれないので、参考値ということで。 この計測をした際に、特に、他のプロセスを動かしていたわけではないが、何か動いていたかもしれないので、参考値ということで。
gpio制御.1639022904.txt.gz · 最終更新: 2021/12/09 13:08 by makotoa67