2013年8月19日月曜日

HAL Component

まとめを少々、その1。

LinuxCNCでハードウェアをドライブするために必要な部分、HAL Componentを作成する必要があります。マニュアルには、Cで書くと冗長で退屈な作業になるみたいな事が書いてあって、代わりに、HAL Component Generatorを使うとありました。

基本、C言語の構文ですが、独自のパラメータやマクロ的なものを使用することで簡単になるかんじで、filename.compを書いて、compコマンドでコンパイル、インストールします。

sudo comp --install filename.comp

でコンパイル、インストール。

comp filename.comp

として、filename.cを生成、などができます。


さて、Componentの記述についてどうすればという事で、まずは、picncのコード、LinuxCNCのマニュアルを参考に、
  • component
  • description
  • pin
  • param
  • variable
  • option
  • function
  • license
  • auther
 のパラメータの定義が必要でなようで、さらに、
  • EXTRA_SETUP()
  • EXTRA_CLEANUP()
  • FUNCTION()
 といった、マクロを使う必要が有りそうという事がわかりました。

パラメータ部の構文

使用したもののみ説明します。


component HALNAME (DOC);

コンポーネントの名称を定義。 

description DOC;

使い方等の説明を記述。

pin PINDIRECTION TYPE HALNAME ([SIZE]|[MAXSIZE: CONDSIZE]) (if CONDITION) (= STARTVALUE) (DOC) ;

入出力を定義。入出力の方向、bit, signed, unsigned、またはfloatの型、名称などを指定します。配列として定義することも可能。


param PARAMDIRECTION TYPE HALNAME ([SIZE]|[MAXSIZE: CONDSIZE]) (if CONDITION) (= STARTVALUE) (DOC) ;
 
パラメータ、r(ead)、w(rite)、またはrwの指定、bit, signed, unsigned、またはfloatの型、名称などを指定。
 option OPT (VALUE);

singleton yes; - RPiにはGPIOは1個だけなので、インスタンスは1個を指定。

option extra_setup; - GPIOの入出力を設定。

option extra_cleanup; - GPIOの初期化。すべて入力に戻す。

function HALNAME (fp | nofp) (DOC);

ファンクションが1個だけの時は名前を省略できるようです。GPIOの入出力を設定するための関数。

license LICENSE;

ライセンスを記述。

auther AUTHOR;

作成者の記述。


以上の順序は特になく、最後に「;;」をつけてパラメータ部を区切ります。

続く・・・

0 件のコメント:

コメントを投稿