親愛なる友人たち、
私はT2080 + VxWorksブートローダー + NORブートフラッシュ(tACC=120ns、tOE=35ns)を使用しています。
電源を入れると、断続的にブートローダーまでしか起動せず(vxworksカーネルをロードできない)、起動が停止します。
T2080 CPUのIFC_FTIM1には、97nsのTRAD_NORを使用しています。これはNORフラッシュのtOE(35ns)を完全に満たしていると思います。
1. tACC(120ns)を満たすためにTRAD_NORを変更する必要がありますか?
2. T2080(ifc_clk=11.5ns)からNORブート(tACC=120ns、tOE=35ns)にアクセスする場合、よく設定されるIFC_FTIM0~3の値と、既知の注意事項を教えていただけますか?
ご回答ありがとうございます。
tOEおよびtACCのNORフラッシュのタイミングシーケンス図、または対応するNORデータシートをご提供いただけますでしょうか。
可能であれば、これらのパラメータが指定されているページ番号も併せてご提示ください。
よろしくお願いします。
ご返信よろしくお願いします。
私はCypress社のS29GL01GTを使用しています。
tACC=120ns(最大)、tOE=35ns(最大)、tCE=120ns(最大)。
ジューン・ルーさん、ありがとう。
TACOは11サイクルを使用しており、CSの前のアドレスが安定していることを確認しました。
データシートに記載されている要件は満たしているように見えるが、断続的な起動エラーが依然として発生している。
ChatGPTのようなAOツールに問い合わせると、TRADはtACC+遅延(温度などの影響を受ける)を満たす必要があると示唆されます。これについてどう思いますか?
それと、u-bootなど、T2080で一般的に使用されているブートローダーの設定を教えていただけますか?
(IFC_FTIM0/1の設定とブートフラッシュモデル)
よろしくお願いします。
IFCモジュールの入力クロックをご確認いただけますでしょうか?
T2080リファレンスマニュアル(図4-3)によると、それはip_clkであり、プラットフォームクロックの1/2です。
プラットフォームクロックの有効範囲はデータシート(表121)に記載されており、構成によって異なります。
IFC_CLKとip_clkが同じかどうか確認していただけますか?
S29GL01GSを使用してT1023RDBプラットフォームを確認しました(ただし、これはNO-ADMです)。S29GL01GTと非常によく似ており、そのタイミング構成を初期参照として使用できます。
このプラットフォームでは、プラットフォームクロックは400MHzに設定されています。
https://github.com/nxp-qoriq/u-boot/blob/LSDK-1703/include/configs/T102xRDB.h#L328
追加の遅延(例えば、温度の影響を受ける遅延)については、QorIQ T2080のデータシートの図20および図21を参照してください。これらの図には、最大出力遅延が2.5 ns、最小出力ホールド時間が-2 nsであることが示されています。
tACOとtRAdが設定されている場合、実際のCE_BとOE_Bのタイミングは、プログラムされた値よりも少なくとも0.5ナノ秒長くなります。温度やレイアウトによる変動を考慮しても、3 × 11.5 ns = 34.5 ns は、要求される 23 ns と比較しても十分な余裕がある。
T2080リファレンスマニュアルのセクション13.4.2も参照してください。(フラッシュインターフェースタイミングのプログラミングモデル)は、IFCモジュールの入力クロックサイクルを1つ追加することで、マージンをさらに拡大することを可能にします。
いずれにしても、タイミングが要件を満たしていることを確認するために、オシロスコープを使用して波形を検証することをお勧めします。
波形とIFCレジスタの設定をさらに詳しく確認することもできます。
ジューン・ルーさん、ありがとう。
私は以下のように時計を使用しています。
プラットフォームクロック:533.33MHz
- ip_clk : 266.66MHz (IFCモジュール入力クロック)
- IFC_CLK:88.88MHz(IFC外部クロック)
ご提供いただいた参照データ(T102xRDB.h)を見ると、TRADは0x1Aに設定されています。プラットフォームクロックは400MHz、ip_clkは200MHzなので、TRAD = 5ns * 26(0x1A) = 130nsと推定されます。
つまり、TRADはFlashのtOE(35ns)ではなくtACC(120ns)を満たすように設計されているようだ。
親愛なるジュン・ルー様、
データシートを再度確認しましたが、同じ内容でした。
TACCとTOEの定義を確認してください。
手持ちのS29GL01GTのデータシートを確認しました。それによると、TACCはアドレスから出力までの遅延、tCEはチップイネーブルから出力までの遅延、tOEは出力イネーブルから出力までの遅延である。これらの定義は、データシートに記載されているものと同じですか?
図17は、下に示した図と同じものですか?
T2080 RM 式 TRAD_NORは、TOEmaxに2×ボード遅延とセットアップ時間を加えた値を明示的に使用します。これはtOEに関連しています。tACC/tCEは、 TRAD_NOR単独ではなく、 tACO + tRADという複合パスと比較してチェックする必要があります。
T102xRDB.hのパラメータは、ボードにアクセスするための十分な余裕を残しています。すべての設定を試して問題が解決するかどうかを確認し、解決できた場合は、リファレンスマニュアルとデータシートに従ってパラメータを調整してください。
さらにご質問がある場合は、波形とすべてのIFCレジスタ設定を共有してください。
親愛なるジュン・ルー様、
u-bootコードでTRADを130ns(tACCより大きい値)に設定する理由がまだ気になっていますが、あなたの回答はとても参考になりました。
ご協力ありがとうございます。
十分なマージンを確保するため、TRADを130 nsに設定することをお勧めします。ただし、97ナノ秒などのより小さな値を試してみることもできます。この値でも問題なく動作するはずです。
結果が出ましたら、随時お知らせください。
ありがとうございます。