CN108268214A - 一种多线程快速周期串行外设操作非易失存储器的方法 - Google Patents

一种多线程快速周期串行外设操作非易失存储器的方法 Download PDF

Info

Publication number
CN108268214A
CN108268214A CN201711360569.9A CN201711360569A CN108268214A CN 108268214 A CN108268214 A CN 108268214A CN 201711360569 A CN201711360569 A CN 201711360569A CN 108268214 A CN108268214 A CN 108268214A
Authority
CN
China
Prior art keywords
nonvolatile storage
queue
read
transferred
mutex
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
CN201711360569.9A
Other languages
English (en)
Other versions
CN108268214B (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.)
Xian Flight Automatic Control Research Institute of AVIC
Original Assignee
Xian Flight Automatic Control Research Institute of AVIC
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 Xian Flight Automatic Control Research Institute of AVIC filed Critical Xian Flight Automatic Control Research Institute of AVIC
Priority to CN201711360569.9A priority Critical patent/CN108268214B/zh
Publication of CN108268214A publication Critical patent/CN108268214A/zh
Application granted granted Critical
Publication of CN108268214B publication Critical patent/CN108268214B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 

Abstract

本发明属于软件操控非易失存储器技术,具体涉及一种多线程快速周期串行外设操作非易失存储器的方法。本发明中主要针对CPU软件快速周期读写耗时较长的非易失存储器问题,在软件的运行周期中,有多个任务可能同时需要对非易失存储器进行读写,本方法设置了队列的模式对同时需要非易失存储器的操作进行队列排序,并且通过信号量Mutex互斥对非易失存储器进行管理。当多个非易失存储器读写请求到来时,首先对所有的请求进行队列的排序,并一一处理,在处理过程中,再次发生了非易失存储器读写请求时,则使用互斥信号量Mutex对非易失存储器进行保护,确保非易失存储器读写数据的准确性,并进一步提高CPU工作效率和安全性。

Description

