Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-30 21:23:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握
' G/ ~+ D! Z; E; t! w其中對於燒錄Parallel flash and SPI flash燒錄不太能理解8 D+ X/ o4 C( r5 Y7 g: l
底下有幾個問題,請大家幫忙回覆囉!
1 X- m$ g. w# J$ ?+ T- B8 y" Z! c
6 d3 Q8 O3 f2 c; X1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能2 _, |4 @/ H& I
2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:; ]3 M0 O% }7 C& E  Q# X# H9 J
    Unable to successfully query target part layout using CFI!!% ~, _# K8 l$ v: \, E4 J
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的? 9 `5 Z% {. v8 ~3 m4 z7 a% [( k
    P.S:目前使用Spasion 29GL256P FLASH.
& P" p8 f- `9 Z1 y' \/ f" j3. 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)
$ q% E# e) B: V; V0 R4 @2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet. 2 n7 U/ b0 Y- m0 ]5 Y5 H" M. K3 c( p
可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確
6 |' ]- j7 _- Y8 C3 }3. 8 D' A  B. P* r+ r0 Q$ g3 z. t6 t
EDK 是 system design
$ w5 a- f/ T8 V9 w- R: j( N' EISE 是 core design
3#
 樓主| 發表於 2009-6-1 16:25:43 | 只看該作者
再度請問:
/ N; U7 u3 y: r* ^9 ^4 l: _* ~2 a& @! E
1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢?
0 f" ^, q/ t( _" Y1 q3 i: @2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?
. \6 V, i3 k3 h+ s$ C% M' c6 s5 j* [. j, j  ]  ?# b5 b  b
貼下system.mhs的EMC設定- b- x/ T# l  m2 E) B1 Y6 k
, x+ T) u/ s( A: Q' }
BEGIN opb_emc
, J: {4 D0 ~$ C. X, \ PARAMETER INSTANCE = FLASH_2Mx16. F6 l( ]# N7 V$ ?. g! h5 i
PARAMETER HW_VER = 2.00.a
  `9 P( l# G2 Z6 A PARAMETER C_OPB_CLK_PERIOD_PS = 20000
- D. y$ T5 b6 Y: h$ I& \ PARAMETER C_NUM_BANKS_MEM = 1
; E. @) `  Q  Q PARAMETER C_MAX_MEM_WIDTH = 16
8 Z. d8 h) _7 m' z PARAMETER C_MEM0_WIDTH = 16
: I4 _) Y5 J$ j# |0 W7 L PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 15 f/ P+ Z) o+ F7 }  ^( h
PARAMETER C_SYNCH_MEM_0 = 0
" V4 n5 Y8 H% x7 L( P* R  o! G) i+ c PARAMETER C_TCEDV_PS_MEM_0 = 70000
, X6 \% {; J1 R/ o8 }  s$ P PARAMETER C_TAVDV_PS_MEM_0 = 70000
9 l+ u; b0 `& Z9 c: n" V PARAMETER C_TWC_PS_MEM_0 = 70000
# R* e) T5 D" }5 U0 R, v* O PARAMETER C_TWP_PS_MEM_0 = 45000
( m9 S/ \6 O  e7 e$ u2 w PARAMETER C_THZCE_PS_MEM_0 = 250009 i# v( P( W2 w2 Q
PARAMETER C_THZOE_PS_MEM_0 = 25000
  ^! Z! B% h. }1 @# H3 Q PARAMETER C_TLZWE_PS_MEM_0 = 5000
$ y9 q7 v$ d2 t0 D7 n PARAMETER C_MEM0_BASEADDR = 0x42000000
* P* t3 U7 {" V1 H/ g/ V PARAMETER C_MEM0_HIGHADDR = 0x43ffffff: m/ ?# e, o0 T' J# d; ~& Z
BUS_INTERFACE SOPB = mb_opb
+ O, H- l5 {" |+ G PORT OPB_Clk = sys_clk_s
3 L/ D5 w  C7 A7 n$ M; F PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?
5 @& @6 F/ `7 g% V2 } PORT Mem_DQ = FLASH_Mem_DQ( n$ m* k! Y4 U; I4 c( N
PORT Mem_OEN = FLASH_Mem_OEN
4 s% a, \+ K; [% T& B& w% H PORT Mem_WEN = FLASH_Mem_WEN
2 _% a6 b1 n8 I2 a PORT Mem_CEN = FLASH_Mem_CEN) N# n6 o6 P3 G
END9 u7 T: ^6 o: ?0 Y

$ }" k/ Z; U% g) [5 d' v以上這樣設定對嗎?
2 z! e# ]& `/ a. u
1 d0 Q1 j4 N: _' q4 C4 A[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
4#
發表於 2009-6-3 15:14:15 | 只看該作者
XBD=Xilinx Board Definition # _; d- N, {% S
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題
* ]3 ~" P' P' F3 H5 o你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
3 y" Y6 v* C* Q, S' o1 c$ ^( G
4 b3 L) `" U3 m2 F: ]你現在是用opb bus+ a9 [8 O9 z) D: ^/ N+ t" P
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
6 A0 t0 z" K( m  \8 d$ I6 P" T1 I$ z2 i9 e
2.
+ _/ O" U/ N& X- O. E0 [& R3 b也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了
7 R- r9 }# G3 |你可以用flashwriter的debug mode
! u, K( F3 V! U+ k, [# E  I' L改\EDK\data\xmd\flashwriter\src的defs.h " |9 ?/ @7 K; N6 D1 D
在#ifdef DEBUG 之前一行加#define DEBUG) b4 N9 i1 L0 t+ c! R# L3 s: [9 Z  [

) u0 G& r  M. O& T( }xmd:
5 `' Z5 O  o% \3 f: S5 ^  @8 w5 RCFI query 基本上也是寫一個簡單C program 去讀寫flash
8 g( w* S  j5 x/ S: E2 G& k7 z或是
6 A+ L5 V* v0 _# S讀: mrd ${address} ${size}, l0 P3 B( o* v6 V0 S) k1 M
寫: mwr ${address} ${value}
% x$ \2 V3 \; H- q) a5 w# U- l3 ?# b) l! d7 ^
[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
5#
 樓主| 發表於 2009-6-3 21:12:49 | 只看該作者
XBD=Xilinx Board Definition
) [4 h$ a1 m4 o9 C% y2 L! |- }9 C假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題4 c, C( u' ^) |7 C# B
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
( B$ E4 L! \1 v- h0 K8 K1 m! w% [+ \
你現在是用opb bus2 ], H, g& C! K/ U/ _- @% ~+ W% r
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
; L' S2 w) w; D, T! o

/ ~0 C# F+ D3 L  u/ Z  c我使用的是自己設計的板子,開發版本為EDK 10.1.3$ g1 U4 r4 i2 O4 K& `
想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?" v2 I( @6 M9 M1 Y- C$ T) F2 k
有資料可以參考嗎?
; }0 @% O1 E9 d4 |! E8 t) V' s  J* r. d1 s6 y
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了
5 L/ A- T, E: G! z你可以用flashwriter的debug mode* Q6 r9 U/ s4 C& v0 d& X6 Q, I
改\EDK\data\xmd\flashwriter\src的defs.h9 k. U' h8 q8 O7 K2 U/ ~( j7 K
在#ifdef DEBUG 之前一行加#define DEBUG: u( f, x9 w! [$ }1 y& m
  H  f9 ]! F# e) g& }8 z" C6 U
