Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-30 21:23:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做Xilinx的板子,目前對這塊板子(Spartan-3A)還是無法正確的掌握
. t) L+ ~: C+ ^$ H7 o  B4 [6 @' n& r其中對於燒錄Parallel flash and SPI flash燒錄不太能理解
' W( V+ q' ?6 V* x3 r" `5 B2 A- H底下有幾個問題,請大家幫忙回覆囉!: F4 u" n+ L, x7 \! E

8 L& i0 S. L% S7 Z2 s1. Parallel+SPI flash要怎麼燒錄才能正確的使用bootloader功能
2 a9 I  G( O' W! v2. 利用內建EDK tools, flashwriter燒錄時出現如下訊息:
" Y, O% Q! ^1 e9 b# Q    Unable to successfully query target part layout using CFI!!
6 `7 ^0 e0 T+ o2 Z
    目前已經初步確認過腳位,不曉得還有哪裡要注意設定的? 2 B* ?' U$ B; e! Q- F6 b
    P.S:目前使用Spasion 29GL256P FLASH.
4 _! t+ i. ~' O3. 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)
* T  D$ Q9 ^& |# b5 U. R2. 如果腳位對了. EMC的設定要注意 (假如你的版子沒有XBD,你是用哪一張版子). 最好看一下EMC的datasheet.
9 W- w& t- f/ D8 ^可以在XMD底下 用CFI query 看看 回復的CFI data 有沒有正確/ _; C" h, ]! p! b3 L
3. + y3 u* n/ @5 n! H% E
EDK 是 system design
. Q6 R& w- D. s" {* b# E. U# dISE 是 core design
3#
 樓主| 發表於 2009-6-1 16:25:43 | 只看該作者
再度請問:
9 H4 _' Y# |4 a8 r! k
: d- ?9 s) U, k9 b1. 什麼是XBD啊? 現在我手邊的版子是Spartan-3A, 請問EMC是要設定什麼東西呢? 7 ]' v0 F* h0 d7 F
2. XMD底下,用CFI query怎麼看CFI data啊? 這個真的就不清楚囉! 可以指導下嗎?* `, T! f9 e% W+ r" I# E
+ j; J8 |) M, Z) N9 ^, K
貼下system.mhs的EMC設定) C- t  b; _) I$ [& ^  l
/ @6 G! U+ u# O$ K2 I
BEGIN opb_emc  T0 U6 s9 Q! L/ ~7 [! t
PARAMETER INSTANCE = FLASH_2Mx166 P/ y: c7 O: K$ l' o  G( O
PARAMETER HW_VER = 2.00.a
& v7 X& b+ Y3 S# y  A& [7 f$ r PARAMETER C_OPB_CLK_PERIOD_PS = 20000. X; ?# d$ H* m; l. q- M
PARAMETER C_NUM_BANKS_MEM = 1
- H% B# l+ U4 ]$ }1 C6 I3 {2 a+ x PARAMETER C_MAX_MEM_WIDTH = 16
5 J, V7 C  Q9 |+ V1 K- v PARAMETER C_MEM0_WIDTH = 16
4 o5 K: L, j- g; G( B3 a+ j PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1- b5 b: S; W+ Z+ A& w
PARAMETER C_SYNCH_MEM_0 = 0
" E: O' W0 q) c5 d- V" g PARAMETER C_TCEDV_PS_MEM_0 = 70000" J2 \! F4 i- k+ W4 Z
PARAMETER C_TAVDV_PS_MEM_0 = 700004 ^- g" j6 w' b- S. m+ I9 Z& I
PARAMETER C_TWC_PS_MEM_0 = 70000+ r# U' k" l( G8 L9 ^2 q! h
PARAMETER C_TWP_PS_MEM_0 = 450003 g- T& @7 d+ J
PARAMETER C_THZCE_PS_MEM_0 = 250000 o0 c- m! \4 }6 B  X( r
PARAMETER C_THZOE_PS_MEM_0 = 25000
3 g' Y) z" Q& y. I: A8 ^" G PARAMETER C_TLZWE_PS_MEM_0 = 5000
! g8 g8 N  @1 Q( x) n8 m& @ PARAMETER C_MEM0_BASEADDR = 0x42000000
" w# R' x) ^9 g. }5 d1 F PARAMETER C_MEM0_HIGHADDR = 0x43ffffff
, n; d8 }- U9 b, ~ BUS_INTERFACE SOPB = mb_opb
( x7 E0 L. b; Q$ X PORT OPB_Clk = sys_clk_s5 i3 g$ O- w  z- `( F, V/ _9 O: K
PORT Mem_A = 0b0000000000 & FLASH_Mem_A -> 這行是做什麼用途?% x, J9 ]+ b* l- ~
PORT Mem_DQ = FLASH_Mem_DQ
9 M! X, u7 |" o$ P, n- y PORT Mem_OEN = FLASH_Mem_OEN
2 O3 a" X  J% S5 O8 {$ @ PORT Mem_WEN = FLASH_Mem_WEN
* O$ o& A5 L0 b, X& R2 f, w PORT Mem_CEN = FLASH_Mem_CEN
) s; t& h5 _1 }6 Y" ]END. x/ q( o* V( `; [
7 X8 ?# v8 _( o' Y, t# s2 c
以上這樣設定對嗎?$ A) |& D! M# k  \! J  f' k0 _
& q9 i" J2 l8 z% Y
[ 本帖最後由 chchtono 於 2009-6-1 04:39 PM 編輯 ]
4#
發表於 2009-6-3 15:14:15 | 只看該作者
XBD=Xilinx Board Definition . |; t& P* a; o9 K4 x0 ?5 H
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題( A$ b/ u$ G; q. ~& G& P
你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...% g1 L7 ^" i1 L% H
  l2 q: w3 o' o! l+ x+ b, f- d
你現在是用opb bus
: J# I' E/ P' _  G. ^新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定+ J' S! n% b/ c* m" @% }& X
, B2 D. J3 a8 u! ^$ ~
2.  _9 V# \3 `' I
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了5 K, Z3 L2 c3 `! i
你可以用flashwriter的debug mode7 l; F% k1 t6 B; ~" t2 ]
改\EDK\data\xmd\flashwriter\src的defs.h 0 k2 [; R  F1 ~3 ~8 s
在#ifdef DEBUG 之前一行加#define DEBUG4 e9 Y# T! F' u, o" |( Y# g

! o: l; T0 E6 p4 Jxmd:" P. h+ n9 r2 Y
CFI query 基本上也是寫一個簡單C program 去讀寫flash
& O8 R6 {; {( ~2 \  z. ]: T; I; W或是4 _( q# y# ^1 }/ c& Y& P5 F7 T/ }
讀: mrd ${address} ${size}6 X4 z% a$ D5 n4 k- x
寫: mwr ${address} ${value}* H6 H* F  k2 z
: q1 q- b% S6 G+ ~7 H0 u1 _
[ 本帖最後由 huanyu 於 2009-6-3 03:37 PM 編輯 ]
5#
 樓主| 發表於 2009-6-3 21:12:49 | 只看該作者
XBD=Xilinx Board Definition+ S; ?# o( c3 ~# f, L# R6 j0 x
假如你的版子支援BSB wizard. 那EMC的設定應該沒有問題
  f2 H3 z! M) }! J* C" Q你是用哪一張版子(自己設計的還是XILINX的開發粄)阿? 跟哪一個版本的EDK...
4 N" e( Z5 D! s8 u3 j! \: M
5 j: Q/ M9 d. X( K# ?: r" p. p你現在是用opb bus; Q' I) j7 c& p  }6 Y6 Y
新版的EDK好像都是用PLB. 假如你是自行加OPB_EMC的話 你要bridge opb 跟 plb . 還有EMC的port跟parameter要設定. 我沒有辦法告訴你的parameter的設定對不對. 因為這些設定要對應flash本身的設定
- {, u& S+ D) V) c: s
) h6 P" ?) m. X6 N- w# L% G) t/ z
我使用的是自己設計的板子,開發版本為EDK 10.1.38 ?9 N  Y# L. a2 \6 V
想要請問一下,如果是OPB or PLB的設定,我該怎麼加入設定值?* S. D3 p. D) @
有資料可以參考嗎?
! j2 q& f* s# S! \
5 I& j5 a7 p' Q9 o$ {: @! ~8 ?. E) Q
也有可能是flashwriter 沒有支援你的 flash 或是 你flashwriter的參數設錯了" K* A& q) z' M& N
你可以用flashwriter的debug mode) X( x- u8 M' y; i' J
改\EDK\data\xmd\flashwriter\src的defs.h* w( E# D1 I; p& ~# c, S
在#ifdef DEBUG 之前一行加#define DEBUG+ u- E6 n. D$ W) C% Y$ R5 Y8 ?
- r0 U+ q6 m/ i0 L. W# S
xmd:* |( N6 M5 {  F! B) d
CFI query 基本上也是寫一個簡單C program 去讀寫flash4 O" i" Y* E1 \% |) B8 I  m/ t
或是
, L7 A/ v+ b) p4 u( K) _3 _7 d讀: mrd ${address} ${size}, u% J! j# H! L3 g  k, T; y
寫: mwr ${address} ${value}
0 w) M/ S" z/ c( B6 |

7 r8 J0 w  {  j; G1.我有修改過
/ n2 V, s- Z* ~" H4 c# O3 Z/ t: a\EDK\data\xmd\flashwriter\src的defs.h# A6 a( g4 w& {* T4 L
在#ifdef DEBUG 之前一行加#define DEBUG  ^$ ]. ^; A/ p) c7 @1 `$ p
不過在xmd視窗執行時,他就會說無法使用 (拿掉define居然又可用!)! y0 n1 v$ ~6 }1 _

8 m( Z! Q% ?- W( Z  D3 D3 e9 W2.flashwriter具體要修改哪幾個檔案?可以指導一下嗎?8 |8 C/ K: B' X8 r
我看了一下flashwriter.tcl,不曉得需要動到flashwriter目錄的哪個檔案rebuild才有用
  b0 d9 z) Q1 ~% K! a# y因為flashwriter.tcl好像是直接執行.elf檔案?1 K0 o+ P2 G# \3 ]
0 p! ]2 A1 U% `+ [2 d
3. mrd and mwr具體下指令是這樣嗎?
9 E/ ?7 Y5 o( Bmrd $0x8c000000 $0x80
4 e" U3 |2 |0 Vmwr $0x8c000000 $0x80
6#
 樓主| 發表於 2009-6-3 23:21:57 | 只看該作者
flashwriter這個小程式,不曉得有沒有人有經驗可以分享要修改哪些檔案?
, _9 |  ^5 f; j' d還有compiler這支程式可以套用進去支援新flash?% d6 \+ F1 d: \: o! R, j; o
感恩感恩..
7#
 樓主| 發表於 2009-6-4 11:05:34 | 只看該作者
在defs.h設定#define debug之後,compiler產生如下訊息:* e9 M& C$ G# I( V) }
ERROR: Unable to compile flashwriter application. Please check the following:
& t+ e1 b9 D$ J: D8 _1. Make sure the processor's libraries have been generated.
+ c9 I8 n5 [" y2 }2. Make sure that you are using the Standalone BSP as the software platform for your processor.
; ?3 e$ j, y% t9 \* H7 D- D3. 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 都是設對的: W0 G# ~6 w2 ^; C/ a

# {, B9 H  a0 l0 Z1 n* rgoogle plb2opb_bridge 或是查看你的EDK ipcore 內的 plb2opb_bridge
! O3 \/ G5 m% ^請看datasheet 先
5 b: V  n( E/ Y+ Z0 I( `& h! x: q. ]6 h; w% H& C
"在#ifdef DEBUG 之前一行加#define DEBUG"8 Z/ k) A) y1 n2 H. K
假如你的flashwriter 是在bram上執行的話 你要確定BRAM夠大
+ p2 l# B' M! ~9 d6 ]: V0 z% n7 s你可能要自行摸索. 我是沒有遇過這些問題# @  h# Y4 C" R: R1 F
+ {8 q5 G- J# d* q
TCL 只是一個script 去產生&執行 elf
+ `# A4 k/ d! p) o2 ]. h$ S7 ?2 S9 N! I" W, v
mrd 0x8c000000 1 h5 R. u5 y8 ^8 Z' [
${size} 可有可無
6 \# y# O, t; Q- @2 `mwr 0x8c000000 1234
1 v  E1 \# ^$ s2 F$ y% A3 p+ V& F你在XMD下 跑了他應該會告訴你正確的使用方式
" z( r, z" X0 U) R6 Y
5 U- q9 }) x, E$ z% I* j我覺得你先用XMD 去確認你的MB 可以讀寫EMC/flash 先0 S( W" e0 W: y- P% w2 {
try to isolate the problem first
9#
 樓主| 發表於 2009-6-5 14:46:34 | 只看該作者
原帖由 huanyu 於 2009-6-5 12:16 PM 發表
+ q6 A6 B( t7 U# L' P自己設計的板子你要確定你的UCF跟MHS port & parameters 都是設對的

  O+ U6 {' T% v" \
/ y) _* j5 K: _' X這個已經確認是對的囉!因為可以使用其他FLASH了!
' g% l( H+ }% y2 f! y( S不過現在更換成自己要使用的FLASH之後,產生無法抓取的問題!
, r& Z1 d' n; h/ b  r$ ^" e6 \(Unable to successfully query target part layout using CFI!)
5 y. w! {; l& U; F5 T$ d現在要如何確認..
6 R3 i- m3 D1 P; v1. mwr and mrd的內容是對的?2 ]+ I7 v( [8 p/ \& {# a
2. flashwriter該怎麼改?
, l' x& Z1 n# W' {2 L
: `% l) Y% m8 I/ W% y' a: B[ 本帖最後由 chchtono 於 2009-6-5 02:49 PM 編輯 ]
10#
發表於 2009-6-5 17:31:50 | 只看該作者
不同的flash設定也不一樣說 (就算實際的腳位一樣)., X/ h8 g! z0 y  _* N2 H9 {
7 Y; K5 a2 N, h4 X3 I- d
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual+ u5 H" N1 C8 f- Z* F* }0 t4 Y3 H
你試了之後再說你哪有問題0 o) L4 O1 B* X  S: q# h
! [* m" ]- J+ w9 d  r
flashwriter 的 source code 都在EDK內 你可以去看看 再想你怎麼改5 h9 n) r: x" n1 ]5 ~5 E& y( _) _& [
要不然你可以自己寫一個, 用EDK裡面的library - xilflash 去讀寫
11#
 樓主| 發表於 2009-6-6 23:44:14 | 只看該作者
原帖由 huanyu 於 2009-6-5 05:31 PM 發表 # G$ x2 h$ j0 }: ^' w4 `6 `3 M
mwr 跟 mrd 是MB的instruction. 不懂可以看MB的reference manual- v$ c; [2 F2 ^2 u5 ?/ ]
你試了之後再說你哪有問題

2 c% q6 b( h' R* k1 _9 s) a( ^  s5 P$ \6 p: Z5 T+ T4 H
測試結果:9 c& L* T/ }0 u8 L; ]' ?
1. Spansion S29GL256P (OK!) -> 修改原廠emc設定後才行
- O% ~8 A- U( {; x- Emrd -> 可以讀到數值
* E: g9 d9 T4 I% L' u) x, v( I0 N3 @mwr -> 測試改值,mrd讀回沒變?! i  L& x& S5 {* |8 q: H
2. MXIC MX29GL256 (CFI failure) -> 修改原廠emc設定後仍然無法動作# e" x0 a- O6 h, K* g! |
mrd -> 讀到00 or FF
3 R  E" W) ^& i% j; u, `+ r" rmwr -> 測試改值,mrd讀回沒變
12#
發表於 2009-6-12 12:42:03 | 只看該作者
1,  你可能EMC部分參數沒設好6 m. ]$ w3 q( V
你多是幾個不同的address( within emc memory address) 試試看
; _. K6 b6 M8 `: S  T0 s" }" W0 p6 w: e* o0 l, H# |: q9 F
2.mrd 讀到 00 or FF 代表無法讀取那個address
; z4 S3 Z9 h' T, U4 l0 e所以應該是你設定有問題.
4 G: {( y1 m! l$ z; i2 J; q. ^9 p7 a! O6 h( L# a5 ?$ X/ T, G3 E! r
你可能要讀MX flash的datasheet 看是不是參數設錯
13#
 樓主| 發表於 2009-6-18 11:56:20 | 只看該作者
嗯!經由測量FLASH腳位確認之後,發現是硬體問題6 d+ R! X" {* g8 N, v- z
目前已經解決此問題囉!
% s7 `+ n8 v; W/ Z+ m9 h( \定義上是沒有問題的,謝謝大家關注
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-8 11:19 AM , Processed in 0.153019 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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