[Suzaku:02149] Re: flatfsdを使ったFLASHメモリへのアクセスに関して

Keisuke Inoue email@hidden
2012年 4月 24日 (火) 12:59:48 JST


竹之下様

ご回答ありがとうございます。
井上です。

早速、新しい開発環境でflatfsdを試してみました。
ご教授頂いた内容に関しては、うまくいきました。
非常に助かりました。ありがとうございました。

ところが、弊社のFPGAイメージと新しいLinuxイメージを組み合わ 
せた場合、うまく動作しませんでした。弊社のFPGAプロジェクトが 
古いFPGAプロジェクト(おそらく、sz410-20071019.zip)をベースに 
して作っていることが原因だと思っております。

そこで、
①FPGAプロジェクトとatmark-dist環境のバージョンの違いによる組 
み合わせの可否などはありますか?

一応、御社のHPから、以下をダウンロードして実験してみました。
旧FPGA:fpga-sz410-91i-20071010.bin
新FPGA:fpga-sz410-101i-20090427.bin
旧Linux:image-sz410_atmark-dist-20071005_linux-2.6.18-at2.bin
新Linux:image-sz410_atmark-dist-20090318_linux-2.6.18-at11.bin

結果
  新FPGAと新Linux ⇔ ◯
  旧FPGAと新Linux ⇔ ☓
  旧FPGAと旧Linux ⇔ ◯

○は、Linuxが通常起動し、動作確認しました。
☓は、下にログを記載しますが、
  XTemac: Could not initialize device. 
となっており、ネットワーク系のデバイスが認識されていないよう 
です。その後、Linuxがフリーズしているようです。弊社のFPGAイ 
メージと新しいLinuxイメージを用いた場合にも、同様のエラーで 
フリーズしてしまいます。

また、
②旧FPGAプロジェクトベースのイメージと新Linuxベースのイメージ 
がうまく動作するようにできますか?

FPGAは、ISE9.1からバージョンを上げていないので、できたら 
Linux側の変更のみで行いたいと思っております。

③、①とも関係しますが、開発環境やベースイメージの互換表などご 
ざいますか?

今回実験をしてみて、atmark-dist環境を新しいものに変更する 
と、古いATDE環境ではmake時にエラーが出ました。そこで、新しい 
ATDEをダウンロードして、同様にやってみると、うまくイメージが 
作成できました。
①もそうですが、環境やベースイメージによってうまくいく場合と 
いかない場合があると思っています。これは非常に困りますので、 
どの組み合わせが適切なのかの情報を出して頂けますか?


どうぞ宜しくお願い致します。


以下、Linux起動時のログ
----------------------------------------------------
ttyS0 at MMIO 0xf0ff2000 (irq = 1) is a Xilinx OPB UART Lite
loop: loaded (max 8 devices)
XTemac: Could not initialize device. ←問題と思われるところ
Suzaku MTD mappings:
   Flash 0x800000 at 0xf0000000
flash: Found an alies 0x800000 for the chip at 0x0, ST 
M25P64 device detect.
Creating 7 MTD partitions on "flash":
0x00000000-0x00800000 : "Flash/All"
0x00000000-0x00100000 : "Flash/FPGA"
0x00100000-0x00120000 : "Flash/Bootloader"
0x006f0000-0x007f0000 : "Flash/Config"
0x00120000-0x006f0000 : "Flash/Image"
0x00120000-0x00420000 : "Flash/Kernel"
0x00420000-0x006f0000 : "Flash/User"
FLASH partition type: spi
Attached ROMFS: RAM probe address=0xc021acec size=0x342000
Attached ROMFS: set ROMfs to be root filesystem
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
VFS: Mounted root (romfs filesystem) readonly.
Freeing unused kernel memory: 72k init
init started:  BusyBox v1.00 (2012.04.23-06:54+0000) 
multi-call binary
Mounting proc:
Mounting var:
Populating /var:
Extracting libraries
Setting all cgi
Unzip cgi
Setting html
Setting Images
Setting Graph
Running local start scripts.
Mounting /etc/config:
Populating /etc/config:
flatfsd: restore fs+ from partition 0, tstamp=10
flatfsd: Created 3 configuration files (281 bytes)
Setting hostname:
Setting up interface lo:
Starting DHCP client:
dhcpcd[178]: dhcpStart: ioctl SIOCGIFHWADDR: No such device
	←、エラー箇所



