ikeuchi
2014年6月29日 16時47分
お世話になります。
池内です。
Armadillo-840 液晶モデル開発セットを使用して拡張基板のLEDを点灯させようとしており、
コマンドラインからの操作で点灯させることはできるのですが、C言語でアプリケーションプログラム
を作成し、LEDを点灯させる際にプログラムの作り方がわかりません。
これまでは、OSを介さないマイコンのプログラミングを行ってきたので、直接ポートを設定してやれば
良かったのですが、OSが絡むとどういう書き方になるのかイメージができない状況です。
初歩的な質問で恐縮ですが、ご教授いただけますでしょうか?
コメント
y.nakamura
中村です。
> いつも様子見していると中村さんが回答されるのでたまには私も。
いろんな人に出てきて欲しいです。
様子見をもうちょっと長くしようかなぁ~。
> 840のデバイス名は失念しましたが、概ね次のようなコードでいい筈です。
ですね。
Armadilloのドキュメントとしては、ここに説明があります。
実践ガイド第2部の中。
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
brightnessを使わずにトリガを使ってタイマでON/OFFする
ようなときもやり方は同じ。
デバイスファイルをopen()やfopen()でオープンして、
write(),fwrite()などで値を出力すればOKです。
> パフォーマンスが要求されるのなら別ですが、LEDは見るのが人間なので問題ないかと思います。
私の場合、たまにしかON/OFFしないときは面倒なので、
system()でやってしまうこともあります。
system("echo 1 > /sys/class/leds/xxxx/brightness");
system("echo 0 > /sys/class/leds/xxxx/brightness");
--
なかむら
ikeuchi
中村様
返信ありがとうございました。
実践ガイドは見ていたつもりでしたが、調べが足りなくお恥ずかしい限りです。
system()は初めて知りました。今後、使ってみたいと思います。
> 中村です。
>
> > いつも様子見していると中村さんが回答されるのでたまには私も。
>
> いろんな人に出てきて欲しいです。
> 様子見をもうちょっと長くしようかなぁ~。
>
> > 840のデバイス名は失念しましたが、概ね次のようなコードでいい筈です。
>
> ですね。
>
> Armadilloのドキュメントとしては、ここに説明があります。
> 実践ガイド第2部の中。
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
>
> brightnessを使わずにトリガを使ってタイマでON/OFFする
> ようなときもやり方は同じ。
> デバイスファイルをopen()やfopen()でオープンして、
> write(),fwrite()などで値を出力すればOKです。
>
> > パフォーマンスが要求されるのなら別ですが、LEDは見るのが人間なので問題ないかと思います。
>
> 私の場合、たまにしかON/OFFしないときは面倒なので、
> system()でやってしまうこともあります。
> system("echo 1 > /sys/class/leds/xxxx/brightness");
> system("echo 0 > /sys/class/leds/xxxx/brightness");
>
> --
> なかむら
>
>
ikeuchi
izawa様
ご教授いただきありがとうございます。
無事点灯させることができました。なんとなくですが理解できた気がします。
引き続き勉強していきます。
> いつも様子見していると中村さんが回答されるのでたまには私も。
>
> 折角コマンドラインから点灯できるようにデバイスドライバができているのですから、
> プログラミングも同じ要領でできます。
> 840のデバイス名は失念しましたが、概ね次のようなコードでいい筈です。
> --
> // 尚、echo 1 > /sys/class/.../brightness で点灯することを前提としています。
> // デバイス名は適当に調整を。
> // \param[in] onoff true: 点灯、 false: 消灯
> void led(bool onoff)
> {
> FILE * fp = fopen("/sys/class/.../brightness", "r+");
> fputc(onoff ? '1' : '0');
> fclose(fp);
> }
> --
> 勿論、open/write/closeで書いても問題ないし、その方が効率はいいかもしれません。
> パフォーマンスが要求されるのなら別ですが、LEDは見るのが人間なので問題ないかと思います。
> 要は、echoコマンドならファイル出力、catコマンドならファイル入力に置き換えればいいと言うことです。
izawa
2014年6月29日 17時40分
いつも様子見していると中村さんが回答されるのでたまには私も。
折角コマンドラインから点灯できるようにデバイスドライバができているのですから、
プログラミングも同じ要領でできます。
840のデバイス名は失念しましたが、概ね次のようなコードでいい筈です。
--
// 尚、echo 1 > /sys/class/.../brightness で点灯することを前提としています。
// デバイス名は適当に調整を。
// \param[in] onoff true: 点灯、 false: 消灯
void led(bool onoff)
{
FILE * fp = fopen("/sys/class/.../brightness", "r+");
fputc(onoff ? '1' : '0');
fclose(fp);
}
--
勿論、open/write/closeで書いても問題ないし、その方が効率はいいかもしれません。
パフォーマンスが要求されるのなら別ですが、LEDは見るのが人間なので問題ないかと思います。
要は、echoコマンドならファイル出力、catコマンドならファイル入力に置き換えればいいと言うことです。