Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-30 21:23:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握
3 j$ K7 v& Z% V, x8 |; |其中對於燒錄Parallel flash and SPI flash燒錄不太能理解% c9 Z0 U5 E8 w$ z. o, X# E0 |
底下有幾個問題,請大家幫忙回覆囉!* g' S6 ^5 O# n) E4 P
& [( \9 R" @0 J  i: q0 Y
1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能4 p  X# M& d# x- @8 ~4 O
2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:( v7 f. I" _) T- d& U4 @
    Unable to successfully query target part layout using CFI!!0 Z, H; {& Q& x: D8 x) l
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的?
6 O/ h, g% Q4 t: a: C6 [    P.S:目前使用Spasion 29GL256P FLASH.
$ T  L" B9 ]0 Z( P. y/ u3. 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); n5 K, K9 r( R+ {# Z8 W
2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet. ( Z6 j( i/ W$ u. `3 O
可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確
; M3 \! }3 b6 P/ ]7 u3.
7 l8 j3 \: K0 WEDK 是 system design8 f& T" S$ p% U5 j6 m
ISE 是 core design
3#
 樓主| 發表於 2009-6-1 16:25:43 | 只看該作者
再度請問:' s" {$ o% m4 v8 X# d
+ u2 C% @3 B& R) d
1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢? 1 S+ m$ G) ]9 c" L
2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?
  R& ^7 Q; Z7 `) s' C+ r  y
, n8 d' b, U# G; \貼下system.mhs的EMC設定
( z, h$ `, e) G7 n# e+ f) d- z* y4 A: ]( x
BEGIN opb_emc+ k0 f* R% [5 }3 D0 a* G
PARAMETER INSTANCE = FLASH_2Mx16# T6 X( e6 ~7 g" v$ B! H' b
PARAMETER HW_VER = 2.00.a
7 J$ h, P( j# Z PARAMETER C_OPB_CLK_PERIOD_PS = 20000% T# t) N2 k9 M
PARAMETER C_NUM_BANKS_MEM = 1
0 Z8 m1 m/ _1 `9 X2 z9 Z9 P- | PARAMETER C_MAX_MEM_WIDTH = 16! e7 p# `( e9 L2 d, G* V
PARAMETER C_MEM0_WIDTH = 16( @. g2 i8 D$ g& [8 c$ W+ b% P
PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 12 [" F+ v6 h5 O( A5 p. V5 U4 q
PARAMETER C_SYNCH_MEM_0 = 03 S* {* \3 m' ^! r% s# C0 ?6 B, \
PARAMETER C_TCEDV_PS_MEM_0 = 700009 q2 L0 X+ C! `5 j
PARAMETER C_TAVDV_PS_MEM_0 = 700001 l' s, i+ K6 q9 X. W: A0 c
PARAMETER C_TWC_PS_MEM_0 = 70000- S1 I7 |0 t& |4 L# E: x% K! |4 g
PARAMETER C_TWP_PS_MEM_0 = 45000! c& [/ g6 f, _) r' W
PARAMETER C_THZCE_PS_MEM_0 = 250000 {% S% K  Q  E% S# m1 ?
PARAMETER C_THZOE_PS_MEM_0 = 25000! x! |/ n5 Y! ?3 @) v  p
PARAMETER C_TLZWE_PS_MEM_0 = 5000
; L! ^* q# D1 g% l" b PARAMETER C_MEM0_BASEADDR = 0x42000000, G# c" b% `8 S1 ?
PARAMETER C_MEM0_HIGHADDR = 0x43ffffff
# e1 @" E- M& ~8 S8 c$ } BUS_INTERFACE SOPB = mb_opb5 T! `) D7 [" n; ]7 E
PORT OPB_Clk = sys_clk_s
1 ]# E: E+ x$ ~ PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?! B3 Z1 K' D  i$ V! y
PORT Mem_DQ = FLASH_Mem_DQ
$ ^  Y; b& U- R- H- @ PORT Mem_OEN = FLASH_Mem_OEN* b& T6 V& M/ a% u* S
PORT Mem_WEN = FLASH_Mem_WEN
$ S8 j' N' ?: _" G+ w) g' ? PORT Mem_CEN = FLASH_Mem_CEN
( y- h9 i0 ]0 u1 ~5 `END/ X# t$ R' Z4 @! q; V. P8 N
/ A/ X' u- T5 ]* |* X' f
以上這樣設定對嗎?  [* K  g0 K/ h, Q

( x" t! |* U: |. E# e# W2 _, l9 W% Z[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
4#
發表於 2009-6-3 15:14:15 | 只看該作者
XBD=Xilinx Board Definition & Z* B) _& z1 o3 }$ D# Z" j: @
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題
1 E7 f/ @& i6 Y( _% k' e# i你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
9 j8 v/ i$ |% g
) P& \! U  U' O' D; B你現在是用opb bus/ b; v- L5 n' d9 h+ E& @" o7 ~
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
6 B& O3 C9 q# P! k/ l: @0 q% w' F! s& A; ~- Y$ o0 b& @
2.; Z$ c8 N: z8 s8 [; z( o4 j
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了" h5 B% G& N, h
你可以用flashwriter的debug mode
6 D$ X+ r" f1 W: s6 _6 }1 f' j改\EDK\data\xmd\flashwriter\src的defs.h
2 W& `6 |, D# r+ U7 m0 R在#ifdef DEBUG 之前一行加#define DEBUG9 G3 d6 o' a7 J; q+ G1 b2 q/ l2 R1 s
8 g$ i# P9 N1 r! _- i
xmd:# O7 x0 ?* H4 ~: [
CFI query 基本上也是寫一個簡單C program 去讀寫flash
$ E! L) l, v" i8 M0 Y+ B或是
7 `( ^4 Q- ]* [讀: mrd ${address} ${size}
9 h/ K) ]1 [% O" t; T5 v5 G2 w' w寫: mwr ${address} ${value}
0 V4 {( D- Q- u1 f( }  m/ [. ~( `+ p$ t& D" H+ O9 ~
[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
5#
 樓主| 發表於 2009-6-3 21:12:49 | 只看該作者
XBD=Xilinx Board Definition" ~" [' }5 r$ T- j
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題
! ^5 d6 b1 ]4 N; I6 f+ A& V你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
2 A2 M. e* Q' h, Q3 _  t: h- ?& k0 B. x
你現在是用opb bus6 j. C8 n7 H6 M2 x' X  i
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定

4 {" u3 Y% h  y9 @9 `- o% ^' B; j0 _& ]4 a% Y
我使用的是自己設計的板子,開發版本為EDK 10.1.3; l; C9 j0 D( y2 f6 J8 A; q$ u
想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?
% s4 a  {3 b" g% [有資料可以參考嗎?1 Z7 o; E+ u4 U

/ n+ l0 V5 ?6 K/ z. r
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了% E7 z# T# T- c
你可以用flashwriter的debug mode" f, N, }4 S9 ~
改\EDK\data\xmd\flashwriter\src的defs.h: \( |7 m% J9 ^9 f; z
在#ifdef DEBUG 之前一行加#define DEBUG
. \5 D5 M6 n% B9 c/ q
3 {8 s! \6 e7 n2 b  Mxmd:
2 a4 S7 z! r- {) x" X, \' uCFI query 基本上也是寫一個簡單C program 去讀寫flash( F! F: e$ H2 R' {3 U+ V& {& N& ?
或是
9 u  X( B" V  O9 |7 }1 w讀: mrd ${address} ${size}
# r- Z0 w) G; L# u6 [: f$ S1 Q寫: mwr ${address} ${value}
! H; b$ {8 X9 P2 m5 R/ L! z
  K3 ]! A" V$ Z
1.我有修改過4 E) Z5 R- Y- |- A, _
\EDK\data\xmd\flashwriter\src的defs.h0 n* p" h% m* a. {6 n* a
在#ifdef DEBUG 之前一行加#define DEBUG
5 w9 }( ]" g5 _# ^不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)
) I( k" B, H  H; k
, J/ ~2 D6 T2 J. K2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?+ }& C7 e3 C7 ?/ B; F. m
我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用9 E. p( e3 I' u; ~
因為flashwriter.tcl好像是直接執行.elf檔案?
" |' O: R' [+ _* b# m, v! V* A' w5 x3 K- n. T
3. mrd and mwr具體下指令是這樣嗎?
+ r- `2 Z5 ~3 Q! xmrd $0x8c000000 $0x803 m. V$ ^. a- M6 k3 `+ k$ w
mwr $0x8c000000 $0x80
6#
 樓主| 發表於 2009-6-3 23:21:57 | 只看該作者
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?$ c+ h$ H6 {4 N+ p; C
還有compiler這支程式可以套用進去支援新flash?
# X3 g5 Z: v- {/ L* @4 ~感恩感恩..
7#
 樓主| 發表於 2009-6-4 11:05:34 | 只看該作者
在defs.h設定#define debug之後,compiler產生如下訊息:
7 y* i4 T  V& t7 J3 w( M5 MERROR: Unable to compile flashwriter application. Please check the following:
( V! [+ v' ]# q: B( B$ _, l1. Make sure the processor's libraries have been generated.& D& T# A. E( F' q4 s: R
2. Make sure that you are using the Standalone BSP as the software platform for your processor.
0 `- s8 `# O2 v8 f5 Z3. 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 都是設對的7 k8 \; T  s8 V; w3 [0 B
8 }4 E) k8 }! f4 s6 J( S
google plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge. j9 L# q6 }  W5 m5 a8 g: I  f; S" e
請看datasheet 先- R: N" |3 J* n2 \% A7 g! c& B

  }% q: u0 P3 J* p0 K"在#ifdef DEBUG 之前一行加#define DEBUG"6 l9 Y6 k7 P4 G
假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大
! s, O, M1 y" A; C你可能要自行摸索. 我是沒有遇過這些問題
% p' M7 H% B/ Y$ o5 A4 y
0 {+ `1 ~  O' h0 e- a+ T# |& sTCL 只是一個script 去產生&執行 elf
, L* F; Y7 b* s, n) G/ n
& z( _; E3 q, u: nmrd 0x8c000000
! f+ S# n( Y5 B$ F  |7 k  |7 X! v${size} 可有可無8 {9 Z! R* U5 h: L2 k5 ]: p) v& l' @
mwr 0x8c000000 12347 h2 N, R# b5 u% W* X
你在XMD下 跑了他應該會告訴你正確的使用方式; v/ b/ O, n" Z7 S  Y  D
# w( |5 O; [0 \# ?3 ?$ o
我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先3 u1 O. T# R+ Q8 w4 t
try to isolate the problem first
9#
 樓主| 發表於 2009-6-5 14:46:34 | 只看該作者
原帖由 huanyu 於 2009-6-5 12:16 PM 發表
1 X* V* R2 ]* C% |1 Z* m4 b# m自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的

) v% z/ y* b3 R/ s
6 A/ j* ]7 v- m這個已經確認是對的囉!因為可以使用其他FLASH了!8 T) h( P5 E; L" k" ~4 W
不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!' t) H8 B- X. g+ B6 A# U" m
(Unable to successfully query target part layout using CFI!)
9 Z4 R- Z1 S; Q# u; }1 [( x7 z% M現在要如何確認..$ y. }1 l' m5 Z3 C/ d) F% W
1. mwr and mrd的內容是對的?- m' i% p% f7 _2 |  ^4 U* K: z* D
2. flashwriter該怎麼改?5 @: z: E  ?1 u3 ]' Z- f4 I# O6 H& j

9 n7 }5 [1 @# a; s' g' [, D) t" y[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
10#
發表於 2009-6-5 17:31:50 | 只看該作者
不同的flash設定也不一樣說 (就算實際的腳位一樣).
# p9 o% e" G0 p9 \* v# t$ ]& c
$ L' \5 {0 u; V% [# c+ \$ G/ Cmwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
. b* E9 z6 [. d  n! y; t  w你試了之後再說你哪有問題' P" Q" a. T! K% I! o" g- p/ s
$ Q  Y/ o" B8 j: m& i  }
flashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改+ {+ c% R4 }3 p3 O3 T, P# b
要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
11#
 樓主| 發表於 2009-6-6 23:44:14 | 只看該作者
原帖由 huanyu 於 2009-6-5 05:31 PM 發表
9 M. |* Q$ c2 [# B2 O2 Lmwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual
  `# c* j2 _1 b3 ^你試了之後再說你哪有問題
8 J8 N  J* ?* M& {

0 n, @1 z8 J3 R測試結果:0 ?5 j; n# w; ^3 m& m; J2 J. U+ M
1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行& T. R- K7 F6 |
mrd -> 可以讀到數值
& J' \8 d) F5 C1 ymwr -> 測試改值,mrd讀回沒變?
  O0 p( b- r  Y3 U" J+ o2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作
$ A- ]- y7 q- v% Imrd -> 讀到00 or FF
( }- F5 N, q/ R2 i! N8 T) q' A1 |9 emwr -> 測試改值,mrd讀回沒變
12#
發表於 2009-6-12 12:42:03 | 只看該作者
1,  你可能EMC部分參數沒設好
7 @' }  u+ z: \% Q2 V你多是幾個不同的address( within emc memory address) 試試看 ; Y! f+ ~* U% [
1 K9 D  F1 B' P" @1 ^5 u2 N: L
2.mrd 讀到 00 or FF 代表無法讀取那個address. m0 v/ C& m! L/ N: t
所以應該是你設定有問題. 0 q- v, U" \1 _; W( R1 G' @/ s
/ A/ v2 l( G( J
你可能要讀MX flash的datasheet 看是不是參數設錯
13#
 樓主| 發表於 2009-6-18 11:56:20 | 只看該作者
嗯!經由測量FLASH腳位確認之後,發現是硬體問題
, X. e! r# h5 H. s  f9 x目前已經解決此問題囉!
+ G# j% ^/ G% Q, e1 Q6 ^  p+ c定義上是沒有問題的,謝謝大家關注
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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