一种嵌入式数据读写方法
文献发布时间:2024-04-18 19:44:28
技术领域
本发明涉及嵌入式开发技术领域,具体的,涉及一种嵌入式数据读写方法。
背景技术
随着大楼使用者将越来越多,自然推销人员、装修人员等等亦随之增多,为避免各业主、住户受到不必要的骚扰、加强楼宇的保安、提高物业的智能化管理,智能电梯控制管理显得尤为重要。电梯控制设备在运行过程中需要存储运行的状态信息、通行记录等信息,即设备需要存储的数据给到存储模块,存储模块执行之后返回执行结果,系统在存储模块执行完成之后执行其他的功能模块,这个过程本质上是同步执行。同步执行存储非常依赖于MCU的性能,当MCU的性能不够、执行的功能模块数量又多时,执行过程就会很慢,体现的结果就是设备运行卡顿,体验感非常不好。
发明内容
本发明提出一种嵌入式数据读写方法,解决了相关技术中同步执行存储的过程慢,容易导致设备运行卡顿的问题。
本发明的技术方案如下:
一种嵌入式数据读写方法,应用于一处理器,包括读数据操作和写数据操作,
所述写数据操作包括:
判断是否接收到外部数据;所述外部数据包含标志位、待存储数据和待存储数据长度;
在接收到外部数据时,根据所述标志位判断待存储数据为紧急数据或非紧急数据,并将所述待存储数据存入缓冲区;
在所述待存储数据为非紧急数据时,将缓冲区中数据分多次写入存储器,在最后一次写入操作完毕后,返回存储器为空闲状态;在其他次存储器写入操作完毕后,返回存储器为写中断状态;
或者
所述读数据操作包括:
判断是否接收到读数据请求;所述读数据请求包含标志位、待读取数据地址和待读取数据长度;
在接收到读数据请求时,根据所述标志位判断待读取数据为紧急数据或非紧急数据;
在所述待读取数据为非紧急数据时,分多次执行读取存储器操作,在最后一次读取操作完毕后,返回存储器为空闲状态;在其他次读取操作完毕后,返回存储器为读中断状态。
本发明的工作原理及有益效果为:
本发明中,处理器根据外部数据的标志位判断读取或写入数据的紧急程度,如果外部数据为非紧急数据,将存储任务分成多次执行(异步执行),每次写入1个字节的待存储数据后退出存储任务,这样设备不需要等待执行完成存储任务之后再去执行其他功能模块,能够有效的降低存储过程中的阻塞时间,保障设备正常运行的同时,解决了同步执行造成的设备卡顿,降低设备维护成本。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明中写数据操作流程图;
图2为本发明中读数据操作流程图;
图3为本发明中任一次写数据操作流程图;
图4为本发明中任一次读数据操作流程图;
图5为本发明一种嵌入式数据读写方法的第一实施例流程图;
图6为本发明一种嵌入式数据读写方法的第二实施例流程图。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都涉及本发明保护的范围。
实施例1
本实施例提出了一种嵌入式数据读写方法,应用于一处理器,包括读数据操作和写数据操作,
如图1所示,写数据操作包括:
S110:判断是否接收到外部数据;外部数据包含标志位、待存储数据和待存储数据长度;
S120:在接收到外部数据时,根据标志位判断待存储数据为紧急数据或非紧急数据,并将待存储数据存入缓冲区;
处理器用于接收外部数据,并将接收到的外部数据存储(写入)到存储器中,外部数据(外部数据为数据包的形式)包含标志位、待存储数据和待存储数据长度,将待存储数据暂存至缓冲区,在存储(写入)外部数据之前首先判断外部数据的紧急程度,根据外部数据包中的标志位区分外部数据紧急程度。
S130:在待存储数据为非紧急数据时,将缓冲区中数据分多次写入存储器,在最后一次写入操作完毕后,返回存储器为空闲状态;在其他次存储器写入操作完毕后,返回存储器为写中断状态;
如果缓冲区中待存储数据为非紧急数据,将缓冲区中数据分多次写入存储器,即异步执行,每次写入1个字节待写的数据。
如图3所示,任一次写入操作包括:
S131:判断存储器是否空闲,在存储器为空闲状态时,依次发送使能读写操作指令、写操作指令、写操作起始地址和本次待写入数据;在存储器为写中断状态时,发送本次待写入数据;
具体的,使能读写操作指令、写操作指令、写操作起始地址和本次待写入数据分别写入存储器内对应的寄存器,以发送本次待写入数据为例,处理器将本次待写入数据写入写操作寄存器后,存储器从该写操作寄存器中取出数据并存储。
S132:将写入次数加一;
S133:在写入次数等于待存储数据长度时,该任一次写入操作为最后一次写入操作,返回存储器为空闲状态;否则,为其他次写入操作,返回存储器为写中断状态。
以待存储数据为10个字节为例,假设10个字节分别为:0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,在存储第1个字节0x01时,处理器判断存储器为空闲状态,依次发送使能读写操作指令、写操作指令、写操作起始地址,并将本次待写入数据0x01写入写操作寄存器;写入次数为1;随后,存储器从该写入寄存器中取出数据并存储。
在存储第2个字节0x02时,处理器判断存储器为写中断状态,直接将本次待写入数据0x02写入写操作寄存器;写入次数为2;随后,存储器从该写操作寄存器中取出数据并存储。
以此类推…
在存储第10个字节0x0A时,处理器判断存储器为写中断状态,直接将本次待写入数据0x0A写入写操作寄存器;写入次数为10,返回存储器为空闲状态。
如图2所示,读数据操作包括:
S210:判断是否接收到读数据请求;读数据请求包含标志位、待读取数据地址和待读取数据长度;
S220:在接收到读数据请求时,根据标志位判断待读取数据为紧急数据或非紧急数据;
S230:在待读取数据为非紧急数据时,分多次执行读取存储器操作,在最后一次读取操作完毕后,返回存储器为空闲状态;在其他次读取操作完毕后,返回存储器为读中断状态。
如图4所示,任一次读取操作包括:
S231:判断存储器是否空闲,在存储器为空闲状态时,依次发送使能读写操作指令、读操作指令和读操作起始地址,接收存储器返回的数据作为本次读取数据;在存储器为读中断状态时,接收存储器返回的数据作为本次读取数据;
具体的,使能读写操作指令、写操作指令、写操作起始地址分别写入存储器内对应的寄存器,以使能读写操作指令为例,处理器将使能读写操作指令写入对应寄存器,使能存储器读写操作。
存储器每读出一个地址的数据,会先将数据放入读操作寄存器,处理器从该读操作寄存器读取数据,作为本次从存储器读取的数据。
S232:将读取次数加一;
S233:在读取次数等于待读取数据长度时,该任一次读取操作为最后一次读取操作,返回存储器为空闲状态;否则,为其他次读取操作,返回存储器为读中断状态。
以待读取数据长度=10为例,在读取第1个字节时,处理器判断存储器为空闲状态,依次发送使能读写操作指令、读操作指令和读操作起始地址;存储器使能读操作,开始读取数据并写入读操作寄存器,待存储器将对应地址的数据写入读操作寄存器后,处理器从读操作寄存器读出数据,读取次数为1;
在读取第2个字节时,处理器判断存储器为读中断状态,处理器从读操作寄存器读出数据,作为本次读取数据;读取次数为2;
以此类推…
在读取第10个字节时,处理器判断存储器为读中断状态,处理器从读操作寄存器读出数据,作为本次读取数据;读取次数为10,返回存储器为空闲状态。
进一步,在待存储数据为紧急数据时,将待存储数据写入存储器。
进一步,在待读取数据为紧急数据时,根据待读取数据地址和待读取数据长度,从存储器中读取数据。
对于紧急数据需要立即进行存储,需要同步从存储器中读写数据(同步执行)。
进一步,如图5所示,
所述外部数据为刷卡模块数据,所述刷卡模块数据中包括刷卡次数;
在刷卡模块数据和存储器中数据相同时,更新刷卡次数;
保存所述刷卡次数至刷卡模块和存储器中。
本实施例中,以IC卡刷卡模块为例,电梯控制系统的刷卡模块读取IC卡,在刷卡模块数据和存储器中数据相同时,判断刷卡成功,同时处理器判断出IC卡数据为非紧急数据,将IC卡的数据暂存至缓冲区,IC卡设置有刷卡次数,每执行一次刷卡操作,IC卡的刷卡次数减1。
刷卡模块根据业务需要会判断是否启用防复制功能,如果启用防复制功能,则将刷卡次数同步存储至存储器中。这样,通过刷卡次数的同步更新和比对,即使IC卡被复制为两个或更多个,总的刷卡次数不会增加,从而起到有效的防复制功能。
实施例2
如图6所示,外部数据还可能来自网络模块。
网络模块属于存在数据量交互较大的模块,同时功能上跟存储器的交互也比较多,在实际应用中,只有网络正常连接之后才能正常的进行远程操作与控制;
当网络下发远程控制命令时,这部分命令通常属于参数修改或读取的命令,需要读取或修改设备存储器中的数据,这部分的操作并不属于实时紧急的操作,可由存储器空闲时进行,即异步执行,待存储器返回处理结果后,由下一个模块执行相应的操作。
当设备需要通过网络模块进行维护时,比如,升级、恢复出厂等功能,这类维护的功能通常不会在设备对外使用的情况下进行操作,但这类功能需要同步执行,即这类功能属于紧急类的功能。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种并行接口读写电路及数据读写方法
- 一种嵌入式数据读写方法
- 一种嵌入式设备数据读写方法及装置