CN108052326A - 一种Xilinx FPGA支持Arduino IDE开发的实现方法 - Google Patents

一种Xilinx FPGA支持Arduino IDE开发的实现方法 Download PDF

Info

Publication number
CN108052326A
CN108052326A CN201711264781.5A CN201711264781A CN108052326A CN 108052326 A CN108052326 A CN 108052326A CN 201711264781 A CN201711264781 A CN 201711264781A CN 108052326 A CN108052326 A CN 108052326A
Authority
CN
China
Prior art keywords
xilinx
arduino ide
arduino
function
fpga
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.)
Granted
Application number
CN201711264781.5A
Other languages
English (en)
Other versions
CN108052326B (zh
Inventor
韩德强
李紫旭
王宗侠
张丽艳
杨淇善
李维铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201711264781.5A priority Critical patent/CN108052326B/zh
Publication of CN108052326A publication Critical patent/CN108052326A/zh
Application granted granted Critical
Publication of CN108052326B publication Critical patent/CN108052326B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

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支持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 (5)

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的编译系统到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板卡。
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文件中。
5.权利要求1所述的Xilinx FPGA支持Arduino IDE开发的实现方法,其特征在于,步骤(6)所述的用Xilinx SDK的驱动函数改写Arduino IDE的库函数,根据Arduino IDE中所需函数的功能以及所用参数,用Xilinx SDK中的对应驱动函数进行实现。
CN201711264781.5A 2017-12-05 2017-12-05 一种Xilinx FPGA支持Arduino IDE开发的实现方法 Active CN108052326B (zh)

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 true CN108052326A (zh) 2018-05-18
CN108052326B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069892A (zh) * 2019-05-08 2019-07-30 山东浪潮人工智能研究院有限公司 一种fpga引脚分配设计方法及装置
CN110688099A (zh) * 2019-09-12 2020-01-14 成都西达瑞电子科技有限公司 远距离无线电集成可编程片上系统的微处理器开发方法
CN111984537A (zh) * 2020-08-24 2020-11-24 上海睿成软件有限公司 一种基于WebIDE的软件测试方法、存储介质、装置

Citations (3)

* Cited by examiner, † Cited by third party
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 江苏虎甲虫计算技术有限公司 一种远程硬件实验系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
张丽艳等: "基于FPGA平台的计算机硬件实践教学探索", 《计算机教育》 *
李明: "基于可编程片上系统的嵌入式以太网通信开发 ", 《计算机应用》 *
王浩宇等: "基于Zynq-7000的视频采集平台设计 ", 《工业控制计算机》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069892A (zh) * 2019-05-08 2019-07-30 山东浪潮人工智能研究院有限公司 一种fpga引脚分配设计方法及装置
CN110688099A (zh) * 2019-09-12 2020-01-14 成都西达瑞电子科技有限公司 远距离无线电集成可编程片上系统的微处理器开发方法
CN110688099B (zh) * 2019-09-12 2022-10-14 成都西达瑞电子科技有限公司 远距离无线电集成可编程片上系统的微处理器开发方法
CN111984537A (zh) * 2020-08-24 2020-11-24 上海睿成软件有限公司 一种基于WebIDE的软件测试方法、存储介质、装置

Also Published As

Publication number Publication date
CN108052326B (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
CN102236621B (zh) 计算机接口信息配置系统及方法
CN108052326A (zh) 一种Xilinx FPGA支持Arduino IDE开发的实现方法
CN111309292B (zh) 一种基于MATLAB/Simulink的全模型可执行程序构建方法
CN107908394B (zh) 一种数据交换格式化源代码生成方法及装置
CN106528258A (zh) 提高安卓项目编译速度的方法及系统
Bucur et al. On software verification for sensor nodes
CN100492387C (zh) 基于Keil C51的软件保护开发的方法和系统
Simmonds Mastering Embedded Linux Programming
CN101267623A (zh) 一种手机启动引导的构建方法
CN109358839A (zh) 一种嵌入式单片机软件开发的方法及存储介质
CN111367579B (zh) 一种基于v-rep插件的处理器在环仿真方法
WO2020077487A1 (zh) 优化和运行安卓应用程序的方法以及相关装置
KR20020032256A (ko) 통합 임베디드 시스템 및 이의 구현 방법
CN106873951A (zh) 一种麻醉机上位机软件移植到嵌入式Linux的方法
Shpigor Instant MinGW Starter
CN110688099A (zh) 远距离无线电集成可编程片上系统的微处理器开发方法
Viarheichyk Embedded Programming with Modern C++ Cookbook: Practical recipes to help you build robust and secure embedded applications on Linux
CN217640186U (zh) 一种基于tms320f28335的iap在线升级模组
CN216249210U (zh) 一种实时开发系统
JP2004133630A (ja) プログラム作成方法、プログラム変換装置、プログラム及び記憶媒体
CN106777710A (zh) 一种在fpga上实现的cuda内核的方法
KR20160081200A (ko) 스크립트 기반 마이크로컨트롤러 펌웨어 개발 플랫폼
CN112764379A (zh) 一种基于dsp系统的iap控制方法
Gardner et al. CSP++: An open source tool for building concurrent applications from CSP specifications
CN103809949A (zh) 手持式数字存储示波表的WinCE系统平台的开发方法

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