Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-30 21:23:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握" R+ S- Q- ?! g5 c" m( A3 \6 P$ j0 F+ t
其中對於燒錄Parallel flash and SPI flash燒錄不太能理解
5 G7 q( d0 ?# d* R8 \* v底下有幾個問題,請大家幫忙回覆囉!
- X5 [( G1 @/ x8 b$ ^7 K  n; Q( l/ q+ e* |7 {1 C
1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能
) \* v4 D# [6 p7 n3 ^- v8 Q3 u; W2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:5 x+ m/ k8 M6 d2 E* D
    Unable to successfully query target part layout using CFI!!8 ?  D5 w% u; u1 g4 Z/ g
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的? % A" J0 V' A" e% O% e
    P.S:目前使用Spasion 29GL256P FLASH.
2 A2 n% v% e; S% T. 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)
, j- ~* W  e, \2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet.
. P9 u2 G$ G' x  N/ |可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確( ?2 L4 R7 S$ }' [- i" ^( y
3. 8 I; i3 E) V! X/ T( ]
EDK 是 system design
1 |9 v3 q  h6 Z0 D1 IISE 是 core design
3#
 樓主| 發表於 2009-6-1 16:25:43 | 只看該作者
再度請問:: _, H/ G! T/ f7 q' B( A

/ Z5 H8 j+ X: F8 u9 e8 P1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢?
$ Q* W$ n# A0 y, W& g  {1 G+ S5 J2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?" y) J) m2 p9 @' b' s, V* G0 G

, O3 A) ]4 ^1 m4 _貼下system.mhs的EMC設定
1 Y2 r2 Q. L7 d$ K1 U( E" f# J! Z/ y
BEGIN opb_emc
0 I- `8 O$ R6 @: a" w& a' C" D PARAMETER INSTANCE = FLASH_2Mx16
' P4 k- e' ~& k/ A- V PARAMETER HW_VER = 2.00.a$ r; R2 h" p  ^( Q1 F
PARAMETER C_OPB_CLK_PERIOD_PS = 200006 J' a" }5 k6 [) n; J+ \3 B
PARAMETER C_NUM_BANKS_MEM = 1; v9 N6 J5 \* _( B$ B! g, t  z
PARAMETER C_MAX_MEM_WIDTH = 16" t4 \* s+ U2 j: v  s; \' }7 g& u
PARAMETER C_MEM0_WIDTH = 16
6 x- Y( {1 l  W8 o& V& p PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1% B- w3 q$ T2 z. Z* \: I! t7 G
PARAMETER C_SYNCH_MEM_0 = 0
, R  Q7 ]9 E/ n: h+ @ PARAMETER C_TCEDV_PS_MEM_0 = 70000/ [* F) s1 C7 }$ B# T
PARAMETER C_TAVDV_PS_MEM_0 = 70000
2 w3 m9 K0 }3 D5 l4 C( e1 T, B& U  b PARAMETER C_TWC_PS_MEM_0 = 70000
! D6 F( g& D( Y4 C, y, @/ |4 w+ F PARAMETER C_TWP_PS_MEM_0 = 450000 Y& p: k6 i- X. b5 b6 |! G4 V
PARAMETER C_THZCE_PS_MEM_0 = 25000
0 B  H, v" T8 R* I$ e1 i PARAMETER C_THZOE_PS_MEM_0 = 250009 v- u, v8 P' n* P& l5 n; u3 h5 Y
PARAMETER C_TLZWE_PS_MEM_0 = 50001 ]0 D" f6 ~! p4 \( a9 j
PARAMETER C_MEM0_BASEADDR = 0x42000000
" w& `( D6 L" ^; |# `5 l  O/ b) v PARAMETER C_MEM0_HIGHADDR = 0x43ffffff& R, w: y1 h+ z+ k  t) `) s
BUS_INTERFACE SOPB = mb_opb
6 U' I6 L- W" K PORT OPB_Clk = sys_clk_s% I6 j2 Z1 Z  X* O
PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?
+ L/ w$ v& N5 Z  e- u PORT Mem_DQ = FLASH_Mem_DQ) G6 W! y2 F2 I) m; b
PORT Mem_OEN = FLASH_Mem_OEN% @0 [3 y8 Z3 a1 b+ h
PORT Mem_WEN = FLASH_Mem_WEN
: k# M  u" c) S* w+ w6 P PORT Mem_CEN = FLASH_Mem_CEN
: a: M! e9 E# @. `$ @: C7 SEND. W: s& K' u2 \  N" ^9 a
; J& \; E) U7 |$ {) g5 }# y
以上這樣設定對嗎?6 e6 H, j0 L5 d8 j  h+ W
8 i( n- d9 v' |9 U# R/ L" I
[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
4#
發表於 2009-6-3 15:14:15 | 只看該作者
XBD=Xilinx Board Definition
: Z& E+ I9 @1 I假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題/ n. B! V2 Z4 a- \0 T8 A
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
/ m4 K1 e+ T0 i: e! g# |( n+ e. r
6 I* r: t+ X+ U) p) e1 \你現在是用opb bus
& D2 V2 Q' x' d新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
7 E/ T- ]/ {9 D. A6 x+ L1 P. Q/ x  ^! x
2.& ]" K$ g9 Z% x4 A
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了+ |! T8 ^+ P# `  \$ W4 V
你可以用flashwriter的debug mode0 z! F: S% l, K0 J. V
改\EDK\data\xmd\flashwriter\src的defs.h ( a8 b0 h* e* k
在#ifdef DEBUG 之前一行加#define DEBUG
2 R7 T' B- h" q( H, t# b& T9 S$ U
xmd:/ x; l& i  N1 m7 H$ J! h9 U* q! A2 N
CFI query 基本上也是寫一個簡單C program 去讀寫flash
3 ]. G% v: d$ U或是( K- F" f0 r* J' O2 b# J6 X. r& `
讀: mrd ${address} ${size}
1 c0 n3 m  C: z$ f寫: mwr ${address} ${value}
8 Y6 h( _& T5 X6 X6 T1 X6 r- F- k4 T5 W% L( ]2 _% a* z
[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
5#
 樓主| 發表於 2009-6-3 21:12:49 | 只看該作者
XBD=Xilinx Board Definition( _& q. I# |3 M. H) I  ?4 n
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題
& C  j& M' j) z( q1 M0 K" s8 j2 _你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
9 R( O/ |! s* M5 L' ^1 M* G, M( H9 Q  ~4 x3 ~
你現在是用opb bus8 u8 K) Q7 n. Q9 r. d) M& c9 W
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定

7 P2 N5 V2 ]7 \4 s- _8 s
# p$ D" H) m! W; X我使用的是自己設計的板子,開發版本為EDK 10.1.3' V5 _  o% r+ v. M+ V" m
想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?8 r1 R: D2 t. ^1 V3 D! ]! N* z/ S
有資料可以參考嗎?2 l- C' {- F) b7 O

2 C! B7 o, s9 d3 ~# x* A- ~6 R
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了- }4 N  ]* `: K9 N  Y
你可以用flashwriter的debug mode
1 R) r) B, H" H2 N( ^改\EDK\data\xmd\flashwriter\src的defs.h
" i6 @+ v( F: |1 J0 R# N在#ifdef DEBUG 之前一行加#define DEBUG. i8 Y2 S% S9 [! q4 A
- l3 W$ D7 i" N" o+ n6 {# V, t
xmd:; G& i% B/ y5 ?) v" `9 |
CFI query 基本上也是寫一個簡單C program 去讀寫flash) i- S; U3 R! D3 H$ X: c5 y( p; n
或是1 R3 y& ~$ ?/ i: X% {4 D5 Q* c
讀: mrd ${address} ${size}
1 _0 T% u4 v& K$ g, O+ h9 X# n  Q寫: mwr ${address} ${value}
, b4 \9 j' s) C
: D) N) Z6 f2 c1 t* t# `% Q
1.我有修改過
' ^; b! r% {9 V- {- e\EDK\data\xmd\flashwriter\src的defs.h
' X2 Q* B3 Z& J' V# I在#ifdef DEBUG 之前一行加#define DEBUG
( T" t# P0 u9 G0 N" e& ^$ T不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)& \  E- b1 t  f1 x" ~/ g* F' I

