小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

zynq[1] 礦板helloworld | hhuysqt

 奔跑的瓦力 2019-10-09

最近礦難,某寶某魚上都出現(xiàn)了大量礦機(jī)控制板。。。ASIC負(fù)責(zé)挖礦,控制板負(fù)責(zé)聯(lián)網(wǎng)、監(jiān)視、控制之類。控制板不乏有各種水果派,像香橙派、樹莓派、狗骨頭之類的所謂“極客玩具”在其之列,想必國內(nèi)水果派廠家活的是相當(dāng)滋潤。。。光靠極客教育哪有什么賺頭,極客大都很窮的,像我這樣看到這么便宜的“zynq開發(fā)板”,便忍不住要跟風(fēng)收一波垃圾了。。。

某魚上EBAZ4205控制板泛濫,它出自翼比特E9+礦機(jī)。它的老版控制卡EBAZ4203配置與其基本一樣。

ebaz4205
ebaz4205

下面一大坨都是計(jì)算卡,上面一小塊才是控制板

板子概況

ebaz4205
ebaz4205
主控 XC7Z010CLG400-1
內(nèi)存 256MB DDR3,EM6GD16EWKG或者M(jìn)T41K128M16
nand 128MB SLC
以太網(wǎng) 百兆網(wǎng)卡,IP101GA
供電 5V也行
其他 TF卡,UART1,2個(gè)風(fēng)扇口,14針jtag,3個(gè)20pin IO口

開發(fā)工程

SOC啟動(dòng)配置

ZYNQ系列的SOC集成了雙核ARM Cortex-A9和FPGA。整個(gè)SOC分為PS(processing system)和PL(programmable logic)兩部分。PS包括處理器、片上AMBA總線、存儲(chǔ)控制器、部分外設(shè)以及固定的IO口;PL就是FPGA。ZYNQ 7010處理器主頻可以到約600MHz,F(xiàn)PGA有約28K個(gè)LE。

zynq
zynq

ZYNQ的PS部分可以拋開PL部分而獨(dú)立運(yùn)行,因?yàn)镻S的外設(shè)都默認(rèn)綁定了一些IO口(MIO),內(nèi)存控制器之類的IO口還是不可更改的,這時(shí)候就可以像開發(fā)其他ARM SOC那樣去玩ZYNQ。MIO是有限的,一些外設(shè)端口沖突的話可以通過EMIO繞道PL將其引出,這時(shí)候就需要管PL部分了。

ZYNQ的啟動(dòng)分為三步:

  • BOOT ROM,根據(jù)引腳配置選擇從哪里啟動(dòng),如QSPI、nand/nor flash、SD卡等。將FSBL(first stage bootloader)加載到片上內(nèi)存里。7010的片上內(nèi)存有256k。
  • FSBL,初始化更多的MIO口,初始化DDR,還可以初始化PL部分,然后將應(yīng)用程序搬到DDR中。初始化部分由vivado直接生成,即那個(gè)上萬行的ps7_init.c。FSBL可以直接用Xilinx SDK的例子工程,相當(dāng)于這些工作都可以點(diǎn)點(diǎn)鼠標(biāo)就完成了。
  • 應(yīng)用程序。可以直接是用戶的應(yīng)用程序,也可以是又一個(gè)loader,比如uboot之類的,剩下的事情就由程序員自己做決定了。

應(yīng)當(dāng)指出,F(xiàn)SBL相當(dāng)于是uboot SPL的地位。在Xilinx uboot工程中,那個(gè)上萬行的初始化c程序就編譯進(jìn)SPL中去了,所以如果用SDK的FSBL就不需要uboot的SPL了。

這塊板子的R2577R2584電阻用于配置啟動(dòng)設(shè)備。把R2584焊到R2577上,將原來nand啟動(dòng)改為SD卡啟動(dòng)。

vivado
vivado

Vivado操作流程

利用Xilinx那套笨重的開發(fā)環(huán)境,helloworld工程完全可以用鼠標(biāo)操作出來,一行代碼都不用寫。。

首先新建個(gè)工程

一直next到選擇芯片。選xc7z010clg400-1

vivado
vivado

接下來就順著左邊欄Flow Navigator進(jìn)行操作。

vivado
vivado
Create Board Design

點(diǎn)加號(hào)添加ZYNQ7 Processing System:

vivado
vivado

雙擊出來的zynq7 processing system藍(lán)框框,配置PS系統(tǒng):

  • 添加nand控制器,默認(rèn)就行了:

    vivado
    vivado
  • 添加MIO設(shè)置。勾上ENET0、SD0、UART1。注意引腳配置:

    vivado
    vivado
  • 設(shè)置外設(shè)時(shí)鐘。把網(wǎng)口改成百兆的:

    vivado
    vivado
  • 設(shè)置DDR。幸好我們的MT41K128M16有默認(rèn)參數(shù)配置:

    vivado
    vivado

