xzy610030

一起探讨,一起进步,一起分享!

zedboard--zedboard学习小结

0
阅读(3378)

转眼间研二上学期就即将过去了,回顾从9月份以来学习zedboard,感觉一直徘徊,有很多东西还没有理清楚,以前的博客也是乱七八糟的,希望自己也整理一下思路,这里对自己已经学习和知道的东西做一个小小的总结,水平的有限才造就了这篇拙劣的总结。

转载请注明:来自http://blog.csdn.net/xzyiverson

                                                        平台简介

Zynq可以认为是带处理器的FPGA,xilinx出了7010,7015,7020,7030,7045,7100这些芯片,这些芯片的FPGA的资源是不一样的,也就是PL逻辑资源不一样,因此,应用场合和价格也不一样。

ZedBoard是基于Xilinx Zynq™-7000扩展式处理平台(EPP)的低成本开发板。此板可以运行基于Linux,Android,Windows®或其他OS/ RTOS的设计。此外,可扩展接口使得用户可以方便访问处理系统和可编程逻辑。Zynq-7000 EPP将ARM®处理系统和与Xilinx 7系列可编程逻辑完美地结合在一起,可以创建独特而强大的设计。Zedboard是基于7020的一款开发板,目前还有zybo这款开发板,使用的是7010,价格就更加便宜一些了。

我们在利用zedboard开发的时候,需要嵌入式linux的基本知识,这部分和一般的arm在很大的程度上是相通的,还有就是fpga的设计,这部分和一般的fpga设计是相通的,因此,我们需要掌握的东西还是很多的。

                                                        开发平台

1:Ubuntu+交叉编译环境:

2:ISE14.2,本人以前没有用过xilinx的东西,对软件很不熟,这个也确实对我造成了很大的影响,vivado这东西以后有机会再去涉及吧。

                                                        电脑安装的软件或者开发工具或驱动

虚拟机8.0+Ubuntu12.04+交叉编译环境+CuteFTP

ISE14.2+SecureCRT(串口终端)

Usb-jtag,用于直接配置zedboard的fpga,直接将bit文件烧写fpga

Usb-uart,usb转串口,监视开发板和输入一些命令

                                                        Zynq的启动理解

调试:将启动管脚设为0 0 0,然后我们可以调试。调试的时候肯定是裸机的一些实验,我做过的一些实验如下:

1) 单纯使用ps,见http://blog.csdn.net/xzyiverson/article/details/11738247

说明:这部分没有用到fpga,只要烧写elf到ps,运行就可以了。这个可以把理解成一般的arm的裸机实验就行了。

2) ps+pl  这个和一般的arm的裸机就不一样了,但是也是很好理解的,        参见http://blog.csdn.net/xzyiverson/article/details/11818549  pl可以是自带的ip核,也可以是自己定义的ip核,在ps端其实就是相当于一个外设了,在ps端有地址,我们写一般的应用程序就可以读写这个地址了。                 

3) pl:这个就更好明白了,就是不用ps,就用fpga的逻辑资源了。

小结:其实很多开发方式是让我们更好的理解这个平台,在实际中应该是有很多是用不上的,但是上面的2)应该是肯定要用的,因为我们写了逻辑,封装成ip核,一般肯定要先写应用程序(逻辑)来测试你在fpga里面的逻辑,或者什么的是不是正确的,如果正确的话,那我们接下来就应该为这个ip核编写在linux下面的驱动了。

Sd卡启动:调试完了终究还是要sd卡来启动的!!

       这个时候你必须要清楚的知道sd卡启动的过程,这个非常重要。

       在不使用JTAG的情况下,ARM将在片上的BootROM中开始执行代码,即一些初始化,完成以后,运行FSBL,这部分完成ps的初始化,对pl进行配置,引导ssbl(u-boot)或者裸跑程序。

       BOOT.BIN文件(fsbl.elf+system.bit+helloworld.elf或者fsbl.elf+system.bit+u-boot.elf)

       裸跑:我做过一个helloworld实验,fsbl.elf+system.bit+helloworld.elf

       系统:fsbl.elf+system.bit+u-boot.elf

                                   跑过的实验

1) 单独的PL实验(JTAG调试)

2) 裸机的ps端的helloworld实验(JTAG调试)

3) 启动demo系统运行helloworld(和一般arm的应用程序开发没上面区别)

a)        U盘的挂载

4)fsbl引导裸奔程序,记得是helloworld(sd卡启动)

a)学习了sdk怎么打开工程

5)Opencv移植到PC机上和zedboard上了,还有测试。

       a)学习怎么制作一个镜像文件

6)运行了超群天晴的demo和pc采集usb摄像头图片

7)qt安装pc,zedboard上和测试

       a)qt显示一张照片在linux测试程序所用的时间那篇博客里面。

8)软件的开机自动加载,这个是ramdisk的文件系统,必须要这么做。

9)别人的智慧就是强大,可以qt显示视频了。

10)pc机下helloworld驱动

       a)了解驱动和系统调用过程

11)运行在demo系统下的helloworld驱动

12)测试pwm的ip核,其实就是简单的ps+pl(jtag调试)

13)搭建嵌入式web服务器 boa

14)嵌入式网络摄像机移植

15)网络摄像机和web服务器联合使用,这个可以通过路由来回传视频到电脑上

16)zedboard的demo默认开启了ftp,telnet,搞定zedboard的ftp

17)NFS挂载到zedboard上

18)嵌入式linux移植到zedboard

 

总结:博客乱乱的,截止到12月10日,也就做了这些工作,发现自己做的很多工作都是平台的一些搭建过程,没有什么自己很擅长的一些东西,这个我给自己找的借口就是没有具体的项目来锻炼自己,深知要接下来做下去,一定要坚持坚持…..