2 Replies Latest reply on Jul 28, 2020 7:11 PM by keni_4440091

    Community Translation - F-RAM Support under Linux – KBA223028

    keni_4440091

      Hi

       

      I want to translate KBA223028, please confirm to my work.

       

      Regards,

      Nino

        • 1. Re: Community Translation - F-RAM Support under Linux – KBA223028
          JuyoungJ_06

          Hi, Nino-san

          Confirm to work this KAB

           

          Thanks

          • 2. Re: Community Translation - F-RAM Support under Linux – KBA223028
            keni_4440091

            タイトル:LinuxでのF-RAMサポート – KBA223028

             

            バージョン 1

             

            chaitanyav_41 2018/02/18 23:48 に作成。chaitanyav_41 2018/02/18 23:48 に変更。

             

            Version: **

             

            質問:

            どうやってLinuxにシリアルF-RAMデバイスのサポートを付け加えられますか?

             

            回答:

            サイプレスF-RAM製品は標準SPI Flashとドロップイン互換です。両方のデバイスは同一パッケージ、ピンアウト、コマンドコード、およびレジスターレイアウトで使用します。従って、SPI
            Flash
            の標準Linux MTDドライバースタックはシリアルF-RAMでも使用可能です。この場合、デバイスは消去コマンドを無視し、ステータスレジスタはビジーになりません。従って、ポーリングループはすぐに完了します。

             

            現在のLinuxカーネルでは、Flashチップドライバーはdrivers/mtd/spi-nor/spi-nor.cおよびdrivers/mtd/devices/m25p80.cで分割されます。このチップドライバーの下にハードウェア特化したSPIコントローラドライバーが必要です。そのコントローラードライバーには通常Linuxカーネルソースツリーの一部としてボードサポートパッケージも付いています。カーネル構成メニューの中で有効になっているこれらのドライバーを使用して、F-RAM特化デバイスIDspi-nor.cでサポートされるデバイスのリストに追加する必要があります。例えば、CY15B104Q 4-Mビットデバイスでは、下記のエントリーをdrivers/mtd/spi-nor/spi-nor.cspi_nor_ids[]に追加できます。

                        
            { "cy15b104q",  INFO(0x7f7f7f, 0,        512, 1024, 0) },

             

            従って、パーツは正しくプローブされています。


            Feb  5 11:10:40 muc-cse-01 kernel: Found Cypress(TM) PISMO(TM) PCI card rev 3
            Feb  5 11:10:40 muc-cse-01 kernel: Active memory bank at CS0: 128 MB, 8-bit
            Feb  5 11:10:42 muc-cse-01 kernel: m25p80 spi0.0: found cy15b104q, expected m25p80
            Feb  5 11:10:42 muc-cse-01 kernel: m25p80 spi0.0: cy15b104q (512 Kbytes)


            # cat /proc/mtd
            dev:    size erasesize  name
            mtd0: 00080000 00000200 "spi0.0"

             

            F-RAMへのraw読み出しおよび書込み動作は機能しています:


            # dd if=/dev/mtd0 bs=32 count=1 | od -v -Ax -tx1
            1+0 records in
            1+0 records out
            32 bytes copied, 0.000133754 s, 239 kB/s
            000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            000020


            # echo "Hello world!" > /dev/mtd0
            # dd if=/dev/mtd0 bs=32 count=1 | od -v -Ax -tx1
            1+0 records in
            1+0 records out
            32 bytes copied, 0.000129754 s, 247 kB/s
            000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 0a 00 00 00
            000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            000020

             

            標準MTD分割も機能しています。新しい1.8Vデバイスは、IDエントリーでマイナー変更を求められる他の順序で出力される9つのデバイスIDバイトがあることに注意して下さい。ただし、考え方は同じです。2-Mビットパーツの場合、デバイスサイズはIDエントリーフィールドで512 * 1024 から 256 * 1024 (256 kB)へ変更されます。

             

            ファイルシステムがMTDの上部で求められる場合、512バイトセクターでのセクター配列を定義すると小さいFATファイルシステムを簡単に作成できます。上記IDエントリーは各々152バイトの1024セクターを特定します。基本的に、必要な任意のセクターレイアウトを定義する事が可能です(合計値がデバイスサイズと等しい場合)。デバイスがセクター消去コマンドを無視する、および書込みサイズに関しては制限ないため、これは可能です。クラシックハードディスクでは、512バイトが使用されます。下記のログに示しているように、MTDブロックデバイスでFATを生成する事が可能です:

             

            2412 閲覧 カテゴリ: Other     タグ: flash, serial, read, driver, linux, patch, write, spi, fram, f-ram, opn, mtd, device id