當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]Xilinx的開發(fā)環(huán)境我還是推薦Linux(這里默認(rèn)都是64bit系統(tǒng)),Windows的綜合和P&R的效率要比Linux低三分之一,這個(gè)不能忍,再就是petalinux的交叉編譯用啥呢,cygwin?

做點(diǎn)東西不容易,我這種有強(qiáng)迫癥的人也在這個(gè)環(huán)節(jié)屈服了。開發(fā)環(huán)境這兩年真是換了又換,被搞的精疲力盡。Xilinx的開發(fā)環(huán)境我還是推薦Linux(這里默認(rèn)都是64bit系統(tǒng)),Windows的綜合和P&R的效率要比Linux低三分之一,這個(gè)不能忍,再就是petalinux的交叉編譯用啥呢,cygwin?Linux發(fā)行版里面我用的是CentOS,Vivado推薦測(cè)試的那幾個(gè)我試過(guò)CentOS和Ubuntu。先說(shuō)Ubuntu,不好用,問(wèn)題比較多。CentOS最好的版本是6.5,但是6.5已經(jīng)在官網(wǎng)不支持了,替代的是6.6和7。先說(shuō)7,Vivado的開發(fā)環(huán)境沒有問(wèn)題,但是petalinux的環(huán)境始終有問(wèn)題,具體在這里,Unable to determine a suitable packaging system type。那最后就剩下6.6了,6.6也有一個(gè)小問(wèn)題,是eclipse的一個(gè)bug,eclipse cairo bug。網(wǎng)上你能找到的方法是在eclipse的配置文件加上一句disable cairo的話,但是這個(gè)在Xilinx的工具鏈中不管用,我試了好多Xilinx的eclipse的config文件,都不行。別的解決的方法下面我會(huì)說(shuō)。好,現(xiàn)在正是搭建環(huán)境:

 


 

開發(fā)平臺(tái)環(huán)境搭建

上邊說(shuō)了,我們用CentOS 6.6 64bit。裝的時(shí)候有個(gè)地方讓你選平臺(tái)的用處,你就選最后一個(gè),software development。裝別的也行,注意把一些開發(fā)環(huán)境和庫(kù)的選項(xiàng)都選上。裝好系統(tǒng)后可能會(huì)提示你更新,內(nèi)核也被更新了,你就更新吧。然后我們裝幾個(gè)庫(kù)1。

yum install dos2unix iproute gawk gcc git gnutls-devel net-tools ncurses-devel sftp-server zlib-devel flex bison libstdc++.i686 libgcc.i686 libgomp.i686 ncurses-libs.i686 zlib.i686 libselinux libselinux.i686

前邊幾個(gè)都是文檔里面說(shuō)的庫(kù),有些也用不到,比如tftp那個(gè),你不用tftp調(diào)試就不用。后邊也要裝上,要不然petalinux編譯的時(shí)候還是會(huì)有問(wèn)題。然后我們?cè)傺b兩個(gè)庫(kù),解決上邊說(shuō)的那個(gè)eclipse的bug。去rpmfind.net下載下面的兩個(gè)庫(kù):

cairo-1.10.2-3.el6.x86_64.rpm

cairo-devel-1.10.2-3.el6.x86_64.rpm

然后裝上,

yum localinstall cairo*.rpm

Vivado工具鏈安裝

這個(gè)簡(jiǎn)單,下載下來(lái)裝上就行,記得勾上 Install Cable Drivers。這里我用的都是2014.4的版本,下邊的Petalinux也是對(duì)應(yīng)的。記得source setTIng文件。

Petalinux開發(fā)環(huán)境

這個(gè)開發(fā)環(huán)境我們可以參考Xilinx Wiki上說(shuō)的那些方法,也可以直接用他們準(zhǔn)備好的Petalinux SDK工具鏈。這里我們選擇后者。安裝也簡(jiǎn)單,去官網(wǎng)下載下來(lái)然后裝上就好。BSP你可以下載下來(lái)裝上玩玩,我們這里不用下這個(gè),我們自己建一個(gè)就好。大家可以參看Xilinx的官方文檔,ug1144,里面有詳細(xì)的說(shuō)明。我們也只是按照說(shuō)明走一遍,然后給出一個(gè)例子,讓大家快速上手。

一個(gè)例子

這里給大家展示一個(gè)例子,跟Zynq CTT ug873里面的差不多,但是這里我們用了Vivado,并且結(jié)合了Petalinux SDK的開發(fā)流程。不過(guò)我建議大家多看help,這里還有一個(gè)Petalinux的command reference供大家參考。我們開始:

建立一個(gè)petalinux的project

petalinux-create -t project --name poll

cd poll

在當(dāng)前目錄就會(huì)建立一個(gè)poll的文件夾,這就是我們的工作目錄,后邊的所有操作如果不特別指出,都是在這個(gè)工作目錄的根目錄進(jìn)行的。里面還缺hardware platform,driver,還有我們的applicaTIon。我們一一補(bǔ)上。

創(chuàng)建一個(gè)hardware platform

這里我給大家準(zhǔn)備了一個(gè)TCL文件,下載(戳這里下載),然后放到project的根目錄。這里注意,我都是在Vivado 2014.4和ZC706環(huán)境下做的,要是你的環(huán)境不同,要做出適當(dāng)?shù)男薷?,板子不同改?chuàng)建工程的那兩句話。Vivado版本不同改所有IP的版本,或者你自己建一個(gè)也行,這個(gè)系統(tǒng)就是一個(gè)PS然后一個(gè)MicroBlaze,然后還有個(gè)BRAM。后邊還得給MB寫個(gè)程序。這里有個(gè)系統(tǒng)圖你可以參考下,注意保證BRAM的起始地址是0x40000000,MB和ARM都得一樣才行。?

 


 

最后運(yùn)行:

vivado -mode gui -source ./system.tcl

然后Vivado就是啟動(dòng),等右上角的那個(gè)進(jìn)度條走完,bitstream文件就會(huì)生成好了。機(jī)器不同,時(shí)間可能不同,我的機(jī)器大約5分鐘。

生成系統(tǒng)的時(shí)候看著特別爽吧,哈哈,duang duang的生成完了。Vivado比ISE增加了tcl,在自動(dòng)化的時(shí)候還是很爽的,不用像原來(lái)ISE分析那個(gè)系統(tǒng)描述文件來(lái)自動(dòng)生成系統(tǒng)。其實(shí)下邊的SDK的過(guò)程也可以全程自動(dòng)化,但是有點(diǎn)麻煩,需要修改SDK的xml文件然后調(diào)用xsdk去build就行。這里就不說(shuō)了,爽到底就沒意思了。

然后我們就可以File->Export->Export Hardware,記得勾上Include bitstream。然后File->Launch SDK,我們就進(jìn)入到下一步了。

給MicroBlaze寫個(gè)程序

MB的這個(gè)程序主要的功能就是不斷的把BRAM中一個(gè)地址的數(shù)值傳到另一個(gè)地址,后邊在ARM運(yùn)行的Linux會(huì)把這個(gè)BRAM當(dāng)做一個(gè)外設(shè),然后要對(duì)其寫個(gè)driver。不要MB也行,有個(gè)好玩嘛,異構(gòu)系統(tǒng),heterogeneous,多高大上。。。哈哈。給MB建一個(gè)空的ApplicaTIon Project,名字叫poll吧,然后添加一個(gè)main.c的文件到工程中,main.c里面復(fù)制上這些代碼:

/*

* main.c

*/

#define BRAM_ADDRESS 0x40000000

int main(void) {

volaTIle int *bram = (int *)BRAM_ADDRESS;

while (1)

bram[1] = bram[0];

}

然后保存下,SDK就編譯好啦。下面要做的事情就是把編譯生成的ELF文件和系統(tǒng)生成的bitstream文件組合在一起。這樣bit文件下載到板子里面,這個(gè)程序就可以直接運(yùn)行了。這里有個(gè)簡(jiǎn)單的方法,選Xilinx Tools->Program FPGA。把下面的ELF File to Initialize in Block BRAM 選擇成我們生成好的poll.elf,下拉下就找到了,一般在Debug下邊(大就忍了吧)。然后點(diǎn)那個(gè)Program,然后出來(lái)下一個(gè)對(duì)話框后,點(diǎn)Cancel。這樣,我們就騙SDK把我們要的那個(gè)download.bit文件生成出來(lái)了,然后我們不用這個(gè)下載。你們注意下邊的Console選項(xiàng)卡,會(huì)有剛才這個(gè)合成調(diào)用的命令updatemem,原來(lái)是data2mem,不過(guò)模糊有印象哪里說(shuō)過(guò)前者會(huì)更好一些。

