Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-30 21:23:03 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握
& @5 |7 Q, P  J  H其中對於燒錄Parallel flash and SPI flash燒錄不太能理解
0 T3 w, i# Z! I9 q' E& I  a7 I底下有幾個問題,請大家幫忙回覆囉!$ ^6 B' }. Y0 i0 I8 [1 r7 \
3 E: m- I4 J) W4 N3 h; {: [/ [! b
1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能
. {3 {: c7 C. ?- C/ X$ e2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:
1 y! k: b, g# Y3 Z2 J    Unable to successfully query target part layout using CFI!!8 `% }! b5 o; |# C2 A% w
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的? 4 c) J5 f/ @7 a5 q, W
    P.S:目前使用Spasion 29GL256P FLASH.$ ]5 t, P# _% \
3. EDK and ISK tools的定位在哪?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
13#
 樓主| 發表於 2009-6-18 11:56:20 | 只看該作者
嗯!經由測量FLASH腳位確認之後,發現是硬體問題0 x6 F. m! Z' x' s
目前已經解決此問題囉!
- }1 ?$ ]+ q3 M% A定義上是沒有問題的,謝謝大家關注
12#
發表於 2009-6-12 12:42:03 | 只看該作者
1,  你可能EMC部分參數沒設好
3 O) |4 V) a3 P2 ^8 |你多是幾個不同的address( within emc memory address) 試試看 ' P- b, ^: H! p; J
; O4 c1 d5 S% V) }  a* ^* f6 ?) ?3 E3 a
2.mrd 讀到 00 or FF 代表無法讀取那個address
6 a, ?: ?6 M/ z- e5 F: W所以應該是你設定有問題. $ U% y* P- i$ r7 O  L/ n
2 ~: k) H! G9 A9 s8 c3 S6 E
你可能要讀MX flash的datasheet 看是不是參數設錯
11#
 樓主| 發表於 2009-6-6 23:44:14 | 只看該作者
原帖由 huanyu 於 2009-6-5 05:31 PM 發表
# W# K3 b) D4 C$ h5 ~& q  mmwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual1 V3 Y9 b: B  s" P( K' e" T1 ^$ `
你試了之後再說你哪有問題

% j) n+ j8 [  ^7 G6 S/ Z" m& e* p8 s
測試結果:
. R( `% \& M+ J- \* H. w  m1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行4 v/ N% ]% t* t: z  _$ G
mrd -> 可以讀到數值
" a4 ~  I4 u2 \3 ?  omwr -> 測試改值,mrd讀回沒變?! v0 _8 V0 t9 |6 v
2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作+ J/ R# a$ }* B8 E
mrd -> 讀到00 or FF, E0 f" z5 K# H
mwr -> 測試改值,mrd讀回沒變
10#
發表於 2009-6-5 17:31:50 | 只看該作者
不同的flash設定也不一樣說 (就算實際的腳位一樣).5 V6 C' y, Z' |9 q1 r: Z
/ j1 o& ~; r4 m! S* q
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual' ]! m5 m2 a  \) N
你試了之後再說你哪有問題) O2 m5 G* z* p, y6 d) @: ~8 M

" r$ Y, G& E* t/ W! \; Jflashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改
& J4 g& y3 Q' u6 x要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
9#
 樓主| 發表於 2009-6-5 14:46:34 | 只看該作者
原帖由 huanyu 於 2009-6-5 12:16 PM 發表
2 ~& A0 _6 H+ d7 G( y  Q自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的
3 q# P) B/ {+ @. t+ R' A

: Y, X2 Q* S2 W& `; n  B這個已經確認是對的囉!因為可以使用其他FLASH了!
" T3 P+ c  s8 m, [' b不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!
  E2 T( U' R% M& }6 ?" y(Unable to successfully query target part layout using CFI!)
- i- L/ P$ R! s6 ~' {$ F現在要如何確認..
$ {) K& E$ ~, t* f0 j4 d. s1. mwr and mrd的內容是對的?
' p& R- o3 C8 ^3 e" `2. flashwriter該怎麼改?# a3 ^- h  v3 X* p

2 @+ H9 |0 N( ~' N& W$ N4 @2 w[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
8#
發表於 2009-6-5 12:16:21 | 只看該作者
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的/ G; s  [: ]& j

. m9 x$ }: N* I: M! ?8 d/ |# m9 Ygoogle plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge
) ~' Q0 b$ }' v( }7 ?請看datasheet 先, R: }' l! e0 _) k+ j

5 F* m1 J5 b4 x" g7 |) V& c7 }, N"在#ifdef DEBUG 之前一行加#define DEBUG"" F# m4 A3 t$ X) D& H( h' T6 Z
假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大 ; @9 H$ L- I% `/ K' I) s% |6 b
你可能要自行摸索. 我是沒有遇過這些問題
9 S% G$ n- \' C+ ]. c: G
) k* j7 }. w/ M8 ^TCL 只是一個script 去產生&執行 elf( \0 {, j; D& l4 y  s/ w

6 |7 c0 x( R' a+ M9 P2 dmrd 0x8c000000
: B) J0 b7 f' g${size} 可有可無! e$ O9 L  D+ J; t* [/ X
mwr 0x8c000000 1234: Q3 S4 m& k9 {# o
你在XMD下 跑了他應該會告訴你正確的使用方式
$ ]# O, m6 z  l) J( G& n
6 i7 A/ J' g- I' I8 C我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先
' e$ f: D/ P0 P: Ttry to isolate the problem first
7#
 樓主| 發表於 2009-6-4 11:05:34 | 只看該作者
在defs.h設定#define debug之後,compiler產生如下訊息:" c' I5 J' ~. k# q; R- W3 ?; D6 n
ERROR: Unable to compile flashwriter application. Please check the following:
3 r/ l% `' U. R1. Make sure the processor's libraries have been generated.
/ `& S& |$ e' }) I5 B% k2. Make sure that you are using the Standalone BSP as the software platform for your processor., {3 A" E; \; S* i( L7 e
3. Make sure that XILINX_EDK has been set correctly and that all the EDK GNU tools available."
6#
 樓主| 發表於 2009-6-3 23:21:57 | 只看該作者
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?* U8 C/ x# e+ U3 ?$ z
還有compiler這支程式可以套用進去支援新flash?
3 m1 k7 U" f# {$ q% r) m1 X. h感恩感恩..
5#
 樓主| 發表於 2009-6-3 21:12:49 | 只看該作者
XBD=Xilinx Board Definition
7 b, A& c5 V% _$ p4 ^假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題; c. y  v- d& a
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...- G8 t; t* g8 {  R4 a0 d. H

/ N6 b& k4 F1 J( K! f2 J3 `4 I你現在是用opb bus
9 P. c5 g9 ]$ U! O新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定

