Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 6627|回復: 12
打印 上一主題 下一主題

[問題求助] 請問有人對Xilinx熟嗎

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-30 21:23:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握1 ^% d2 j& X" f# {0 j; n6 `0 z7 p$ b
其中對於燒錄Parallel flash and SPI flash燒錄不太能理解; ]0 S2 @' z& d; a
底下有幾個問題,請大家幫忙回覆囉!
; L! s) U) L5 t# ?5 [0 k2 [9 }1 k
1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能8 _# V% ^, G9 R& N2 \2 C9 z' D7 X
2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:
! \$ o! p- F+ I* ]    Unable to successfully query target part layout using CFI!!5 a. H" ^. C7 S, [5 d- |
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的?
! [' I& T! u( i/ G: Z- H    P.S:目前使用Spasion 29GL256P FLASH.
$ m% E4 j6 i1 X. c# h, z3. EDK and ISK tools的定位在哪?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2009-6-1 14:42:03 | 只看該作者
1. 假如你是用MicroBlaze的話 你需要寫 first stage bootloader (FSB) (存放在MicroBlaze's  BRAM). FSB 再去讀取指定的bootloader (Parallel+SPI flash)6 K! c0 ^) s$ W! l  K" [' _
2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet. 8 S; P/ s# N/ R1 a  M
可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確
6 |' E4 Y2 x7 \0 l: [% [3. 0 f& L3 G5 y; r) Y- Z0 _5 O, J
EDK 是 system design+ b# f: ?- A1 O; b3 w1 s( V8 b5 R
ISE 是 core design
3#
 樓主| 發表於 2009-6-1 16:25:43 | 只看該作者
再度請問:6 {6 g/ h3 V( R$ U- E

+ p9 e: R7 S3 q( o- W; O; ~1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢? % Q: x$ D3 Q' K0 Z  p$ m
2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?; x6 }0 N% `( ^+ s' b4 f
9 q+ |$ X4 j# x( w, \
貼下system.mhs的EMC設定: ~  M/ Q  ]7 Y/ w0 e$ n
: L6 ?9 C4 ?- ^" o3 S" A! v
BEGIN opb_emc, K  k" a3 J* S/ m% H+ g" ?
PARAMETER INSTANCE = FLASH_2Mx16
+ m9 l# _5 k2 f% P) R PARAMETER HW_VER = 2.00.a$ i$ j8 p" ]# M7 |; z
PARAMETER C_OPB_CLK_PERIOD_PS = 200006 O: o' }8 ~1 P1 p, p9 D4 C
PARAMETER C_NUM_BANKS_MEM = 17 I0 k0 n  @) q
PARAMETER C_MAX_MEM_WIDTH = 16% l7 X: k; H, k: d" C% G3 ]( H
PARAMETER C_MEM0_WIDTH = 16) J/ k; l# X1 M$ E) h1 V
PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1
# O9 |3 ^1 V. T* n9 q0 Q5 \ PARAMETER C_SYNCH_MEM_0 = 07 m; [" l. L" A
PARAMETER C_TCEDV_PS_MEM_0 = 70000
* u5 d! V& M9 y PARAMETER C_TAVDV_PS_MEM_0 = 70000+ H1 z( t* z# I( w' `8 A( p0 \
PARAMETER C_TWC_PS_MEM_0 = 70000
5 e  v8 N2 s& t! w5 |9 g  M4 H- { PARAMETER C_TWP_PS_MEM_0 = 45000
0 L( w, m' ~  h) E9 |8 g7 U PARAMETER C_THZCE_PS_MEM_0 = 25000* t3 h7 h2 J5 D; X2 P* \
PARAMETER C_THZOE_PS_MEM_0 = 25000( R2 o  B: K8 `9 Z
PARAMETER C_TLZWE_PS_MEM_0 = 5000
; K  {# g0 }: S& ^! d/ W PARAMETER C_MEM0_BASEADDR = 0x42000000
5 S0 g2 @1 [! t3 G% k2 A PARAMETER C_MEM0_HIGHADDR = 0x43ffffff! m8 s9 J) E, _) D/ {2 Q
BUS_INTERFACE SOPB = mb_opb5 ?. u. w- V0 w, z0 P! D" K# `: g
PORT OPB_Clk = sys_clk_s
1 \* x& e3 G3 y PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?7 B' w1 A' O8 H7 G; Y% w
PORT Mem_DQ = FLASH_Mem_DQ
+ n0 Q* h6 L: u. V7 k PORT Mem_OEN = FLASH_Mem_OEN
9 Q) {2 M5 h% i( P  d& o PORT Mem_WEN = FLASH_Mem_WEN/ z+ x2 y: t0 Q2 b9 ?
PORT Mem_CEN = FLASH_Mem_CEN
% A: f, X: O0 m% r7 XEND
3 a5 d- w8 j  K* y( O: ^: `" |
9 Y0 r# Z5 g- A: [* |以上這樣設定對嗎?. }  N; m8 [/ o$ u, q
% }6 V0 m& Y$ Q8 `1 |
[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
4#
發表於 2009-6-3 15:14:15 | 只看該作者
XBD=Xilinx Board Definition
# ?3 a5 p* X5 \6 D8 c假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題+ P. r9 T% j/ j- w8 ]" Q9 I
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...4 a# B8 I* _+ I7 Q: j( e

. ^: ~% q8 k; a你現在是用opb bus
  ], e7 D' k; r; p2 V* Y; M) E) R新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定9 f( _+ c6 W5 S" C# Y
+ |; @% g& N+ p. |# P5 v
2.
/ I& ^7 T4 B3 @1 T/ I也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了+ d8 i( e2 R) P. o6 z; a
你可以用flashwriter的debug mode
! T0 Y/ A/ C0 R9 L; [% P改\EDK\data\xmd\flashwriter\src的defs.h 9 v! X4 X# Y5 {: I% W6 R! G
在#ifdef DEBUG 之前一行加#define DEBUG
) L: m1 v1 x% A/ ]* ?; C1 U: N0 M
xmd:
" N. x+ {( U9 x/ ^+ z2 u; v- L4 MCFI query 基本上也是寫一個簡單C program 去讀寫flash# q6 r9 v$ H) E; i6 w4 l; e
或是. S! N  y) V) p; u9 E
讀: mrd ${address} ${size}
; L0 y' G# P; X: r寫: mwr ${address} ${value}
! t3 g- G' _9 `5 G' t
! [. c9 H* \1 C$ |. ~+ U[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
5#
 樓主| 發表於 2009-6-3 21:12:49 | 只看該作者
XBD=Xilinx Board Definition/ n! i8 q- R* o' P& {6 ~
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題/ ^6 \- v. h8 p% J
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...! U; x0 W6 D, L, R- A

0 q  `; p$ s  a8 T/ D* Q; R# T你現在是用opb bus% i8 u* Y. D. L# _
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
3 u5 \0 C( l! {3 r' ~3 Q

4 f! j! p9 _" N我使用的是自己設計的板子,開發版本為EDK 10.1.3; J0 i; x2 c# W8 v) h* o
想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?
: |1 s- J: M5 m0 D/ k- |# w4 Y! ?3 h4 `有資料可以參考嗎?! m. f+ w" X3 o% R
" [5 }! G0 f; S& C
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了1 h; W: q" v7 _( a& O. u# g9 E% p
你可以用flashwriter的debug mode" L5 k; `* c8 ?# V; S
改\EDK\data\xmd\flashwriter\src的defs.h$ m. ~4 Y; O8 u: ?  |8 Z
在#ifdef DEBUG 之前一行加#define DEBUG' ~2 O7 v3 x' Z( V% }

6 _: y2 \+ [+ O) r7 Q1 {5 F- ^. dxmd:( h; ^+ @. C1 J9 Q, Z. P4 G5 R
CFI query 基本上也是寫一個簡單C program 去讀寫flash1 ~, t9 E$ @" h9 J
或是
4 H  N0 S; C" u/ U1 u讀: mrd ${address} ${size}
& X+ B2 W8 |* B$ c- e寫: mwr ${address} ${value}

$ o, V; o0 ]5 ^- q- z
7 ]% i9 t) I' \1.我有修改過
7 t3 i! w2 i* Q, Q/ Y( ^% L\EDK\data\xmd\flashwriter\src的defs.h& ^/ |) X5 c1 |3 P* y
在#ifdef DEBUG 之前一行加#define DEBUG
1 f- b/ m1 e! C7 o' X" P# E不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)3 \  T( |& i  ?' _; F: V6 q7 q5 u  I' G
, C3 i2 J4 L+ }+ w
2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?
% i6 B& }0 W9 \. y5 p. E9 L; D我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用# S* B$ i/ o5 _+ t2 W5 C8 A/ j2 t
因為flashwriter.tcl好像是直接執行.elf檔案?% E! @; R9 t" @& g1 D# j5 i
* K/ Y1 {' B- a7 W+ X" f# g! }1 P7 B& J
3. mrd and mwr具體下指令是這樣嗎?
- n+ o2 ?' @7 y2 K3 Omrd $0x8c000000 $0x80! H; }5 f# I( t) k$ {- d1 @
mwr $0x8c000000 $0x80
6#
 樓主| 發表於 2009-6-3 23:21:57 | 只看該作者
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?# |4 H; K0 S. H& d3 F! \9 w
還有compiler這支程式可以套用進去支援新flash?
% p* x) S6 Y5 O) ?4 I感恩感恩..
7#
 樓主| 發表於 2009-6-4 11:05:34 | 只看該作者
在defs.h設定#define debug之後,compiler產生如下訊息:+ h2 _" k7 d) y8 P
ERROR: Unable to compile flashwriter application. Please check the following:
& N/ G* Q6 B8 a1. Make sure the processor's libraries have been generated.
- p0 z' J( p' Q) D" p$ j2. Make sure that you are using the Standalone BSP as the software platform for your processor.2 Z- U4 q. F2 ~/ q
3. Make sure that XILINX_EDK has been set correctly and that all the EDK GNU tools available."
8#
發表於 2009-6-5 12:16:21 | 只看該作者
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的
: V; k# v" Z) W5 ]" \% f  k
& t; ]4 M  \7 _" o$ c% [google plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge) Q3 M2 E) F% V
請看datasheet 先
$ U2 Y# q" u2 {/ s2 n. Z) ~( ^& M8 u, p& K% I$ T
"在#ifdef DEBUG 之前一行加#define DEBUG"
2 G) `# b/ M7 T0 i. K' D8 ]假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大
' M9 b# Y# k7 C: O: k你可能要自行摸索. 我是沒有遇過這些問題
3 q5 M( ?1 o5 }0 t* z( Y  q2 N3 W: U9 C; Y! Q! i- l
TCL 只是一個script 去產生&執行 elf
% q% X/ t% R3 y5 R- Y+ L$ N' l! _% Y- x9 Y) X2 F* T& f: J
mrd 0x8c000000 ; t" o% I, H6 d
${size} 可有可無
- d5 c! O! E$ b. Smwr 0x8c000000 1234* S9 j' X# g* n6 y
你在XMD下 跑了他應該會告訴你正確的使用方式
0 D7 ~' |, `" t- L0 }: t. ~
; t6 \+ ]2 x& E4 ?; j我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先
4 |( C( n+ v" {* ?6 O) D5 X: c/ j0 {8 ptry to isolate the problem first
9#
 樓主| 發表於 2009-6-5 14:46:34 | 只看該作者
原帖由 huanyu 於 2009-6-5 12:16 PM 發表 8 Q! [5 U( Q! K4 r5 z& w2 w
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的

$ E% J/ \, y) M1 V1 `+ R) G; P4 D: ]/ m* n+ i- I4 p
這個已經確認是對的囉!因為可以使用其他FLASH了!
4 o& s8 J4 `2 F. {: Z不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!' h+ E* g4 g& }2 O2 Y! A7 C; ?
(Unable to successfully query target part layout using CFI!)
$ R$ c6 J% M* T6 X/ A4 P現在要如何確認..
( F3 v: x+ t" o' I7 h  q1. mwr and mrd的內容是對的?
2 |! k# c8 B; D3 U; R: F: k2. flashwriter該怎麼改?9 b8 d9 b1 T9 z# n9 h5 b. Z0 U
% [5 G9 {! L/ C! K
[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
10#
發表於 2009-6-5 17:31:50 | 只看該作者
不同的flash設定也不一樣說 (就算實際的腳位一樣)." L$ f$ w' q" f! a9 x) ~% x
/ V' k# f2 N. Y/ f" J& w
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
3 y; v9 J. A: t# [, V, }- ^0 V你試了之後再說你哪有問題8 {, O# p$ O. O0 G
  n6 C) s$ C+ {. }
flashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改  j; W8 _& Y7 m1 Q
要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
11#
 樓主| 發表於 2009-6-6 23:44:14 | 只看該作者
原帖由 huanyu 於 2009-6-5 05:31 PM 發表
$ g+ l+ ?3 e' `4 L1 fmwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
6 r/ R, J  p# D/ _: J& C4 R; v你試了之後再說你哪有問題

! h- d# {' `- C7 R4 I5 K* j6 ?6 e! e5 W* o$ o& b  T& H
測試結果:5 R% U6 ~5 G0 \0 F! ?1 l' J
1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行) W6 W& P! M* p" Y# d+ E
mrd -> 可以讀到數值. ]1 p1 Y7 `* |- {9 @; b5 u* c' @
mwr -> 測試改值,mrd讀回沒變?
# l* Y* q: h" D$ v2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作
: G8 Y  c; m" d* B, n, n( Nmrd -> 讀到00 or FF- C4 E( y3 N2 O* ^' B& d
mwr -> 測試改值,mrd讀回沒變
12#
發表於 2009-6-12 12:42:03 | 只看該作者
1,  你可能EMC部分參數沒設好
0 p3 W# p9 k# C& X6 Y; t7 H你多是幾個不同的address( within emc memory address) 試試看
: J# {) K9 D# ~! V& U2 {# u, {! V: y7 s0 i7 t* I
2.mrd 讀到 00 or FF 代表無法讀取那個address
; Z0 J, X& _, C8 ~! h所以應該是你設定有問題. ; [+ E9 T* f, b
, W% F3 Z7 [2 m
你可能要讀MX flash的datasheet 看是不是參數設錯
13#
 樓主| 發表於 2009-6-18 11:56:20 | 只看該作者
嗯!經由測量FLASH腳位確認之後,發現是硬體問題
/ [* i8 ^* y* K目前已經解決此問題囉!
! ^& t5 W% A! R( E9 M( Q( R定義上是沒有問題的,謝謝大家關注
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-11-16 05:18 AM , Processed in 0.166010 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表