配置一下Petalinux

剛才創(chuàng)建的Petalinux project是沒有硬件的描述信息的,這會(huì)我們就把我們生成的硬件描述信息配置到Petalinux里面去。很簡(jiǎn)單,運(yùn)行這個(gè):

petalinux-config --get-hw-description=./hardware/hardware.sdk/system_wrapper_hw_platform_0

然后會(huì)出來(lái)個(gè)配置界面,我們直接選Exit,然后保存配置就可以了。系統(tǒng)會(huì)被自動(dòng)配置好。詳細(xì)的說(shuō)明看上邊說(shuō)的那個(gè)reference guide。

創(chuàng)建Linux Kernel Module

接下來(lái)我們需要對(duì)剛才創(chuàng)建的那個(gè)PL上要program的硬件系統(tǒng)寫一個(gè)驅(qū)動(dòng),主要就是對(duì)那個(gè)BRAM的兩個(gè)location進(jìn)行的訪問(wèn)。先創(chuàng)建一個(gè)module的工程吧:

petalinux-create -t modules --name poll_driver --enable --force

創(chuàng)建好的module的模板會(huì)在components->modules->poll_driver。這里已經(jīng)有一個(gè)poll_driver.c,然后還要建一個(gè)poll_driver.h文件。下載這個(gè)zip文件,里面有這兩個(gè)dirver文件和下一步要用的app文件。(戳這里下載)。都是參考CTT寫得啦,他們也參考了另一個(gè)網(wǎng)站,上邊給了比較簡(jiǎn)明的教程,寫了個(gè)char的device driver。

創(chuàng)建Linux Application

這一步我們就創(chuàng)建個(gè)在petalinux上運(yùn)行的程序,然后會(huì)調(diào)用剛才的那個(gè)driver。還是先建個(gè)app的工程:

petalinux-create -t apps --name poll_app --enable --force

app的模板會(huì)在components->apps->poll_app。把上一步那個(gè)壓縮包里面的poll_app.c替換到這個(gè)生成的app目錄里面。好啦,到目前為止所有的軟硬件的創(chuàng)建工作就完成了,下面就得編譯fsbl,device_tree, uboot,kernel,module和app了。我也不會(huì)分開弄了,Xilinx Wiki上的是分開弄的,好復(fù)雜的說(shuō)。

編譯生成所有image文件

上邊說(shuō)了那么復(fù)雜,Petalinux SDK里面好簡(jiǎn)單的。

petalinux-build

可能需要點(diǎn)時(shí)間,等一會(huì),哈哈!再修改編譯就快了。

生成image文件會(huì)在./image/linux里面,modules和apps會(huì)在./build/linux/rootfs/modules和./build/linux/rootfs/apps里面。但其實(shí)./image/linux下面的rootfs (或者kernel image,我不確定)里面已經(jīng)有我們編譯好的modules和apps了。

生成boot文件

這一步得生成啟動(dòng)需要用得boot文件:

petalinux-package --boot --fsbl ./image/linux/zynq_fsbl.elf --u-boot --force

生成pre-built文件夾

這一步主要是方便后面的boot的,其實(shí)上一步已經(jīng)生成了我們可以boot zynq的所有文件了,但是養(yǎng)成好習(xí)慣,我們生成一個(gè)pre-built文件夾,把image和bitstream文件都包含進(jìn)來(lái)。

petalinux-package --prebuilt --fpga ./hardware/hardware.sdk/system_wrapper_hw_platform_0/download.bit --force

好了之后可以看到工程根目錄下生成了一個(gè)pre-built,然后./pre-built/linux/images和./pre-built/linux/implementation下分別是軟件和硬件的文件。

啟動(dòng)zynq board

