2017-01-24 28 views
1

(私は間違ったものを選択した場合、私は事前にそう謝罪、適用するタグそのうち本当にわからないと思います。)読み取り/書き込みSPIデバイス

私は、これはあまりにも愚かな質問ではないことを願っていますが、私は本当にここで失われた。

クライアントは、Atmel SAMA5D2 Xplained board with Linux4SAMで遊んでくれました。私はそれにSPIインターフェイスをインターフェイスしようとしているが、どこから始めるべきかわからない。

明らかに、私は類似のボード(この特定ではない)のベアメタルを使用しました。私はLinuxを長年使っており、数年前にはいくつかの簡単なデバイスドライバを書いてきました。そして、私はまだ失われています。

dmesg | grep spiは私に次のような出力が得られます。このことから

[ 1.840000] atmel_spi f8000000.spi: version: 0x311 
[ 1.840000] atmel_spi f8000000.spi: Using dma0chan0 (tx) and dma0chan1 (rx) for DMA transfers 
[ 1.850000] atmel_spi f8000000.spi: Using FIFO (16 data) 
[ 1.860000] atmel_spi f8000000.spi: Atmel SPI Controller at 0xf8000000 (irq 32) 
[ 1.860000] m25p80 spi32766.0: at25df321a (4096 Kbytes) 

私は、ドライバがロードされ、DMAを使用するように設定されていることと推測します。しかし、SPIデバイスのように見えるものは何もありません/dev/に見ている(私は/dev/spidevまたは/dev/spi32766.0または類似のようなものを見つけるために期待していた。)

これは、ロードされた実際のデバイスドライバが存在しないことを意味していますか? SPIを使用するために私は1つ書く必要がありますか?

Makefile in the Linux4SAM source treeを見ると、カーネルがモジュールの読み込みをサポートしていないことが1171行目にあります。これは私の新しいドライバを組み込むためにカーネルを再コンパイルする必要があることを意味しますか?これは愚かなアプローチのようです。私がそれにハードウェアにアクセスできない場合、なぜLinuxディストリビューションを提供するのですか?

私はここで何が欠けていますか? は(私はむしろ愚かな感じ...)

EDITを明確にするために:私はいくつかの外部デバイスに接続された外部SPIインターフェースにアクセスしたいです。私はm25p80が内部のフラッシュメモリだと思う。私はそこに読む/書くことに興味がありません。

+2

https://www.kernel.org/doc/Documentation/spi/spidevそして、カーネル設定とデバイスツリーのようなリソースプロバイダでspidevを有効にする必要があります。 – 0andriy

+0

* "Makefileを見ると、カーネルはモジュールの読み込みをサポートしていません。" * - Makefileには設定の詳細はありません。 * "私はm25p80が内部フラッシュメモリだと思う" * - 間違っているのは、SPIで接続された外部フラッシュだ。カーネルの研究** Documentation/spi/spi-summary ** SPI(スレーブ)デバイスは通常、使用するインターフェイスではなく、その機能から派生したデバイスノード名を持っています。 Spidevはユーザ空間のクルーガであるため例外です。 – sawdust

+0

@ 0andriy:spidevはカーネル構成で有効です。モジュール(modprobe)をロードできますが、新しいデバイスは表示されません。私はデバイスツリーに何かを追加する必要はないと思っていました...私はこのようなプラットフォームでLinuxを使い始めました。 – Ludo

答えて

0

@ 0andriyが正しいトラックに私を入れました。私はSPIリソースをデバイスツリーに追加し、コンパイルされたデバイスツリーBLOBをボードにフラッシュしなければなりませんでした。 (私はデバイスツリーについて全く知らなかったので、この情報は本当に見つけにくいです...)。

今は/dev/spidev32765.0です。私は[email protected]を追加すると、実際に行うには正しいことではないことを読みますが(私は実際にspidevのspi32765.0」dmesg出力に表示さ

 spi1: [email protected] { 
      pinctrl-names = "default"; 
      pinctrl-0 = <&pinctrl_spi1_default>; 
      status = "okay"; 

      [email protected] { 
       compatible = "linux,spidev"; 
       spi-max-frequency = <83000000>; 
       reg = <0>; 
      }; 
     }; 

     [email protected] { 
      pinctrl_spi1_default: spi1_default { 
       pinmux = <PIN_PD25__SPI1_SPCK>, 
        <PIN_PD26__SPI1_MOSI>, 
        <PIN_PD27__SPI1_MISO>, 
        <PIN_PD28__SPI1_NPCS0>; 
       bias-disable; 
      }; 
     }; 

:バギーDT:spidevが直接記載されている私は、デバイスツリーにこれを追加しましたDT ")。

今、私がspidev_testを実行してもまだ動作しません(タイムアウトします)。しかし、それは別の質問のためです。

関連する問題