. ^2 M, ^& X! G( |) @8 O: o" e5 K0 \* A' R2 t
我使用的是自己設計的板子,開發版本為EDK 10.1.3
; C8 G# \3 I$ S- I1 V想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?* _8 O) d  h7 P, [# K3 k8 Y
有資料可以參考嗎?* `( {* s$ v8 _) A( Q( N
7 Y! j  Y- W( r* m% i( k
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了
5 w3 }, [& ~3 H4 }. z你可以用flashwriter的debug mode
% ^2 n9 B- q! E改\EDK\data\xmd\flashwriter\src的defs.h% f* w! _4 L) i7 f8 w0 F7 G
在#ifdef DEBUG 之前一行加#define DEBUG# @7 E/ b% c/ b+ T
2 q9 @" s" ^7 `- i! u! ^
xmd:
* V5 z% c( B/ }4 x6 U- H; FCFI query 基本上也是寫一個簡單C program 去讀寫flash
/ p3 H8 B$ Q: I5 ?' l或是$ H1 M: P! T9 N4 E5 Z
讀: mrd ${address} ${size}
- `; ?+ J1 C- F$ a# d& K寫: mwr ${address} ${value}
6 ~# z5 _( n" c

7 y1 h1 D/ r3 W! N1.我有修改過/ Z( P" z- B% }  L& H
\EDK\data\xmd\flashwriter\src的defs.h/ F+ x$ V# D$ e  W! z+ {8 @0 O
在#ifdef DEBUG 之前一行加#define DEBUG( K( L1 m+ I. }
不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)! {0 W6 ~( Q) ^/ C& j/ l/ X
, v* t4 D+ N0 r
2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?
3 s3 ^4 y* \) f9 |, F1 g我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用$ ?5 B1 a8 x7 H9 T
因為flashwriter.tcl好像是直接執行.elf檔案?) P+ v- j8 O5 L- q4 o/ M/ `+ l2 |

