[X]关闭

MI702遇到了问题,vivado没问题,但是SDK有问题,

文档创建者:贾文洋
浏览次数:13515
最后更新:2015-12-23
 
环境:win7 64   vivado 2014.1
开发板:zedboard version d    xc7z020clg484-1
串口软件:SecureCRT
目标:使用vivado进行zedboard的OLED测试。目的还是介绍vivado软硬件协同开发流程。
说明:本文参考cuter的博客采用创建IP 的实现方案,并得到了本人的指导,表示十分感谢!
正文:
本文将分为以下步骤:
1. 使用Vivado IDE创建一个工程,并创建IP核
2. 在Vivado中,创建block,添加约束xdc,validate、generate,最后导入到SDK中
3. 在SDK中新建工程,添加文件,编译。下载到ZedBoard上进行调试
4. 总结


1. 使用Vivado IDE创建一个工程,并创建IP核
1)创建vivado工程,命名为oled,设置目录。


2)选择RTL,勾选复选框,此次不指定文件。


3)选择zedboard开发板,完成工程创建。


4)Tools->create & package


5)选择AXI4方式


6)设置名称,以及其他参数。下面继续next,保持默认参数,修改也可以,看需要


7)选择edit IP。finish。(以上为vivado创建AXI IP的流程)


8)此时已经建立了一个临时的工程,在完成后会自行删除
9)修改文件,创建端口和用户逻辑。双击oled_ip_v1_0.v文件,添加


[plain] view plaincopy


  • output wire [5:0] OLED,  




10)双击oled_ip_v1_0_S00_AXI.v文件,添加

[html] view plaincopy


  • output reg [5:0] OLED,  

[plain] view plaincopy


  • always @(*)  
  • begin  
  • OLED <= slv_reg0[5:0];  
  • end  







11)保存文件
12)在project manager面板中,选择Package IP,可以看到如下选项:
    IP Identification:基本信息
    IP Compatibility:.支持芯片
    IP file  Groups:文件管理;可选择“merge changes……”以更新文件
    IP customization Parameters:
    IP ports and interfaces:端口,可以更新、添加等
    IP addressing and memory:地址分配
    IP GUI Customization:GUI
    Review and package:生成IP



13)无误后,选择Package IP生产IP。此时软件自动关闭。可在IP catalog的下属文件夹中找到了定义的IP。(以上为创建AXI IP的基本步骤)




2. 在Vivado中,创建block,添加约束xdc,validate、generate,最后导入到SDK中


14)创建一个block design,名称默认


15)添加IP:zynq,并run block automation,弹出框中选择ok


16)双击zynq,customize zynq:由于IP实际是使用GPIO进行传输的模块,很多功能并不需要
MIO:Memory Interfaces:勾掉Quad SPI
     IO peripheral:保留uart用于串口通信;保留GPIO默认
    application Processor Unit:勾掉Timer 0;


17)添加IP:oled_ip_0,run connection automation,弹出框中选择ok
18)鼠标移动到oled_ip_0->OLED[5:0],右击->make external。重新布局,得到最后的设计图。


19)查看地址,未分配则分配。地址很重要,后面软件设计要用到。


20)validate design


21)create wrapper。在design_1.bd上右击,选择create HDL wrapper。
22)添加约束。添加文件oled.xdc。
注意:引脚查看硬件手册,注意和驱动中的定义相匹配。
#   U11 <-> OLED-VBAT
#   U12 <-> OLED-VDD
#   U9 <-> OLED-RES
#   U10 <-> OLED-DC
#   AB12 <-> OLED-SCLK
#   AA12 <-> OLED-SDIN

#   OLED_DC 0     OLED[0] <-> U10
#   OLED_RES 1     OLED[1] <-> U9
#   OLED_SCLK 2    OLED[2] <-> AB12
#   OLED_SDIN 3    OLED[3] <-> AA12
#   OLED_VBAT 4    OLED[4] <-> U11
#   OLED_VDD 5     OLED[5] <-> U12

23)选择generate bitstream。提示保存则保存,弹出对话框选择ok。完成后选择open implement design。
24)打开design,file->export->export for SDK.勾选启动SDK。(以上为vivado硬件设计流程,下面转入SDK进行软件设计)
3. 在SDK中新建工程,添加文件,编译。下载到ZedBoard上进行调试
25) 新建工程,选择空模板。


26)oled->src,右击选择import,选择general->file system,选择font.h、oled.h、oled.c、helloworld.c等文件。
oled.h中,原本“#define OLED_BASE_ADDR 0X7a800000”改为“#define OLED_BASE_ADDR XPAR_OLED_IP_0_S00_AXI_BASEADDR”。
这样就不用每次修改地址了,vivado中分配的地址会自动保存在xparameter.h中。


27)自动编译,出现下图,说明编译成功。如果有错误则修改之。(一般肯能使头文件的问题,按照提示修改即可)


28)连接开发板,J14用于串口通信,J17用于烧写程序。安装驱动的方法这里就不介绍了,参考之前的文章。
29)上电,连接SecureCRT,选择Xilinx Tools->Program FPGA。program,开发板上的蓝灯亮说明烧写成功。


30)运行程序。oled(project)右击选择run as->launch on harddware(GDB)或者直接Run->run.可以看到串口打印的信息和OLED上的信息显示。



发表评论已发布 8

贾文洋

发表于 2015-12-22 21:14:07 | 显示全部楼层

SDK遇到了问题,击选择import,选择general->file system,选择font.h、oled.h、oled.c、helloworld.c等文件,我不知道这些文件怎么来的,从哪找到这些文件?

uisrc

发表于 2015-12-22 21:30:58 | 显示全部楼层

这些文件是可以copy进工程的
越努力越幸运!加油!

贾文洋

发表于 2015-12-22 21:34:18 | 显示全部楼层

admin 发表于 2015-12-22 21:30
这些文件是可以copy进工程的

从哪里复制进去,我找不到这些文件啊

贾文洋

发表于 2015-12-22 21:45:20 | 显示全部楼层

admin 发表于 2015-12-22 21:30
这些文件是可以copy进工程的

???????????????????

RZJM

发表于 2015-12-22 22:13:47 | 显示全部楼层

贾文洋 发表于 2015-12-22 21:14
SDK遇到了问题,击选择import,选择general->file system,选择font.h、oled.h、oled.c、helloworld.c等文件 ...

这些应该是别人写好的。不是SDK自动生成的。应该有人有这些文件。

贾文洋

发表于 2015-12-22 22:26:15 | 显示全部楼层

RZJM 发表于 2015-12-22 22:13
这些应该是别人写好的。不是SDK自动生成的。应该有人有这些文件。

哦我以为是自动生成的,vivado无问题,下载到这一步SDK有问题啦!

宋桓公

发表于 2015-12-23 10:09:08 | 显示全部楼层

那些是别人写好的,需要自己添加到工程

贾文洋

发表于 2015-12-23 10:23:18 | 显示全部楼层

恩,知道啦,谢谢宋工!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则