好啦,終于倒數(shù)第二步了,所有的文件都已經(jīng)生成完了,啟動(dòng)zynq有好多種方法,因?yàn)槲覀冇衎itstream文件,所以介紹兩種可以下載bitstream文件的方法,也是兩種啟動(dòng)linux kernel的方法。就是SD和JTAG,還有些別的方法,參看文檔。我就不用了,無(wú)論哪種方法先把板子上的SW4配置成 off和on。其實(shí)SD卡啟動(dòng)不用,但是方便就都配置成這樣就行了。在這之前還得裝一個(gè)看UART的小工具,用minicom就挺好。

yum install minicom

第一次運(yùn)行su模式minicom -s,配置一下Serial port setup,Serial Device改成/dev/ttyUSB0(我的是0,你的不一定)。然后115200 8N1。Hardware Flow Control設(shè)置成No就可以輸入字符到zynq上啦,我會(huì)亂說(shuō)。

第一種SD卡引導(dǎo)啦(加粗顯得正式一些。。)

先格式化一張SD卡成FAT格式,然后把這三個(gè)文件都考到SD卡上的第一個(gè)分區(qū)。

./pre-built/linux/images/image.ub

./pre-built/linux/images/BOOT.BIN

./pre-built/linux/implementation/download.bit

然后配置一下板子上的SW11成00110,0就是開關(guān)掰到下邊,1就是上邊。這樣板子就進(jìn)入了SD卡啟動(dòng)的模式。把SD卡插進(jìn)去,重啟電源就行啦!然后啟動(dòng)minicom,用戶名和密碼都輸入root就進(jìn)入系統(tǒng)啦!

第二種方法JTAG

調(diào)試的時(shí)候用JTAG了,不用一遍一遍的插拔SD卡了,多方便。發(fā)行的時(shí)候用SD卡模式了。同樣,SW11先配置成00000。然后重啟下zynq的電源,清空原來(lái)運(yùn)行的系統(tǒng),要不然會(huì)有錯(cuò)誤哦,你又知道了。。然后我們執(zhí)行:

petalinux-boot --jtag --prebuilt 3

稍等片刻,download.bit會(huì)先被下載到板子里面,然后kernel會(huì)被加載。然后輸入用戶名密碼,系統(tǒng)又進(jìn)去了。迭代開發(fā)的時(shí)候要記得生成pre-built啊,還得重啟zynq電源啊。

Finally!!下載PL,加載module,運(yùn)行我們的程序了

終于最后一步了,肚子好餓。如果上一步你用的JTAG啟動(dòng),就不用再下載bitstream了,如果SD卡啟動(dòng),我們先把bitstream下載到板子里面。進(jìn)入到Petalinux的系統(tǒng)之后,運(yùn)行這個(gè),很神奇的。

mount /dev/mmcblk0p1 /mnt

cat /mnt/download.bit > /dev/xdevcfg

下載完啦。。用得是zynq上得PCAP啊。

接下就是加載我們的module:

insmod /lib/modules/`uname -r`/extra/poll_driver.ko

一般會(huì)輸出printk里面的東西了,如果沒有就運(yùn)行:

dmesg

或者

cat /var/log/dmesg

最后就可以看到kernel的輸出了。這里要看的是中間有那么一句話,我們需要知道m(xù)odule加載被分配的major device number。我這里是245,還要再創(chuàng)建一個(gè)設(shè)備節(jié)點(diǎn),后邊的app會(huì)用到。

mknod /dev/poll_dev c 245 0

然后/dev/poll_dev就被創(chuàng)建出來(lái)了。

最后的最后了。。運(yùn)行我們創(chuàng)建的程序:

很簡(jiǎn)單,很簡(jiǎn)單。。

/bin/poll_app

整個(gè)流程終于結(jié)束了。。。

后記

萬(wàn)里長(zhǎng)征第一步而已,入個(gè)門。還有很多的問(wèn)題,比如debug,大家多多交流。

最后,推薦一本書Embedded Linux Primer: A Practical Real-World Approach,作者:Christopher Hallinan。 資深工程師寫得書,通俗易懂,入門必選。

Petalinux Tools Documentation Reference Guilde:UG1144的page 9-10推薦的庫(kù)。

『本文轉(zhuǎn)載自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系刪除』

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