下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ZedBoard學習手記(三)為自定義外設編寫裸奔控制軟件由于Xilinx已經為我們做了大部分的鋪墊工作,因此裸奔控制外設這一步就顯得十分簡單了,如果不用Linux和圖形界面顯示,大概我的作品早早的就完成了吧。上一次我們已經成功生成了BitStream文件,下面繼續(xù)上次的操作,打開PlanAhead工程,選擇ExportHardwareforSDK,如下圖:在彈出的窗口中選上LaunchSDK,OK以后進入SDK界面。
SDK界面下編寫裸奔軟件的方法在ZedBoard_CTT文檔中已經悉數介紹了,這里和官方文檔中的唯一差異就是需要添加控制AXI總線設備的底層代碼。首先新建一個C工程。工程模板選擇HelloWorld,點擊Next。
BPS部分默認即可,點Finish完成。
之后添加我們自己建立的my_gpio外設的控制代碼。不會控制AXI總線設備?沒關系,由于之前在創(chuàng)建外設的時候勾選了生成driver的配置項,Xilinx已經自動生成了裸奔的控制代碼。代碼位于XPS工程的文件目錄下,兔子這里的路徑是“Hello_ZedHello_Zed.srcssources_1edkmodule_1driversmy_gpio_v1_00_asrc”,將里面的my_gpio.h直接拖進SDK左邊的hello_world工程里,并在helloworld.c文件里添加對my_gpio.h的引用:#include
"my_gpio.h"
有的童鞋可能在編譯的時候會遇到問題,提示找不到xbasic_types.h文件。同時在my_gpio.h文件的左下角會顯示一個小叉。
出現此問題時,可以手動添加這個頭文件的路徑,一般就在XilinxISE的安裝目錄中,我的電腦上就是:#include"D:Xilinx14.2ISE_DSEDKswXilinxProcessorIPLibdriverscommon_v1_00_asrcxbasic_types.h"
如果這個時候編譯工程不出問題,就可以開始寫測試代碼了。在my_gpio.h中定義了一些控制AXI總線設備寄存器的函數,如mReadSlaveReg和mWriteSlaveReg。通過這些函數就能夠讀寫寄存器內容了。需要注意的是,想要控制外設還需要知道它的設備物理地址,該地址可以在工程中的XML文件中查看,比如在這里my_gpio設備的地址就是0x75C00000。
這里附上一個簡單的測試例,可以測試我們的外設是否符合設計要求。其功能為:讀取兩個寄存器值,根據終端輸入修改寄存器,最后再次讀出驗證修改效果。代碼如下:#include#include
"platform.h"#include
"my_gpio.h"
#define
MY_GPIO_ADDR
0x75C00000
//設備物理地址int
reg0,reg1;
int
main(){
init_platform();
//讀取寄存器初始值
printf("=======My_GPIOTest=======");
printf("Readingmy_gpioregisters...");
reg0=MY_GPIO_mReadSlaveReg0(MY_GPIO_ADDR,0);
reg1=MY_GPIO_mReadSlaveReg1(MY_GPIO_ADDR,0);
printf("Reg0=0x%x,Reg1=0x%x",reg0,reg1);
//向寄存器寫入數據
printf("InputReg0.");
scanf("%d",®0);
printf("InputReg1.");
scanf("%d",®1);
printf("Writingtomy_gpioregisters...");
MY_GPIO_mWriteSlaveReg0(MY_GPIO_ADDR,0,reg0);
MY_GPIO_mWriteSlaveReg1(MY_GPIO_ADDR,0,reg1);
//讀取寄存器驗證修改結果
printf("Readmy_gpioregisters...");
reg0=MY_GPIO_mReadSlaveReg0(MY_GPIO_ADDR,0);
reg1=MY_GPIO_mReadSlaveReg1(MY_GPIO_ADDR,0);
printf("Reg0=0x%x,Reg1=0x%x",reg0,reg1);
cleanup_platform();
return
0;}
下面讓我們將代碼寫入Zynq,運行一下看看吧。首先編譯一下工程,完成后選擇ProgramFPGA,為PL部分載入邏輯配置。
因為從PlanAhead導出到SDK時,已經選擇了包含BitStream文件,因此這一欄已經自動完成了,未自動添加路徑的可以根據圖中的地址手動添加。點擊Program,開始下載配置數據。
稍等片刻,Program完成后,選擇RunConfigurations配置運行選項。
在彈出的窗口中,右擊XilinxC/C++Elf,選擇New,新建一個Debug項。
選擇新建的hello_world_0Debug項,點擊Run就可以運行代碼了。這里C/C++Application一欄已經自動填充了elf文件的路徑,如果沒有填充(可能是工程還未編譯完成),就從Debug文件夾中手動添加。RunConfigurations中的選項都采用了默認配置,這些選項的作用和設置方法請參見ZedBoard_CTT文檔,此處不再贅述。
代碼運行后,打開串口終端軟件(兔子用的是SecureCRT),在115200bps波特率下,串口開始輸出信息。首先會顯示兩個寄存器中的默認值(皆為0x0),然后將SW7、SW5、SW3、SW1向上撥,設為高電平,其他保持低電平。再通過鍵盤輸入兩次85和回車,即向兩個寄存器中都寫入0x55。由于寄存器0為只讀寄存器,其內容只根據Switch狀態(tài)改變,因此reg0結果為0xAA,即我們對開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市共享自行車租賃合同3篇
- 二零二五年度博物館展品陳列管理合作協議合同3篇
- 打字游戲課程設計總結
- 二零二五年度加氣站燃氣管道檢測與維修專項協議3篇
- 2025年度消防樓梯設施升級改造與驗收合同3篇
- 二零二五年度醫(yī)療設備專用開關電源租賃協議2篇
- 2025年度大型水利工程安裝與質量監(jiān)督合同3篇
- 2025年度民間個人借款擔保合同(旅游住宿貸款專用)3篇
- 2025年度物業(yè)管理與社區(qū)文化活動合同模板3篇
- 2024年飛行員培訓合同:飛行技能提高與安全準則
- 黑龍江省哈爾濱市2023-2024學年七年級上學期期末統(tǒng)考學業(yè)水平調研測試語文試卷(解析版)
- 2024年人力資源年度工作總結參考(2篇)
- DB52T 1776.1-2023 耕地質量等別評價 第1部分:評價規(guī)范
- 社工個人工作述職報告
- 《人力資源管理》大學期末測試題庫500題(含答案)
- 加盟店鋪轉手合同
- 領導年終總結匯報工作
- CQI-23模塑系統(tǒng)評估審核表-中英文
- 2024年大型游樂設施操作(Y2)特種作業(yè)取證(廣東)考試復習題庫(含答案)
- 《顱內壓增高的臨床表現》教學課件
- 2024-2025學年北師大版九年級數學上冊期中培優(yōu)試題
評論
0/150
提交評論