Chip123 科技應用創新平台

標題: 請問有人對Xilinx熟嗎 [打印本頁]

作者: chchtono    時間: 2009-5-30 09:23 PM
標題: 請問有人對Xilinx熟嗎
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握  g1 M) J/ L- h% _
其中對於燒錄Parallel flash and SPI flash燒錄不太能理解
# a# e" n6 C  C- H底下有幾個問題,請大家幫忙回覆囉!% J" l, }! }4 X( l! ]& ]. a
, i+ ]5 D8 c$ R1 q
1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能
" h: Z- C  c2 O8 Y2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:4 r. y' J1 ~1 S7 F
    Unable to successfully query target part layout using CFI!!
, m/ M/ h# D. f% p
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的?
& G* P0 Q3 }" U0 e# X: f3 k    P.S:目前使用Spasion 29GL256P FLASH.
- V4 y  N  l2 |- J( R$ t- I* E" W3. EDK and ISK tools的定位在哪?
作者: huanyu    時間: 2009-6-1 02:42 PM
1. 假如你是用MicroBlaze的話 你需要寫 first stage bootloader (FSB) (存放在MicroBlaze's  BRAM). FSB 再去讀取指定的bootloader (Parallel+SPI flash)
! e/ E- \3 Q. ~: v# J. V" Q& W+ V2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet. : U# g. m6 @7 }4 Y4 d
可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確8 @/ f; i- [: X* r( o0 {# M4 C
3.
" ?4 k( [4 X6 i: I* IEDK 是 system design8 g" L6 }) r9 r1 k  w1 A! _6 c
ISE 是 core design
作者: chchtono    時間: 2009-6-1 04:25 PM
再度請問:
- J# K4 V" j6 h& E
+ N4 g" y& }7 B: [: v: I1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢? " z5 M, S& t. Z8 b2 h% p
2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?
' c/ D, e  Y+ y; g1 Z  S
7 W$ _, W) {4 G( J2 n貼下system.mhs的EMC設定
: j4 P) n) I/ P* ~
: O: C; o- C8 f1 t% w, iBEGIN opb_emc( j4 c+ a9 S7 {# d
PARAMETER INSTANCE = FLASH_2Mx161 w6 Y1 ~  H5 @9 ^; P3 h- f7 J
PARAMETER HW_VER = 2.00.a
: `5 c& s/ F: S6 f# t' W. J' ` PARAMETER C_OPB_CLK_PERIOD_PS = 20000$ C- w+ B. B9 @( J$ Q+ i
PARAMETER C_NUM_BANKS_MEM = 1
% t  o3 L- \" r, u) H PARAMETER C_MAX_MEM_WIDTH = 16& W0 v" t( ?4 G5 W9 o
PARAMETER C_MEM0_WIDTH = 16
1 v! n. {* P7 Q6 y PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 15 K6 ?/ F  W$ [* d! B  G; n5 ^% F
PARAMETER C_SYNCH_MEM_0 = 0
# l/ _! Y* K8 Y" ?/ b PARAMETER C_TCEDV_PS_MEM_0 = 70000/ q' [( T- V9 t: n
PARAMETER C_TAVDV_PS_MEM_0 = 70000
# u8 t* X, A) D$ \. x# a PARAMETER C_TWC_PS_MEM_0 = 70000$ I- ]! O9 Z- M' Y$ F6 e
PARAMETER C_TWP_PS_MEM_0 = 45000
% B- V& D) `- A: Z2 X: S PARAMETER C_THZCE_PS_MEM_0 = 25000
$ O& m3 O/ ?0 S0 W! K8 `) T PARAMETER C_THZOE_PS_MEM_0 = 25000
/ D; e% C( J  E8 L PARAMETER C_TLZWE_PS_MEM_0 = 5000
: M& z1 _  N# ~) p PARAMETER C_MEM0_BASEADDR = 0x42000000
1 ^% ?( S7 L4 d4 d  `1 d PARAMETER C_MEM0_HIGHADDR = 0x43ffffff
# Z( W9 h3 p+ T: R) E7 A0 S BUS_INTERFACE SOPB = mb_opb
9 a& L) p. D( K3 z PORT OPB_Clk = sys_clk_s
6 O8 s: P0 A+ l$ N% K" g" g/ y( k PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?
' r" s; {) `& e; p# d: B PORT Mem_DQ = FLASH_Mem_DQ
: ~+ C( W$ ?% P* i6 v PORT Mem_OEN = FLASH_Mem_OEN
# i* x% u- H0 J& I PORT Mem_WEN = FLASH_Mem_WEN
3 l4 l) Z6 }5 i  {4 Z; u3 C# ` PORT Mem_CEN = FLASH_Mem_CEN# r; a9 w. ?( v7 d4 P
END
* M6 d: M* u4 T: D2 U/ b
0 W8 j0 E5 c  S以上這樣設定對嗎?
" S$ L$ ?' a% C/ Q: l. e/ t1 e* L0 B5 t( r4 C  s4 S
[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
作者: huanyu    時間: 2009-6-3 03:14 PM
XBD=Xilinx Board Definition
% P% A: x( F/ F2 E5 @- F7 i假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題) H- w, k; X% _2 {
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...* l/ H/ J6 ]% x+ p9 i' C9 E
7 h9 _# Y' z/ M
你現在是用opb bus
5 m6 w% B% X' m新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
- o: t! K8 C7 Q% J
) ^6 N7 I6 N, ]% i4 d2.# @" c7 B) U  m* ^
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了
! N) T. V& v8 q2 T3 z你可以用flashwriter的debug mode# h- r9 c; s* T" f# k5 \$ V2 X
改\EDK\data\xmd\flashwriter\src的defs.h
% |* O) w' K, N+ }  g- Q在#ifdef DEBUG 之前一行加#define DEBUG
- T$ g6 D( C7 w9 n
9 n( c+ W8 y4 C+ V9 x. ixmd:: c& @: E' w+ H# F3 b
CFI query 基本上也是寫一個簡單C program 去讀寫flash. X. L3 ?- {/ s, T7 ^4 u. ~  Q
或是5 J  j, e! V! p0 ^" m
讀: mrd ${address} ${size}
5 F# \; _) z5 i9 i! U5 p$ [寫: mwr ${address} ${value}, j, h) r# W3 `* F' K: e1 `

- w5 D" ?5 F$ Q% O  v2 o& w8 u[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
作者: chchtono    時間: 2009-6-3 09:12 PM
XBD=Xilinx Board Definition
; S& d% c3 q7 Y3 l! c. Y假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題& Z0 b. E/ g# \" f; ?9 R
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...& u7 m( @0 @! U4 _: o

, e8 y  n3 z/ b/ s' O你現在是用opb bus
1 J$ t9 q: k! f* Q% |, q* Z5 F# t新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定

7 K( o" A* G/ W( a, z0 L' l3 E9 Z5 K8 s
我使用的是自己設計的板子,開發版本為EDK 10.1.3
/ V8 R0 M# w+ q* D想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?
4 C) z$ L: q; i" {6 O有資料可以參考嗎?
( b9 G8 j7 Z9 D4 y3 I  G" q
$ d! `. {! k: r9 y# N3 e1 @0 ~
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了3 j7 L3 g) P8 M6 l! F
你可以用flashwriter的debug mode
8 c" ~9 K7 y6 ?0 o改\EDK\data\xmd\flashwriter\src的defs.h
) d& c7 c* K% r% j在#ifdef DEBUG 之前一行加#define DEBUG' \0 I$ x9 {1 R# s' H
) S( n7 Q  ]  _1 Y0 n* g: n/ k- n
xmd:4 k1 C, i5 `  |" ~# d/ q. N
CFI query 基本上也是寫一個簡單C program 去讀寫flash
) @' w1 G  F; a/ k) M, C或是, K/ ^& `- L3 N$ V* J
讀: mrd ${address} ${size}
+ U( A$ z  [, X( u7 r2 H5 s7 R寫: mwr ${address} ${value}

0 j% {( a3 a0 h1 J. u
+ M, k1 x' X1 k3 v& R* M4 ~1.我有修改過
7 o! M& j, I1 Q- T\EDK\data\xmd\flashwriter\src的defs.h( a% y2 m2 _4 f! z5 t
在#ifdef DEBUG 之前一行加#define DEBUG& V. u8 x0 S, Y& p
不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)9 q) P! q7 q- G8 F5 N6 g0 `& ^" V
; @* n4 a9 }7 r' }
2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?
/ d! D( }; u; \& \7 }我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用8 S( i, \9 i* V- F/ s
因為flashwriter.tcl好像是直接執行.elf檔案?
4 q0 `( l1 f0 K' P9 q# b% Y" l7 s. {3 Q5 ~. N
3. mrd and mwr具體下指令是這樣嗎?" t4 a% x& D; r% ?+ b
mrd $0x8c000000 $0x80
4 L* d, z1 ]4 |+ |. ~1 E7 ?mwr $0x8c000000 $0x80
作者: chchtono    時間: 2009-6-3 11:21 PM
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?
# v. N0 \& m4 G還有compiler這支程式可以套用進去支援新flash?7 C" y+ G1 x1 f
感恩感恩..
作者: chchtono    時間: 2009-6-4 11:05 AM
在defs.h設定#define debug之後,compiler產生如下訊息:
1 V1 N. H7 q2 w* k+ SERROR: Unable to compile flashwriter application. Please check the following:, l" L3 }% o* P5 l
1. Make sure the processor's libraries have been generated./ s* {' r$ F1 |; m& s( a" I
2. Make sure that you are using the Standalone BSP as the software platform for your processor.
+ s+ K+ E4 e: h0 P. a7 ]3 g2 ?2 s3. Make sure that XILINX_EDK has been set correctly and that all the EDK GNU tools available."
作者: huanyu    時間: 2009-6-5 12:16 PM
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的- K1 M" F9 G; q7 S$ F9 C$ [2 ^

* c# H0 F7 ~1 S  Vgoogle plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge
9 s& T# c: R' o( {7 N$ J, P( Q請看datasheet 先9 j7 T+ G! p5 A/ q8 E
* }- r$ Y$ R& a% Q. U) w
"在#ifdef DEBUG 之前一行加#define DEBUG"% ]0 k' o8 e; a+ U9 o
假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大 4 X' I0 G" M* e7 I& C
你可能要自行摸索. 我是沒有遇過這些問題1 x4 i- y* Q& K& I+ z1 f
  C# f* p7 }4 A$ L( t: }
TCL 只是一個script 去產生&執行 elf
* l* g# }1 H+ K& G) {; d
$ {' s0 Z0 O( vmrd 0x8c000000 8 W5 _& Y2 J4 R. [
${size} 可有可無. p* P6 }/ ?+ H9 M
mwr 0x8c000000 1234; I/ n% i7 U# P5 j3 ~& o7 q( @
你在XMD下 跑了他應該會告訴你正確的使用方式
( }' \8 s5 [! w+ P- q4 f4 D1 D/ R6 b/ j0 m4 B! f, C* U) s
我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先
0 d4 T6 h, ^! A4 ]! Q0 Y, ]1 Etry to isolate the problem first
作者: chchtono    時間: 2009-6-5 02:46 PM
原帖由 huanyu 於 2009-6-5 12:16 PM 發表 0 B( O" i& V9 _6 L  }3 k
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的

* C. p- W2 m9 b/ ?5 X; t& V, z+ ~1 T, U2 O& e4 Z/ i5 n
這個已經確認是對的囉!因為可以使用其他FLASH了!
! c6 A* m' _9 f6 J4 R/ B: J  y+ P不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!8 k1 l- ~5 ]- G- }+ D4 A
(Unable to successfully query target part layout using CFI!)7 t3 [$ U: M! Q. ]
現在要如何確認..8 N7 g! `+ A4 A! H
1. mwr and mrd的內容是對的?
. F, L8 k- I, m7 h5 Y* }2 j2. flashwriter該怎麼改?+ q; c' h& J7 j( k
% K( B, I8 Z4 ~9 H5 T8 {6 @
[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
作者: huanyu    時間: 2009-6-5 05:31 PM
不同的flash設定也不一樣說 (就算實際的腳位一樣)." ^& y8 i8 _! q( u# s, _& U
0 f  |1 n) S# `% G4 v. Y
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
' v4 C8 J1 Y7 o: H你試了之後再說你哪有問題& C  Y5 S: |! V, d2 y9 x: P

5 W. U" T2 I) Hflashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改/ n  X/ ]1 `; Q4 D5 A! Z
要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
作者: chchtono    時間: 2009-6-6 11:44 PM
原帖由 huanyu 於 2009-6-5 05:31 PM 發表 : ?1 @# {# J9 E& w3 k" d. D
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
5 c9 ]# \9 z0 k你試了之後再說你哪有問題

: F* I0 q% Q2 @  t2 B5 M
. Y7 K; u: P2 P測試結果:$ F8 x& Z# ?$ b& R" b; H0 B5 q1 r! e
1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行1 v7 m7 F$ x" Y+ W8 D, G' P  f) F
mrd -> 可以讀到數值
5 T7 m' A( N0 |mwr -> 測試改值,mrd讀回沒變?
7 i$ O+ z* ]1 K) z2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作
' S7 D* J; o, A* p$ t% mmrd -> 讀到00 or FF9 K- [4 D/ P! H1 y+ ?$ b
mwr -> 測試改值,mrd讀回沒變
作者: huanyu    時間: 2009-6-12 12:42 PM
1,  你可能EMC部分參數沒設好2 Q9 Q1 _: `9 O+ P& D7 X' m
你多是幾個不同的address( within emc memory address) 試試看 ; M& l- P) b0 X0 O+ d
, |4 ^4 x. B0 y0 W/ u/ V
2.mrd 讀到 00 or FF 代表無法讀取那個address5 |& j, Z4 Y+ }6 B/ t6 V
所以應該是你設定有問題. " E- u6 m; }  D  n/ a. {5 _7 p
$ I3 h6 t2 ~  K: S2 N, n$ {) [, Z
你可能要讀MX flash的datasheet 看是不是參數設錯
作者: chchtono    時間: 2009-6-18 11:56 AM
嗯!經由測量FLASH腳位確認之後,發現是硬體問題% @9 c, L0 z# V! s
目前已經解決此問題囉!
# I( i7 J( M" T( `定義上是沒有問題的,謝謝大家關注




歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/) Powered by Discuz! X3.2