販売終了のお知らせ

SUZAKU シリーズ販売終了のお知らせ > 詳細情報


Howto : SZ410 イーサーネット不具合修正方法 (訂正)

該当製品: SZ410-SILSZ410-U00
2008/3/18本ホームページにて報告いたしました「SZ410 イーサーネット不具合修正方法」で誤りがありました。
お詫び申し上げるとともに訂正をさせていただきます。

対象

SZ410 FPGAプロジェクト(下記プロジェクトで生成したbitファイル、imageファイルも含みます)
あらためて下記の修正方法を適用いただきたくお願い申し上げます。
  • sz410-20080118
  • sz410-20080215
  • sz410-20080318
  • sz410-add_slot-20080215
  • sz410-add_slot-20080318
以下シリアル番号のSZ410-U00およびSZ410-SIL(上記のFPGAプロジェクトが弊社出荷時から書き込まれているもの)
  • S/N070201-002335~2387

現象

対象のFPGAプロジェクトを使用した場合、イーサーネットの動作が不安定になる現象がまれに発生する可能性があります。Linkがとれない、もしくはネットワークアプリケーションが実行されたときにカーネルパニックを起こす等の不安定な挙動が発生する場合があります。
※本不具合は偶発的なもので、対象製品全数において再現するものではございません。

原因

電源投入時のイーサネットPhyへのリセット機能が正常に動作していなかったため不具合となっていました。
IPコア ocm_temacでRX FIFOの状態を監視しているフラグが、RX FIFOをリセットされた際に同時にリセットされていなかったため不具合となっていました。

修正方法1


20080327以降の最新のFPGAプロジェクトを使用する


20080327以降のFPGAプロジェクトは既に対策済みですので、以下よりダウンロードしてお使いください。

修正方法2

IPコアをocm_temac_sz410_v1_10_aにアップする


  • IPコアのダウンロード & コピー
    以下より ocm_temac_sz410_v1_10_a.zip をダウンロードしてください。
    ダウンロードしたファイルを解凍し、ocm_temac_sz410_v1_10_aをフォルダごとsz410-********\pcores\にコピーしてください。
  • xps_proj.mhsの修正
    sz410-********\xps_proj.mhsを開き、 下記のように変更してください。
    
    
    ・
    ・
    ・
    BEGIN ocm_temac_sz410
     PARAMETER INSTANCE = ocm_temac_cntlr
     #PARAMETER HW_VER = 1.00.a     <--  削除
     PARAMETER HW_VER = 1.10.a     <--  追加
    ・
    ・
    ・

FPGAプロジェクトのBBootソースコードを直接テキスト編集する


  • main.cの修正
    sz410-********\code\main.cを開き、 XPAR_OCM_TEMAC_SZ410_0_BASEADDRと記述している箇所をXPAR_OCM_TEMAC_CNTLR_BASEADDRに変更してください。(2箇所)
    
    #include 
    #include 
    #include "version.h"
    #include "memmap.h"
    #include "srec.h"
    #include "medium.h"
    #include "spi.h"
    #include "flash.h"
    #ifdef XPAR_OCM_TEMAC_SZ410_0_BASEADDR  <--  削除
    #ifdef XPAR_OCM_TEMAC_CNTLR_BASEADDR    <--  追加
    ・
    ・
    ・
    #if defined(__PPC__) || defined(__powerpc__)
            XCache_DisableDCache();
            XCache_DisableICache();
            XCache_InvalidateICache();
    #ifdef SPI_REGISTER_BASEADDR
        /* phy reset */
    #ifdef XPAR_OCM_TEMAC_SZ410_0_BASEADDR  <--  削除
    #ifdef XPAR_OCM_TEMAC_CNTLR_BASEADDR    <--  追加
            mtdcr(0x3f1, NRST_DISABLE);
            busy_wait(15000);    /* about 10msec */
            mtdcr(0x3f1, NRST_ENABLE);
            busy_wait(15000);    /* about 10msec */
            mtdcr(0x3f1, NRST_DISABLE);
    #else /* plb temac */
            LED_GPIO(LED_OFF|NRST_DISABLE);
            busy_wait(15000);    /* about 10msec */
            LED_GPIO(LED_OFF|NRST_ENABLE);
            busy_wait(15000);    /* about 10msec */
            LED_GPIO(LED_OFF|NRST_DISABLE);
    #endif
    ・
    ・
    ・
  • powerpc.hの修正
    sz410-********\code\powerpc.hを開き、 XPAR_OCM_TEMAC_SZ410_0_BASEADDRと記述している箇所をXPAR_OCM_TEMAC_CNTLR_BASEADDRに変更してください。(1箇所)
    
    #ifndef _POWERPC_H_
    #define _POWERPC_H_
    
    #include "memmap.h"
    
    #define BBOOTMENU_WAITTIME    (2500000)
    #ifdef XPAR_OCM_TEMAC_SZ410_0_BASEADDR  <--  削除
    #ifdef XPAR_OCM_TEMAC_CNTLR_BASEADDR    <--  追加
    #define NRST_ENABLE           (0)
    #define NRST_DISABLE          (0x40000000)
    #else /* plb temac */
    #define NRST_ENABLE           (0)
    
    
    #define NRST_DISABLE          (2)
    #endif
    
    static inline void jump_to_second_bootloader(void) __attribute__ ((noreturn));
    static inline void jump_to_second_bootloader(void)
    {
            ((void(*)(void))(BOOTLOADER_LOAD_ADDR))();
    }
    
    #endif /* !_POWERPC_H_ */

書き換え方法や、コンパイル済みデータについて


書き換え方法につきましては、SUZAKUスターターキットガイドFPGA開発編等をご参照ください。
対策、コンパイル済みのFPGAイメージが以下にございますので、ダウンロードしてお使いください。
カテゴリ: