Zynq Qspi控制器應用筆記

2021-09-11 18:29:57 字數 3333 閱讀 4692

原文:

zynq qspi控制器支援三種模式:i/o模式、線性位址模式和傳統spi模式,其中線性位址模式雙片選支援最大的線性位址空間為32mb,可通過ps dma讀取。

線性位址模式下io可以配置為單片選4bit介面、雙片選8bit並行介面和雙片選stacked 介面,單片器件時必須接到qspi0上。單片qspi flash線性位址對映空間為0xfc00_0000~0xfcff_ffff,若採用兩片,必須是同一生產廠家,保證協議相同,在配置為雙片選8bit並行介面時,兩片flash必須要是同樣容量同一廠家器件,保證訪問完全同步,定址空間為0xfc00_0000~0xfdff_ffff。

配置為雙片選stacked 介面時,容量可以不同,但必須是相同協議的器件。但第一片器件建議使用128mb器件,這樣不會存在位址空區。線性位址模式的讀操作極為簡單,在確保txfifo和rxfifo為空的情況下設定qspi.config_reg[man_start_en]和qspi.config_reg[pcs]為0,qspi.lqspi_cfg.[lq_mode]為1即可。

在io模式下,訪問qspi flash的命令、位址和資料都根據spi flash資料手冊的規定由使用者軟體組織寫到fifo中,控制器負責將其序列化後從匯流排發出。在io模式下,可選擇自動和手動兩種操作模式,手動模式下又有自動片選和手動片選兩種模式。自動模式由發資料轉為收資料時存在一定侷限,因此在實際使用中多為手動模式。

qspi控制器提供了四個可將資料寫到fifo的txd暫存器,如下表1所示。

表1 txd暫存器

暫存器資料格式

功能[31:24]

[23:16]

[15:0]

[7:0]

txd0

data3

data2

data1

data0/cmd

傳輸1byte命令3byte資料或4byte資料

txd1

保留保留

保留data0/cmd

傳輸1byte命令

txd2

保留保留

data1

data0/cmd

傳輸1byte命令和1byte資料

txd3

保留data2

data1

data0/cmd

傳輸1byte命令和2byte資料

這樣就提供了豐富的選擇,無論是按字寫、按位元組、按雙位元組三位元組都可以,但需要注意的是在不同暫存器間切換時需要等待fifo已經為空狀態。txfifo和rxfifo使用同乙個門時鐘,因此對於每乙個位元組,包括命令和位址,每從txfifo取出乙個位元組,乙個自己的資料也會寫入到rxfifo中。

需要特別注意的是,在io模式下,控制器自動識別使用者指令,在控制器使能,且片選有效的情況下寫入fifo的第一條指令被控制器認為是命令,命令總是通過資料線d0發出,命令+資料最長為4位元組,也就是說在發出讀寫命令時,有效位址位總是3位元組,只能訪問16mb位址空間。

控制器自動識別含義的命令如表2所示。

表2 控制器自動識別含義的命令

命令含義

描述read

讀資料,cmd=0x03

命令通過d0發出;資料通過d0接收

fast_read

快速讀資料,cmd=0xb

命令通過d0發出;資料通過d0接收

dor雙io讀資料,cmd=0x3b

命令通過d0發出;資料通過d[1:0]接收

qor四io線讀資料,cmd=0x6b

命令通過d0發出;資料通過d[3:0]接收

dior

雙io命令,四io資料,cmd=bb

命令通過d[1:0]發出,資料通過d[3:0]接收

qior

四io命令,四io資料,cmd=eb

命令通過d[3:0]發出,資料通過d[3:0]接收

pp頁程式設計命令,cmd=02

命令通過d0發出,資料通過d0發出

qpp四io頁程式設計命令,cmd=32或38

命令通過d0發出,資料通過d0[3:0]發出

無論是線性位址模式還是io模式訪問qspi,控制器均只支援表2所示的命令並自動切換控制器工作模式。在表2所列命令之外的,控制器均預設通過d0發出和接收。

zynq qspi flash控制器並不支援所有的qspi flash器件,因此在選擇qspi flash時必須滿足:

①   支援qor命令:bootrom預設方式;

不支援qspi flash器件見ug585 12.2.6小節的描述。

以鎂光的n25q512 qspi flash為例,簡要說明要點:

n25q512 qspiflash支援extended、dual和quad三種spi協議模式,預設為extended模式,預設模式即和zynq qspi 控制器訪問協議匹配。

n25q512 qspiflash共512mb的密度,分成4個bank,每個bank密度為16mb,可以通過extended address register或者切換到4位元組位址模式來對16mb以上的空間進行訪問。因為zynq qspi flash僅支援3位元組位址模式,因此訪問高位址空間時,通過切換extended address register來實現。通過該方式存在一定的風險,那就是bootrom只能訪問低16mb空間,為避免映象寫到高位址空間去,在每次用xilinx工具燒寫flash前一定要重新斷電重啟,使flash的extended addressregister恢復到預設狀態。

n25q512 qspiflash在erase、program和訪問內部暫存器前一定要先發出寫使能命令(06h);erase、program命令發出後一定要讀flagstatus暫存器。

n25q512 qspiflash,擦除可以是子頁擦除(4kb)、頁擦除(64kb)和die擦除(32mb)。一頁大小為256b,因此每個program命令只能寫256位元組的資料。

在使用qspi flash需要注意:

①    bootrom只能訪問低16m(單ss)或低32m(雙ss),因此映象必須儲存下可訪問空間內;

②    單ss時,啟動器件必須掛在qspi控制0上;

③    雙ss並行8bit模式時bootrom的搜尋步長是64kb,其模式為32kb,因此為減少搜尋時間,啟動映象最好從位址0開始。

xilinx提供裸機板級支援包、uboot驅動和linux驅動。

①   xilinx板級支援包例項:

/sdk/2015.2/data/embeddedsw/xilinxprocessoriplib/drivers/qspips_v3_2/examples;

②   uboot驅動:/u-boot-xlnx-master/drivers/spi/zynq_qspi.c

③   linux驅動:/dirvers/spi/zynq-qspi.c,說明文件在:

jmeter控制器 交替控制器

1.簡單使用 如下圖,設定1個執行緒,執行3次 執行結果如下圖 2.巢狀乙個控制器,不勾選忽略子控制器 測試計畫如下圖 巢狀乙個迴圈控制器,迴圈次數設定3次 執行緒組設定1個執行緒,執行5次 執行結果如下圖 總結 交替執行到迴圈控制器時,迴圈執行結束後,在進行下一次的交替。3.巢狀乙個控制器,勾選忽...

企業架構之應用控制器

在前端控制器中說到執行命令時,是用命令物件自己呼叫檢視,如果系統的規模較小,可以如此。但這並不是最佳的選擇,最好是盡可能地將命令和檢視分離開來。應用控制器負責對映請求到命令,並對映命令到檢視。這種分離意味著可以更加容易地改變檢視 即模板 而不用改動核心 同時,也可以改變應用程式的流程而不需要修改核心...

Pod控制器應用高階二

命令執行返回成功是成功的,如果返回狀態碼是不成功的 使用exec存活性探測 root master test kubectl get pod w name ready status restarts age client 1 1 running 0 1d liveness exec pod 1 1 ...