Zynq最大的优势在于,一起具有软件、硬件、IO可编程,即All Programmable。在规划Zynq过程中,相同要树立一种认识,便是从本来单纯的软件思想(或单纯的硬件思想)中摆脱,转向软硬件协同规划的开发办法。
软件规划,即依据ARM的软件开发,咱们第三节里边现已做过比如了,根本便是经过某一硬件地址映射寄存器与相应的硬件进行交互,这类硬件包含ARM外设如GPIO,EMIO,SPI,TImer等,也包含挂载到AXI总线上的PL。除此之外,软件还要处理好比如操作体系、网络等高层使命。
硬件规划,即依据FPGA的逻辑开发,首要经过实例化一些现成的IP,使用状态机完成本身逻辑功用,然后完成AXI接口与ARM进行通讯。
将软硬件结合进行规划,需求AXI总线。咱们重复强调了AXI的重要性,能够说它决议了软硬件协同规划的胜败。
关于Zynq的网络教程也有许多了,像懒兔子的 ,笔者初学Zynq时是依照他的教程一步步做试验的。本教程不会重复这些过程,而是协助初学者树立一个结构,剩余的便是自己经过查文档、做试验去填充这些具体内容。
咱们大体区分一下Zynq开发的结构:
首先是需求剖析,确认要做什么;之后将使命进行细分,一般能够看哪些适合在FPGA上完成,独自提出;剩余的则用PS。接着挑选通讯接口,物理链路挑选GP或HP或ACP,协议选AXI-Lite,AXI-FIFO或AXI-Stream。区分结束,则逻辑工程师与ARM工程师从这儿各奔前程,依照各自使命进行完成。
逻辑工程师需求集中精力做IP规划,将功用集成到一个用户IP中,并留出通讯接口与AXI通讯。
ARM工程师则依据需求树立ARM裸机软件工程或依据嵌入式Linux的工程,前者开发周期较短,后者功用较强但需求为Linux做许多准备作业(引导,内核,文件体系,驱动,图形界面开发等)。尽管依据嵌入式Linux的开发看上去很“酷”,但咱们要掌握好尺度,能用裸机完成的坚决不必操作体系,不然只会劳民伤财。
各自开发作业完成后,进入联调,ARM经过读写PL映射寄存器来检查相应功用是否正常,假如不正常则需求返工修正,重复测验,直到解决问题停止。