(2012/04/20 18:16), Takenoshita Koyo wrote:
> 竹之下です。
>
>> ①初期値を読み込む上記現象は避けようがないのでしょうか?
> そうですね。
> デバイスへの書き込み中に電源断が起きた場合、書き込み内容が
> 失われる(その結果、ファイルシステムの不整合が発生する)現象は、
> ハード的にUPSのような機能を外部に持たせない限り、避けようが
> ありません。
>
>> ②バックアップファイルをFLASHメモリの他の領域に書くことはでき
>> ますか?
>> 現状は、/etc/config/のデータをFLASHに書き込んでいますが、他
>> の領域にバックアップファイルを書き込むことはできますか?2つ
>> の領域に交互に書くことができれば、片方が消えても、もうひとつ
>> 残っておけばいいと思っています。
> flatfsdの新しいバージョンでは、まさにこの機能が入っています。
>
> フラッシュメモリのconfigリージョン(/dev/flash/config)のサイズが
> イレースブロックサイズの2倍以上ある場合、configリージョンを
> 二分割
> して、交互にデータを書き込みます。
>
> 読み出す場合には、二分割したリージョンのうち、新しいデータが
> 書き込まれている方を使用します。その際、マジックナンバーが不
> 正な
> 値になっている(書き込みに失敗したと思われる)方のリージョンは
> 使われ
> ませんので、書き込み領域の二重化になります。
>
> 具体的には、以下の手順を行って下さい。
> 1. カーネルを修正し、configリージョンのサイズを増やす
>
> linux-2.6.18-at/drivers/mtd/maps/suzaku.c を以下のように修正
> して、
> configリージョンのサイズを0x10000(64kB)から0x20000(128kB)に
> 変更してください。
> (この変更に伴い、userlanリージョンが128kB分少なくなります。)
>
> --- a/drivers/mtd/maps/suzaku.c
> +++ b/drivers/mtd/maps/suzaku.c
> @@ -113,10 +113,10 @@ struct mtd_partition
> suzaku_partitions_spi[] = {
> { .name = "Flash/All", .size = 0x00800000, .offset = 0, },
> { .name = "Flash/FPGA", .size = 0x00100000, .offset =
> 0x00000000, },
> { .name = "Flash/Bootloader", .size = 0x00020000, .offset =
> 0x00100000, },
> - { .name = "Flash/Config", .size = 0x00010000, .offset =
> 0x007F0000, },
> + { .name = "Flash/Config", .size = 0x00020000, .offset =
> 0x007E0000, },
> { .name = "Flash/Image", .size = 0x006D0000, .offset =
> 0x00120000, },
> { .name = "Flash/Kernel", .size = 0x00300000, .offset =
> 0x00120000, },
> - { .name = "Flash/User", .size = 0x003D0000, .offset =
> 0x00420000, },
> + { .name = "Flash/User", .size = 0x003C0000, .offset =
> 0x00420000, },
> };
> #endif
>
>
> 2. AtmarkDistのユーザーランドコンフィギュレーションで、
> 新しいflatfsdを使うように変更する
>
> AtmarkDistのmake menuconfigで、Userland Configurationを下記
> のように変更してください。
>
> Filesystem Applications --->
> [*] flatfsd
> (Auto) flatfsd storage type
> [*] Compress /etc/config to flash as required #チェックを入れる
> [*] Device has Real Time Clock #チェックを入れる
> [ ] old version #チェックを外す
>
> 以上のように変更して、image.binを作成しなおし、SUZAKUに書き
> 込んでください。
>
> 変更が正常にできた場合、configリージョンへの書き込みを行った
> ときに
> 下記のようなログが出てくるはずです。
>
> # killall -USR1 flatfsd
> # flatfsd: saving fs to partition 0, tstamp=10
> flatfsd: Wrote 1630 bytes to flash in 1 seconds
> # killall -USR1 flatfsd
> # flatfsd: saving fs to partition 1, tstamp=11
> flatfsd: Wrote 1631 bytes to flash in 0 seconds
> # killall -USR1 flatfsd
> # flatfsd: saving fs to partition 0, tstamp=12
> flatfsd: Wrote 1631 bytes to flash in 1 seconds
>
> partitionが0と1を交互に繰り替えし、tstampが一ずつ
> 増えていきます。
>
> お試しください。
>
> (2012年04月18日 16:51), Keisuke Inoue wrote:
>> suzakuメーリングリスト様
>>
>> SZ410を使って開発をしております。井上と申します。
>>
>> flatfsdを使ったFLASHメモリへのアクセスに関して教えて下さい。
>> flatfsdを使ってFLASH書き込み中にSUZAKUの電源を落とすとデータ
>> がなくなってしまうのを避けたいと思っております。
>>
>> 現在、データファイルと設定ファイルをflatfsdコマンドにて、定
>> 期的にFLASHメモリに書き込んでいます。ところが、書き込み中に
>> SUZAKUの電源を切ってしまうと、/etc/config/を通して書いたデー
>> タが全て初期化され、データファイルが消えてしまいます。
>> この現象は、チェックサムが正常に書き込まれないので、次起動時
>> は、/etc/default/の初期ファイルが読み込まれるためだと思い
>> ます。
>>
>> そこで、
>> ①初期値を読み込む上記現象は避けようがないのでしょうか?
>> 組込み機器としてしようしているため、いつ電源が落ちるか分から
>> ないので、この現象が起こってしまっています。
>>
>> ②バックアップファイルをFLASHメモリの他の領域に書くことはでき
>> ますか?
>> 現状は、/etc/config/のデータをFLASHに書き込んでいますが、他
>> の領域にバックアップファイルを書き込むことはできますか?2つ
>> の領域に交互に書くことができれば、片方が消えても、もうひとつ
>> 残っておけばいいと思っています。
>> その場合、直接、FLASHメモリのアドレス番号にアクセスして、固
>> 定箇所にデータを書き込むことが出来ますか?
>>
>>
>> 現在、flatfsdを使っていますので、あまりプログラム変更せず
>> に、この現象を避けたいと思っております。対策をとっていらっ
>> しゃる方や、お分かりの方がいましたら、教えて下さい。どうぞ宜
>> しくお願い致します。
>> _______________________________________________
>> suzaku mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/suzaku
>>
>
>


-- 
-----------------------------------------------
大阪大学 産学連携本部 イノベーション部
ベンチャー・ビジネス・ラボラトリー

      井上 恵介(Keisuke Inoue)

〒565-0871 大阪府吹田市山田丘2-1
mail:email@hidden
TEL:06-6879-7412  FAX:06-6879-7878


suzaku メーリングリストの案内