# W1 `4 V* r4 L; w1 T' X7 b3. mrd and mwr具體下指令是這樣嗎?* ^5 H2 Y3 r7 |' Y5 T
mrd $0x8c000000 $0x80
& |, d: ^" T) g7 W1 L2 h  ]9 jmwr $0x8c000000 $0x80
4#
發表於 2009-6-3 15:14:15 | 只看該作者
XBD=Xilinx Board Definition
$ s: ^' ^6 W5 a1 v3 z$ z8 s假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題7 P* Z. a* \' j" k, W" x5 o8 k
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
) j% F% g4 y+ A/ h& x7 d9 b8 ~/ H8 [" O) T  [
你現在是用opb bus
8 C+ q2 K9 a) {$ s新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定( e5 C/ v5 L9 O& N8 G' w

" b8 z5 d" `4 s  z, w$ Z: n2.  g3 D- ^% h" k- `
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了, M) V' P* R- l2 h8 m) r
你可以用flashwriter的debug mode0 v, c* n8 a5 Y, i2 F
改\EDK\data\xmd\flashwriter\src的defs.h
( S4 F7 Q7 C% V在#ifdef DEBUG 之前一行加#define DEBUG
3 M) N% Y7 [1 H$ U7 O! x5 A# T) D! j
3 l2 R- ~" B8 a: O4 dxmd:
4 P3 K0 S( X, d# Y) @CFI query 基本上也是寫一個簡單C program 去讀寫flash" d( r" I3 V( f0 i6 o4 x
或是
6 i' c8 s; b- ^: K5 w讀: mrd ${address} ${size}: A% M) T) C  ^  P
寫: mwr ${address} ${value}
9 Z, V, t" Y0 U8 M3 D' i* B8 B9 I* s3 G" D- ^) ]" H8 U
[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
3#
 樓主| 發表於 2009-6-1 16:25:43 | 只看該作者
再度請問:
. }9 |! ]: e' Y" d- {% e6 r/ h/ ~# G- d+ n3 d" |# b0 I
1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢?
/ U" M9 G$ _: z" w3 a1 E' l9 m2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?
( b/ Q) U1 ~7 e+ A6 X" V' u
( I9 R) \/ m7 J' E0 e0 E0 S貼下system.mhs的EMC設定  @  T8 x+ l# E/ A8 o$ k6 _' Z& I
4 B5 L* A# M( b
BEGIN opb_emc& Z" i5 ?9 b# `% E, k
PARAMETER INSTANCE = FLASH_2Mx164 S$ @# c( q; F- B* b
PARAMETER HW_VER = 2.00.a
$ u) P, J3 [# E$ Q5 J PARAMETER C_OPB_CLK_PERIOD_PS = 200007 G: l3 P4 S& h- t
PARAMETER C_NUM_BANKS_MEM = 1
) I$ x2 P2 r8 Z+ x* O4 ~0 x  w7 \# W PARAMETER C_MAX_MEM_WIDTH = 16( A* J; J. t( U9 ~3 |( x. x
PARAMETER C_MEM0_WIDTH = 16- l) E; m( Q- q3 J/ m7 J% A6 [
PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1
5 ~0 f, L+ y5 ?- U4 R+ T PARAMETER C_SYNCH_MEM_0 = 0
# P; G! _9 s/ f0 h$ I( k3 [ PARAMETER C_TCEDV_PS_MEM_0 = 70000
$ d; G, R( d/ A0 O# ^( S PARAMETER C_TAVDV_PS_MEM_0 = 700004 L3 v, t) e$ V, x; e" }# a8 i
PARAMETER C_TWC_PS_MEM_0 = 70000
; n* L$ ^% ?0 ~& u$ P/ c" e PARAMETER C_TWP_PS_MEM_0 = 45000/ q& Z5 ^& `5 F  x  r
PARAMETER C_THZCE_PS_MEM_0 = 25000: Z2 \' M2 Y2 J1 g
PARAMETER C_THZOE_PS_MEM_0 = 25000
3 w: M" L* k& a8 _5 F# N PARAMETER C_TLZWE_PS_MEM_0 = 5000! l5 z; {% c6 V# i  u
PARAMETER C_MEM0_BASEADDR = 0x42000000
8 @. _5 o9 D1 L3 u PARAMETER C_MEM0_HIGHADDR = 0x43ffffff
4 Q1 F! F: G7 w; L BUS_INTERFACE SOPB = mb_opb
4 q8 a- @/ T" t( j, h- i3 F PORT OPB_Clk = sys_clk_s
- B5 w) j+ b) C' M PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?
+ J* D. W2 H5 ~  s% ^ PORT Mem_DQ = FLASH_Mem_DQ5 Q: X. c$ O. C# M+ L5 K
PORT Mem_OEN = FLASH_Mem_OEN
' g! x4 y8 E( ?" m, p9 r PORT Mem_WEN = FLASH_Mem_WEN6 B% O8 G7 C  x" {$ v$ p$ n, w
PORT Mem_CEN = FLASH_Mem_CEN
" C) c. d/ R7 T' f( j& r2 zEND7 x, u* ~0 f- r. @

0 O' S7 E  a# g以上這樣設定對嗎?) L! A1 w0 _0 P7 x7 U

+ x& Y+ L) o$ n: P5 Z- r$ b; `[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
2#
發表於 2009-6-1 14:42:03 | 只看該作者
1. 假如你是用MicroBlaze的話 你需要寫 first stage bootloader (FSB) (存放在MicroBlaze's  BRAM). FSB 再去讀取指定的bootloader (Parallel+SPI flash)
" Q5 m4 D$ F/ L0 j! d6 r- s2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet.
8 a& n2 R( I- e/ T( t可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確
- D2 E* \9 A$ p5 |, o# H6 G/ \) \3.
4 G( p: i& r1 x! C$ a% s$ c( N2 hEDK 是 system design
( t+ Z6 D' Z& i/ H( y* o7 z- ^) o0 J! aISE 是 core design
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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