このパッチは、i.MX6 ESPI コントローラー スレーブ モード (SPI タイミング モード 0 および 3) をサポートするためのものです。
ハードウェアは以下を準備します。
2つのi.MX6 Sabresdボードを接続し、U14 SPIまたはデバイスを取り外し、次のように2つのボードを接続します。
MISO --- MISO
MOSI --- MOSI
SS---SSの
CLK---CLKの
GND --- GND
ソフトウェアの準備:
1>3.0.35_4.1.0にパッチspi_slave_2013_10_12.patchを適用するLinux BSP リリース。
2つのボードはすべて、カーネルのCONFIG_SPI_SPIDEV CONFIG_IMX6_SDP_MISCSPIを選択する必要があります
記号: IMX6_SDP_MISCSPI [=y]
場所:
| ->デバイスドライバー
| ●> その他のデバイス(MISC_DEVICES [=y])
記号: SPI_SPIDEV [=y]
場所:
| ->デバイスドライバー
| ●> SPI対応(SPI[=y])
SPIマスターボードはCONFIG_SPI_IMX_VER_2_3を選択します
記号: SPI_IMX_VER_2_3 [=y]
場所:
| ->デバイスドライバー
| ●> SPI対応(SPI[=y])
| -> IMX
SPIスレーブボードはCONFIG_SPI_IMX_VER_2_3_SLAVEを選択します。
記号: SPI_IMX_VER_2_3_SLAVE [=y]
場所:
| ->デバイスドライバー
| ●> SPI対応(SPI[=y])
| -> IMX
2>テストアプリケーションmxc_spi_test1.cをコンパイルしてmxc_spi_testを生成します。
3>テスト手順:
このツールは、SPIバスを介して他のボードにバッファ(内容は両側で同じ)を書き込み、次に他のボードからデータを読み取り、その書き込みバッファと比較します。
私はimx6soloプロセッサを搭載したハミングボードゲートを使用しています。
メインラインカーネル4.2.6をコンパイルしましたが、ヘッドレスで問題なく動作します。では、SPIスレーブデバイスのサポートをどのように追加しますか?
パッチを更新していただけますか、少なくとも私が見るべき場所を教えてもらえますか。私はデバイスのツリー構造に不慣れです。
3.10.17ドライバーまたは同様のドライバーと互換性のあるバージョンはありますか?フリースケール 3.10.17 カーネル リポジトリの SPI ドライバは、まだ SPI スレーブ モードをサポートしていません。
どなたか、このパッチを変更してマスターモードとスレーブモードの両方のドライバーを同時に使用できるようにする方法についてコメントしていただけませんか?
Dear Peng,
i.MX6スレーブモードのSPIパッチを見たとき。i.MX27でも同じ質問が出ます。i.MX6を使用していないため、SPIプログラムを入手してパッチを作成できません。そこで、i.MX27はSPIのi.MX6と同じだと思うので、それを解決するためにいくつかの質問をしたいと思います。
以下は私のテスト手順です。
i.mx27用にLinux 2.6.19.2のスレーブモードでspi1を設定したいです。つまり、i.mx27ボードをSPI MASTERとして使用し、他のボードをSLAVEとして使用して相互に通信しています。マスターMOSI<->スレーブMOSI、マスターMISO<->スレーブMISOとマスターCLK->スレーブCLKなどの3線式リンクを相互採用しています。マスターSPIはデータのみを送信し、スレーブSPIはデータのみを受信します。
i.MX27 の SPI デバイスとドライバーによると、Linux の CONREG レジスタでマスターを MODE ビットの SLAVE に変更するだけで、毎回同じ 8bit を約 8*1000*1000 ベースで転送します。マスター モードは、MOSI ピンがデータを転送でき、CLK ピンがクロックを取得できる場所でうまく機能します。しかし、SLAVEモードは機能せず、i.mx27は割り込みに反応できず、spi_put_tx_data機能状態にとどまり、プロセッサがスレーブモードである受信モードに進むことができません。
SPIは、一度だけ受信し、後でデータを転送するために混乱させることができます。
cmd->port は 1 です
SPIは1で、fdは4です
spi_bitbang :bitbang_work
mxc_spi:mxc_spi_chipselect
原点mxc_spi_chipselect制御レジスタは 1024 です
マスキングされたオリジンmxc_spi_chipselectコントロールレジスタは1024です
mxc_spi:spi_find_baudrateスレーブおよび作業モードとしてのSPIプローブはSPI_MODE_0です。
mxc_spi_chipselect制御レジスタは 66567 です
mxc_spi:mxc_spi_transfer
mxc_spi:spi_enable_interrupt
mxc_spi:mxc_spi_isr
mxc_spi:spi_get_rx_data
mxc_spi :spi_put_tx_data
mxc_spi:mxc_spi_isr
mxc_spi :spi_put_tx_data
mxc_spi:mxc_spi_isr
mxc_spi :spi_put_tx_data
mxc_spi:mxc_spi_isr
mxc_spi :spi_put_tx_data
mxc_spi:mxc_spi_isr
mxc_spi:mxc_spi_isr
mxc_spi :spi_put_tx_data
mxc_spi:mxc_spi_isr
mxc_spi :spi_put_tx_data
mxc_spi:mxc_spi_isr
mxc_spi :spi_put_tx_data
なぜ奴隷が何も受け取れないのかわかりません。
私の質問は:
1.ソフトウェアとハードウェアの両方を変更するのを忘れたり、間違えたりした場所がわかりません。だから、スレーブモードで動作するためには、どんな体でも私に何らかのリンクを提供できます。
2.i.MX27 SPIデバイスファイルとドライバファイルの更新方法Cリソースを取得したい場合は、教えてください。後でお渡しします。
3. SPIマスターおよびスレーブプログラムのソースをいただけませんか。SPIスレーブのレジスタとプログラムをどこで変更する必要があるかを調べることができます。
4.あなたが中国人なら、中国語でお互いにコミュニケーションを取りたいです。
何かアドバイスをお願いします。
感謝
ワンジアン