因?yàn)榘遄拥木W(wǎng)口通過EMIO引出,所以我們需要一個(gè)個(gè)手動(dòng)分配引腳。但是這個(gè)IP是GMII千兆網(wǎng)口,TX RX有8位,而百兆網(wǎng)卡用的MII接口TX RX只有4位,必須顯式地加兩個(gè)concat模塊來將8位轉(zhuǎn)為4位,否則多余的引腳引出了但是不分配IO口,最后生成bitstream時(shí)候會(huì)報(bào)錯(cuò)。

vivado
vivado

將GMII的TX、RX引到各自的concat模塊處,將GMII其他引腳以及MDIO引出:右鍵點(diǎn)擊Make External

vivado
vivado

FCLK_CLK0M_AXI_GP0_ACLK連起來,最后點(diǎn)擊上方欄的Run Block Automation完成剩下的工作。

vivado
vivado

完成后的效果:

vivado
vivado
左邊欄Generate Block Design

Generate Block Design,然后右鍵Source框下面的bd文件,Create HDL Wrapper

vivado
vivado
左邊欄Run Synthesis

先綜合一次,然后打開Open Synthesized Design->Constraint Wizard,分配引腳。這時(shí)需要新建一個(gè)constraint文件。

將網(wǎng)口的引腳都設(shè)置為LVCMOS33電平,然后逐個(gè)分配引腳。。。

vivado
vivado

設(shè)置完成后Ctrl-S保存,約束文件生成如下:

set_property IOSTANDARD LVCMOS33 [get_ports ENET0_GMII_RX_CLK_0]
...
set_property PACKAGE_PIN U14 [get_ports ENET0_GMII_RX_CLK_0]
set_property PACKAGE_PIN U15 [get_ports ENET0_GMII_TX_CLK_0]
set_property PACKAGE_PIN W19 [get_ports {ENET0_GMII_TX_EN_0[0]}]
set_property PACKAGE_PIN W18 [get_ports {enet0_gmii_txd[0]}]
set_property PACKAGE_PIN Y18 [get_ports {enet0_gmii_txd[1]}]
set_property PACKAGE_PIN V18 [get_ports {enet0_gmii_txd[2]}]
set_property PACKAGE_PIN Y19 [get_ports {enet0_gmii_txd[3]}]
set_property PACKAGE_PIN W16 [get_ports ENET0_GMII_RX_DV_0]
set_property PACKAGE_PIN W15 [get_ports MDIO_ETHERNET_0_0_mdc]
set_property PACKAGE_PIN Y14 [get_ports MDIO_ETHERNET_0_0_mdio_io]
set_property PACKAGE_PIN Y16 [get_ports {enet0_gmii_rxd[0]}]
set_property PACKAGE_PIN V16 [get_ports {enet0_gmii_rxd[1]}]
set_property PACKAGE_PIN V17 [get_ports {enet0_gmii_rxd[2]}]
set_property PACKAGE_PIN Y17 [get_ports {enet0_gmii_rxd[3]}]

然后再綜合一次。。。

左邊欄Run Implementation 和 Generate Bitstream

要跑一段時(shí)間。。。

輸出設(shè)計(jì)

File->Export->Export Hardware

記得勾上Include Bitstream。

進(jìn)入SDK

File->Launch SDK

SDK操作流程

首先需要新建FSBL。

File->New->Application Project,Next到Templates,選Zynq FSBL

sdk
sdk

然后它會(huì)自動(dòng)開始編譯。。。

然后才新建helloworld。。

File->New->Application Project,Next到Templates,選Hello World。它也會(huì)自動(dòng)開始編譯,不出意外的話就完事了。

最后生成啟動(dòng)文件BOOT.bin

左邊欄右鍵helloworld工程,Create Boot Image。可以看到這個(gè)啟動(dòng)文件包括了三部分:

  • fsbl
  • bitstream
  • 應(yīng)用程序
sdk
sdk
點(diǎn)亮板子

將一張SD卡格式化為fat文件系統(tǒng),將bootimage/BOOT.bin丟進(jìn)去,插上電就能啟動(dòng)了。

sdk
sdk
測(cè)試網(wǎng)口

SDK里面新建lwIP Echo Server工程,等它編譯完,生成BOOT.bin,拷到SD卡里。插好網(wǎng)線,在終端中telnet它的7號(hào)端口,輸入一行,回車,然后它就將你輸入的東西返回來了。。。

sdk
sdk
debugging
debugging
debugging
debugging

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多