下面做一個從uart打印hello world的實驗,只用PS,不用PL部分,程序從SD卡啟動,跑在PS的內部RAM.
zynq 7000的PS雖然也是CPU,但是開發方法不像普通的CPU只需要一個SDK就可以了,它還需要vivado硬件設計軟件.
所以ZYNQ 7000的PS開發需要兩個工具,一個是vivado-- 另一個是SDK--
.
1. 打開vivado軟件-->Create New Project,工程名和目錄:
2. next->選RTL Project->Add Sources,Add existing IP和Add constraints界面直接點next
3. New Parts界面
4. 添加IP,在Flow Navigator的IP Integrator下點Create Block Design
Create Block Design如下,點OK
在Diagram界面點擊Add IP
雙擊ZYNQ7 Processing System,添加CPU
5. 設置CPU
在Diagram界面點擊Run Block Automation,不做修改,點Finish就可以。在Diagram界面雙擊
進入設置界面,我們把所有的接口去掉,只留下FIXED_IO.
1> PS-PL Configuration->General->Enable Clock Resets->去掉FCLK_RESET0_N
2> PS-PL Configuration->GP Master AXI Interface->去掉 M AXI GP0 interface
3> Clock Configuration->PL Fabric Clocks->去掉FCLK_CLK0
4> DDR Congiguration->去掉Enable DDR
5> 設置SD和UART引腳
MIO Configuration->Bank1 IO Voltage選LVCMOS 1.8V.
MIO Configuration->IO Peripherals->選上SD 0, SD 0的引腳配置:
MIO Configuration->IO Peripherals->選上UART 1, UARRT 1的引腳配置:
6. 點擊OK返回Diagram界面, 把DDR接口刪掉,配置之后的界面
7. 生成設計文件
右擊system項->Generate Output Products->直接點Generate, 之后會提示文件生成成功.
右擊system項->Create HDL Wrapper
選下面一項,點OK
注意:如果重新修改了CPU配置,上面兩個步驟一定要重新實行。
8. 導出硬件設計文件到SDK
導出前要確保Block Design是打開的,即Diagram界面要打開
File->Export->Export Hardware->直接點OK,這樣會把硬件文件system_wrapper.hdf導到helloword.sdk文件夾下,SDK工程
也在該目錄下.
9. 啟動SDK
File->Launch SDK->直接點OK
SDK啟動后就自動添加了硬件相關的工程,
system.hdf是system_wrapper.hdf文件的copy
ps7_init.tcl是PS初始化的TCL腳本,PS不能執行TCL腳本,所以將該腳本轉換為了C文件--ps7_init.c和ps7_init.h.
前面用vivado的硬件設計就是為了生成這兩個文件,ps7_init.c主要初始化CPU的時鍾,引腳復用,ddr和外設等。后面
的helloword工程只需要這兩個文件,其他的文件都不需要。
10.添加helloword工程
在SDK中->File->New->New Application Project->設置如下,點next->選hello world
11. 修改源碼
多了兩個工程,一個是app,另一個是bsp.發現SD V2.3驅動有問題,將其退為2.2.
在helloword_bsp工程下打開system.mss文件,點擊左下角的source,修改sd驅動版本為2.2
修改之后重新生成BSP源碼,點system.mss左下角的overview->Re-generate BSP Sources
將ps7_init.c和ps7_init.h copy到helloword/src目錄下,也可以創建連接,這里就直接copy了.
修改helloword/src/platform.c
--init_platform函數,將ps7_init()函數的comment去掉,
--包含頭文件#include "ps7_init.h"
12. 編譯代碼->project->Clean->OK
13. 生成boot.bin啟動文件
右擊helloword工程->Create boot Image->Create Image
注意,helloword.elf前面的bootloader一定要出現,表示該文件是bootloader,啟動后運行的第一個文件,
可點edit來修改.
13, 將生成的BOOT.bin文件copy到SD卡(已用HP USB Disk Storage Format Tool格式化成啟動盤),啟動,從串口可看到打印信息。