: g! b# u+ ?! x" ~- b2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?7 O3 h8 T3 H4 e+ Z
我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用
6 s1 w7 E4 @2 F' ]! g4 x: ?% u因為flashwriter.tcl好像是直接執行.elf檔案?
% L/ @. G* O1 o  L: z( |' C) t* @2 @2 i- n7 U6 F
3. mrd and mwr具體下指令是這樣嗎?
3 c; n0 E* Z0 g6 ^mrd $0x8c000000 $0x80
0 T" Q% l" r& S0 P* ?3 K" J7 Kmwr $0x8c000000 $0x80
6#
 樓主| 發表於 2009-6-3 23:21:57 | 只看該作者
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?* T$ O2 f# R, Z- h' C; K/ ^6 U
還有compiler這支程式可以套用進去支援新flash?
6 a; l9 s8 W; b2 r6 U  Z感恩感恩..
7#
 樓主| 發表於 2009-6-4 11:05:34 | 只看該作者
在defs.h設定#define debug之後,compiler產生如下訊息:
* t( A* t% Y4 l7 T. \) p9 ~5 pERROR: Unable to compile flashwriter application. Please check the following:) }' r2 h4 ~: Z9 p  C7 J6 [
1. Make sure the processor's libraries have been generated.
2 ^# P! X- R) f, m5 k* C$ v2. Make sure that you are using the Standalone BSP as the software platform for your processor.2 _- ]- W5 k7 S4 P  `2 D
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 都是設對的
( v1 M0 l( F4 |! z, S$ W# o  a6 Y; l# W
google plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge
5 @* I$ A# z7 }% c請看datasheet 先
3 P; N1 i8 V5 i" o: |2 E$ q, V# p" Y+ U
"在#ifdef DEBUG 之前一行加#define DEBUG"0 Q+ ?- ?5 Q6 [$ ]# w
假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大
. a' g  G2 T3 ~! y8 s你可能要自行摸索. 我是沒有遇過這些問題
3 y  U, b: o: p$ ^6 j
$ C  r; Q: w8 x$ }# l3 V; sTCL 只是一個script 去產生&執行 elf; l& I6 ^! Z! _2 z

* V: j0 t5 n- P% nmrd 0x8c000000
6 }7 Z- @2 \! `${size} 可有可無
& ]8 p- X7 u0 z7 vmwr 0x8c000000 1234% I& U0 x7 Z( D. Q/ l! K
你在XMD下 跑了他應該會告訴你正確的使用方式
$ }6 ], b: N' a9 x6 N1 l$ O1 p4 R6 f; E: |; h- A" j1 C% I
我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先
. j2 C2 F2 \' d( `+ v% H+ Htry to isolate the problem first
9#
 樓主| 發表於 2009-6-5 14:46:34 | 只看該作者
