[Armadillo:05737] Re: tftpdlの動作について

nakai email@hidden
2010年 8月 26日 (木) 20:02:42 JST


nakaiです。

>> ファームのサイズ(linux.bin.gzとromfs.img.gz)の合計がある程度以上に
>> なると、ほぼ確実にリセットする事から、ファームのダウンロード中に
>> WatchDogTimerが有効になっていて、Kickが行われていないような感じに
>> 見えます。

原因は、ダウンロード用のバッファが15Mbyteしかないというところでした。
17M以上のファイルをダウンロードするとhermit自身のメモリに上書きしていく
ため、アボートしていました。

不具合もありますが、TFTPによるファイルダウンロードは、
ファイルを正常にダウンロードできるまでFlashメモリへの書き込みを行わない
思想でつくられているため、15Mという制限を持たしていました。

みなさんArmadillo-440ですよね?
● 対策方法 (Armadillo-440の場合)
ダウンロードバッファを15Mから64Mに変更する方法。
hermit-at-2.0.3で説明します。
以下のパッチをあてます。
diff --git a/src/target/armadillo4x0/board.c b/src/target/armadillo4x0/board.c
index 25cb6e8..490e5bf 100644
--- a/src/target/armadillo4x0/board.c
+++ b/src/target/armadillo4x0/board.c
@@ -406,6 +406,7 @@ static struct page_table pt_list[] = {
        {0x83800000, 0x83800000, 0x00100000, 0xc02}, /* for Ethernet */
        {0x83900000, 0x83900000, 0x00600000, 0xc0e},
        {0x83f00000, 0xfff00000, 0x00100000, 0xc0e}, /* for vector */
+       {0x84000000, 0x84000000, 0x04000000, 0xc0e},
        /* Flash */
        {0xa0000000, 0xa0000000, 0x08000000, 0xc02},
        /* Internal SRAM */
@@ -556,7 +557,8 @@ static struct memory_map armadillo4x0_memory_map = {
        .mmu_table      = { RAM_ADDR(0x00004000), 0x00004000 },
        .kernel         = { RAM_ADDR(0x00008000), 0x007f8000 },
        .initrd         = { RAM_ADDR(0x00800000), 0x01800000 },
-       .free           = { RAM_ADDR(0x02000000), 0x00f00000 },
+       //.free         = { RAM_ADDR(0x02000000), 0x00f00000 },
+       .free           = { RAM_ADDR(0x04000000), 0x04000000 },
 /*     .hermit         = { RAM_ADDR(0x03000000), 0x00800000 }, */
 /*     .fec_desc       = { RAM_ADDR(0x03800000), 0x00100000 }, */
        .gunzip         = { RAM_ADDR(0x03900000), 0x00100000 },


ビルドします。
make armadillo4x0_defconfig
make

テスト用にビルド済みバイナリを準備しました。
http://www.atmark-techno.com/~yashi/loader-armadillo4x0-v2.0.3-free64mb.bin
一応、2010年9月1日までおいておきますが、その後消してしまうかもしれません。

また本不具合に関しましては、次回のアップデートで修正します。
お手数おかけしますがよろしくお願いします。


(2010/08/26 18:56), nakai wrote:
> nakaiです。
> 
>> ファームのサイズ(linux.bin.gzとromfs.img.gz)の合計がある程度以上に
>> なると、ほぼ確実にリセットする事から、ファームのダウンロード中に
>> WatchDogTimerが有効になっていて、Kickが行われていないような感じに
>> 見えます。
> 
> ありそうです。
> 調べてみます。
> 
> 
> (2010/08/26 17:50), TATENO Hiroyuki wrote:
>> 舘野です。
>>
>> setbootdevice tftp
>>
>> の設定で、同様の症状に遭遇しました。
>>
>> ファームをダウンロードしている最中にリブートしているような感じです。
>>
>>> リセットに関してですが、
>>> たぶんWatchDogによるリセットがかかっていると思います。
>>
>> そんな感じです。
>>
>>> いまのところ何が原因か推測できていません。
>>
>> ファームのサイズ(linux.bin.gzとromfs.img.gz)の合計がある程度以上に
>> なると、ほぼ確実にリセットする事から、ファームのダウンロード中に
>> WatchDogTimerが有効になっていて、Kickが行われていないような感じに
>> 見えます。
>>
>> ---
>> TETENO Hiroyuki
>>
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 




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