- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I want to translate KBA223028, please confirm to my work.
Regards,
Nino
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Confirm to work this KAB
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
タイトル: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特化デバイスIDはspi-nor.cでサポートされるデバイスのリストに追加する必要があります。例えば、CY15B104Q 4-Mビットデバイスでは、下記のエントリーをdrivers/mtd/spi-nor/spi-nor.cのspi_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