CN110609705B - 一种提高mcu总线效率的方法、智能终端、存储介质及芯片 - Google Patents
一种提高mcu总线效率的方法、智能终端、存储介质及芯片 Download PDFInfo
- Publication number
- CN110609705B CN110609705B CN201910893802.2A CN201910893802A CN110609705B CN 110609705 B CN110609705 B CN 110609705B CN 201910893802 A CN201910893802 A CN 201910893802A CN 110609705 B CN110609705 B CN 110609705B
- Authority
- CN
- China
- Prior art keywords
- register
- target
- improving
- instruction
- value
- 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/22—Microcontrol or microprogram arrangements
Abstract
本发明所提供的一种提高MCU总线效率的方法、智能终端、存储介质及芯片,包括:系统寄存器获取预设指令,并根据所述预设指令执行操作如下:读取目标寄存器中的第一数值;将所述第一数值修改为第二数值;将所述第二数值写入所述目标寄存器。本发明通过设置预设指令,处理器获取预设指令,根据预设指令读取目标寄存器中的第一数值,并将所述第一数值载入系统寄存器中进行修改,修改成第二数值,再将修改之后的数值写回到目标寄存器中。本发明实现“读‑修改‑写”的过程只需要获取一次预设指令就可以实现,并不需要多次获取指令,因此,节省了多次获取指令所产生的时间间隔,提高了MCU总线的执行效率。
Description
技术领域
本发明涉及MCU技术领域,尤其涉及的是一种提高MCU总线效率的方法、智能终端、存储介质及芯片。
背景技术
微控制单元(Microcontroller Unit;MCU),又称单片微型计算机(Single ChipMicrocomputer)或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。
在MCU运行时,会直接在目标寄存器中进行“读-修改-写”的操作,这种“读-修改-写”操作需要多次获取指令进行执行。在多次获取指令的过程中存在时间间隔,从而造成MCU执行写与读操作效率低的问题。
因此,现有技术存在缺陷,有待改进与发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种提高MCU总线效率的方法、智能终端、存储介质及芯片,旨在解决现有技术中在使用MCU总线时,需要多次获取指令执行“读-修改-写”操作,造成MCU执行效率低的问题。
本发明解决技术问题所采用的技术方案如下:
一种提高MCU总线效率的方法,包括:
系统寄存器获取预设指令,并根据所述预设指令执行操作如下:
读取目标寄存器中的第一数值;
将所述第一数值修改为第二数值;
将所述第二数值写入所述目标寄存器。
进一步地,所述提高MCU总线效率的方法还包括:
当对目标寄存器中的所有数值进行修改时,在目标寄存器中进行所有数值的修改并存储。
进一步地,所述处理器获取预设指令具体包括:
当对目标寄存器中的部分数值进行修改时,获取预设指令,并根据所述预设指令调用系统寄存器。
进一步地,所述预设指令存储在系统寄存器中。
进一步地,所述预设指令为机器指令。
进一步地,将所述第二数值写入到所述目标寄存器中具体包括:
所述系统寄存器发起总线写入请求,所述目标寄存器接收所述写入请求,将所述第二数值写入到目标寄存器中。
进一步地,所述目标寄存器为外设寄存器。
本发明还提供一种智能终端,其中,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有实现提高MCU总线效率的程序,在所述提高MCU总线效率的程序执行时,能够实现如上所述的提高MCU总线效率的方法。
本发明还提供一种存储介质,其中,所述存储介质存储有提高MCU总线效率的程序,所述提高MCU总线效率的程序能够被执行以用于实现如上所述的提高MCU总线效率的方法。
本发明还提供一种芯片,其中,所述芯片能够被执行以用于实现如上所述的提高MCU总线效率的方法。
本发明所提供的一种提高MCU总线效率的方法、智能终端、存储介质及芯片,包括:系统寄存器获取预设指令,并根据所述预设指令执行操作如下:读取目标寄存器中的第一数值;将所述第一数值修改为第二数值;将所述第二数值写入所述目标寄存器。本发明通过设置预设指令,处理器获取预设指令,根据预设指令读取目标寄存器中的第一数值,并将所述第一数值载入系统寄存器中进行修改,修改成第二数值,再将修改之后的数值写回到目标寄存器中。本发明实现“读-修改-写”的过程只需要获取一次预设指令就可以实现,并不需要多次获取指令,因此,节省了多次获取指令所产生的时间间隔,提高了MCU总线的执行效率。
附图说明
图1是本发明提高MCU总线效率的方法较佳实施例的流程图;
图2是本发明现有的在MCU中进行汇写过程较佳实施例的功能原理图;
图3是本发明智能终端的较佳实施例的功能原理框图。
具体实施方式
本发明提供一种提高MCU总线效率的方法、智能终端、存储介质及芯片,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
由于MCU的使用范围较广,本发明全文以C语言为例进行举例说明,可以理解地,本发明的范围并不局限于将C语言应用在MCU中,一般情况下,凡是使用MCU的场景,均可以利用本发明的技术方案来提高MCU总线的效率。
现有的MCU在使用过程中,实施的操作为:
读取目标寄存器中一个地址上的数据之后,在读到的数据上进行修改,之后再将修改后形成的新数据写入该地址。
利用MCU进行读与写的C语言代码列举分别如下:
*(unsigned int*)0×40021004|=0×03;
*(unsigned int*)0×40021004&=0×fffffffc;
此处进行举例说明读与写的过程:
比如C语言代码*(unsigned int*)0×40021004|=0×03,其功能是把总线地址0×40021004的寄存器低2位置置1,该地址寄存器(目标寄存器)的其他位保持不变。
在ARM Cortex-M0指令集上编译后的汇编指令可能为:
其中:
“LDR r0,[r0,#4]”指令把目标0×40021004地址寄存器的值读出来保存到r0;
“MOVS r1,#3”和“ORRS r0,r0,r1”指令完成对r0的低2位置位1;
“LDR r1,[pc,#4];[0×8000830]=0×40021000”指令完成获取目标地址;
“STR r0,[r1,#4]”指令把r0的值写到0×40021004地址完成对0×40021004地址寄存器的修改。
整个汇编过程如图2所示,可以看出,完成一次“读-修改-写”的C语言操作需要多条汇编指令才能完成,因此需要进行多次获取指令的操作。而对于同一个地址(addr)需要进行两次获取指令的操作,第一次读,第二次写,两次获取指令的存在一定的时间间隔(delay),此时间间隔的存在会影响代码的执行效率。同理,在AHB总线进行写读操作时,也会相应地存在延时现象。
为了解决上述MCU总线操作效率低的问题,本发明提供了一种提高MCU总线效率的方法,如图1所示:
S1、系统寄存器获取预设指令,并根据所述预设指令执行操作。
在CPU运行时,系统存储器中存储的机器码会在系统寄存器中进行执行。所述系统寄存器是现有的寄存器,是中央处理器内的组成部分,用来暂存指令、数据和地址。在系统寄存器中,所述“读-修改-写”指令用于对从目标寄存器中读取到的值进行修改。
所述目标寄存器相对于系统寄存器来说,是系统外设的寄存器,程序编译人员在编译所述目标代码时,所述目标代码形成的函数表示了外设的寄存器中要修改的位数,所述目标代码被编译成能够执行“读-修改-写”指令的机器码,存储在系统存储器中,所述系统就具有“读-修改-写”功能。当CPU读取到目标寄存器中的值时,自动执行“读-修改-写”功能。
S2、读取目标寄存器中的第一数值。
S3、将所述第一数值修改为第二数值。
当CPU获取预设指令,所述预设指令的作用是控制CPU执行“读-修改-写”功能。CPU读取到目标寄存器中的第一数值,将第一数值写入到系统寄存器中进行修改,修改成第二数值。本发明中的第一数值和第二数值并不是具体的数值,可以是任何数据,本发明并不对第一数值和第二数值进行限定,只要能够在系统寄存器中实现修改的数据,均可以作为本发明中第一数值和第二数值的变形。所述第一数值和第二数值可以为地址数据。S4、将所述第二数值写入所述目标寄存器。
具体地,所述系统寄存器发起总线写入请求,所述目标寄存器接收所述写入请求,将所述第二数值写入到目标寄存器中。
在实现上述一种提高MCU总线效率的方法之前,本发明的技术开发人员需要进行前期的开发工作,具体过程如下:
A100、在编译器中添加预设指令,形成目标编译器。
所述编译器为现有的编译器,支持将代码编译成机器指令。在现有的编译器中添加预设指令,所述预设指令指的是一类新的指令,该指令支持上述“读-修改-写”操作,即CPU支持的指令。在此,将这一类新的指令用RMWxx的形式体现出来,其中的xx的内容列举如下:
xx可以为:OR(逻辑或操作)、AND(逻辑与操作)、ADD(算术加法)、SUB(算术减法操作)等。所述预设指令是开发者根据需求自定义设置的,因此,所述预设指令并不局限于上述几种举例,凡是能够在“读-修改-写”过程中,只需要获取一次指令就能够实现操作过程的指令形式,均可以用于本发明的技术方案中。
A200、所述目标编译器获取目标代码,将所述目标代码编译成机器码,所述目标编译器将所述机器码载入到系统存储器中。
所述目标代码可以为高级语言代码,目标代码在编译器中被编译成对应的指令、数据和地址,编译成的指令、数据和地址用机器码来表示。所述机器码即二进制指令,能够支持CPU的“读-修改-写”操作;所述系统存储器用来存储所述机器码,当系统运行时,系统能够自动执行所述机器码表示的“读-修改-写”指令。
之后,形成MCU,当MCU在运行过程中,会执行以下操作:
首先,处理器进行预判断,当对目标寄存器中的所有数值进行修改时,在目标寄存器中进行所有数值的修改并存储。
当对目标寄存器中的部分数值进行修改时,执行以下步骤A300。
A300、CPU读取所述机器码中相应的预设指令,并执行。
具体地,CPU读取所述机器码,获取到所述寄存器码中CPU支持的“读-修改-写”指令,并执行“读-修改-写”指令,所述预设指令即为“读-修改-写”指令。
所述步骤A300执行的操作:从读取目标寄存器中的数值,再对数值进行修改,之后将修改后的数值写回目标寄存器中,以此完成“读-修改-写”操作。
为使本发明的技术方案更直观,此处进行举例说明。对于本发明中的MCU在使用过程中,实施的操作如下,此处依旧采用C语言代码进行举例说明:
当添加了预设指令之后,此处仅以预设指令包括RMWOR为例进行说明,C语言代码*(unsigned int*)0×40021004|=0×03的汇编指令可变为:
其中:
“LDR r0,[pc,#12];[0×8000830]=0×40021000”指令把目标地址存入r0;
“LDR r2,[r0,#4]”指令把目标寄存器的值读到r2;
“MOVS r1,#3”和“RMWOR r2,r2,r1”完成把r2低两位赋值1。
在执行完“RMWOR r2,r2,r1”指令时,CPU自动发起AHB总线写入操作请求,把r2的值写到以r0的值为目标地址的通用寄存器。所述r0、r1、r2等为通用寄存器的命名,所述通用寄存器存储在MAC中,在CPU执行程序时,会使用通用寄存器。
和现有的技术相比,本发明的技术方案减少了两条指令的执行操作,即减少了两次获取指令的操作,节省了两次获取指令之间的时间间隔,极大地提高了MCU总线的效率。
本发明还提供了一种智能终端,如图3所示,其中,包括处理器10,以及与所述处理器连接的存储器20,所述存储器20存储有实现提高MCU总线效率的程序,在所述提高MCU总线效率的程序执行时,能够实现如上所述的提高MCU总线效率的方法。
本发明还提供了一种存储介质,其中,所述存储介质存储有提高MCU总线效率的程序,所述提高MCU总线效率的程序能够被执行以用于实现如上所述的提高MCU总线效率的方法。
本发明还提供一种芯片,其中,所述芯片能够被执行以用于实现如上所述的提高MCU总线效率的方法。
综上所述,本发明公开的一种提高MCU总线效率的方法、智能终端、存储介质及芯片,包括:处理器获取预设指令,将目标寄存器中的第一数值读取到系统寄存器中,并在所述系统寄存器中将所述第一数值修改为第二数值;将所述第二数值写入到所述目标寄存器中。将所述机器码存储在系统存储器中,系统在运行时,CPU能够自动读取到所述机器码中相应的预设指令,所述预设指令能够执行执行读写操作。在CPU进行读写操作时,依次读取到目标寄存器中的第一数值,将所述第一数值写入系统寄存器中,在系统寄存器中将所述第一数值修改成第二数值,之后将所述第二数值写回到所述目标寄存器中,用于替换所述第一数值,实现读写操作。与现有的读写操作相比,避免了完成一次“读-修改-写”的操作需要多次获取指令才能完成的问题,减少了指令的执行过程,节省了多次获取指令之间存在的时间间隔,达到提高MCU总线效率的目的。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种提高MCU总线效率的方法,其特征在于,包括:
系统寄存器获取机器码中相应的预设指令,并根据所述预设指令执行操作如下:
读取目标寄存器中的第一数值;
将所述第一数值修改为第二数值;
将所述第二数值写入所述目标寄存器;
在所述系统寄存器获取预设指令,并根据所述预设指令执行操作步骤之前还包括:
在编译器中添加所述预设指令,形成目标编译器,所述预设指令即为“读-修改-写”指令;
所述目标编译器获取目标代码,将所述目标代码编译成机械码,并将所述机械码载入到所述系统寄存器中。
2.根据权利要求1所述的提高MCU总线效率的方法,其特征在于,所述提高MCU总线效率的方法还包括:
当对目标寄存器中的所有数值进行修改时,在目标寄存器中进行所有数值的修改并存储。
3.根据权利要求1所述的提高MCU总线效率的方法,其特征在于,所述系统寄存器获取预设指令具体包括:
当对目标寄存器中的部分数值进行修改时,系统寄存器获取预设指令。
4.根据权利要求1所述的提高MCU总线效率的方法,其特征在于,所述预设指令存储在系统寄存器中。
5.根据权利要求1所述的提高MCU总线效率的方法,其特征在于,所述预设指令为机器指令。
6.根据权利要求1所述的提高MCU总线效率的方法,其特征在于,将所述第二数值写入所述目标寄存器具体包括:
所述系统寄存器发起总线写入请求,所述目标寄存器接收所述写入请求,将所述第二数值写入到目标寄存器中。
7.根据权利要求1所述的提高MCU总线效率的方法,其特征在于,所述目标寄存器为外设寄存器。
8.一种智能终端,其特征在于,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有实现提高MCU总线效率的程序,在所述提高MCU总线效率的程序执行时,能够实现如权利要求1-7任一项所述的提高MCU总线效率的方法。
9.一种存储介质,其特征在于,所述存储介质存储有提高MCU总线效率的程序,所述提高MCU总线效率的程序能够被执行以用于实现如权利要求1-7任一项所述的提高MCU总线效率的方法。
10.一种芯片,其特征在于,所述芯片能够被执行以用于实现如权利要求1-7任一项所述的提高MCU总线效率的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910893802.2A CN110609705B (zh) | 2019-09-20 | 2019-09-20 | 一种提高mcu总线效率的方法、智能终端、存储介质及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910893802.2A CN110609705B (zh) | 2019-09-20 | 2019-09-20 | 一种提高mcu总线效率的方法、智能终端、存储介质及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110609705A CN110609705A (zh) | 2019-12-24 |
CN110609705B true CN110609705B (zh) | 2021-05-11 |
Family
ID=68891678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910893802.2A Active CN110609705B (zh) | 2019-09-20 | 2019-09-20 | 一种提高mcu总线效率的方法、智能终端、存储介质及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110609705B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579189B (zh) * | 2022-05-05 | 2022-09-09 | 深圳云豹智能有限公司 | 单核以及多核访问寄存器数据的方法、处理器和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662913A (zh) * | 2012-03-29 | 2012-09-12 | 佛山华芯微特科技有限公司 | 用于提高mcu存储性能的方法及其对应的mcu芯片 |
CN104111818A (zh) * | 2013-04-22 | 2014-10-22 | 三星电子株式会社 | 用于批量线程处理的处理器、处理方法和代码生成设备 |
CN107844321A (zh) * | 2016-09-21 | 2018-03-27 | 上海芯旺微电子技术有限公司 | 一种mcu处理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529596B2 (en) * | 2011-07-01 | 2016-12-27 | Intel Corporation | Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits |
-
2019
- 2019-09-20 CN CN201910893802.2A patent/CN110609705B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662913A (zh) * | 2012-03-29 | 2012-09-12 | 佛山华芯微特科技有限公司 | 用于提高mcu存储性能的方法及其对应的mcu芯片 |
CN104111818A (zh) * | 2013-04-22 | 2014-10-22 | 三星电子株式会社 | 用于批量线程处理的处理器、处理方法和代码生成设备 |
CN107844321A (zh) * | 2016-09-21 | 2018-03-27 | 上海芯旺微电子技术有限公司 | 一种mcu处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110609705A (zh) | 2019-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7533246B2 (en) | Application program execution enhancing instruction set generation for coprocessor and code conversion with marking for function call translation | |
US20080109795A1 (en) | C/c++ language extensions for general-purpose graphics processing unit | |
WO2015036867A2 (en) | Method and system for instruction scheduling | |
US6401197B1 (en) | Microprocessor and multiprocessor system | |
WO2021249054A1 (zh) | 一种数据处理方法及装置、存储介质 | |
JPH05204709A (ja) | プロセッサ | |
US6260191B1 (en) | User controlled relaxation of optimization constraints related to volatile memory references | |
US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
CN110609705B (zh) | 一种提高mcu总线效率的方法、智能终端、存储介质及芯片 | |
US7231509B2 (en) | Extended register bank allocation based on status mask bits set by allocation instruction for respective code block | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
JP2005529399A (ja) | 集積回路に埋め込まれた不揮発性メモリにデータを書き込む方法及び対応する回路 | |
CN107851015B (zh) | 向量操作数位大小控制 | |
CN115878266A (zh) | ARM Cortex-A7处理器仿真方法、系统、介质及设备 | |
CN113434439B (zh) | 一种基于模拟i2c接口的数据连续写入方法及系统 | |
US11144329B2 (en) | Processor microcode with embedded jump table | |
CN114201444A (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
US7216189B2 (en) | Single BIOS technique for supporting processors with and without 64-bit extensions | |
US20120017035A1 (en) | Runtime reprogramming of a processor code space memory area | |
US6243798B1 (en) | Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction | |
JPH0635800A (ja) | マイクロプロセッサ及びそれを使用したデータ処理システム | |
JP2607319B2 (ja) | プログラマブルコントローラ | |
CN111522600A (zh) | 一种在dsp上的异构计算框架构建方法及系统 | |
JP2003196085A (ja) | 情報処理装置 | |
JPH05297911A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |