CN108052326B - 一种Xilinx FPGA支持Arduino IDE开发的实现方法 - Google Patents
一种Xilinx FPGA支持Arduino IDE开发的实现方法 Download PDFInfo
- Publication number
- CN108052326B CN108052326B CN201711264781.5A CN201711264781A CN108052326B CN 108052326 B CN108052326 B CN 108052326B CN 201711264781 A CN201711264781 A CN 201711264781A CN 108052326 B CN108052326 B CN 108052326B
- Authority
- CN
- China
- Prior art keywords
- arduino
- xilinx
- arduino ide
- fpga
- sdk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种Xilinx FPGA支持Arduino IDE开发的实现方法,属于嵌入式技术领域,可实现将Arduino IDE中编写的程序下载到FPGA板卡中,使FPGA板卡具有Arduino板卡的相关功能。实现方法包括:根据要实现的功能进行硬件逻辑设计,为添加的硬件逻辑编写相应的软件驱动,移植Xilinx SDK的编译系统和下载系统到Arduino IDE中,用Xilinx SDK的驱动函数改写Arduino IDE库函数,以及在Arduino IDE中编写程序进行测试。该方法适应FPGA的发展潮流,可方便用户进行FPGA开发,降低了FPGA开发门槛,也为后人进一步开发此方面的功能奠定了基础。
Description
技术领域
本发明属于嵌入式技术领域,涉及一种Xilinx FPGA支持Arduino IDE开发的实现方法,主要用于Xilinx FPGA技术的开发。
背景技术
自1985年Xilinx公司推出的第一片现场可编程器件(FPGA)至今,FPGA已经经历了三十多年的发展历史,并发生了惊人的变化,应用领域逐渐扩大。它是一种新型高性能可编程逻辑器件,是在专用集成电路领域中出现的一种半定制电路。它通过软件方式就能更改配置器件内部连接结构,完成既定设计功能,解决了定制电路设计周期长、改版投资大以及灵活性差等不足,具有低功耗、高可靠性等优点。FPGA虽有如此多优势,但对于FPGA初学者来说,开始学习FPGA时门槛较高,一个简单的功能也需要经过复杂的逻辑设计和驱动编写,学习过程较为漫长。
Arduino作为一款开源硬件,是嵌入式开发入门级的板卡,能通过简单易懂的程序控制板卡,初学者只需要具有C语言基础加上单片机的基本知识,就能轻松控制Arduino板卡。因此,如果让FPGA板卡支持Arduino IDE开发,便能让初学者像控制Arduino板卡那样控制FPGA板卡,从而简化了开发的流程,缩短了开发时间。
目前市面上已经有兼容Arduino的FPGA板卡,但也只是做到了硬件上兼容Arduino,而并没有实现支持Arduino IDE开发,所以本发明提出了Xilinx FPGA支持Arduino IDE开发的实现方法,可将Arduino IDE编写的程序下载到FPGA板卡上,能轻松控制板卡,方便用户进行FPGA开发,降低FPGA开发门槛,也为后人进一步开发此方面的功能奠定了基础。
发明内容
本发明为了方便用户进行FPGA开发,提出了Xilinx FPGA支持Arduino IDE开发的实现方法。
为了达到以上的目的,本发明采用的方案是:
一种Xilinx FPGA支持Arduino IDE开发的实现方法,其特征在于采用将XilinxSDK的编译和下载系统移植到Arduino的方法,并用Xilinx SDK的库函数改写对应Arduino的库函数,可将Arduino IDE编写的程序下载程序到FPGA板卡,实现Arduino的相关功能。该方法主要包括以下几个步骤:
(1)、根据所需的功能,使用Vivado软件进行硬件逻辑设计,添加对应的IP核,并进行管脚约束;
(2)、编写软件驱动,实现相应的软件功能;
(3)、编写对应板卡的引导程序,使用QSPI模式运行用户程序;
(4)、移植Xilinx SDK的编译系统到Arduino IDE中,根据Xilinx SDK中的编译脚本修改对应的Arduino IDE的脚本文件;
(5)、移植Xilinx SDK的下载系统到Arduino IDE中,根据Xilinx SDK中的下载脚本修改对应的Arduino IDE的脚本文件;
(6)、用Xilinx SDK的驱动函数改写Arduino IDE的库函数,使其适配FPGA板卡;
(7)、在Arduino IDE中编写程序控制FPGA板卡;
在硬件设计时添加对应的IP核包括:处理器IP核、GPIO的IP核、SPI的IP核、I2C的IP核、UART的IP核、数模转换的IP核以及其他用户所需逻辑功能的IP核。在实现相应的软件功能阶段,所实现的功能应与Arduino IDE中对应的函数功能保持一致,方便以后进行调用。
在Xilinx SDK中编写对应板卡的引导程序,使用QSPI模式运行用户程序,是为了使程序不会因为断电而丢失,达到上电就能运行的目的。而引导程序对于Xilinx不同系列的板卡可能会有所不同,如Zynq-7000系列使用的是Xilinx SDK中的Zynq FSBL工程项目,而Artix7使用的是SREC SPI Bootloader工程项目,依据所使用的板卡而定。
移植Xilinx SDK的编译系统到Arduino IDE中,根据Xilinx SDK中的编译脚本修改对应的Arduino IDE的脚本文件,其中编译系统对于不同系列的硬件平台会有所不同,Xilinx SDK的编译脚本会在编译时显示在控制台窗口中,Arduino IDE的编译配置脚本在platform.txt文件中,需要对应进行修改。移植Xilinx SDK的下载系统到Arduino IDE中,根据Xilinx SDK中的下载脚本修改对应的Arduino IDE的脚本文件,其中下载系统对于不同的硬件平台大体上相似,但有时会因为使用的Xilinx SDK版本不同而有所变化,脚本文件修改过程与编译系统类似。
在改写Arduino IDE库函数阶段,用Xilinx SDK的驱动函数改写Arduino IDE的库函数,需要根据Arduino IDE中所需函数的功能以及所用参数,用Xilinx SDK中的对应驱动函数进行实现。在Arduino IDE中编写程序控制FPGA板卡,其目的在于对整个移植结果进行测试。
附图说明
图1为硬件设计框图;
图2为实现方法的设计步骤流程图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的详细说明,但本发明并不限于以下实施例。
实施例1:
以具有Arduino接口的Zynq-7000系列平台APduino为例,参照图1、图2,具体方法包括以下步骤:
步骤1,打开Vivado设计工具,根据目标板卡的芯片型号进行初始化配置,然后进行硬件设计,添加的IP核如下:ZYNQ7Processing System、AXI Uartlite、AXI Quad SPI、AXI IIC、AXI GPIO、XADC Wizard等。将添加的硬件信息进行综合、实现,并进行管脚约束,将必要的功能映射到FPGA板卡的管脚上,最后生成硬件配置文件,导出到Xilinx SDK中。
步骤2,打开Xilinx SDK设计软件,建立Hello World工程项目,分别为添加的硬件功能编写软件驱动,包括数字量输入和输出控制、模拟量的输入和输出控制、GPIO外部中断控制、串口通信的发送和接收数据控制、I2C通信的发送和接收数据控制以及SPI通信的发送和接收数据控制等。
步骤3,在Xilinx SDK中,建立Zynq FSBL工程项目,将引导程序的可执行文件、硬件配置文件和用户程序的可执行文件合成镜像文件,下载到Flash中,使用板卡的QSPI模式启动,测试程序的正确性。
步骤4,移植Xilinx SDK的编译系统到Arduino IDE中,根据Xilinx SDK中的编译脚本修改对应的Arduino IDE的脚本文件。基于APduino平台的编译器为gcc-arm-none-eabi,需要将Xilinx SDK中关于gcc-arm-none-eabi编译时所需的文件拷贝到Arduino IDE的文件系统下。库函数与Arduino IDE中的用户程序经过编译生成目标文件,再经过链接生成能下载到板卡上的可执行文件。
步骤5,移植Xilinx SDK的下载系统到Arduino IDE中,根据SDK中的下载脚本修改对应的Arduino IDE的脚本文件,其中下载系统对于不同的硬件平台大体上相似,但有时会因使用的Xilinx SDK工具版本不同而有所变化,基于APduino平台的下载器为zynq_flash,Xilinx SDK文件系统中已提供zynq_flash的应用程序文件,可直接将下载脚本写入Arduino IDE的脚本文件中,脚本文件修改过程与编译系统类似。
步骤6,用Xilinx SDK的驱动函数改写Arduino IDE的库函数,需要根据ArduinoIDE中所需的函数的功能以及所用参数,用Xilinx SDK中的对应驱动函数进行实现,如Arduino IDE中的读取数字信号电平状态的digital.read()函数对应Xilinx SDK中的XGpio_DiscreteRead()函数,就需要将后者写入前者中,然后根据引脚的分配调用相应的引脚。
步骤7,在Arduino IDE中编写程序控制FPGA板卡,目的在于对整个移植结果进行测试。选择QSPI启动模式,并为板卡上电,在Arduino IDE的端口选项中选择板卡串口对应的端口,打开Arduino IDE的示例程序,点击编译和下载,等待程序下载完毕,按一下板卡的复位键,程序就会运行起来。
实施例2:
以具有Arduino接口的Artix7系列平台FPGAduino为例,参照图1、图2,具体方法包括以下步骤:
步骤1,对于FPGAduino平台,需要添加的处理器为Microblaze,其余操作过程与实施例1相同。
步骤2,操作过程与实施例1相同。
步骤3,在Xilinx SDK中建立SREC SPI Bootloader工程项目,作为用户程序的引导程序,将引导程序的可执行文件和用户程序的可执行文件下载到Flash中,使用板卡的QSPI模式启动,测试程序的正确性。
步骤4,基于FPGAduino平台的编译器为mb-gcc,编译器移植的其他过程与实施例1类似。
步骤5,基于FPGAduino平台的下载器为program_flash,而在Xilinx SDK文件系统中没有提供Arduino IDE需要的应用程序文件,需要编写对应的应用程序来调用Windows的命令提示符进而执行相应的下载脚本,然后在Arduino IDE的脚本文件中调用编写的应用程序。
步骤6,操作过程与实施例1相同。
步骤7,对于FPGAduino板卡,可将下载引导程序的过程写入Arduino IDE的platform.txt的对应的下载引导程序脚本中,在Arduino IDE中点击下载引导程序选项,可进行引导程序的下载,其他过程与实施例1相同。
以上是本方法基于Xilinx Zynq-7000系列的平台APduino和Artix7系列的平台FPGAduino的具体实现步骤,该方法也适用于Xilinx其他系列的FPGA板卡,能实现ArduinoIDE控制FPGA板卡,方便初学者进行FPGA开发。
Claims (4)
1.一种Xilinx FPGA支持Arduino IDE开发的实现方法,其特征在于采用将Xilinx SDK的编译和下载系统移植到Arduino IDE的方法,并用Xilinx SDK的库函数改写对应Arduino的库函数,可将Arduino IDE编写的程序下载到FPGA板卡,实现Arduino的相关功能;该方法包括以下几个步骤:
(1)、根据所需的功能,使用Vivado软件进行硬件逻辑设计,添加对应的IP核,并进行管脚约束;
(2)、编写软件驱动,实现相应的软件功能,所实现的功能应与Arduino IDE中对应的函数功能保持一致;
(3)、编写对应板卡的引导程序,使用QSPI模式运行用户程序;
(4)、移植Xilinx SDK的编译系统到ArduinoIDE中,根据Xilinx SDK中的编译脚本修改对应的Arduino IDE的脚本文件;
(5)、移植Xilinx SDK的下载系统到ArduinoIDE中,根据Xilinx SDK中的下载脚本修改对应的Arduino IDE的脚本文件;根据SDK中的下载脚本修改对应的Arduino IDE的脚本文件,基于APduino平台的下载器为zynq_flash,Xilinx SDK文件系统中已提供zynq_flash的应用程序文件,直接将下载脚本写入Arduino IDE的脚本文件中;
(6)、用Xilinx SDK的驱动函数改写Arduino IDE的库函数,使其适配FPGA板卡;所述的用Xilinx SDK的驱动函数改写Arduino IDE的库函数,根据Arduino IDE中所需函数的功能以及所用参数,用Xilinx SDK中的对应驱动函数进行实现;
(7)、在Arduino IDE中编写程序控制FPGA板卡。
2.权利要求1所述的Xilinx FPGA支持Arduino IDE开发的实现方法,其特征在于,步骤(1)所述的添加对应的IP核包括:处理器IP核、GPIO的IP核、SPI的IP核、I2C的IP核、UART的IP核、数模转换的IP核一种或多种。
3.权利要求1所述的Xilinx FPGA支持Arduino IDE开发的实现方法,其特征在于,步骤(3)所述的编写对应板卡的引导程序,Zynq-7000系列使用的是Xilinx SDK中的Zynq FSBL工程项目,而Artix7使用的是SREC SPI Bootloader工程项目。
4.权利要求1所述的Xilinx FPGA支持Arduino IDE开发的实现方法,其特征在于,步骤(4)所述的移植Xilinx SDK的编译系统到Arduino IDE中,Xilinx SDK的编译脚本会在编译时显示在控制台窗口中,Arduino IDE的编译配置脚本在platform.txt文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711264781.5A CN108052326B (zh) | 2017-12-05 | 2017-12-05 | 一种Xilinx FPGA支持Arduino IDE开发的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711264781.5A CN108052326B (zh) | 2017-12-05 | 2017-12-05 | 一种Xilinx FPGA支持Arduino IDE开发的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052326A CN108052326A (zh) | 2018-05-18 |
CN108052326B true CN108052326B (zh) | 2020-11-20 |
Family
ID=62121421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711264781.5A Active CN108052326B (zh) | 2017-12-05 | 2017-12-05 | 一种Xilinx FPGA支持Arduino IDE开发的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052326B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069892B (zh) * | 2019-05-08 | 2023-07-25 | 山东浪潮科学研究院有限公司 | 一种fpga引脚分配设计方法及装置 |
CN110688099B (zh) * | 2019-09-12 | 2022-10-14 | 成都西达瑞电子科技有限公司 | 远距离无线电集成可编程片上系统的微处理器开发方法 |
CN111984537B (zh) * | 2020-08-24 | 2021-12-07 | 上海睿成软件有限公司 | 一种基于WebIDE的软件测试方法、存储介质、装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102420874A (zh) * | 2011-12-08 | 2012-04-18 | 北京工业大学 | 一种基于fpga的物联网接入模块 |
US8364946B2 (en) * | 2010-03-22 | 2013-01-29 | Ishebabi Harold | Reconfigurable computing system and method of developing application for deployment on the same |
CN106850753A (zh) * | 2016-12-28 | 2017-06-13 | 江苏虎甲虫计算技术有限公司 | 一种远程硬件实验系统 |
-
2017
- 2017-12-05 CN CN201711264781.5A patent/CN108052326B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364946B2 (en) * | 2010-03-22 | 2013-01-29 | Ishebabi Harold | Reconfigurable computing system and method of developing application for deployment on the same |
CN102420874A (zh) * | 2011-12-08 | 2012-04-18 | 北京工业大学 | 一种基于fpga的物联网接入模块 |
CN106850753A (zh) * | 2016-12-28 | 2017-06-13 | 江苏虎甲虫计算技术有限公司 | 一种远程硬件实验系统 |
Non-Patent Citations (3)
Title |
---|
基于FPGA平台的计算机硬件实践教学探索;张丽艳等;《计算机教育》;20100430(第7期);全文 * |
基于Zynq-7000的视频采集平台设计;王浩宇等;《工业控制计算机》;20170425(第04期);全文 * |
基于可编程片上系统的嵌入式以太网通信开发;李明;《计算机应用》;20060410(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108052326A (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052326B (zh) | 一种Xilinx FPGA支持Arduino IDE开发的实现方法 | |
CN110674590A (zh) | 一种基于仿真软件Simulink实时扩展RTX的飞行器实时仿真程序的编程方法 | |
CN101963915B (zh) | 一种编译的构建方法及系统 | |
CN112270149B (zh) | 验证平台自动化集成方法、系统及电子设备和存储介质 | |
CN104035803A (zh) | 一种更新cpld/fpga固件的方法、装置及烧录器 | |
CN111309292B (zh) | 一种基于MATLAB/Simulink的全模型可执行程序构建方法 | |
CN116541032B (zh) | 数据烧录方法、装置、设备及计算机存储介质 | |
CN105117210A (zh) | 一种面向wscn的图形化编程系统 | |
US9459842B1 (en) | Multivariable transfer functions | |
CN111367579B (zh) | 一种基于v-rep插件的处理器在环仿真方法 | |
CN110716721A (zh) | 兼容网口和串口的tms320c6748程序加载方法 | |
CN101505331A (zh) | 升级智能手机系统软件的方法和装置 | |
CN112631915B (zh) | 一种pcie设备软件仿真的方法、系统、设备及介质 | |
CN113342320A (zh) | 一种针对ie浏览器操作的rpa流程自动化方法及系统 | |
CN101083817B (zh) | 一种动态更换移动台字库模块的方法 | |
CN106843973B (zh) | 一种移植嵌入式系统并在sd卡启动的方法 | |
CN115220728B (zh) | 一种嵌入式Linux系统软件交互式编译管理方法及装置 | |
CN109144849B (zh) | 一种嵌入式软件调测方法 | |
KR20020032256A (ko) | 통합 임베디드 시스템 및 이의 구현 방법 | |
CN211427090U (zh) | 微控制单元设备 | |
CN113448571A (zh) | 一种基于matlab的数字信号处理器代码快速生成方法 | |
Walker | Getting started with Netduino | |
CN1963794A (zh) | 一种实现设备驱动的系统及方法 | |
CN112764379B (zh) | 一种基于dsp系统的iap控制方法 | |
US20100115255A1 (en) | System and Method of Dynamically Building a Behavior Model on a Hardware System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |