2017-02-09 10 views
-2

C++のGPIOに "1"または "0"を設定する最も速い方法がありますか?私たちは、この機能を使用しているGPIOをC++(Linux)に設定する最速の方法

は今、:

void gpioSet(int gpio, int value) 
{ 
    sprintf(buf, "/sys/class/gpio/gpio%d/value", gpio); 
    fd = open(buf, O_WRONLY); 
    sprintf(buf, "%d", value); 
    write(fd, buf, 1); 
    close(fd); 
} 

を、この機能を使用すると、CPUは、C++の下でそれを設定するには、 "時間" を要します。

この質問の理由は、私たちがSPIにバグを持つ組み込みLinuxボードを使用しているからです。私はCS(チップセレクト)を「手動で」扱う必要があり、この機能はCSのGPIOを設定またはリセットする時間がかかります。

ありがとうございました。

+0

私の無知を許してください(有権者と下院議員)...この質問についてはっきりしないものはありますか?彼は 'sysctl'値を書くのではなく、メモリ領域を' memmap 'することができました。これはベストプラクティスとしてより速く、または優先されるかもしれません。 – jww

+0

私は2つの否定的な票を理解していません... –

+0

@Kotik_o私はdownvoterではありませんが、この質問は幅があり、あなたはこのプログラムをより効率的にする努力を示していないので、 –

答えて

3

GPIOを書き込む必要があるたびにGPIOを開閉するのではなく、最初に書き込む必要があるときに(起動時に)開いてください。その後、高価な操作をスキップします。

また、GPIOに書き込むときにバッファリングされた書き込みモードを使用していないことを確認してください(この機能をクラスに入れてクリーンにしてください)。

+0

また 'write(fd、value?" 1 "?" 0 "、1)'を使うと、printfのコストを節約できますが、それは本当に高価なオープンとクローズです。 –

+0

ありがとうございます。やってみます。 –

関連する問題