原帖由 huanyu 於 2009-6-5 12:16 PM 發表 1 N0 a. O: c7 B4 n- M
自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的
, b+ U4 a8 \5 z
+ x+ y) h! d8 G$ ]1 \
這個已經確認是對的囉!因為可以使用其他FLASH了!
( R$ x. Q: V" I3 z3 g! Q' J6 \, n. s不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!
0 w: t2 [2 v5 y( b: ?(Unable to successfully query target part layout using CFI!), c) X& a$ R4 n. W5 a
現在要如何確認..2 p+ }5 ?$ l( h+ x0 g% Q2 R- i
1. mwr and mrd的內容是對的?
7 e; `- K* d% T* V3 H7 Z2. flashwriter該怎麼改?
/ _6 d3 R& v( w8 g
" e& Q# [( X: y/ e/ z) F[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
10#
發表於 2009-6-5 17:31:50 | 只看該作者
不同的flash設定也不一樣說 (就算實際的腳位一樣).3 F; j% k2 {* m0 @6 W3 F( C$ J

7 S8 l6 `9 A$ R7 y$ j& y7 Pmwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
; [) a# p0 X  a* a你試了之後再說你哪有問題0 h' I! C' D* I6 F- B9 n; ?" ]

( |$ E! s6 q* `4 [% Jflashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改$ |4 F, r" }8 e+ ?2 q
要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
11#
 樓主| 發表於 2009-6-6 23:44:14 | 只看該作者
原帖由 huanyu 於 2009-6-5 05:31 PM 發表 $ K' V2 \, e6 k4 i( ^
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
4 U/ ^0 A, o6 V你試了之後再說你哪有問題

* e- H) |7 ?; s0 G, b6 N! J9 q8 V: z: n% j' h; i+ Y' i5 i3 S
測試結果:" U8 c: j6 W0 O+ _
1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行
& I, G# W- K2 J+ _: _, I) h* K0 gmrd -> 可以讀到數值
4 c  u2 q* n9 y, L( ]mwr -> 測試改值,mrd讀回沒變?
9 @# _! q+ W/ ~" w3 |2 Q, ]2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作
. U% P/ a$ j& g( H2 umrd -> 讀到00 or FF
6 e1 W' q8 y. T4 m2 I' Umwr -> 測試改值,mrd讀回沒變
12#
發表於 2009-6-12 12:42:03 | 只看該作者
1,  你可能EMC部分參數沒設好& R9 i( H/ _6 ]0 n6 Y
你多是幾個不同的address( within emc memory address) 試試看 ; b: L" @# r# ~* \

) A1 a- L+ ?! n  {! w% m2.mrd 讀到 00 or FF 代表無法讀取那個address
& t0 K8 E9 A, R% ?7 O+ q* d0 s1 t所以應該是你設定有問題.
4 S- B, p% O5 T6 q% {" v2 U
, L( e, l2 }$ _) O2 V你可能要讀MX flash的datasheet 看是不是參數設錯
13#
 樓主| 發表於 2009-6-18 11:56:20 | 只看該作者
嗯!經由測量FLASH腳位確認之後,發現是硬體問題. s& `# \: ^4 l5 \- e
目前已經解決此問題囉!
; D. Z& @1 z$ I定義上是沒有問題的,謝謝大家關注
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-16 05:13 PM , Processed in 0.175010 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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