CN111913740A - 一种基于fpga的risc-v处理器上的实时操作***移植方法 - Google Patents
一种基于fpga的risc-v处理器上的实时操作***移植方法 Download PDFInfo
- Publication number
- CN111913740A CN111913740A CN202010375612.4A CN202010375612A CN111913740A CN 111913740 A CN111913740 A CN 111913740A CN 202010375612 A CN202010375612 A CN 202010375612A CN 111913740 A CN111913740 A CN 111913740A
- Authority
- CN
- China
- Prior art keywords
- risc
- real
- freertos
- operating system
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000013508 migration Methods 0.000 claims description 10
- 230000005012 migration Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 7
- 238000013515 script Methods 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 11
- 238000002054 transplantation Methods 0.000 abstract description 5
- 238000012545 processing Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本申请提供了一种基于FPGA的RISC‑V处理器上的实时操作***移植方法,其中,所述实时操作***为开源FreeRTOS。基于FreeRTOS的源码编写例程,在一个基于FPGA的RISC‑V处理器上,以上传所述例程的方式,实现了FreeRTOS的移植,提高了RISC‑V处理器处理任务时的效率,方便了设计者对RISC‑V处理器的应用程序的开发,丰富了FreeRTOS的可移植性。
Description
技术领域
本发明涉及RISC-V处理器及其RTOS应用领域,特别涉及针对基于FPGA的RISC-V处理器上的实时操作***移植。
背景技术
当今占据着主导地位的指令集架构x86的指令数量不断增长,其昂贵和冗余的特点使越来越多的设计者转向了开源的简洁的RISC-V架构。而操作***提供的服务可以使设计者们在编写应用程序时速度更快、方式更简单并且更易于维护。目前已有的采用FreeRTOS的RISC-V应用中,尚没有基于Arty A7 FPGA开发板上实现的Rocket Chip处理器的实时操作***移植方法,难以满足设计者们的开发需求。
发明内容
考虑到上述背景,本发明提供了一种基于FPGA的RISC-V处理器上的实时操作***移植方法,提高了所述处理器处理任务时的效率,方便了设计者对所述处理器的应用的开发,丰富了FreeRTOS的可移植性。
为了实现上述目的,本发明提供了以下技术方案:
一种基于FPGA的RISC-V处理器上的实时操作***移植方法,其特征在于,将开源的RTOS代码针对基于FPGA的RISC-V处理器编写例程,其中,所述FPGA为Arty A7 FPGA开发板;
在所述FPGA上实现了一个RISC-V处理器,所述处理器由开源的Rocket Chip生成器生成;
利用所述处理器运行了一个实时操作***,所述实时操作***为开源的FreeRTOS。
所述的实时操作***移植方法包括,基于FreeRTOS提供的RISC-V接口应用示例,针对基于FPGA的RISC-V处理器对项目文件作出一定的修改和调整,主要包括以下步骤:
步骤1、修改和调整项目的RISC-V接口文件;
步骤2、定义和设置中断堆栈;
步骤3、修改和调整项目配置和内存管理;
步骤4、在主程序中添加相关的测试程序。
在上述的实时操作***移植方法中,所述步骤1中修改的接口文件均包含在FreeRTOS/Source/Portable/GCC/RISC-V目录中,包括:port.c、portmacro.h和portASM.S文件。
在所述步骤1中修改的接口文件中,所述port.c文件中包含了对当前所有的支持的RISC-V芯片通用的代码,所述文件伴随一个相应的头文件portmacro.h,和一个GCC所需的汇编器文件portASM.S,所述接口文件主要包含基本的中断和异常相关配置的底层函数声明,需要针对基于FPGA的RISC-V处理器以及测试任务的需求进行修改和调整。
在上述的实时操作***移植方法中,所述步骤2中的中断堆栈主要在项目底层文件,也就是C启动文件和链接脚本中进行定义和设置。
在所述步骤2中修改的项目底层文件中,需要基于所述重新定义中断堆栈所使用的内存地址,使调度程序启动前主程序所调用的堆栈可以在调度程序启动后作为中断堆栈被复用。
在上述的实时操作***移植方法中,所述步骤3中修改的参数配置主要包含在FreeRTOS/Source/portable/GCC/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions/freertos_risc_v_chip_specific_extensions.h头文件中,所述步骤3中的内存管理则主要通过选取FreeRTOS所提供的heap模型。
在上述的实时操作***移植方法中,所述步骤4中添加的测试程序主要包括:在例程主程序中声明和定义回调函数,并添加测试任务,以测试操作***移植的成功与否。
本发明提供的一种基于FPGA的RISC-V处理器上的实时操作***移植方法,其中,所述FPGA为Arty A7 FPGA开发板,在所述FPGA上实现了一个RISC-V处理器,所述处理器由Rocket Chip生成器生成,利用所述处理器运行了一个实时操作***,所述实时操作***为FreeRTOS。在一个基于FPGA的RISC-V处理器上,实现了FreeRTOS的移植,提高了所述处理器处理任务时的效率,方便了设计者对所述处理器的应用的开发,丰富了FreeRTOS的可移植性。
附图说明
图1为本发明实施例提供的移植实时操作***后的***结构示意图;
图2为本发明实施例提供的移植实时操作***代码的目录结构示意图;
图3为本发明实施例中的启动调度器前后的堆栈复用示意图;
图4为本发明实施例提供的实时操作***移植的测试流程示意图。
具体实施方式
以下将结合本发明实施例中的附图,对本发明实施例进行完整地说明,显然,接下来所描述的具体实施例仅用于解释本发明,并不能限定本发明。
本发明实施例提供了一种基于FPGA的RISC-V处理器上的实时操作***移植方法,将开源的RTOS项目代码针对基于FPGA的RISC-V处理器进行了修改和调整,移植后的***结构如图1所示:
其中,所述FPGA为Arty A7 FPGA开发板,在所述FPGA上实现了一个RISC-V处理器,所述处理器由开源的Rocket Chip生成器生成,利用所述处理器运行了一个实时操作***,所述实时操作***为开源的FreeRTOS。
需要说明的是,FreeRTOS与全球领先的芯片公司合作开发了15年,它主要是针对微控制器和小型微处理器的实时操作***,由麻省理工学院免费分发开源许可证,包括其内核以及一系列不断完善的适用于各行各业的库。FreeRTOS的可靠、开源和便于使用使其成为市场领先的RTOS内核。所以本发明实施例针对基于FPGA的RISC-V处理器,提供了实时操作***移植的方法。
本发明实施例中,FreeRTOS项目的源码托管在GitHub网站上,将其从网站上下载下来,该项目的源码中包括了所有的FreeRTOS接口文件和应用实例。每个FreeRTOS接口均包含三个包含内核核心组件的每种接口共用的文件,以及一些针对于某个特定架构处理器或编译器的文件。
需要说明的是,本发明实施例中所需修改的文件均包含在FreeRTOS/Source/Portable/GCC/RISC-V目录中,该目录的结构如图2所示。
其中,FreeRTOS/Source/portable/GCC/RISC-V/port.c文件中包含了对当前所有的支持的RISC-V芯片通用的代码,该文件伴随一个相应的头文件portmacro.h,和一个GCC所需的汇编器文件portASM.S,这三个文件主要包含基本的中断和异常相关配置的底层函数声明。
此外,freertos_risc_v_chip_specific_extensions.h头文件专门用于RISC-V架构,使基础的RTOS接口文件针对RISC-V架构有了更多的拓展。
需要说明的是,RISC-V处理器有很多种,所以freertos_risc_v_chip_specific_extensions.h头文件也有很多个,本发明实施例中使用了FreeRTOS/Source/portable/GCC/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions目录下的该文件,需将该路径添加至汇编器的include路径中。
本发明实施例需对freertos_risc_v_chip_specific_extensions.h头文件中的配置进行修改。
由于其他的RISC-V处理器所使用的定时器实例在本发明实施例中无法使用,本发明实施例在所述头文件中使用FreeRTOS的Windows接口_WINDOWS_,所述接口可以为本发明实施例的测试提供更大的余量。
需要注意的是,FreeRTOS项目从10.3.0版本开始不再使用configCLINT_BASE_ADDRESS配置,而是改为使用configMTIME_BASE_ADDRESS和configMTIMECMP_BASE_ADDRESS设置,本发明实施例同样需在所述头文件中对其做出定义,将configMTIME_BASE_ADDRESS设置为定时器的基地址,configMTIMECMP_BASE_ADDRESS设置为定时器比较器的地址。
FreeRTOS调用外部的中断处理程序时,必须提供进入中断时RISC-V的cause寄存器的值,此外,还需将汇编器命令行的portasmHANDLE_INTERRUPT选项设置为相应的traphandler。
本发明实施例中无需使用freertos_risc_v_chip_specific_extensions.h头文件中的vPortEndScheduler函数。
由于测试的需要,本发明实施例中还需注意使能freertos_risc_v_chip_specific_extensions.h头文件中的宏定义configUSE_TIMERS。
本发明实施例所需要修改的项目底层文件主要包括C启动文件和链接脚本。
需要说明的是,对上述的需要修改的C启动文件和链接脚本,需要基于所述重新定义中断堆栈所使用的内存地址。
具体的,FreeRTOS项目中,在任何函数调用中断服务程序(ISR,InterruptService Routine)之前,RISC-V接口会切换到特定的中断堆栈,中断堆栈所使用的内存地址可以定义在链接脚本中,也可以在FreeRTOS项目的接口文件中声明为静态分配数组,本发明实施例选择第一种方法,在flash.lds文件中添加链接向量__freertos_irq_stack_top,由此,如图3所示,调度程序启动前主程序所调用的堆栈可以在调度程序启动后作为中断堆栈被复用。
此外,为了判断FreeRTOS是否在开发板上的RISC-V CPU上移植成功,如图4所示,本发明实施例利用FreeRTOS的软件计时器在例程文件中添加了测试程序。具体的,本发明实施例在主程序main.c中声明和定义了回调函数,并添加了计时器中断测试任务,将例程文件编译并上传至开发板,根据返回的测试结果判断FreeRTOS移植是否成功。
综上所述,本发明实施例提供了一种基于FPGA的RISC-V处理器上的实时操作***移植方法,将开源的FreeRTOS代码针对基于FPGA的RISC-V处理器编写例程,实现实时操作***的移植,提高了所述处理器处理任务时的效率,方便了设计者对所述处理器的应用的开发,丰富了FreeRTOS的可移植性。
Claims (6)
1.一种基于FPGA的RISC-V处理器上的实时操作***移植方法,其特征在于,基于开源的实时操作***源码针对基于FPGA的RISC-V处理器编写例程,所述例程在基于FPGA的RISC-V处理器上运行,无需对所述操作***的内核源码作出修改。
2.根据权利要求1所述的实时操作***移植方法,其特征在于,所述实时操作***为开源FreeRTOS,基于FreeRTOS提供的RISC-V接口应用示例,针对基于FPGA的RISC-V处理器对项目文件作出一定的修改和调整,主要包括以下步骤:
步骤1、修改和调整项目的RISC-V接口文件;
步骤2、定义和设置中断堆栈;
步骤3、修改和调整项目配置和内存管理;
步骤4、在主程序中添加相关的测试程序。
3.根据权利要求2所述的实时操作***移植方法,其特征在于,所述步骤1中修改的接口文件均包含在FreeRTOS/Source/Portable/GCC/RISC-V目录中,包括:port.c、portmacro.h和portASM.S文件。
4.根据权利要求2所述的实时操作***移植方法,其特征在于,所述步骤2中的中断堆栈主要在项目底层文件,也就是C启动文件和链接脚本中进行定义和设置。
5.根据权利要求2所述的实时操作***移植方法,其特征在于,所述步骤3中修改的参数配置主要包含在FreeRTOS/Source/portable/GCC/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions/freertos_risc_v_chip_specific_extensions.h头文件中。
6.根据权利要求2所述的实时操作***移植方法,其特征在于,所述步骤4中添加的测试程序主要包括:在例程主程序中声明和定义回调函数,并添加测试任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010375612.4A CN111913740A (zh) | 2020-05-07 | 2020-05-07 | 一种基于fpga的risc-v处理器上的实时操作***移植方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010375612.4A CN111913740A (zh) | 2020-05-07 | 2020-05-07 | 一种基于fpga的risc-v处理器上的实时操作***移植方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111913740A true CN111913740A (zh) | 2020-11-10 |
Family
ID=73237998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010375612.4A Pending CN111913740A (zh) | 2020-05-07 | 2020-05-07 | 一种基于fpga的risc-v处理器上的实时操作***移植方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913740A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115238621A (zh) * | 2022-09-22 | 2022-10-25 | 深圳市国电科技通信有限公司 | 移植方法、装置、电子设备及存储介质 |
WO2023165206A1 (zh) * | 2022-03-04 | 2023-09-07 | 麒麟软件有限公司 | 国产操作***适配Ceph的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130336237A1 (en) * | 2012-03-30 | 2013-12-19 | International Business Machines Corporation | Adapter, base band processing unit and base station system |
CN103995939A (zh) * | 2014-05-30 | 2014-08-20 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于arm与fpga的动态可重构嵌入式*** |
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
CN103793255B (zh) * | 2014-02-27 | 2017-01-25 | 重庆邮电大学 | 可配置的多主模式多os内核实时操作***架构的启动方法 |
CN110083385A (zh) * | 2019-05-28 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 基于risc-v处理器的***移植方法及相关组件 |
CN110704113A (zh) * | 2019-09-04 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种基于fpga平台的启动方法、***及开发板装置 |
-
2020
- 2020-05-07 CN CN202010375612.4A patent/CN111913740A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130336237A1 (en) * | 2012-03-30 | 2013-12-19 | International Business Machines Corporation | Adapter, base band processing unit and base station system |
CN103793255B (zh) * | 2014-02-27 | 2017-01-25 | 重庆邮电大学 | 可配置的多主模式多os内核实时操作***架构的启动方法 |
CN103995939A (zh) * | 2014-05-30 | 2014-08-20 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于arm与fpga的动态可重构嵌入式*** |
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
CN110083385A (zh) * | 2019-05-28 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 基于risc-v处理器的***移植方法及相关组件 |
CN110704113A (zh) * | 2019-09-04 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种基于fpga平台的启动方法、***及开发板装置 |
Non-Patent Citations (1)
Title |
---|
翟亚红 等: "基于动态频率补偿的LDO 电路设计" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023165206A1 (zh) * | 2022-03-04 | 2023-09-07 | 麒麟软件有限公司 | 国产操作***适配Ceph的方法 |
CN115238621A (zh) * | 2022-09-22 | 2022-10-25 | 深圳市国电科技通信有限公司 | 移植方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6247172B1 (en) | Method for a translation system that aggressively optimizes and preserves full synchronous exception state | |
US6795963B1 (en) | Method and system for optimizing systems with enhanced debugging information | |
TWI341992B (en) | Method and system for quickly developing an embedded operating system through utilizing an automated building framework | |
US7996659B2 (en) | Microprocessor instruction that allows system routine calls and returns from all contexts | |
JPH11232138A (ja) | エミュレーション方法 | |
WO2022227410A1 (zh) | 一种嵌入式终端远程软件调试方法 | |
CN111913740A (zh) | 一种基于fpga的risc-v处理器上的实时操作***移植方法 | |
CN102364442B (zh) | 将Wine从x86移植到ARM平台的方法 | |
CN102364433B (zh) | 在ARM处理器上实现Wine构建工具移植的方法 | |
CN105354045A (zh) | 补丁的制作方法及装置、补丁的激活方法及装置 | |
Pétrot et al. | On mpsoc software execution at the transaction level | |
JP2009157684A (ja) | 仮想化プログラム、シミュレーション装置、仮想化方法 | |
US20040083467A1 (en) | System and method for executing intermediate code | |
US20060070028A1 (en) | Procedure invocation in an integrated computing environment having both compiled and interpreted code segments | |
CN102169446A (zh) | 一种基于开源***基本输入输出***的bios***和方法 | |
Dolev et al. | Toward self-stabilizing operating systems | |
CN116661757B (zh) | 一种程序模块化的文件优先编译***和方法 | |
CN114115938A (zh) | 基于QEMU的Linux跨架构运行文件方法 | |
CN114035920A (zh) | 一种dsp程序对称加载运行的方法及其装置 | |
US20230130429A1 (en) | Method for debugging program of manycore parallel processor based on code execution and apparatus using the same | |
KR101213651B1 (ko) | 운영체제의 초기화 스크립트의 이진화 방법, 및 그 이진화 스크립트의 실행 방법 | |
Kalibera et al. | Real-time Java in space: Potential benefits and open challenges | |
Sveshnikova et al. | Using Virtualisation for Reproducible Research and Code Portability | |
CN116578377A (zh) | 基于安卓模拟器的risc-v架构的构建方法及装置 | |
JPH05282160A (ja) | リアルタイム・シミュレーション開発機構 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20201110 |