Chip123 科技應用創新平台

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

作者: chchtono    時間: 2009-5-30 09:23 PM
標題: 請問有人對Xilinx熟嗎
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握* m! L+ o6 g/ _
其中對於燒錄Parallel flash and SPI flash燒錄不太能理解
# Q5 r! C% C# c8 ~9 G0 N: w* a底下有幾個問題,請大家幫忙回覆囉!6 x' g6 h! R4 t+ t5 |8 N2 s- a& f

+ a( `, P% j( e4 H2 a4 P* D1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能0 L& R& D+ @. j" x$ }; V" U
2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:# N- {: d: l( ^) b5 T
    Unable to successfully query target part layout using CFI!!
" B; }. B' F: L2 C: d/ u
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的?
2 i' C: n% V! R: U; C    P.S:目前使用Spasion 29GL256P FLASH.
6 Y- p( q, t- Z( b" M' D3. 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)3 y' D. ~! \2 |+ D- e& |
2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet. : j- X0 f. E4 U% U  E. x9 I5 s# t( o7 o
可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確
0 P9 a) R2 \4 V1 `" J3.
& W$ i, i  m% nEDK 是 system design# P/ a! M9 X) O; u
ISE 是 core design
作者: chchtono    時間: 2009-6-1 04:25 PM
再度請問:& H# N: V: H- ^" w

$ F' I2 A2 e  |; c4 i1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢?
- s8 l1 I6 p5 o5 e$ \" A2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?$ N! P: {4 e( w' X6 K! B
  l0 k7 p' {* ?& [
貼下system.mhs的EMC設定
7 a" S; [4 I! U% @- M' _2 K( c6 U6 Q4 D& |
BEGIN opb_emc
! r# }' Q# _  E% f/ |" g PARAMETER INSTANCE = FLASH_2Mx16
, O* T$ m1 i6 G7 F0 r( B8 S- ^ PARAMETER HW_VER = 2.00.a* ^; y% k, R" y8 M% ~; u! ~
PARAMETER C_OPB_CLK_PERIOD_PS = 20000( Q5 g) a$ z& |$ c* `6 u8 ~. Y
PARAMETER C_NUM_BANKS_MEM = 1. P- D' \5 Z7 v5 C+ ~( ]
PARAMETER C_MAX_MEM_WIDTH = 16& V( ]- p; }$ e( Z6 j  [
PARAMETER C_MEM0_WIDTH = 16
& U4 R" U0 d  \ PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1
( Q0 [& Z6 _* V: |' c PARAMETER C_SYNCH_MEM_0 = 0
0 m9 \) x+ K: r+ N( S0 ?; T PARAMETER C_TCEDV_PS_MEM_0 = 70000
! e4 W: N; L# C: i1 W PARAMETER C_TAVDV_PS_MEM_0 = 700002 N+ b1 E$ d7 r
PARAMETER C_TWC_PS_MEM_0 = 70000& p# i5 N' F  ]  q
PARAMETER C_TWP_PS_MEM_0 = 45000- M" y  K9 I1 `: C) `4 W, ^/ a
PARAMETER C_THZCE_PS_MEM_0 = 250005 d  c0 ^6 Q7 `8 `+ s/ S# s
PARAMETER C_THZOE_PS_MEM_0 = 25000( O# y) _' E9 I" y$ W
PARAMETER C_TLZWE_PS_MEM_0 = 5000( D8 u* Q' T! I3 ]+ O& n# I0 E
PARAMETER C_MEM0_BASEADDR = 0x420000000 K! c  k$ C+ o: k3 ~. |
PARAMETER C_MEM0_HIGHADDR = 0x43ffffff
, X7 o' g' ?& W4 L BUS_INTERFACE SOPB = mb_opb
. O7 f. k9 W6 J2 s8 J3 b1 V PORT OPB_Clk = sys_clk_s# D- h2 o! e. c/ H# v$ h5 E
PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?1 n, b+ r9 i4 x% [9 g
PORT Mem_DQ = FLASH_Mem_DQ
) v" y; l4 P6 p- V7 }1 A6 m+ i: C PORT Mem_OEN = FLASH_Mem_OEN' n, i9 X5 N. E9 P; O
PORT Mem_WEN = FLASH_Mem_WEN. z. k0 Q; ]! C2 T% R$ w; }
PORT Mem_CEN = FLASH_Mem_CEN# X- B0 _3 l0 Z
END$ T1 n* @* F( U) `: V6 K
" K. ^; V8 P& l; s
以上這樣設定對嗎?
$ ?, D: h. w& ]$ q6 x- D; k& Z$ j* `# E+ T3 ^% j( Z$ T$ t
[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
作者: huanyu    時間: 2009-6-3 03:14 PM
XBD=Xilinx Board Definition
* o. `; `( z2 ?8 {. g' n' o假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題! {5 t2 x8 i5 [
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
, m* I8 R6 |* P2 \
4 e! Q; \0 d, P你現在是用opb bus$ b9 [! v% B7 X! J& c
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定4 Z, J2 S  W. t* K$ @/ N7 ?4 s

6 D/ A6 A, _8 B7 R: o: l2 n2.
+ w/ [  r; j3 D也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了
' c) j+ v# N  b7 b9 a( y" F你可以用flashwriter的debug mode
2 k3 v6 g' n  a- k改\EDK\data\xmd\flashwriter\src的defs.h
: C- @) C) I. {" U; o在#ifdef DEBUG 之前一行加#define DEBUG
/ t3 a+ t4 _; {& M
! _5 W1 w1 L) a+ ?xmd:3 p# r& ^  f+ k. q9 v. O
CFI query 基本上也是寫一個簡單C program 去讀寫flash
" w, p7 @$ X1 {5 x6 N或是# x2 _0 `$ f- f4 W
讀: mrd ${address} ${size}5 ^5 y7 w9 A" D
寫: mwr ${address} ${value}
0 a  r% ?. e1 ]
/ k3 [  K+ a4 m5 {" d& V2 }[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
作者: chchtono    時間: 2009-6-3 09:12 PM
XBD=Xilinx Board Definition
1 b+ y+ P; ?3 n9 L, Q; t假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題
0 M. l# o- Q& n* @7 l7 k4 E你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...+ x" a# Q* U% D1 T
1 x9 g7 G, c9 t5 Q- a
你現在是用opb bus
2 }/ W! z6 o( `. r" C; n新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定

, J- a3 X3 U) Y9 k# M
6 n. ~; {: ?" X$ p我使用的是自己設計的板子,開發版本為EDK 10.1.3
6 `' t! `6 M! H0 o5 m8 }" ^) v9 I% u想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?
" b6 d% L7 b5 @1 V% p有資料可以參考嗎?
2 f% s% ^5 d* k1 ]
" s: V- N1 m* ~7 k+ _# H9 }
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了, O8 T6 ]+ Q1 o+ T/ D8 _' r
你可以用flashwriter的debug mode
( M( V* w. S# o( ?9 t改\EDK\data\xmd\flashwriter\src的defs.h& f8 \6 ]: V. [
在#ifdef DEBUG 之前一行加#define DEBUG
4 K8 r, B+ g2 g6 U/ k# N# }
& O# @( M; [0 P, D' G5 f2 rxmd:- r9 `3 k( _! w
CFI query 基本上也是寫一個簡單C program 去讀寫flash6 U' i0 D, e' q
或是# V. f2 D! ~. I: d: M4 V2 s
讀: mrd ${address} ${size}
/ s% @. s" [+ _- f/ h寫: mwr ${address} ${value}

2 T6 l" u: H" Y1 y( X
7 F* r- t& ]; x, e9 }, t1.我有修改過
7 x: [- C. P9 M" J# c* O4 E\EDK\data\xmd\flashwriter\src的defs.h6 {  ?  b7 a/ _! Y. O  m
在#ifdef DEBUG 之前一行加#define DEBUG
. R! N+ I) _" B# l# h) W7 D不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)  G4 ^" a* B; I2 F+ O4 i5 {

5 E9 O/ k0 j' S2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?
" {9 h2 r% T# `: ^- {6 X  m我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用; Z. Y! `$ E$ U" A; p" _9 |% u
因為flashwriter.tcl好像是直接執行.elf檔案?5 P, B* \4 f& i
8 J9 N3 v# I1 v
3. mrd and mwr具體下指令是這樣嗎?
* l- e0 p% |! e0 W# V3 V' V5 |! x& K, ]mrd $0x8c000000 $0x80! p) @3 d7 K% v% H
mwr $0x8c000000 $0x80
作者: chchtono    時間: 2009-6-3 11:21 PM
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?3 X6 [# a  t5 Z$ z7 j$ R  P( J
還有compiler這支程式可以套用進去支援新flash?$ w3 K1 {# j! {4 I' V6 X
感恩感恩..
作者: chchtono    時間: 2009-6-4 11:05 AM
在defs.h設定#define debug之後,compiler產生如下訊息:8 U; m$ B5 K8 R' f3 @4 M  ~
ERROR: Unable to compile flashwriter application. Please check the following:
9 I- m0 g2 Y0 c2 \1. Make sure the processor's libraries have been generated.
2 h( ^/ D; P. U- e! f% h" {1 o2. Make sure that you are using the Standalone BSP as the software platform for your processor.7 I% H+ L; Y+ X7 ?& c5 D2 ?
3. 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 都是設對的2 l* Q1 ~: m. R: S3 B* s
/ L  W2 {2 F7 D( w' ^  m
google plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge
- e7 I6 {: _- c+ v& D4 v請看datasheet 先2 Z9 R0 E) n% U6 I

7 Z  J& g+ ^6 M# R" E' E( Y"在#ifdef DEBUG 之前一行加#define DEBUG"
. ?$ ~/ R$ B, i. u1 T3 \假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大
$ D) I5 G( {/ a$ e你可能要自行摸索. 我是沒有遇過這些問題4 w- @' }2 o( c5 a; s- w# [9 U6 k
5 x+ {# n9 z& a# M  {
TCL 只是一個script 去產生&執行 elf
& P" s5 y; V6 ?2 }/ v" \4 w5 k4 i% l8 i" L% D" I
mrd 0x8c000000
6 t( |0 h# h" Q* w6 V${size} 可有可無+ C$ l" [& M- G
mwr 0x8c000000 1234/ S) |( s" _) N2 O% o2 p2 o
你在XMD下 跑了他應該會告訴你正確的使用方式
6 _5 a) q; Y, H* {* l3 W, ^8 v6 m9 i' Z0 X& F8 \) S9 y8 C* z5 d
我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先! u3 N- a; Q- K0 Z: A, {1 B
try to isolate the problem first
作者: chchtono    時間: 2009-6-5 02:46 PM
原帖由 huanyu 於 2009-6-5 12:16 PM 發表 / I: n/ q- E) a9 L
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的
, |( ~- I) Z0 [3 b# K; F
' U5 t3 H! K+ z6 G. X/ w
這個已經確認是對的囉!因為可以使用其他FLASH了!
1 m' \2 y. t8 }3 k" C  s) }, X7 l/ I不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!
9 t, x3 ?* v" f- N/ e/ Y( q) Q(Unable to successfully query target part layout using CFI!)) [& j& a9 J* i. p, N. L
現在要如何確認..
( k7 Z6 Q  P, Z! {& a1. mwr and mrd的內容是對的?
; h) O1 K% U2 |* x4 Q2. flashwriter該怎麼改?
2 U1 Z5 A- r' M4 E% ^- ~/ i: E6 k2 `5 \. g+ k, {3 ~# L; f! K
[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
作者: huanyu    時間: 2009-6-5 05:31 PM
不同的flash設定也不一樣說 (就算實際的腳位一樣).7 L9 w9 U. e! I: H

7 Z! h* l. Q" wmwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
7 L4 T& n; q- n, _你試了之後再說你哪有問題+ |# a- f0 Y7 x6 `. V  Q- Q6 z

2 ?' a/ _7 e- ~2 i6 I: ~5 @0 [* oflashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改
( ]* v3 [2 b) P2 b( U要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
作者: chchtono    時間: 2009-6-6 11:44 PM
原帖由 huanyu 於 2009-6-5 05:31 PM 發表 5 P( H6 A; {$ A2 n% d
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual5 W  x. S3 O, X. d- _# V1 f& g/ c! \5 ?
你試了之後再說你哪有問題
8 Q4 {) o5 a3 \9 j

$ b( v0 T6 q; r! i: E+ q測試結果:
4 V/ N/ ?8 }; r$ ^1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行" Z* e$ O: S, g3 M5 H9 D8 `
mrd -> 可以讀到數值
9 C8 l( v2 \% t4 A$ kmwr -> 測試改值,mrd讀回沒變?
' s. v) v, ^' W( Z- I2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作
: d9 K: h& l  A: Y9 gmrd -> 讀到00 or FF$ Y8 \+ O2 n( b( ~) T/ L
mwr -> 測試改值,mrd讀回沒變
作者: huanyu    時間: 2009-6-12 12:42 PM
1,  你可能EMC部分參數沒設好
9 ~: x; Q# Z( Y5 ]你多是幾個不同的address( within emc memory address) 試試看
- B3 b1 C& W( H, _0 C
. l' i9 X9 z4 Y2.mrd 讀到 00 or FF 代表無法讀取那個address
$ }) R3 X2 [- H, M, r# g/ W所以應該是你設定有問題.
+ q/ M" N( O5 x% a0 ]0 }
$ t0 f7 G5 s+ d' _/ N+ O! I你可能要讀MX flash的datasheet 看是不是參數設錯
作者: chchtono    時間: 2009-6-18 11:56 AM
嗯!經由測量FLASH腳位確認之後,發現是硬體問題6 ]  s: m" c# D3 |
目前已經解決此問題囉!
9 T6 a- T9 e. B0 v! _定義上是沒有問題的,謝謝大家關注




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2