一种多线程快速周期串行外设操作非易失存储器的方法
技术领域
本发明属于非易失存储器存储技术,具体涉及一种多线程快速周期串行外设操作非易失存储器的方法。
背景技术
在嵌入式软件领域、通常在软件运行的过程中,需要对一些信息进行非易失存储器的存储,而对于嵌入式而言,非易失存储器的种类很多,有NVM、EEPROM等,本发明主要针对非易失存储器为EEPROM。
读写EEPROM的方法有很多中,通常情况下DSP通过FPGA对EEPROM进行访问,FPGA中定义了信息的FIFO并且按照一定的单调速率组对EEPROM进行读写,该方法的好处在于对于DSP软件来说,根本不用关心EEPROM的存取时间和写冲突处理,只需要将需要记录和读取的信息通过FPGA相应的地址进行交互即可,而实现这些功能都是通过FPGA来完成的。
在EEPROM的操作技术中,也可以直接将DSP和EEPROM进行连接,DSP通过外设串行外设SPI对EEPROM进行读写操作。但是往往EEPROM的读操作需要5ms的时间,对于嵌入式软件周期为5ms以上的诸如20ms来说,在此次周期内发生一个记录时间,则根本不存在多线程互斥的问题。
但是记录信息往往都不是一个,而且软件的周期往往不可能都超过5ms,那么在写入EEPROM的过程中,难免会有冲突,比如一个软件的执行周期为1ms,在某个1ms时间内,同时发生了5个需要记录EEPROM的消息,那么这样就会存在写冲突,从而数据记录无法保证完整性,对于整个系统来说,严重的话会出现灾难的后果。
图2所示是SPI读写EEPROM的一般实现方法,但是该方法的前提是,软件的运行周期要足够长,并且确保每次发生写记录间隔超过5ms,这种模式下用传统的方法则完全可以解决问题。但是对于复杂的系统而言,软件的周期运行快,在一个周期中往往会出现多个同时访问EEPROM的请求,针对这种状况,就需要一种安全并且可靠的方案来解决上述所述的问题,从而提高DSP操作EEPROM的准确性,确保系统的安全运行。
如果将一个周期内发生的过个请求插入一个队列,分别处理队列中的每一个元素,那么就基本可以完成多线程的互斥访问问题。但是有一种情况,在处理每一个队列元素的过程中,又重新出现了一个访问EEPROM的请求,那么就需要根据当前的状态决定是否能响应了,这中情况下设置一个互斥信号量Mutex,在执行一个读写EEPROM的过程中,如果发现了互斥信号量Mutex当前的状态表示资源不可用,则直接进行等待或插入队列的处理。从而确保在整个的多线程访问EEPROM过程中,确保每个线程都有序的完成读写操作,不会出现同时操作EEPROM的情况,进一步确保操作EEPROM的可靠性和安全性。
基于以上分析,本发明提出一种方法,能够解决快速周期多线程互斥EEPROM的问题,同时又能确保在读写的每个过程中对SPI请求进行互斥处理。
发明内容
本发明的目的是:SPI直接进行EEPROM的读写操作往往耗时比较长,而在嵌入式软件中,软件的周期很快,经常同时出现多个EEPROM的读写请求,为解决该问题提出一种多线程快速周期SPI操作EEPROM的方法。
本发明的技术方案是:一种多线程快速周期串行外设操作非易失存储器的方法,对于多个串行外设同时进行非易失存储器读写请求,首先将所有请求插入队列,对队列进行一一处理,并且采用互斥信号量的方法,确保每次只处理一个队列成员。
所述的一种多线程快速周期串行外设操作非易失存储器的方法,具体步骤如下:
步骤1):判断软件当前时刻是否有多个串行外设操作非易失存储器的请求,如果有则转入步骤2),否则转入步骤4);
步骤2):将多线程的串行外设操作非易失存储器的请求加入队列QUEUE,并且置当前的信号量状态为可用即Mutex=1,转入步骤3);
步骤3):顺序处理队列中的元素,处理开始之后则置互斥信号量为不可用即Mutex=0,转入步骤4);
步骤4):读写当前的串行外设的请求,并且对非易失存储器进行读写操作。转入步骤5);
步骤5):在读写非易失存储器的过程中,如果出现了其他的串行外设请求,则转入步骤6),否则转入步骤8);
步骤6):判断当前多线程请求队列QUEUE的长度是否为0,如果队列的长度为0,则转入步骤3);否则转入步骤7);
步骤7):判断当前的互斥信号量Mutex的值是否小于1,如果小于则转入步骤8);否则转入步骤9);
步骤8):完成当前串行外设请求的非易失存储器的读写操作,并且释放互斥信号量使Mutex=1,转入步骤9);
步骤9):完成多线串行外设读写非易失存储器的整个流程操作。
本发明的技术效果是:本发明采用队列的方式,并且通过信号量互斥Mutex实现快速周期SPI访问EEPROM的冲突问题,从而确保在读写EEPROM的过程中,每次只有一个请求可以响应,进而避免读写EEPROM冲突的问题,提高整个系统的可靠性和安全性。
附图说明
图1是本发明提出的快速周期多线程SPI操作EEPROM的处理流程示意图;
图2是传统的SPI操作EEPROM的处理流程示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步说明:请参阅图2,本发明中使用的CPU为TMS320F2812、采用的EEPROM为AT25128B,使用DSP的串行外设接口SPI接口直接对EEPROM进行读写操作。
软件应用层定义了一个长度为38大小的队列Queue,并且每一个队列成员都有一个哨兵标志IsEmptyFlag,在处理每一个EEPROM的过程中,定义一个互斥信号量Mutex,初始为1表示当前EEPROM可以读写。软件的运行周期为1ms,时间余量为50%。软件在每周期运行中都实时的监控队列的哨兵,并且监控处理过程中的Mutex的值。
举例对过程进行完整描述。使用本发明提出的快速周期多线程SPI操作EEPROM处理的步骤用例如下:
1)在程序运行过程中,每次判断队列元素中的IsEmptyFlag标志,如果该标志变为1,则表示当前有元素加入到队列中来。
2)计算当前Queue的长度,长度值为Length。
3)对Queue进行从头到位的遍历,第一个元素出现IsEmptyFlag标志为1的时候,则处理该元素。将该元素的信息搬运到一个临时结构体中,清除改元素,并且将该元素的标志IsEmptyFlag清零。
4)判断当前的Mutex值是否为1,如果Mutex值为1,则处理当前的临时结构体,写进EEPROM,同时将Mutex的值清零。
5)在写的过程中,一个周期无法完成,需要8个周期的时间,那么每个周期还会执行检查哨兵标志的任务,如果出现了某个队列Queue元素的哨兵标志IsEmptyFlag为1,则判断当前Queue的长度。
6)假设当前的Queue长度不为1,那么直接判断Mutex的值,因为正在有一个线程在操作EEPROM,还没有释放Mutex,则对该请求不处理。
7)假设过了8拍之后,Mutex的值释放了出来,当前的请求则可以直接响应,将当前的元素直接插入队列中去。
8)此时如果再次来了线程的请求,则重复执行1)~7)的过程。
采用本发明的互斥保护SPI操作EEPROM请求,可以确保每次只处理一个SPI请求,并且考虑了在执行过程中,执行过程外再次发生SPI请求的处理,并且通过Mutex的处理,确保一次只能有一个线程在操作EEPROM,从而保护了EEPROM的读写顺序,同根本上提高了读写外设的安全性,增强整个系统的可靠性。

Claims (2)

