2008/3/18本ホームページにて報告いたしました「SZ410 イーサーネット不具合修正方法」で誤りがありました。
お詫び申し上げるとともに訂正をさせていただきます。
あらためて下記の修正方法を適用いただきたくお願い申し上げます。
※本不具合は偶発的なもので、対象製品全数において再現するものではございません。
IPコア ocm_temacでRX FIFOの状態を監視しているフラグが、RX FIFOをリセットされた際に同時にリセットされていなかったため不具合となっていました。
20080327以降のFPGAプロジェクトは既に対策済みですので、以下よりダウンロードしてお使いください。
書き換え方法につきましては、SUZAKUスターターキットガイドFPGA開発編等をご参照ください。
対策、コンパイル済みのFPGAイメージが以下にございますので、ダウンロードしてお使いください。
お詫び申し上げるとともに訂正をさせていただきます。
対象
SZ410 FPGAプロジェクト(下記プロジェクトで生成したbitファイル、imageファイルも含みます)あらためて下記の修正方法を適用いただきたくお願い申し上げます。
- sz410-20080118
- sz410-20080215
- sz410-20080318
- sz410-add_slot-20080215
- sz410-add_slot-20080318
- 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イメージが以下にございますので、ダウンロードしてお使いください。