前回のつづき。
Rubyライブラリの作成
前回のプログラムの関数をRubyで使用できるようにライブラリ化
Swigのインストール
$ sudo apt-get install swig
定義ファイルを書く
ライブラリに登録する関数をpwm.i
というファイルに記述する
登録する関数
set_range
set_duty
hw_initialize
pwm.iの内容
%module pwmlib
%{
extern volatile unsigned * io_mapping(int base_addr);
extern void hw_initialize();
extern void set_range(int range);
extern void set_duty(int duty);
%}
%init
%{
hw_initialize();
%}
extern void set_range(int range);
extern void set_duty(int duty);
ラッパー関数作成
siwgを使用し、ruby用のラッパー関数を作成する。
$ swig -ruby pwm.i
pwm_wrap.c
が生成される
Makefileの生成
extconf.rb
を作成して実行する
extconf.rbの内容
require 'mkmf'
create_makefile('pwmlib')
実行
$ ruby extconf.rb
Makefileが生成される
ビルドとインストール
$ make
$ sudo make install ← 生成された.soファイルをRubyのライブラリディレクトリへコピー
Rubyからの利用
C言語版と同様、Rangeを1000固定で、Dutyを0~1000まで100単位で変化させるサンプル。
実行
$ sudo ruby pwm.rb