1.一种多线程快速周期串行外设操作非易失存储器的方法,其特征在于:对于多个串行外设同时进行非易失存储器读写请求,首先将所有请求插入队列,对队列进行一一处理,并且采用互斥信号量的方法,确保每次只处理一个队列成员。
2.根据权利要求1所述的一种多线程快速周期串行外设操作非易失存储器的方法,其特征在于,具体步骤如下:
步骤1):判断软件当前时刻是否有多个串行外设操作非易失存储器的请求,如果有则转入步骤2),否则转入步骤4);
步骤2):将多线程的串行外设操作非易失存储器的请求加入队列QUEUE,并且置当前的信号量状态为可用即Mutex=1,转入步骤3);
步骤3):顺序处理队列中的元素,处理开始之后则置互斥信号量为不可用即Mutex=0,转入步骤4);
步骤4):读写当前的串行外设的请求,并且对非易失存储器进行读写操作。转入步骤5);
步骤5):在读写非易失存储器的过程中,如果出现了其他的串行外设请求,则转入步骤6),否则转入步骤8);
步骤6):判断当前多线程请求队列QUEUE的长度是否为0,如果队列的长度为0,则转入步骤3);否则转入步骤7);
步骤7):判断当前的互斥信号量Mutex的值是否小于1,如果小于则转入步骤8);否则转入步骤9);
步骤8):完成当前串行外设请求的非易失存储器的读写操作,并且释放互斥信号量使Mutex=1,转入步骤9);
步骤9):完成多线串行外设读写非易失存储器的整个流程操作。
CN201711360569.9A 2017-12-15 2017-12-15 一种多线程快速周期串行外设操作非易失存储器的方法 Active CN108268214B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711360569.9A CN108268214B (zh) 2017-12-15 2017-12-15 一种多线程快速周期串行外设操作非易失存储器的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711360569.9A CN108268214B (zh) 2017-12-15 2017-12-15 一种多线程快速周期串行外设操作非易失存储器的方法

Publications (2)

Publication Number Publication Date
CN108268214A true CN108268214A (zh) 2018-07-10
CN108268214B CN108268214B (zh) 2021-04-20

Family

ID=62772177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711360569.9A Active CN108268214B (zh) 2017-12-15 2017-12-15 一种多线程快速周期串行外设操作非易失存储器的方法

Country Status (1)

Country Link
CN (1) CN108268214B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101901A (ja) * 1995-10-06 1997-04-15 N T T Data Tsushin Kk マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法
CN103309732A (zh) * 2013-05-15 2013-09-18 中国矿业大学(北京) 防止探地雷达数据采集系统中数据溢出的方法
CN103729239A (zh) * 2013-11-18 2014-04-16 芜湖大学科技园发展有限公司 一种镜像元数据的分布式锁算法
CN204302959U (zh) * 2014-10-30 2015-04-29 深圳大学 一种硬件实时操作系统
CN106775974A (zh) * 2016-12-07 2017-05-31 国云科技股份有限公司 一种分布式优先级排队锁的实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101901A (ja) * 1995-10-06 1997-04-15 N T T Data Tsushin Kk マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法
CN103309732A (zh) * 2013-05-15 2013-09-18 中国矿业大学(北京) 防止探地雷达数据采集系统中数据溢出的方法
CN103729239A (zh) * 2013-11-18 2014-04-16 芜湖大学科技园发展有限公司 一种镜像元数据的分布式锁算法
CN204302959U (zh) * 2014-10-30 2015-04-29 深圳大学 一种硬件实时操作系统
CN106775974A (zh) * 2016-12-07 2017-05-31 国云科技股份有限公司 一种分布式优先级排队锁的实现方法

Also Published As

Publication number Publication date
CN108268214B (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
JP5615384B2 (ja) ハードウエアトランザクショナルメモリにおける自動サスペンド及び再開
CA2663983C (en) Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups
US9448856B2 (en) Lock-free dual queue with condition synchronization and time-outs
US8775837B2 (en) System and method for enabling turbo mode in a processor
CN102262559B (zh) 一种资源共享的方法及系统
CN104461876B (zh) 一种基于运行快照序列的并行程序重现调试方法
US11132294B2 (en) Real-time replicating garbage collection
CN106569891B (zh) 一种存储系统中任务调度执行的方法和装置
CN103699512A (zh) 多线程处理器中的内核间线程备用
US20140344536A1 (en) Storage systems that create snapshot queues
CN111767159A (zh) 一种基于协程的异步系统调用系统
CN100530111C (zh) 一种多线程访问间接寄存器的调度方法
CN104246727A (zh) 数据处理系统以及用于操作数据处理系统的方法
CN101251822A (zh) 一种内存被改写的监控方法
CN105550029A (zh) 一种进程调度方法及装置
CN107003897B (zh) 监控事务处理资源的利用率
CN112559210A (zh) 一种基于rtx实时系统的共享资源读写互斥方法
TWI588652B (zh) 讀取及寫入命令排程方法以及使用該方法的裝置
CN109656868B (zh) 一种cpu与gpu之间的内存数据转移方法
JP2008518293A (ja) コンピュータプログラムを処理する方法、オペレーティングシステムおよび計算装置
CN108268214A (zh) 一种多线程快速周期串行外设操作非易失存储器的方法
US9038077B1 (en) Data transfer protection in a multi-tasking modeling environment
US20140025870A1 (en) Computer reprogramming method, data storage medium and motor vehicle computer
RU2526282C2 (ru) Способ синхронизации доступа к разделяемым ресурсам вычислительной системы и обнаружения и устранения повисших блокировок с использованием блокировочных файлов
CN114461409A (zh) 一种互斥信号量异常阻塞辅助分析方法、系统及存储介质

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