CN112015522B - 系统功能扩展方法、装置及计算机可读存储介质 - Google Patents
系统功能扩展方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112015522B CN112015522B CN202011200279.XA CN202011200279A CN112015522B CN 112015522 B CN112015522 B CN 112015522B CN 202011200279 A CN202011200279 A CN 202011200279A CN 112015522 B CN112015522 B CN 112015522B
- Authority
- CN
- China
- Prior art keywords
- program
- memory
- address
- virtual microcontroller
- instruction
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种系统功能扩展方法,所述系统功能扩展方法包括:当接收到扩展程序时,运行虚拟微控制器,所述虚拟微控制器为模拟精简指令集架构RISC‑V处理器的软件;获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器;将所述扩展程序写入所述程序存储器;根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能。本发明还公开了一种系统功能扩展装置和一种计算机可读存储介质。本发明对于资源受限的系统,可实现运行时刻动态扩展系统功能。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种系统功能扩展方法、装置及计算机可读存储介质。
背景技术
目前,对已有应用程序的系统进行功能扩展,需要将实现扩展功能的代码插入系统的原始执行逻辑,从而实现系统功能的扩展。然而该方法在每次扩展系统功能时都需要重新编排系统的执行逻辑,从而耗费大量的时间。
为了提高系统功能扩展的效率,实现运行时刻动态扩展系统功能,通常采用从外部存储器加载应用程序的操作系统方案,然而,对于资源匮乏的系统,缺乏操作系统所需的运行空间。此外,还可采用执行Lua、PICOC、Basic、Python等脚本程序扩展系统功能,然而,执行脚本程序需要相应的解释器,该解释器需占用系统资源,对于资源受限的系统,无法满足该解释器所需的资源。因此,现有的系统功能扩展方案均难以适用于资源受限的系统,如何实现运行时刻动态扩展资源受限系统的功能,成为了目前亟待解决的问题。
发明内容
本发明的主要目的在于提供一种系统功能扩展方法、装置及计算机可读存储介质,旨在实现运行时刻动态扩展资源受限系统的功能。
为实现上述目的,本发明提供一种系统功能扩展方法,所述系统功能扩展方法包括以下步骤:
当接收到扩展程序时,运行虚拟微控制器,所述虚拟微控制器为模拟精简指令集架构RISC-V处理器的软件;
获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器;
将所述扩展程序写入所述程序存储器;
根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能。
可选地,所述获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器的步骤包括:
获取宿主机的存储器中的空闲资源;
将所述空闲资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
将所述空闲资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
可选地,所述获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器的步骤包括:
通过宿主机的串行接口获取外部存储器的存储资源;
将所述存储资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
将所述存储资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
可选地,所述根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能的步骤包括:
获取所述虚拟微控制器的程序计数器PC寄存器中的值,将获取到的值作为PC地址;
判断所述PC地址是否合法;
若所述PC地址合法,则将所述PC地址转换为物理地址;
根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令;
对所述待执行指令进行解码,得到解码指令;
判断所述解码指令是否合法;
若所述解码指令合法,则根据所述解码指令,得到所述数据存储器的地址;
根据所述数据存储器的地址,获取所述数据存储器中的第一数据;
根据所述第一数据,执行所述解码指令,并得到执行结果;
根据所述执行结果,更新所述虚拟微控制器的寄存器,并将执行结果中的第二数据更新到所述数据存储器,以实现扩展功能。
可选地,所述若所述PC地址合法,则将所述PC地址转换为物理地址的步骤包括:
若所述PC地址合法,将所述PC地址转换为内部地址;
将所述内部地址作为物理地址;
其中,所述根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令的步骤包括:
根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
将寻址得到的存储空间中的值作为待执行指令。
可选地,所述若所述PC地址合法,则将所述PC地址转换为物理地址的步骤包括:
若所述PC地址合法,将所述PC地址转换为串行存储器的地址;
将所述串行存储器的地址作为物理地址;
其中,所述根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令的步骤包括:
驱动宿主机的串行接口读取已写入所述扩展程序的程序存储器,其中,已写入所述扩展程序的程序存储器为外部存储器;
根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
将寻址得到的存储空间中的值作为待执行指令。
可选地,所述获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器的步骤之前,还包括:
获取宿主机的外设、中断及存储器;
将所述外设、所述中断及所述存储器映射至所述虚拟微控制器。
可选地,所述扩展程序为所述虚拟微控制器的可执行程序,所述可执行程序为开发程序通过工具链生成得到的程序,所述开发程序为使用编译型语言进行开发的程序。
此外,为实现上述目的,本发明还提供一种系统功能扩展装置,所述系统功能扩展装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的系统功能扩展程序,所述系统功能扩展程序被所述处理器执行时实现如上所述的系统功能扩展方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有系统功能扩展程序,所述系统功能扩展程序被处理器执行时实现如上所述的系统功能扩展方法的步骤。
本发明提供一种系统功能扩展方法、装置及计算机可读存储介质,当接收到扩展程序时,运行虚拟微控制器,虚拟微控制器为模拟精简指令集架构RISC-V处理器的软件;获取虚拟微控制器的程序存储器及虚拟微控制器的数据存储器;将扩展程序写入程序存储器;根据已写入扩展程序的程序存储器中的指令,更新数据存储器与虚拟微控制器的寄存器,以实现扩展功能。通过上述方式,本发明将实现扩展功能的扩展程序发送至虚拟微控制器,然后虚拟微控制器单独执行该扩展程序,以使扩展程序和系统原有程序分为两个进程分别执行,从而保证系统原有程序正常执行的同时,可实现运行时刻动态扩展系统功能;同时,虚拟微控制器是通过软件模拟RISC-V处理器得到的软件,也就是说,虚拟微控制器是通过软件模拟硬件执行简单的RV32I、RV32M指令集,以实现一个简单的只有机器态的单核心处理器,使得虚拟微控制器占用系统的资源小。因此,本发明对于资源受限的系统,可实现运行时刻动态扩展系统功能。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本发明系统功能扩展方法第一实施例的流程示意图;
图3为本发明系统功能扩展方法第二实施例的流程示意图;
图4为本发明系统功能扩展方法第三实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端为虚拟微控制器的宿主机,该宿主机可以为单片机、嵌入式系统、微型计算机、PC(personal computer,个人计算机)等具有处理功能的设备。
如图1所示,该终端可以包括:处理器1001,例如CPU(Central Processing Unit,中央处理器),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及系统功能扩展程序。
在图1所示的终端中,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,并执行以下操作:
当接收到扩展程序时,运行虚拟微控制器,所述虚拟微控制器为模拟精简指令集架构RISC-V处理器的软件;
获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器;
将所述扩展程序写入所述程序存储器;
根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能。
进一步地,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,还执行以下操作:
获取宿主机的存储器中的空闲资源;
将所述空闲资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
将所述空闲资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
进一步地,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,还执行以下操作:
通过宿主机的串行接口获取外部存储器的存储资源;
将所述存储资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
将所述存储资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
进一步地,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,还执行以下操作:
获取所述虚拟微控制器的程序计数器PC寄存器中的值,将获取到的值作为PC地址;
判断所述PC地址是否合法;
若所述PC地址合法,则将所述PC地址转换为物理地址;
根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令;
对所述待执行指令进行解码,得到解码指令;
判断所述解码指令是否合法;
若所述解码指令合法,则根据所述解码指令,得到所述数据存储器的地址;
根据所述数据存储器的地址,获取所述数据存储器中的第一数据;
根据所述第一数据,执行所述解码指令,并得到执行结果;
根据所述执行结果,更新所述虚拟微控制器的寄存器,并将执行结果中的第二数据更新到所述数据存储器,以实现扩展功能。
进一步地,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,还执行以下操作:
若所述PC地址合法,将所述PC地址转换为内部地址;
将所述内部地址作为物理地址;
其中,所述根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令的步骤包括:
根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
将寻址得到的存储空间中的值作为待执行指令。
进一步地,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,还执行以下操作:
若所述PC地址合法,将所述PC地址转换为串行存储器的地址;
将所述串行存储器的地址作为物理地址;
其中,所述根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令的步骤包括:
驱动宿主机的串行接口读取已写入所述扩展程序的程序存储器,其中,已写入所述扩展程序的程序存储器为外部存储器;
根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
将寻址得到的存储空间中的值作为待执行指令。
进一步地,处理器1001可以用于调用存储器1005中存储的系统功能扩展程序,还执行以下操作:
获取宿主机的外设、中断及存储器;
将所述外设、所述中断及所述存储器映射至所述虚拟微控制器。
进一步地,所述扩展程序为所述虚拟微控制器的可执行程序,所述可执行程序为开发程序通过工具链生成得到的程序,所述开发程序为使用编译型语言进行开发的程序。
基于上述硬件结构,提出本发明系统功能扩展方法各个实施例。
本发明提供一种系统功能扩展方法。
参照图2,图2为本发明系统功能扩展方法第一实施例的流程示意图。
在本实施例中,该系统功能扩展方法包括:
步骤S10,当接收到扩展程序时,运行虚拟微控制器,所述虚拟微控制器为模拟精简指令集架构RISC-V处理器的软件;
在本实施例中,该系统功能扩展方法由虚拟微控制器的宿主机实现,该宿主机可以是单片机、嵌入式系统、微型计算机、PC等具有处理功能的设备。该宿主机以单片机为例进行说明,单片机又称MCU(Micro controller Unit,微控制单元),单片机中的CPU频率与规格通常较小,并且将内存(memory)、计数器、A/D(Analogue/Digital,模拟/数字)转换、UART(Universal Asynchronous Receiver/Transmitter,异步收发传输器)等整合到单片机,因此,单片机可实现各种功能,然而,单片机的资源十分匮乏,无法提供过多的内存空间。
在本实施例中,当接收到扩展程序时,运行虚拟微控制器,虚拟微控制器为模拟RISC-V处理器的软件。具体的,当宿主机通过其接口接收到扩展程序时,调用宿主机软件栈上的虚拟微控制器进行运行,以使宿主机上存在两个单独进程,从而宿主机可分别执行程序。其中,宿主机为运行虚拟微控制器的环境。需要说明的是,该虚拟微控制器的执行流程为从程序存储器中获得一条指令,对指令进行解码,从数据存储器中获取数据,执行指令后,根据指令将结果,更新寄存器或者数据存储器。然后按照PC寄存器的指向,继续执行下一条指令,其中,对数据存储器的寻址和程序存储器的寻址是软件行为,从而可通过软件将宿主机的空闲存储资源作为指令或数据的存储空间。
此外,还需要说明的是,虚拟微控制器可通过任意编程语言进行开发,例如C、C++、汇编等编程语言,通过该编程语言进行开发的虚拟微控制器,可完全模拟单片机。该虚拟微控制器的处理器是通过软件模拟RISC-V的处理器,当然,还可通过软件模拟CISC(ComplexInstruction Set Computer,复杂指令集)、OpenRISC(Open Reduced Instruction SetComputing,开源精简指令集)等指令集架构。具体的,通过软件模拟硬件执行RISC-V中的RV32I指令集、RV32M指令集,实现一个最简单的只有机器态(Machine-mode)的单核心处理器。可以理解,RV32I指令集与RV32M指令集是十分简单的,因此,实现该虚拟微控制器不会占据宿主机过多的资源。
此外,还需要说明的是,虚拟微控制器包括核心、数据存储器、程序存储器、外设等组成。该核心包括虚拟微控制器中处理器的寄存器、指令、异常等。对存储器进行划分得到程序存储器与数据存储器。该外设包括UART的串口和定时器。
其中,处理器的寄存器包括33个核心寄存器,本实施例中的CSR(Control andStatus Register,控制和状态寄存器)地址以16进制为例进行说明。具体的,mtvec(Machine Trap Vector,机器陷阱向量)寄存器的CSR地址为0x305,该mtvec寄存器保存的是中断向量的基地址,也就是保存虚拟微控制器需要跳转的地址,mtvec寄存器的初始化值为0x00000001,mtvec寄存器中包括Base Address(中断向量表的基地址)及Mode(始终置位),Base Address为寄存器中2至31比特位的值,Base Address可读可写,Mode为寄存器0至1比特位的值,Mode只可读。
此外,mepc(Machine Exception PC,机器异常程序计数器)寄存器的CSR地址为0x341,该mepc寄存器用来指向虚拟微控制器发生异常的指令,该指令使得虚拟微控制器发生中断时,将核心跳转到对应的异常服务地址运行,并在mret指令返回时,将mepc寄存器的值替代当前PC寄存器,mepc寄存器的初始化值为0x00000000。
此外,mcause(Machine Exception Cause,机器异常原因)寄存器的CSR地址为0x342,该mcause寄存器用来指示虚拟微控制器发生异常的种类,mcause寄存器的初始化值为0x00000000,mcause寄存器中包括INT(标志位)及Exception Code(异常编码),INT为寄存器中31比特位的值,INT只可读,若INT被置位则表示异常由中断触发,Exception Code为寄存器0至7比特位的值,Exception Code也是只可读。
此外,mie(Machine Interrupt Enable,机器中断使能)寄存器的CSR地址为0x304,该mie寄存器用来指出虚拟微控制器中处理器能处理和必须忽略的中断,mie寄存器的初始值为0x00000000,mie寄存器中包括WPRI(Reserved Write preserve value, readsignore value,保留写保存值,读出时忽略)、MEIP(外部中断标志位)、MSIP(软件中断标志位),WPRI为寄存器中12至31比特位、10比特位、6比特位、2比特位的值,WPRI只可读,在本实施例中,直接将WPRI置0,并在读出时,软件忽略WPRI,MEIP为寄存器中11比特位的值,MEIP可读可写,MEIP置位时,使能外部中断,MSIP为寄存器中3比特位的值,MSIP可读可写,MSIP置位时,使能软件中断。
此外,mip(Machine Interrupt Pending,机器中断等待)寄存器的CSR地址为0x344,该mip寄存器用于列出目前正准备处理的中断,mip寄存器初始化值为0x00000000,mip寄存器中包括WPRI(Reserved Write preserve value, reads ignore value,保留写保存值,读出时忽略)、MEIP(外部中断标志位)、MSIP(软件中断标志位),WPRI为寄存器中12至31比特位、10比特位、6比特位、2比特位的值,WPRI只可读,在本实施例中,直接将WPRI置0,并在读出时,软件忽略WPRI,MEIP为寄存器中11比特位的值,MEIP可读可写,MEIP置位时,使能外部中断,MSIP为寄存器中3比特位的值,MSIP可读可写,MSIP置位时,使能软件中断。
此外,mtval(Machine Trap Value,机器陷阱值)寄存器的CSR地址为0x343,mtval寄存器用于保存机器陷入陷阱的附加信息,例如发生地址例外中出错的地址、发生非法指令例外的指令,其他异常附加信息为0,mtval寄存器初始化值为0x00000000。mscratch(Machine Scratch)寄存器的CSR地位为0x340,mscratch寄存器用于暂时存放一个字节的数据,mscratch寄存器初始化值为0x00000000。
此外,mstatus(Machine Status,机器状态)寄存器的CSR地址为0x300,mstatus寄存器用于保存全局中断使能以及其他状态,mstatus寄存器的初始化值为0x00001800,mstatus寄存器包括MPP(机器态标志位)、MPIE(中断操作标志位)、MIE(中断使能位),MPP为寄存器中11至12比特位的值,MPP始终为b11(二进制),MPP不能被切换,即表示工作为机器态,MPP只可读,MPIE为寄存器中7比特位的值,当中断发生时,MPIE保存MIE的值,当mret指令从中断返回时,MPIE的值保存至MIE,MIE为寄存器中3比特位的值,MIE为中断使能,当MIE为b1时,使能中断。
此外,mhardid(Machine Hardware ID,机器硬件编号)寄存器的CSR地址为0xf14,mhardid寄存器用于保存硬件编号,mhardid寄存器的初始化值为0x00000000,mhardid寄存器包括Cluster ID(簇编号)、Core ID(核心编号),Cluster ID为寄存器中5至10比特位,Cluster ID用来保存簇的识别编号,Cluster ID只可读,Core ID为寄存器中0至3比特位的值,Core ID用来保存在簇里的核心编号,Core ID可读可写。
此外,其他寄存器也是根据RISC-V规范进行设计的,例如CSR地址为0x301的misa寄存器,用来报告核心所支持的ISA(Instruction Set Architecture,指令集架构),CSR地址为0xf12的Marchid寄存器,用来报告核心的机器态编号,CSR地址为0xf13的mimpid寄存器,用来报告处理器的版本。未做具体实现的存储器,在读取时均返回0,防止产生不必要的异常。
步骤S20,获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器;
在本实施例中,获取虚拟微控制器的程序存储器及虚拟微控制器的数据存储器。可以理解,对数据存储器的寻址和程序存储器的寻址是软件行为,从而可通过软件将宿主机的空闲存储资源作为虚拟微控制器的数据存储器与程序存储器。当然,也可以使用宿主机的非统一编址存储器(串行存储器),通过设置通讯接口获取外部存储器的程序存储器与数据存储器。
具体的,当虚拟微控制器检测到有外部存储器,也就是说,用户将外部设备挂接在虚拟微控制器上,则在指令访问存储器的时候,对存储器进行寻址,当寻找不到该存储空间时,调用用户钩子函数,以检查外部设备的存储空间,从而将外设存储器映射到虚拟微控制器中。
作为程序存储器及数据存储器的其中一种获取方式,包括以下步骤:
步骤a21,获取宿主机的存储器中的空闲资源;
在本实施例中,获取宿主机的存储器中的空闲资源。其中,宿主机为虚拟微控制器的运行环境;空闲资源为宿主机的存储器中除了原有程序占用的资源外的其它资源。
步骤a22,将所述空闲资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
然后,将空闲资源中的第一预设空间作为虚拟微控制器的程序存储器。其中,第一预设空间的大小根据具体需求进行设定,此处不作具体限定。例如,将第一预设空间的大小设定为256MB,该程序存储器的地址可设为0x00000000至0x10000000。
步骤a23,将所述空闲资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
然后,将空闲资源中的第二预设空间作为虚拟微控制器的数据存储器。其中,第二预设空间的大小根据具体需求进行设定,此处不作具体限定。例如,将第二预设空间的大小设定为256MB,该数据存储器的地址可设为0x10000000至0x20000000。
作为程序存储器及数据存储器的另外一种获取方式,包括以下步骤:
步骤a24,通过宿主机的串行接口获取外部存储器的存储资源;
在本实施例中,通过宿主机的串行接口获取外部存储器的存储资源。具体的,通过使用宿主机上的非统一编址存储器(串行存储器),然后设置串行接口,通过该串行接口获取外部存储器的存储资源,即获取外部存储器的数据,从而避免消耗宿主机的存储资源。
步骤a25,将所述存储资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
然后,将存储资源中的第一预设空间作为虚拟微控制器的程序存储器。其中,第一预设空间的大小根据具体需求进行设定,此处不作具体限定。例如,将第一预设空间的大小设定为256MB,该程序存储器的地址可设为0x00000000至0x10000000。
步骤a26,将所述存储资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
然后,将存储资源中的第二预设空间作为虚拟微控制器的数据存储器。其中,第二预设空间的大小根据具体需求进行设定,此处不作具体限定。例如,将第二预设空间的大小设定为256MB,该数据存储器的地址可设为0x10000000至0x20000000。
步骤S30,将所述扩展程序写入所述程序存储器;
然后,将扩展程序写入程序存储器。其中,扩展程序是由开发程序经过工具链产生得到的程序,该开发程序可以采用任意的开发语言进行开发,该工具链为可产生虚拟微控制器指令的工具。具体的,开发程序经过编译、调试、发布并部署等操作,将开发程序转换为扩展程序(可执行程序),以使虚拟微控制器可对扩展程序进行处理。
步骤S40,根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能。
在本实施例中,根据已写入扩展程序的程序存储器中的指令,更新数据存储器与虚拟微控制器的寄存器,以实现扩展功能。在扩展程序写入程序存储器后,可以理解扩展程序就是程序存储器中的指令,指令包括操作码和操作数(地址码),指令的长度为4字节,若指令没有4字节对齐,在分支或无条件跳转指令跳转到该指令时,则会产生指令非对齐的错误。
具体的,指令包括移位、算数、逻辑、比较、分支跳转、跳转、同步、环境、控制状态寄存器、加载、存储、特权指令、乘法、除法、余数等,其具体指令是基于RV32I进行设计的,此处不作具体赘述。以算数中的加指令(ADD rd,rs1,rs2)举例进行说明,rd为进行相加得到的和保存的数据存储器,rs1为被加数的数据存储器,rs2为加数的数据存储器。根据举例可以理解,通过与上述类似的指令,可更新相应数据存储器中存储的值。
此外,以控制状态寄存器中的读/写指令(CSRRW rd,csr,rs1)举例进行说明,将CSR中的值写入rd(数据存储器),将rs1(数据存储器)中的值写入CSR中。根据举例可以理解,通过与上述类似的指令,可更新相应数据存储器中存储的值,并更新相应CSR的寄存器的值。
需要说明的是,每执行完一条指令,系统都会检测是否发生异常。若发生异常并且系统又允许中断。那么,VMCU更新mstatus、mepc、pc、mcause、mtval寄存器。具体的,将异常指令的PC保存至mepc寄存器,并将PC寄存器设置为(mtvec & 0xfffffffc)+(mcause &0xff)*4,然后根据异常来源设置mcause寄存器,将mtval寄存器设置为出错的地址或者其他适用于特定异常的信息,最后把mstatus寄存器中的MIE置0,以实现禁用中断,并把先前的MIE值保存至mstatus寄存器中MPIE中,最后更新PC寄存器。
本发明实施例提供一种系统功能扩展方法,当接收到扩展程序时,运行虚拟微控制器,虚拟微控制器为模拟精简指令集架构RISC-V处理器的软件;获取虚拟微控制器的程序存储器及虚拟微控制器的数据存储器;将扩展程序写入程序存储器;根据已写入扩展程序的程序存储器中的指令,更新数据存储器与虚拟微控制器的寄存器,以实现扩展功能。通过上述方式,本发明实施例将实现扩展功能的扩展程序发送至虚拟微控制器,然后虚拟微控制器单独执行该扩展程序,以使扩展程序和系统原有程序分为两个进程分别执行,从而保证系统原有程序正常执行的同时,可实现运行时刻动态扩展系统功能;同时,虚拟微控制器是通过软件模拟RISC-V处理器得到的软件,也就是说,虚拟微控制器是通过软件模拟硬件执行简单的RV32I、RV32M指令集,以实现一个简单的只有机器态的单核心处理器,使得虚拟微控制器占用系统的资源小。因此,本发明对于资源受限的系统,可实现运行时刻动态扩展系统功能。
进一步地,基于上述第一实施例,提出本发明系统功能扩展方法的第二实施例。
参照图3,图3为本发明系统功能扩展方法第二实施例的流程示意图。
在本实施例中,在上述步骤S20之前,该系统功能扩展方法还包括:
步骤S50,获取宿主机的外设、中断及存储器;
在本实施例中,获取宿主机的外设、中断及存储器。其中,外设包括UART和定时器,该UART用于连接虚拟微控制器和宿主机,在存储器的地址为0x400000000至0x40001000,该定时器的时基由宿主机保证,其不提供分频机制,其分为周期模式与单次模式;存储器包括程序存储器及数据存储器。
步骤S60,将所述外设、所述中断及所述存储器映射至所述虚拟微控制器。
然后,将外设、中断及存储器映射至虚拟微控制器。
本实施例中,通过将宿主机的外设、中断及存储器映射至虚拟微控制器,以使虚拟微控制器像访问自己的资源一样去访问外设、中断及存储器,从而提高扩展程序的执行速度。
进一步地,基于上述第一实施例,提出本发明系统功能扩展方法的第三实施例。
参照图4,图4为本发明系统功能扩展方法第三实施例的流程示意图。
在本实施例中,上述步骤S40包括:
步骤S401,获取所述虚拟微控制器的程序计数器PC寄存器中的值,将获取到的值作为PC地址;
在本实施例中,获取虚拟微控制器的PC(program counter,程序计数器)寄存器中的值,将获取到的值作为PC地址。其中,PC寄存器是控制程序执行流程的指针。
步骤S402,判断所述PC地址是否合法;
在获取到PC地址之后,判断PC地址是否合法。具体的,判断PC地址是否存在,PC地址是否对齐,PC地址是否可访问等,若PC地址不合法,将会产生异常,并将核心转到异常处理流程。
步骤S403,若所述PC地址合法,则将所述PC地址转换为物理地址;
在本实施例中,若PC地址合法,则将PC地址转换为物理地址。具体的转换过程可参照下述第四实施例,此处不作赘述。
步骤S404,根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令;
在本实施例中,根据物理地址,获取程序存储器中的待执行指令,并更新所述PC寄存器。具体的,根据物理地址,对虚拟微控制器的程序存储器进行寻址,将寻址得到的存储空间中的值作为待执行指令。可以理解,从程序存储器中取出指令后,需更新pc寄存器,以执行完该指令后,继续执行下个指令。
步骤S405,对所述待执行指令进行解码,得到解码指令;
然后,对待执行指令进行解码,得到解码指令。具体的,将待执行指令分离为操作码和操作数,该操作码和操作数就是解码指令。
步骤S406,判断所述解码指令是否合法;
在本实施例中,判断解码指令是否合法。具体的,判断解码指令是否存在、解码指令是否对齐、解码指令是否可访问,若解码指令不合法,则产生非法指令异常,并更新寄存器。
步骤S407,若所述解码指令合法,则根据所述解码指令,得到所述数据存储器的地址;
在本实施例中,若解码指令合法,则根据所述解码指令,得到所述数据存储器的地址。具体的,将解码指令中的操作数作为数据存储器的地址。
步骤S408,根据所述数据存储器的地址,获取所述数据存储器中的第一数据;
然后,根据数据存储器的地址,获取数据存储器中的数据,将该数据作为第一数据。
步骤S409,根据所述第一数据,执行所述解码指令,并得到执行结果;
在得到第一数据之后,根据第一数据,执行解码指令,得到执行结果。具体的,根据解码指令中的操作码对第一数据进行运算、控制或存储等,可以理解,第一数据可以包括0个、1个、2个等。
步骤S410,根据所述执行结果,更新所述虚拟微控制器的寄存器,并将执行结果中的第二数据更新到所述数据存储器,以实现扩展功能。
然后,根据执行结果,更新虚拟微控制器的寄存器,并将执行结果中的第二数据更新到数据存储器,以实现扩展功能。
本实施例中,通过执行程序存储器中的程序,即通过执行程序存储器中的指令,更新虚拟微控制器的寄存器及数据存储器,从而实现系统的中断、异常、流程控制等,然后通过更新寄存器及数据存储器,以实现扩展系统功能。
进一步地,基于上述第三实施例,提出本发明系统功能扩展方法的第四实施例。
在本实施例中,作为一实施方式,步骤S403可以包括:
步骤a4031,若所述PC地址合法,将所述PC地址转换为内部地址;
在本实施例中,若PC地址合法,将PC地址转换为内部地址。具体的,如果虚拟微控制器使用的是宿主机的存储资源作为程序存储器及数据存储器,则将PC地址转换为宿主机的地址,即转换为内部地址。
步骤a4032,将所述内部地址作为物理地址;
然后,将内部地址作为物理地址。
此时,步骤S404包括:
步骤a4041,根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
步骤a4042,将寻址得到的存储空间中的值作为待执行指令。
然后,根据物理地址,对已写入扩展程序的程序存储器进行寻址;进而将寻址得到的存储空间中的值作为待执行指令。
作为另一实施方式,步骤S403还可以包括:
步骤a4033,若所述PC地址合法,将所述PC地址转换为串行存储器的地址;
在本实施例中,若PC地址合法,将PC地址转换为串行存储器的地址。如果虚拟微控制器使用的是外部存储器的存储资源作为程序存储器及数据存储器,则将PC地址转换为串行存储器的地址,其中,串行存储器包括SPI Flash及SPI RAM。
步骤a4034,将所述串行存储器的地址作为物理地址;
然后,将穿行存储器的地址作为物理地址。
此时,步骤S404包括:
步骤a4043,驱动宿主机的串行接口读取已写入所述扩展程序的程序存储器,其中,已写入所述扩展程序的程序存储器为外部存储器;
步骤a4044,根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
步骤a4045,将寻址得到的存储空间中的值作为待执行指令。
在本实施例中,由于虚拟微控制器使用的是外部存储器的存储资源作为程序存储器及数据存储器,因此,在获取待执行指令时,需先驱动宿主机的串行接口读取已写入扩展程序的程序存储器,其中,已写入扩展程序的程序存储器为外部存储器;然后,根据物理地址,对已写入扩展程序的程序存储器进行寻址;进而将寻址得到的存储空间中的值作为待执行指令。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有系统功能扩展程序,所述系统功能扩展程序被处理器执行时实现如以上任一项实施例所述的系统功能扩展方法的步骤。
本发明计算机可读存储介质的具体实施例与上述系统功能扩展方法各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种系统功能扩展方法,其特征在于,应用于虚拟微控制器的宿主机,所述系统功能扩展方法包括以下步骤:
当接收到扩展程序时,运行虚拟微控制器,所述虚拟微控制器为模拟精简指令集架构RISC-V处理器的软件;
获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器;
将所述扩展程序写入所述程序存储器;
根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能。
2.如权利要求1所述的系统功能扩展方法,其特征在于,所述获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器的步骤包括:
获取宿主机的存储器中的空闲资源;
将所述空闲资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
将所述空闲资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
3.如权利要求1所述的系统功能扩展方法,其特征在于,所述获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器的步骤包括:
通过宿主机的串行接口获取外部存储器的存储资源;
将所述存储资源中的第一预设空间作为所述虚拟微控制器的程序存储器;
将所述存储资源中的第二预设空间作为所述虚拟微控制器的数据存储器。
4.如权利要求1所述的系统功能扩展方法,其特征在于,所述根据已写入所述扩展程序的程序存储器中的指令,更新所述数据存储器与所述虚拟微控制器的寄存器,以实现扩展功能的步骤包括:
获取所述虚拟微控制器的程序计数器PC寄存器中的值,将获取到的值作为PC地址;
判断所述PC地址是否合法;
若所述PC地址合法,则将所述PC地址转换为物理地址,其中,所述物理地址为所述宿主机的内部地址、或为串行存储器的地址;
根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令;
对所述待执行指令进行解码,得到解码指令;
判断所述解码指令是否合法;
若所述解码指令合法,则根据所述解码指令,得到所述数据存储器的地址;
根据所述数据存储器的地址,获取所述数据存储器中的第一数据;
根据所述第一数据,执行所述解码指令,并得到执行结果;
根据所述执行结果,更新所述虚拟微控制器的寄存器,并将执行结果中的第二数据更新到所述数据存储器,以实现扩展功能。
5.如权利要求4所述的系统功能扩展方法,其特征在于,所述若所述PC地址合法,则将所述PC地址转换为物理地址的步骤包括:
若所述PC地址合法,将所述PC地址转换为所述宿主机的内部地址;
将所述内部地址作为物理地址;
其中,所述根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令的步骤包括:
根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
将寻址得到的存储空间中的值作为待执行指令。
6.如权利要求4所述的系统功能扩展方法,其特征在于,所述若所述PC地址合法,则将所述PC地址转换为物理地址的步骤包括:
若所述PC地址合法,将所述PC地址转换为串行存储器的地址,其中,所述串行存储器包括SPI Flash及SPI RAM;
将所述串行存储器的地址作为物理地址;
其中,所述根据所述物理地址,获取已写入所述扩展程序的程序存储器中的待执行指令的步骤包括:
驱动宿主机的串行接口读取已写入所述扩展程序的程序存储器,其中,已写入所述扩展程序的程序存储器为外部存储器;
根据所述物理地址,对已写入所述扩展程序的程序存储器进行寻址;
将寻址得到的存储空间中的值作为待执行指令。
7.如权利要求1至6中任一项所述的系统功能扩展方法,其特征在于,所述获取所述虚拟微控制器的程序存储器及所述虚拟微控制器的数据存储器的步骤之前,还包括:
获取宿主机的外设、中断及存储器;
将所述外设、所述中断及所述存储器映射至所述虚拟微控制器。
8.如权利要求1至6中任一项所述的系统功能扩展方法,其特征在于,所述扩展程序为所述虚拟微控制器的可执行程序,所述可执行程序为开发程序通过工具链生成得到的程序,所述开发程序为使用编译型语言进行开发的程序。
9.一种系统功能扩展装置,其特征在于,所述系统功能扩展装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的系统功能扩展程序,所述系统功能扩展程序被所述处理器执行时实现如权利要求1至8中任一项所述的系统功能扩展方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有系统功能扩展程序,所述系统功能扩展程序被处理器执行时实现如权利要求1至8中任一项所述的系统功能扩展方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011200279.XA CN112015522B (zh) | 2020-11-02 | 2020-11-02 | 系统功能扩展方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011200279.XA CN112015522B (zh) | 2020-11-02 | 2020-11-02 | 系统功能扩展方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015522A CN112015522A (zh) | 2020-12-01 |
CN112015522B true CN112015522B (zh) | 2021-02-05 |
Family
ID=73527483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011200279.XA Active CN112015522B (zh) | 2020-11-02 | 2020-11-02 | 系统功能扩展方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015522B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461187A (zh) * | 2021-12-29 | 2022-05-10 | 深圳市正运动技术有限公司 | 运动控制器的编程方法、系统、终端设备及存储介质 |
CN116149554B (zh) * | 2023-02-08 | 2023-11-24 | 珠海妙存科技有限公司 | 一种基于risc-v及其扩展指令的数据存储处理系统及其方法 |
CN116737601B (zh) * | 2023-08-11 | 2023-11-17 | 深圳市航顺芯片技术研发有限公司 | 将外设寄存器扩展为系统ram的方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104603748A (zh) * | 2012-09-27 | 2015-05-06 | 英特尔公司 | 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器 |
WO2016137546A1 (en) * | 2015-02-23 | 2016-09-01 | Sandisk Technologies Llc | Method and apparatus for configuring a memory device |
CN110321725A (zh) * | 2019-07-12 | 2019-10-11 | 中孚信息股份有限公司 | 一种防止篡改系统数据与时钟的方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04150343A (ja) * | 1990-10-11 | 1992-05-22 | Niigata Eng Co Ltd | マルチプレクサ |
CN103229134B (zh) * | 2010-08-11 | 2016-01-20 | 株式会社日立制作所 | 存储设备及其控制方法 |
WO2013168276A1 (ja) * | 2012-05-10 | 2013-11-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステム制御方法 |
CN103970508A (zh) * | 2014-06-04 | 2014-08-06 | 上海航天电子通讯设备研究所 | 一种精简的微处理器ip核 |
WO2019028682A1 (zh) * | 2017-08-08 | 2019-02-14 | 深圳前海达闼云端智能科技有限公司 | 一种多系统共享内存的管理方法及装置 |
CN115509961A (zh) * | 2018-06-25 | 2022-12-23 | 慧荣科技股份有限公司 | 实体存储对照表产生装置及方法 |
CN111400986B (zh) * | 2020-02-19 | 2024-03-19 | 西安智多晶微电子有限公司 | 一种集成电路计算设备及计算处理系统 |
-
2020
- 2020-11-02 CN CN202011200279.XA patent/CN112015522B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104603748A (zh) * | 2012-09-27 | 2015-05-06 | 英特尔公司 | 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器 |
WO2016137546A1 (en) * | 2015-02-23 | 2016-09-01 | Sandisk Technologies Llc | Method and apparatus for configuring a memory device |
CN110321725A (zh) * | 2019-07-12 | 2019-10-11 | 中孚信息股份有限公司 | 一种防止篡改系统数据与时钟的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112015522A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015522B (zh) | 系统功能扩展方法、装置及计算机可读存储介质 | |
US7181610B2 (en) | Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension | |
US6029000A (en) | Mobile communication system with cross compiler and cross linker | |
US7761701B2 (en) | Component firmware integration in distributed systems | |
US20030056071A1 (en) | Adaptable boot loader | |
CN101026826B (zh) | 用于提供在无线装置中使用的整体映像的系统和方法 | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
US20220206809A1 (en) | Method and system for executing new instructions | |
US20220206808A1 (en) | Method and system for executing new instructions | |
US20100192130A1 (en) | Automated verification of a type-safe operating system | |
US6745320B1 (en) | Data processing apparatus | |
CN106598647B (zh) | 一种智能装置开发平台 | |
CN111857839B (zh) | 一种基于Linux的PXI/PXIe总线设备驱动系统 | |
KR102088690B1 (ko) | 집적 회로 무선 | |
KR100803290B1 (ko) | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 | |
CN116225527A (zh) | 嵌入式系统 | |
CN106970825B (zh) | 一种基于gdb可配置框架的arm7仿真目标机实现方法 | |
CN106922189B (zh) | 设备代理装置及其控制方法 | |
US10055367B2 (en) | Integrated-circuit radio | |
CN112306539A (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
US20040216140A1 (en) | Method and system for accessing system operations through an interface layer | |
CN112486570B (zh) | 一种不同类型CPU的Glibc兼容方法 | |
CN113656143B (zh) | 一种实现安卓容器直通显卡的方法及系统 | |
US20220206811A1 (en) | Method and system for executing new instructions | |
KR101628774B1 (ko) | 함수를 이용한 시뮬레이션 수행 방법 |
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 |