2

SPIDEV ドライバーを使用して、組み込み Linux システム上の SPI デバイス (Avago Tech の光学式マウス デバイス) にアクセスしたいと考えています。デバイスは SPI0 に接続されています。

menuconfig > "Device Drivers" > "SPI" で SPI と "User mode SPI device driver support" を有効にしました。

コードをboard.cファイルに追加しました

static struct spi_board_info spidev_board_info[] {
    {
        .modalias = "spidev",
        .max_speed_hz = 1000000,
        .bus_num = 1,
        .chips_select = 0,
        .mode = SPI_MODE_3,
    },
    {
        .modalias = "spidev",
        .max_speed_hz = 1000000,
        .bus_num = 1,
        .chips_select = 1,
        .mode = SPI_MODE_3,
    },
};
spi_register_board_info(spidev_board_info, ARRAY_SIZE(spidev_board_info));

max_speed_hz として 500000 と 1000000 の両方を試しました (1Mhz がセンサーで許可されている最高値です)。SPI_MODE_3 は正しいです。データシートで確認してください。bus_num = 1 は SPI0 を参照しているため、修正する必要があります (好奇心から = 0 も試しました)。

電気接続を確認しましたが、すべて動作しています。

カーネルはコンパイルされ、イメージは正しく起動しますが、/sys/class/spidev/ にデバイスが見つかりません (/sys/bus/spi/... にもありません)。システムの起動時にも、SPI への参照は表示されません。

問題がどこにあるのかについて何か考えはありますか?

4

1 に答える 1

3

Atmel ボードでは、デバイスを at91_add_device_spi 関数で登録することになっていると思います。それは次のようになります。

at91_add_device_spi(spidev_board_info, ARRAY_SIZE(spidev_board_info));

少なくともboard-sam9x5ek.c、SPI マスター コントローラーが初期化されるように、この関数がボード サポート ファイルによって呼び出されるようにする必要があります。これが行われている場合、上記で提案された初期化は正しいです。

于 2012-05-23T12:27:21.903 に答える