Community Translation - F-RAM Support under Linux – KBA223028

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Hi

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

Regards,

Nino

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Confirm to work this KAB

Thanks

Jenna Jo
0 Likes

タイトル: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

0 Likes