本文主要介紹如何在不使用sdk的情況下進行zynq7020的程式設計。本實驗為點亮一盞led燈,使用mio0引腳。
廢話不多說,開始正題。
本文使用正點原子啟明星zynq7020開發板進行開發。
開發環境為ubuntu。
要使用gpio點亮led燈,第一步當然是設定gpio的引腳。將mio0對映到gpio上。因此要對slcr暫存器程式設計。程式設計之前先要對slcr進行寫使能。
把0xdf0d寫入slcr_unlock暫存器中,位址為0xf8000008。
引腳輸出屬性設定,在本實驗中gpio為輸出模式,故輸入緩衝使能(disablercvr位置1),不使用上拉電阻(pullup位置0),led電壓為3.3v(io_type位設定001),緩的cmos邊沿(speed位置0),mio0對映到gpio上(7-1位設定為0000000),三態使能(tri_enable位置0)。
把0x2600寫入mio_pin_00暫存器中,位址為0xf8000700。
該暫存器控制輸出的高低電平,0為低電平,1為高電平。本實驗led點亮為高電平,因此將第0位(mio0)設定為1。
該暫存器0為輸入,1為輸出。mio0用作gpio輸出。第0位(mio0)設定為1,。
該暫存器控制輸出是否使能,0為不是能,1為使能。因此將第0位(mio0)設定為1。
在ubuntu下新建資料夾test。在資料夾裡新建檔案start.s。
敲入**:
.text
.global _start
_start:
//設定堆疊指標
ldr sp,
=0x30000
/* 解鎖slcr暫存器為
*/ ldr r0,
=0xf8000008
ldr r1,
=0xdf0d
str r1,
[r0]
/* 設定mio0為gpio輸出
*/ ldr r0,
=0xf8000700
ldr r1,
=0x2600
str r1,
[r0]
/* 設定gpio0為輸出模式
*/ ldr r0,
=0xe000a204
ldr r1,=1
str r1,
[r0]
/* 設定gpio0輸出使能
*/ ldr r0,
=0xe000a208
ldr r1,=1
str r1,
[r0]
/* 設定gpio0輸出高電平
*/ ldr r0,
=0xe000a040
ldr r1,=1
str r1,
[r0]
loop:
b loop
新建檔案zynq.lds,此檔案為連線指令碼。
sections
}
編譯start.s,ubuntu下預先裝了xsdk,這裡使用xsdk自帶的交叉編譯器。設定環境變數。在shell執行如下命令
source /opt/sdk/sdk/2018.3/settings64.sh
arm-none-eabi-gcc -c start
.sarm-none-eabi-ld -o led.elf -tzynq.lds start
.o
至此,可執行檔案led.elf檔案已經生成,接下來使用bootgen工具把他轉換為bin檔案放入sd卡中。
新建檔案zynq.bif,內容為
myboot:
在shell執行如下命令
bootgen -image zynq.bif -o boot.bin
最後把boot.bin檔案放進sd卡中,開發板設定為sd卡啟動,插入sd卡,上電,大功告成,led亮了。 Zynq7020核心板燒寫方法
宣告 與本文件環境保持一致,能夠保證燒寫成功,專家們和使用者提出寶貴的修改意見,避免該文件成為網路垃圾。軟體環境 vivado 2017.4 操作 1.先將拷貝的源程式的.sdk資料夾刪除 2.包含bit檔案,開啟sdk順序選擇以下按鈕file export export hardware,勾選in...
zynq7020開發板 Z turn除錯計畫
參加公尺爾zynq7020開發板試用活動。收到公尺爾z turn板子後,焊接了乙個jtag轉接板,以方便除錯pl部分,對於後面的除錯部分,主要分三個部分走 1 除錯fpga部分,實現邏輯控制外圍簡單的裝置,比如點個燈什麼的,用verilog語言實現,後期需要實現外部ad板卡的資料採集,並分析相關邏輯...
ZYNQ 7020 網口測試 iperf3移植
在接觸到zynq7020開發板後,需要對網口的速率進行測試。上網查了下資料,發現iperf是個好工具,於是就想著用它來測試。然後就開始查資料 進行各種嘗試。我在嘗試的過程中遇到了各種各樣的問題,比如交叉編譯的時候出錯 移植後無法執行等。由於本人是個小白,對這種問題束手無策 只想能簡簡單單跟著步驟 輸...