EDK之路(2)——GPIO之SDK篇
在上篇文章中,說明了一下一個簡單的GPIO工程的XPS部分。XPS部分的建立說明我們的硬體平台已經搭好,類似已經做好單片機了。接下來就是在這個「單片機」中運行我們的軟體程序,即SDK部分的操作。
SDK部分
在導出到SDK時,最好新建一個sdk_workspace文件夾,這樣方便文件的管理。
關於bsp的建立,C工程的建立這裡就不再說明了。
建立好這些後,下面就要開始程序的編寫了,這時我們需要用到各種API函數來實現我們的預期功能(當然,直接通過寄存器地址操作寄存器也可以,但是使用API函數的話會方便許多)。API函數以及相關IP核驅動的說明和例子都可以在bsp中的.mss文件中查閱
下面我就通過一份代碼來說明一下程序如何編寫。
1,首先要include一些相關文件,include的文件可以在bsp->microblaze_0->include 中查看。
xparameters.h 是每個工程都必須要include的,裡面包含了各個IP核的相關參數,尤其是我們添加的IP的參數尤為關鍵。如下圖,可以看到DEVICE_ID 以及BASEADDR等數值,這些在使用相應GPIO時都會用到。
xgpio.h是GPIO的驅動文件,要使用GPIO的API函數的話,則需要將它include進來。
xil_printf.h。提供列印信息函數。如在程序中有兩種列印信息函數:
print("begin to initial GPIO
");
xil_printf("the num is %0x.
",led_display[i][1]);單純的只列印一行字的只需要使用print。而如果需要列印含有變數的信息,則需要使用xil_printf或者printf。又printf可以列印浮點數據,xil_printf只能列印定點數據。但xil_printf佔用的程序空間會小很多,建議使用xil_printf.
2,宏定義部分,為的是簡化程序的編寫,以及增加程序的可讀性
3, 在使用所有添加的IP核時,都需要先實例化。
4,使用IP核時,第一步操作就是初始化,具體操作以及返回值等參考相關API函數。後面的程序也是如此。
編寫完成後即可自動編譯,最後下載到板子即可。
關於下載,說明一下相關問題。如圖點擊進去。
出現下面列表,這表示各種下載方式,理論上選擇「auto detect」就好了,但是有些時候選該選項會出現下載不了的問題,這時候就需要選擇相應的下載方式了。
關於下載方式也有很多種:
1,通過SDK裡面的Program FPGA下載
2,通過xilinx的iMPACT或者digilent的Adept。選擇sdk_workspace里的硬體信息的文件夾,裡面會有個download.bit文件,按照ise下載的方法下載即可。
3,通過xps下載,有時我們在xps中修改了硬體信息,而SDK中的內容並沒有更改,這時我們就沒必要再到SDK中進行下載了。
首先,如下圖,我們要先選擇一個elf文件編譯到download.bit文件中(配置好後,以後的操作則不需要再進行這一步了),elf即軟體層的可執行文件,很多時候我們把download.bit文件下載到板子里後發現沒反應,這時候很有可能就是因為裡面沒有編譯elf文件進去,導致沒有軟體程序在運行,必須在SDK中點擊run來運行軟體程序。而如果download.bit中包含有elf文件,則板子載入完download.bit後,會自動運行軟體程序。
注意elf文件的路徑,在C工程的debug文件夾里。
編譯好的download.bit文件會出現在與SDK同級的implementation文件夾中(這裡的download.bit和第二個下載方式提到的download.bit不是同一個,前者是需要自己手動添加的,後者是已經自動包含elf文件信息了)。
之後,如下圖,先點擊updata bitstream(每次修改硬體後都需要執行該步驟),更新完畢後再點擊download bitstream,則會自動下載implementation中的download.bit文件。
在下載成功之後,我們就可以查看列印信息,以及debug操作了。
首先,我們要先進行配置,如下操作:
雙擊1,即出現下面的gpio Debug。點擊2,勾選Connect STDIO to Console, 然後點擊 run即可。
如下圖,我們可以查看到列印信息
之後如果我們只是單純修改了SDK中的程序的話,就不用再將所有硬體信息下載進去了,只需要點擊run即可。
debug操作和很多軟體的操作類似,就不再說明了。
※一種基於雙DSP的高精度AD採集系統
※基於PLC的碟式太陽能跟蹤控制系統設計
※低功耗遠程煙霧報警系統設計
TAG:電子技術應用ChinaAET |
※街|Viktoria Prischedko(1964年生於摩爾多瓦,現居德國)
※Facebook收購以色列消息公司Redkix
※Facebook 收購郵件整合初創公司 Redkix
※Facebook收購辦公軟體公司Redkix
※Facebook收購以色列公司Redkix 促進協同辦公
※德國水彩畫家 Viktoria Prischedko ????一組水彩風景繪畫
※安正熙NZEDKI家用美容儀讓護膚變得簡單