xmd:
: O* L6 ^8 V! l) a1 Z  C) J2 A# KCFI query 基本上也是寫一個簡單C program 去讀寫flash
. o" G) Q( k0 f5 x或是; r( }0 y5 d& t/ a
讀: mrd ${address} ${size}8 `0 m! Y7 C& I/ ]8 l% v
寫: mwr ${address} ${value}

4 J7 U; j: \6 k) |5 K& ~. J4 n4 s9 H; N' Z1 Z0 v
1.我有修改過( q1 O2 E3 s+ x' ^+ A; Y) c
\EDK\data\xmd\flashwriter\src的defs.h
3 `# w  p; w- d$ ], L在#ifdef DEBUG 之前一行加#define DEBUG
8 Q& Q4 @$ C0 i1 b! J' `9 c不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)
8 {  w( H) ]8 l1 Z* G
) k9 \, y& [& y  R, q& q2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?$ t9 K. j- R1 Q, s8 l1 ?% ^; i
我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用" m- D) u- f: e/ H' D) F5 |
因為flashwriter.tcl好像是直接執行.elf檔案?
. N( N) D$ r: i! y, Z0 I" b
4 X4 q6 u! d% s+ H" ~3. mrd and mwr具體下指令是這樣嗎?
( ~3 b) F; y6 a* xmrd $0x8c000000 $0x80
* m* v/ z3 S5 w% Omwr $0x8c000000 $0x80
6#
 樓主| 發表於 2009-6-3 23:21:57 | 只看該作者
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?
6 |! v+ n( I. Z* I+ J6 b0 i還有compiler這支程式可以套用進去支援新flash?
0 ~: s" \- r1 I4 a) o! H% g6 i感恩感恩..
7#
 樓主| 發表於 2009-6-4 11:05:34 | 只看該作者
在defs.h設定#define debug之後,compiler產生如下訊息:1 p/ B% }2 s! s% W! a
ERROR: Unable to compile flashwriter application. Please check the following:, s1 `, W, O; R& b0 E
1. Make sure the processor's libraries have been generated.7 j7 l2 o- d  ^1 j1 X
2. Make sure that you are using the Standalone BSP as the software platform for your processor.: F$ O, w: ?2 ]( A+ Z( p7 g
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 都是設對的3 E* T. ~% J- i* t, x3 C& y! ]6 P
1 f7 G5 _( @* F' {0 E/ }
google plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge$ J7 W( I$ \& c3 L% e
請看datasheet 先
7 N8 W" K) ^" J- K4 j
- E  l# S/ M; H3 n! ]"在#ifdef DEBUG 之前一行加#define DEBUG"# ]; S: H1 h. u
假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大 ! O: `6 T  \5 B0 |) d+ c4 B) A
你可能要自行摸索. 我是沒有遇過這些問題
1 W* r5 _, t) U" s
' O  f& M- i/ W  m; n+ s- B6 HTCL 只是一個script 去產生&執行 elf
$ R0 l9 T9 |  A  {/ C. q% o9 L6 N7 e3 f& `
mrd 0x8c000000
, n/ n8 ~8 Y2 C$ Y${size} 可有可無( Q9 X" |& Y2 I% V, V( N( W: X7 B7 P
mwr 0x8c000000 12346 ?. O- T1 U; P. [! e4 [
你在XMD下 跑了他應該會告訴你正確的使用方式
3 D5 d0 i1 t  H) _% p% H! r4 E' C$ f  v$ x# [- R3 I
我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先6 d/ {# f- u$ p( U
try to isolate the problem first
9#
 樓主| 發表於 2009-6-5 14:46:34 | 只看該作者
原帖由 huanyu 於 2009-6-5 12:16 PM 發表
# A# G4 q% e  {! O自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的
# c) I: K2 ^) q+ P6 X; @

% E  @- L% ~! U4 Q這個已經確認是對的囉!因為可以使用其他FLASH了!4 H: [6 H! Q: ?6 H' R
不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!
9 E6 Y, m: F6 S) b; C- n(Unable to successfully query target part layout using CFI!)0 G& ]) h. ~& l8 U: v: g. P% d
現在要如何確認..
, t+ ]: F4 r& ~% E! L$ y1. mwr and mrd的內容是對的?
1 d; {+ L& O  ^5 H  U0 v2. flashwriter該怎麼改?
6 L: D, x; Y9 w$ a3 M8 n& G; Z7 n; }
[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
10#
發表於 2009-6-5 17:31:50 | 只看該作者
不同的flash設定也不一樣說 (就算實際的腳位一樣).
+ l3 Y! l  O7 p4 O0 O, }# G: h- y4 w
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual( M) A) J% O9 W5 t) i3 R
你試了之後再說你哪有問題5 D6 R4 d2 k, \! a  Z

, n" O. O; E$ W8 J6 f3 ]/ cflashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改
8 m: W" n  Y$ {' l6 F5 B; I要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
11#
 樓主| 發表於 2009-6-6 23:44:14 | 只看該作者
原帖由 huanyu 於 2009-6-5 05:31 PM 發表 ) t5 p, |; u6 }
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual- _5 c) D4 @. K/ m
你試了之後再說你哪有問題

6 b% L( a; x/ M4 B' }
1 P8 l' l; ]" K7 d7 S( l測試結果:
' l+ s4 O2 ^8 k- [1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行. E3 H7 k" n  R3 k
mrd -> 可以讀到數值
9 V  o# F9 ]% p3 R1 @mwr -> 測試改值,mrd讀回沒變?
2 s6 e; g, j' {6 i; x: ?& _' E$ @2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作; M. V! x/ {2 t% K% O
mrd -> 讀到00 or FF" E5 w% H: H! }+ u- ]: e) A
mwr -> 測試改值,mrd讀回沒變
12#
發表於 2009-6-12 12:42:03 | 只看該作者
1,  你可能EMC部分參數沒設好' }( {* I, y* O
你多是幾個不同的address( within emc memory address) 試試看
0 v5 D6 J* `) M) q, R3 U( J( o; O% X% N+ q
2.mrd 讀到 00 or FF 代表無法讀取那個address3 m5 U2 V" i; B; o& \
所以應該是你設定有問題. . @3 D. e2 }4 q; {
( j9 J6 R" _  e4 a8 z
你可能要讀MX flash的datasheet 看是不是參數設錯
13#
 樓主| 發表於 2009-6-18 11:56:20 | 只看該作者
嗯!經由測量FLASH腳位確認之後,發現是硬體問題) T& X: Z5 P: t
目前已經解決此問題囉!
) t# @( s- k' i定義上是沒有問題的,謝謝大家關注
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-28 12:12 AM , Processed in 0.178010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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