CN116194904A - 一种闪存访问方法及装置 - Google Patents

一种闪存访问方法及装置 Download PDF

Info

Publication number
CN116194904A
CN116194904A CN202180062080.1A CN202180062080A CN116194904A CN 116194904 A CN116194904 A CN 116194904A CN 202180062080 A CN202180062080 A CN 202180062080A CN 116194904 A CN116194904 A CN 116194904A
Authority
CN
China
Prior art keywords
access
flash memory
controller
access request
software
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
Application number
CN202180062080.1A
Other languages
English (en)
Other versions
CN116194904A8 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116194904A publication Critical patent/CN116194904A/zh
Publication of CN116194904A8 publication Critical patent/CN116194904A8/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microcomputers (AREA)
  • Memory System (AREA)

Abstract

本申请实施例公开了一种闪存访问方法及装置,涉及芯片领域,改善了现有技术中运行在一颗芯片上的多个软件子***访问闪存时发生冲突的问题。具体方案为:应用于一种包括访问控制器和多个处理器核的***级芯片,多个处理器核分别通过总线连接访问控制器,多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上,访问控制器的电源与多个处理器核的电源不同,或者,访问控制器与运行第一软件子***的第一处理器核共用电源,第一处理器核的上电时长大于预设时长;该方法包括:访问控制器接收多个软件子***的用于请求访问同一个闪存的多个访问请求;根据闪存访问策略,对多个访问请求进行排序,并按照顺序依次处理。

Description

一种闪存访问方法及装置 技术领域
本申请实施例涉及芯片领域,尤其涉及一种闪存访问方法及装置。
背景技术
目前,嵌入式设备中的***越来越复杂,为了降低设备的成本和功耗,可以在一颗芯片上运行多个软件子***。当一颗芯片上运行多个软件子***,且该多个软件子***分别运行在该芯片的不同处理器核上时,那么该多个软件子***访问同一个闪存Flash器件的时候可能会发生冲突,造成软件子***异常。因此运行在一颗芯片上的多个软件子***如何访问闪存Flash成为了亟待解决的问题。
发明内容
本申请实施例提供一种闪存访问方法及装置,避免运行在一颗芯片上的多个软件子***访问同一个闪存时发生冲突的问题,能够降低嵌入式设备的成本。
为达到上述目的,本申请实施例采用如下技术方案:
本申请实施例的第一方面,提供一种闪存访问方法,应用于一种***级芯片SoC,该SoC包括访问控制器和多个处理器核,多个处理器核分别通过总线连接访问控制器,该多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上;该访问控制器的电源与该多个处理器核的电源不同,或者,该访问控制器与运行第一软件子***的第一处理器核共用同一个电源,该第一处理器核的上电时长大于或等于预设时长;该方法包括:访问控制器接收多个访问请求,该多个访问请求用于请求访问同一个闪存,该多个访问请求为多个软件子***的访问请求;访问控制器根据闪存访问策略,对该多个访问请求进行排序;访问控制器按照该多个访问请求的排序顺序,依次处理该多个访问请求。
基于本方案,当访问控制器的电源与多个处理器核的电源不同时,由于访问控制器具有独立电源,故该访问控制器可以独立上下电,即任何一个软件子***启动时,访问控制器都可以跟随该软件子***启动,从而使得任一个软件子***启动后都可以单独通过访问控制器访问闪存器件。而且由于访问控制器可以对多个软件子***的访问请求进行排序并依次处理,因此多个软件子***同时访问闪存器件时不会发生冲突。故本方案不需要为多个软件子***分别配置闪存控制器或闪存器件,就可以实现多个软件子***独立访问同一个闪存器件,而且该多个软件子***同时访问该闪存器件时不会发生冲突,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。
基于本方案,当访问控制器与第一软件子***同时上下电时,由于该第一软件子***长期上电,故访问控制器也长期处于上电状态,因此其他软件子***可以单独通过该访问控制器访问闪存器件。而且由于访问控制器可以对多个软件子***的访问请求进行排序并依次处理,因此该多个软件子***同时访问闪存器件时不会发生冲突。故本方案不需要为多个软件子***分别配置闪存控制器或闪存器件,就可以实现多个 软件子***独立访问同一个闪存器件,而且该多个软件子***同时访问该闪存器件时不会发生冲突,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。
需要说明的是,由于运行上述每个软件子***的处理器核都可以通过总线与访问控制器连接,从而使得访问控制器与第一软件子***同时上下电时,第一软件子***不会独占闪存器件,其他软件子***也可以单独通过闪存控制器访问闪存器件。
在一种可能的实现方式中,上述多个访问请求包括第一访问请求和第二访问请求,该第一访问请求为第一软件子***的访问请求,该第二访问请求为第二软件子***的访问请求,第一软件子***和第二软件子***运行在上述芯片的不同处理器核上,第一访问请求的排序顺序早于第二访问请求,上述访问控制器按照多个访问请求的排序顺序,依次处理多个访问请求,包括:访问控制器在上述闪存中执行第一访问请求,并将第二访问请求添加至缓存队列中;在第一访问请求处理完成后,访问控制器在闪存中执行第二访问请求。
基于本方案,访问控制器可以按照多个访问请求的排序顺序,先处理第一个访问请求,并将其他访问请求添加至缓存队列中,待第一个访问请求处理完成后,再处理下一个访问请求,从而当多个软件子***同时访问同一个闪存时,访问控制器可以按照访问策略一个一个处理访问请求,因此该多个软件子***同时访问Flash器件时不会发生冲突。
在一种可能的实现方式中,上述多个访问请求包括第一访问请求和第二访问请求,该第一访问请求为第一软件子***的访问请求,该第二访问请求为第二软件子***的访问请求,第一软件子***和第二软件子***运行在上述芯片的不同处理器核上,上述访问控制器包括访问仲裁装置和闪存控制器,上述访问控制器按照多个访问请求的排序顺序,依次处理多个访问请求,包括:访问仲裁装置向闪存控制器发送第一访问请求,并将第二访问请求添加至缓存队列中;闪存控制器接收该第一访问请求,并在闪存中执行该第一访问请求;在闪存控制器处理完第一访问请求后,访问仲裁装置向闪存控制器发送第二访问请求;闪存控制器接收该第二访问请求,并在闪存中执行该第二访问请求。
基于本方案,访问仲裁装置可以按照多个访问请求的排序顺序,依次向闪存控制器发送该多个访问请求,而且访问仲裁装置可以在闪存控制器处理完上一个访问请求后,向闪存控制器发送下一个访问请求,从而当多个软件子***同时访问同一个闪存时,该多个软件子***的访问请求不会发生冲突。
可选的,访问仲裁装置可以通过中断方式或查询方式获知闪存控制器是否处理完上一个访问请求。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述第一软件子***允许访问闪存中的第一地址空间,上述第二软件子***允许访问闪存中的第二地址空间,该第一地址空间中的地址与第二地址空间中的地址不完全相同。
可选的,当不同软件子***有共享需求的时候,闪存中可以包括共享地址,不同软件子***均可以访问该共享地址。当不同软件子***没有共享需求的时候,不同软件子***允许访问的地址不同。
基于本方案,通过对每个软件子***访问闪存的地址空间进行限制,能够防止多 个软件子***之间发生误操作,确保多个软件子***的安全稳定运行。
在一种可能的实现方式中,上述第一访问请求包括第一目的地址,上述第二访问请求包括第二目的地址,上述方法还包括:在确定该第一目的地址不属于上述第一地址空间中的地址的情况下,访问控制器确定第一访问请求无效;和/或,在确定该第二目的地址不属于上述第二地址空间中的地址的情况下,访问控制器确定第二访问请求无效。
基于本方案,访问控制器可以对每个软件子***的访问请求待访问的地址进行判断,确定该地址是否属于该软件子***允许访问的地址空间中的地址,在该地址不属于该软件子***允许访问的地址空间中的地址的情况下,那么访问控制器确定该访问请求无效,不处理该访问请求,从而避免该软件子***对其他软件子***进行操作后,造成其他软件子***的安全性降低或出错。因此,该方案能够防止多个软件子***之间发生误操作,确保多个软件子***的安全稳定运行。
在一种可能的实现方式中,上述第一地址空间或上述第二地址空间中的至少一种为预设的地址空间。
基于本方案,每个软件子***在闪存中允许访问的地址空间可以是预设的,从而访问控制器可以在每个软件子***待访问的地址不属于该软件子***预设的允许访问的地址空间的情况下,确定该访问请求无效,能够防止多个软件子***之间发生误操作,确保多个软件子***的安全稳定运行。
在一种可能的实现方式中,上述第一地址空间对应的地址范围和上述第二地址空间对应的地址范围存储在一次性可编程存储器中。
基于本方案,可以通过将每个软件子***的地址空间在生产时烧入一次性可编程芯片(one time programmable,OTP)或一次性可编程存储器(electronic fuse,efuse)中中,从而使得访问控制器可以从OTP或efuse中获取每个软件子***允许访问的地址空间,并在每个软件子***待访问的地址不属于该软件子***预设的允许访问的地址空间的情况下,确定该访问请求无效,能够防止多个软件子***之间发生误操作,确保多个软件子***的安全稳定运行。
在一种可能的实现方式中,上述第一地址空间为预设的地址空间,上述第二地址空间是由第一软件子***启动后配置的地址空间;或者,第二地址空间为预设的地址空间,第一地址空间是由第二软件子***启动后配置的地址空间。
基于本方案,每个软件子***在闪存中允许访问的地址空间可以是主控***配置的,由于主控***可以根据实际业务需求动态的配置其他软件子***在闪存中允许访问的地址空间,使得每个软件子***允许访问的地址空间并不是固定死的,能够提高闪存的利用率。
在一种可能的实现方式中,上述第一地址空间包括第一默认访问地址,上述第二地址空间包括第二默认访问地址,第一默认访问地址为第一软件子***启动时访问闪存的地址,第二默认访问地址为第二软件子***启动时访问闪存的地址,该第一默认访问地址与第二默认访问地址不同。
基于本方案,由于不同软件子***启动时的默认访问地址不同,因此不同软件子***启动时访问的地址不会发生冲突。而且由于每个软件子***启动时可以独立访问 Flash器件,故每个软件子***可以独立启动和工作,不需要依赖于主控***,能够降低***功耗。
可选的,以第一默认访问地址由第二软件子***启动后配置为例,该第二软件子***可以为主控***,该第二软件子***可以根据安全因素,第一软件子***的大小、第一软件子***的需求,以及第二软件子***的默认访问地址等因素配置第一默认访问地址。
在一种可能的实现方式中,上述多个软件子***包括安卓***和基带的驱动***。
可选的,基带的驱动***用于驱动基带芯片收发数据。
在一种可能的实现方式中,访问控制器的电源与运行上述安卓***的处理器核的电源、运行上述基带的驱动***的处理器核的电源均不同。
可以理解的,现有的方案中,安卓***独占闪存器件,而且安卓***与闪存控制器同时上下电,安卓***上电后,基带的驱动***才能将访问请求发送给安卓***,并通过安卓***代为访问闪存器件,因此基带的驱动***不能独立访问闪存器件,而且安卓***未上电时,基带的驱动***也不能访问闪存器件。而本方案中,访问控制器具有独立的电源,可以独立上下电,故访问控制器可以跟随安卓***或基带的驱动***启动,从而使得安卓***或基带的驱动***启动后都可以单独通过访问控制器访问闪存器件。而且由于访问控制器可以对安卓***或基带的驱动***的访问请求进行排序并依次处理,因此安卓***或基带的驱动***同时访问闪存器件时不会发生冲突。故本方案无需为安卓***和基带分别配置闪存控制器或闪存器件,就可以实现安卓***和基带独立访问闪存器件,而且安卓***和基带的驱动***同时访问闪存器件时不会发生冲突,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。
在一种可能的实现方式中,上述多个软件子***包括无线保真WiFi子***和摄像头子***。可选的,WiFi子***用于收发数据。
在一种可能的实现方式中,访问控制器与运行WiFi子***的处理器核共用同一个电源。
可以理解的,现有的方案中,摄像头Camera子***和WiFi子***访问同一个闪存器件时,Camera子***为主控***,闪存控制器与Camera子***同时上下电,Camera子***上电启动后独占闪存器件,WiFi子***需要通过Camera子***才能访问闪存器件,因此WiFi子***不能独立访问闪存器件,而且Camera子***未上电时,WiFi子***也不能访问闪存器件。而本方案中,访问控制器与WiFi子***同时上下电,由于WiFi子***需要长期工作,以响应手机侧的远程视频查看需求等,因此访问控制器也一直处于上电状态,当Camera子***有访问需求时,可以单独通过访问控制器访问闪存器件。而且由于访问控制器可以对Camera子***和WiFi子***的访问请求进行排序并依次处理,因此Camera子***和WiFi子***同时访问闪存器件时不会发生冲突。故本方案无需为Camera子***和WiFi子***分别配置闪存控制器或闪存器件,就可以实现Camera子***和WiFi子***独立访问闪存器件,而且Camera子***和WiFi子***同时访问Flash器件时不会发生冲突,因此能够减小芯片面积,降低芯片成本及嵌入式设备的成本。
需要说明的是,本方案中,由于运行Camera子***的处理器核与运行WiFi子系 统的处理器核各自通过总线与访问控制器连接,因此,访问控制器与WiFi子***同时上下电时,WiFi子***不会独占闪存器件,Camera子***上电后,仍可以单独通过访问控制器访问闪存器件。
在一种可能的实现方式中,上述软件子***启动时访问上述闪存的地址为默认访问地址,上述多个软件子***启动时的默认访问地址互不相同。
基于本方案,不同软件子***启动时的默认访问地址不同,不同软件子***启动时访问的地址不会发生冲突。而且每个软件子***启动时可以独立访问Flash器件,故每个软件子***可以独立启动和工作,不需要依赖于主控***,能够降低***功耗。
在一种可能的实现方式中,每个软件子***允许访问的地址空间包括Boot空间和其他空间,该Boot空间对应的地址范围存储在一次性可编程存储器中,该其他空间是由软件子***配置的地址空间。
基于本方案,由于Boot空间较小(例如,1Mb),其他空间较大(例如,200Mb),因此芯片只需要写死较小的Boot空间即可,由软件配置较大的其他空间,从而能够简化芯片设计。而且通过软件配置其他空间时,软件可以根据实际业务需求动态的配置每个软件子***允许访问的其他空间的大小,使得每个软件子***允许访问的其他空间的大小并不是固定死的,能够提高闪存的利用率。
可选的,同一个软件子***允许访问的Boot空间和其它空间在闪存器件中可以是相邻的空间,也可以是不相邻的空间。不同软件子***允许访问的Boot空间在闪存器件中可以是相邻的。
在一种可能的实现方式中,上述方法还包括:在上述软件子***的访问请求超越访问权限的情况下,上述访问控制器确定超越访问权限的访问请求无效;其中,该访问权限包括只读、只写、只可擦除、可读写不可擦除、可读可擦除不可写、或可写可擦除不可读。
基于本方案,通过对每个软件子***的访问权限进行限制,在软件子***的访问请求超越访问权限的情况下,访问控制器确定该访问请求无效,从而能够进一步提高软件子***的安全性。可选的,不同软件子***的访问权限可以相同,也可以不同,本申请实施例对此并不进行限定。
在一种可能的实现方式中,上述方法还可以包括:上述处理器核基于第一标志位的值,在确定上述访问控制器与上述闪存未初始化的情况下,将访问控制器与闪存初始化,并将该第一标志位的值重置为第一数值;或者,上述处理器核基于该第一标志位的值,在确定上述访问控制器与上述闪存已经初始化的情况下,获取访问控制器与闪存的初始化参数;其中,该第一标志位的值包括第一数值和第二数值,第一数值用于指示访问控制器与闪存已经初始化,第二数值用于指示访问控制器与闪存未初始化。
例如,标志位为0表示闪存和闪存控制器没有初始化过,标志位为1表示闪存和闪存控制器已经初始化,软件子***上电启动时,读取该标志位的值,如果标志位的值为0,确定闪存和闪存控制器没有初始化过,那么软件子***上电启动时初始化闪存和闪存控制器,并将该标志位置1。当软件子***上电启动时,读取该标志位的值为1,确定闪存和闪存控制器已经初始化,那么该软件子***可以直接从闪存控制器或芯片寄存器中读取已初始化的相关参数,不需要再次将闪存和闪存控制器初始化。
基于本方案,通过设置一个标志位,使得每个软件子***上电时可以获知闪存和闪存控制器是否已经初始化,并在闪存和闪存控制器未初始化的情况下,任何一个软件子***都可以将其初始化,而且多个软件子***上电启动时,闪存和闪存控制器可以仅初始化一次,能够避免多次初始化造成已上电的软件子***异常或数据丢失等问题。而现有的方案中,由于闪存控制器是被主控***独占的,因此主控***启动时需要将闪存和闪存控制器初始化,而主控***外的其他软件子***由于无法直接接触到闪存控制器,因此无法识别和控制闪存和闪存控制器的初始化。
在一种可能的实现方式中,上述闪存访问策略包括按照软件子***的优先级处理访问请求、按照访问请求的优先级处理访问请求,或按照访问请求的时间顺序处理访问请求中的至少一种。
基于本方案,可以根据软件子***的优先级、按照访问请求的优先级,或按照访问请求的时间顺序中的至少一种对多个软件子***的访问请求进行排序,并按照排序顺序依次处理该多个软件子***的访问请求,从而使得运行在一颗芯片上的多个软件子***访问同一个闪存时不会发生冲突。而且本方案中的多个软件子***在访问同一个闪存时,不需要依赖于其他软件子***,每个软件子***都可以独立访问闪存,因此软件子***的实现较为简单,而且能够降低***功耗。
本申请实施例的第二方面,提供一种闪存访问的装置,该闪存访问的装置包括访问控制器和多个处理器核,该多个处理器核分别通过总线连接访问控制器,该多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上;访问控制器的电源独立于多个处理器核的电源,或者,访问控制器与运行第一软件子***的第一处理器核共用同一个电源,该第一处理器核的上电时长大于或等于预设时长;该多个处理器核,用于向访问控制器发送多个访问请求,该多个访问请求为多个软件子***的访问请求,该多个访问请求用于请求访问同一个闪存;访问控制器,用于接收该多个访问请求,根据闪存访问策略,对该多个访问请求进行顺序;并按照该多个访问请求的排序顺序,依次处理该多个访问请求。
在一种可能的实现方式中,上述多个访问请求包括第一访问请求和第二访问请求,第一访问请求为第一软件子***的访问请求,第二访问请求为第二软件子***的访问请求,上述第一访问请求的排序顺序早于第二访问请求,上述访问控制器,具体用于:在闪存中执行该第一访问请求,并将第二访问请求添加至缓存队列中;在第一访问请求处理完成后,在闪存中执行第二访问请求。
在一种可能的实现方式中,上述多个访问请求包括第一访问请求和第二访问请求,第一访问请求为第一软件子***的访问请求,第二访问请求为第二软件子***的访问请求,上述访问控制器包括访问仲裁装置和闪存控制器,上述第一访问请求的排序顺序早于上述第二访问请求;该访问仲裁装置,用于向闪存控制器发送第一访问请求,并将第二访问请求添加至缓存队列中;闪存控制器,用于接收该第一访问请求,并在闪存中执行第一访问请求;访问仲裁装置,还用于在闪存控制器处理完第一访问请求后,向闪存控制器发送第二访问请求;闪存控制器,还用于接收该第二访问请求,并在闪存中执行第二访问请求。
在一种可能的实现方式中,上述第一软件子***允许访问闪存中的第一地址空间, 上述第二软件子***允许访问闪存中的第二地址空间,该第一地址空间中的地址与第二地址空间中的地址不完全相同。
在一种可能的实现方式中,上述第一访问请求包括第一目的地址,上述第二访问请求包括第二目的地址,上述访问控制器,还用于:在确定第一目的地址不属于第一地址空间中的地址的情况下,确定该第一访问请求无效;在确定第二目的地址不属于第二地址空间中的地址的情况下,确定该第二访问请求无效。
在一种可能的实现方式中,上述第一地址空间或第二地址空间中的至少一种为预设的地址空间。
在一种可能的实现方式中,上述第一地址空间对应的地址范围和第二地址空间对应的地址范围存储在一次性可编程存储器中。
在一种可能的实现方式中,上述第一地址空间为预设的地址空间,上述第二地址空间是由第一软件子***启动后配置的地址空间;或者,上述第二地址空间为预设的地址空间,上述第一地址空间是由第二软件子***启动后配置的地址空间。
在一种可能的实现方式中,上述第一地址空间包括第一默认访问地址,上述第二地址空间包括第二默认访问地址,该第一默认访问地址为第一软件子***启动时访问闪存的地址,该第二默认访问地址为第二软件子***启动时访问闪存的地址,该第一默认访问地址与第二默认访问地址不同。
在一种可能的实现方式中,上述第一软件子***为安卓***,上述第二软件子***为基带的驱动***。
在一种可能的实现方式中,上述访问控制器的电源与运行安卓***的处理器核的电源、运行基带的驱动***的处理器核的电源均不同。
在一种可能的实现方式中,上述第一软件子***为无线保真WiFi子***,上述第二软件子***为摄像头子***。
在一种可能的实现方式中,上述访问控制器与运行WiFi子***的处理器核共用同一个电源。
在一种可能的实现方式中,上述软件子***启动时访问闪存的地址为默认访问地址,上述多个软件子***启动时的默认访问地址互不相同。
在一种可能的实现方式中,上述访问控制器,还用于:在软件子***的访问请求超越访问权限的情况下,访问控制器确定超越访问权限的访问请求无效;其中,该访问权限包括只读、只写、只可擦除、可读写不可擦除、可读可擦除不可写、或可写可擦除不可读。
在一种可能的实现方式中,上述处理器核,还用于:基于第一标志位的值,在确定访问控制器与闪存未初始化的情况下,将访问控制器与闪存初始化,并将第一标志位的值重置为第一数值;基于第一标志位,在确定访问控制器与闪存已经初始化的情况下,获取访问控制器与闪存的初始化参数;其中,第一标志位的值包括第一数值和第二数值,第一数值用于指示访问控制器与闪存已经初始化,第二数值用于指示访问控制器与闪存未初始化。
在一种可能的实现方式中,上述闪存访问策略包括按照软件子***的优先级处理访问请求、按照访问请求的优先级处理访问请求,或按照访问请求的时间顺序处理访 问请求中的至少一种。
上述第二方面的效果描述可以参考第一方面的效果描述,在此不再赘述。
本申请实施例的第三方面,提供一种电子设备,该电子设备包括闪存器件,以及如上述第二方面任一所述的闪存访问的装置。
本申请实施例的第四方面,提供一种闪存访问方法,应用于一种***级芯片SoC,该SoC包括访问控制器和多个处理器核,多个处理器核分别通过总线连接访问控制器,该多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上;该访问控制器的电源与该多个处理器核的电源不同,或者,该访问控制器与运行第一软件子***的第一处理器核共用同一个电源,该第一处理器核的上电时长大于或等于预设时长;该方法包括:访问控制器接收多个访问请求,该多个访问请求用于请求访问同一个闪存,该多个访问请求为多个软件子***的访问请求;访问控制器确定每个软件子***的访问请求是否属于该软件子***允许访问的地址空间中的地址,在确定该访问请求待访问的地址属于该软件子***允许访问的地址空间中的地址的情况下,访问控制器可以进一步确定该访问请求是否超越访问权限,在该访问请求没有超越访问权限的情况下,闪存控制器根据闪存访问策略,将该访问请求添加至缓存队列中,并按照顺序依次处理。
基于本方案,当访问控制器的电源与多个处理器核的电源不同时,由于访问控制器具有独立电源,故该访问控制器可以独立上下电,从而使得任一个软件子***启动后都可以单独通过访问控制器访问闪存器件。当访问控制器与第一软件子***同时上下电时,由于该第一软件子***长期上电,故访问控制器也长期处于上电状态,因此其他软件子***可以单独通过该访问控制器访问闪存器件。而且由于访问控制器可以对多个软件子***的访问请求中,不超越允许访问的地址空间且不超越访问权限的访问请求进行排序并依次处理,因此多个软件子***同时访问闪存器件时不会发生冲突。故本方案不需要为多个软件子***分别配置闪存控制器或闪存器件,就可以实现多个软件子***独立访问同一个闪存器件,而且该多个软件子***同时访问该闪存器件时不会发生冲突,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。而且能够防止多个软件子***之间发生误操作,确保多个软件子***的安全稳定运行。
需要说明的是,由于运行上述每个软件子***的处理器核都可以通过总线与访问控制器连接,从而使得访问控制器与第一软件子***同时上下电时,第一软件子***不会独占闪存器件,其他软件子***也可以单独通过闪存控制器访问闪存器件。
在一种可能的实现方式中,上述每个软件子***启动时,运行该软件子***的处理器核可以基于第一标志位的值,确定访问控制器与上述闪存是否已经初始化,在确定访问控制器与上述闪存未初始化的情况下,将访问控制器与闪存初始化,并将该第一标志位的值重置为第一数值;在确定访问控制器与闪存已经初始化的情况下,获取访问控制器与闪存的初始化参数。
基于本方案,通过设置一个标志位,使得每个软件子***上电时可以获知闪存和闪存控制器是否已经初始化,并在闪存和闪存控制器未初始化的情况下,任何一个软件子***都可以将其初始化,而且多个软件子***上电启动时,闪存和闪存控制器可以仅初始化一次,能够避免多次初始化造成已上电的软件子***异常或数据丢失等问 题。而现有的方案中,由于闪存控制器是被主控***独占的,因此主控***启动时需要将闪存和闪存控制器初始化,而主控***外的其他软件子***由于无法直接接触到闪存控制器,因此无法识别和控制闪存和闪存控制器的初始化。
附图说明
图1为本申请实施例提供的一种多软件子***访问闪存的结构示意图;
图2为本申请实施例提供的一种多软件子***访问闪存的供电方案的示意图;
图3为本申请实施例提供的另一种多软件子***访问闪存的结构示意图;
图4为本申请实施例提供的一种多软件子***访问闪存的***架构示意图;
图5为本申请实施例提供的另一种多软件子***访问闪存的***架构示意图;
图6为本申请实施例提供的另一种多软件子***访问闪存的***架构示意图;
图7为本申请实施例提供的一种多软件子***访问闪存的软件驱动的结构示意图;
图8为本申请实施例提供的一种闪存访问方法的流程示意图;
图9为本申请实施例提供的另一种闪存访问方法的流程示意图;
图10为本申请实施例提供的另一种多软件子***访问闪存的***架构示意图;
图11为本申请实施例提供的另一种多软件子***访问闪存的***架构示意图;
图12为本申请实施例提供的另一种闪存访问方法的流程示意图;
图13为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或,a和b和c,其中a、b和c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。比如,本申请实施例中的第一访问请求中的“第一”和第二访问请求中的“第二”仅用于区分不同的访问请求。本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
嵌入式设备中通常可以将多个软件子***集成在同一颗芯片上,如此一来,同一颗芯片上可以运行多个软件子***。当一颗芯片上同时运行多个软件子***时,若该多个软件子***分别运行在该芯片的不同处理器核上时,那么该多个软件子***访问 同一个闪存Flash器件的时候可能会发生冲突,造成软件子***无法正常运行。
例如,当芯片中仅包括一个Flash控制器时,若多个软件子***同时请求访问同一个Flash器件,由于Flash控制器无法同时处理该多个软件子***的访问请求,可能导致一些软件子***发送的访问请求丢包,造成该软件子***异常、Flash控制器异常,甚至造成软件子***崩溃。再例如,当芯片中仅包括一个Flash控制器时,若多个软件子***的访问请求同时请求对同一个Flash器件中的同一个地址进行访问操作,该多个软件子***的访问请求之间可能会发生冲突,造成软件子***异常。因此运行在一颗芯片上的多个软件子***如何访问Flash成为了亟待解决的问题。
图1为一种多软件子***访问闪存的结构示意图,如图1所示,软件子***1和软件子***2运行在同一颗芯片上。其中,软件子***1运行在中央处理器(central processing unit,CPU)核1-1n上,软件子***2运行在CPU核2-2n上。可选的,该软件子***1和软件子***2的操作***(operation system,OS)可以为同一个操作***,也可以为不同的操作***,本申请实施例对此并不限定。示例性的,软件子***1或软件子***2的操作***可以为Android、Linux、实时操作***(real-time operating system,RTOS)等操作***,本申请实施例对此并不限定。
如图1所示,软件子***1为主控***,该主控***独占Flash器件,软件子***1可以通过闪存Flash控制器直接访问闪存Flash器件,而软件子***2需要通过软件子***1来代理才能访问闪存Flash器件。该方案中虽然两个软件子***能访问同一个闪存器件,但是其他软件子***访问闪存器件的时候需要通过主控***代理才能访问闪存器件。因此,该方案中的软件子***2不能独立访问闪存器件,这将造成多个软件子***的设计较为复杂。
例如,以电池类摄像头Camera中包括Camera子***和无线保真(wireless fidelity,WiFi)子***,Camera芯片和WiFi芯片集成在一颗芯片为例,Camera子***和WiFi子***访问同一个闪存器件时,Camera子***为主控***,Camera子***上电启动后独占Flash器件,WiFi子***需要通过Camera子***才能访问该Flash器件。可选的,该电池类Camera可以包括电池类可视门铃,电池类可视猫眼,智能门锁等设备。
再例如,终端设备包括安卓***和基带的驱动***,安卓***和基带的驱动***访问同一个闪存器件时,安卓***为主控***,安卓***上电启动后独占Flash器件,基带如果想要访问该Flash器件,需要将数据发给安卓***,由安卓***代为访问Flash器件。也就是说,基带的驱动***不能独立访问Flash器件,必须经安卓***才能访问Flash器件。
示例性的,当多个软件子***共享同一个Flash器件时,主控***将独占Flash器件。而且由于闪存控制器和主控***同时上下电,因此如果主控***未上电,那么其他软件子***不能访问闪存器件,只有在主控***上电启动后,其他软件子***才能通过主控***访问闪存器件。即Flash控制器只能跟着主控***上下电,因此导致在主控***未上电的情况下,其他软件子***不能独立访问Flash器件。
示例性的,图2为一种芯片的供电方案,如图2所示,运行在CPU核1-1n上的软件子***1为主控***,该CPU核1-1n与闪存控制器由同一个电源1供电,而CPU核2-2n由电源2供电。由于CPU核1-1n与闪存控制器的电源相同,因此闪存控制器 会跟随软件子***1上下电。当软件子***1未上电的情况下,闪存控制器无法上电,因此软件子***2无法访问Flash器件。
例如,电池类Camera中包括Camera子***和WiFi子***,Camera芯片为主控***,Camera芯片和Flash控制器的电源相同,WiFi芯片由另一个电源供电,Flash控制器与Camera子***同时上下电。由于Camera子***只有在有需要时才会上电工作,而WiFi子***需要长期工作,以响应手机侧的远程视频查看需求等。因此,在Camera子***未上电的情况下,Flash控制器也未上电,故WiFi子***不能访问Flash器件。而且,Camera子***上电以后会独占闪存器件,WiFi子***需要通过Camera子***访问闪存器件,因此,WiFi子***不能独立访问闪存器件。
再例如,手机包括安卓***和基带的驱动***,安卓***独占Flash器件,运行安卓***的处理器和Flash控制器同时上下电,因此在安卓***未上电的情况下,Flash控制器也未上电,故基带的驱动***不能独立访问Flash器件。
图3为另一种多软件子***访问闪存的结构示意图,如图3所示,以一颗芯片上运行软件子***1和软件子***2为例,该方案通过在芯片中设置两个闪存控制器,软件子***1通过闪存控制器1实现对闪存器件1的访问驱动,软件子***2通过闪存控制器2实现对闪存器件2的访问驱动。即每个软件子***通过其对应的闪存控制实现对相应闪存器件的访问。该方案中,虽然多个软件子***通过各自的闪存控制器可以独立访问闪存器件,但是多个软件子***访问的闪存器件不是同一个闪存器件,因此需要设置多个闪存器件供不同的软件子***访问,成本较高。而且该方案需要为每个软件子***设置闪存控制器,增加了芯片面积。
例如,以电池类摄像头Camera中包括Camera子***和WiFi子***,Camera子***和WiFi子***均有自己独立的Flash控制器和Flash器件为例,Camera子***可以通过自己的闪存控制器1实现对闪存器件1的访问驱动,WiFi子***可以通过自己的闪存控制器2实现对闪存器件2的访问驱动。但是该方案需要为WiFi子***增加一个闪存器件,导致成本较高。而且需要为WiFi子***增加一个闪存控制器,增加了芯片面积。
为了缓解多个软件子***不能独立访问同一个闪存器件的问题,本申请实施例提供一种闪存访问方法,不仅能够避免运行在一颗芯片上的多个软件子***访问闪存时发生冲突,而且该方法能够使得运行在一颗芯片上的多个软件子***可以独立访问同一个闪存器件,无需增加闪存控制器或闪存器件,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。
本申请实施例提供的闪存访问方法可以应用于图4所示的***架构。如图4所示,***级芯片(system on chip,SoC)上可以同时运行多个软件子***,该多个软件子***可以请求访问同一个闪存器件。
SoC芯片包括访问控制器和多个处理器核,该多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上。该多个处理器核通过总线与访问控制器连接。
上述访问控制器,用于在多个软件子***访问同一个闪存器件时,根据闪存访问策略,对该多个软件子***的访问请求进行排序。然后再按照排序顺序,依次处理该 多个软件子***的访问请求。
例如,如图4所示,以SoC芯片包括2个处理器核,分别为处理器核1、处理器核2为例。其中,软件子***1运行在处理器核1上,软件子***2运行在处理器核2上,处理器核1和处理器核2分别通过总线连接访问控制器。即SoC芯片可以同时运行2个软件子***,且该2个软件子***分别运行在SoC芯片中的不同处理器核上。
可选的,一个软件子***可以运行在一个处理器核上,也可以运行在多个处理器核上,本申请实施例对此并不限定。图4仅以一个软件子***运行在一个处理器核为例进行示意。图4所示的2个软件子***的操作***可以相同,也可以不同,本申请实施例对此并不限定。
可选的,一种实现方式中,上述访问控制器的电源与多个处理器核的电源不同。例如,如图4所示,运行软件子***1的处理器核1的电源为电源1,运行软件子***2的处理器核2的电源为电源2,访问控制器的电源为电源3。即访问控制器的电源为独立的电源,访问控制器可以通过电源3独立上下电,从而在任一个软件子***上电后,该访问控制器可以跟着上电。即访问控制器可以跟随任一个软件子***上下电,从而使得各个软件子***可以独立访问Flash器件。
可以理解的,由于该实现方式中的访问控制器可以独立上下电,即任何一个软件子***启动时,访问控制器都可以跟随该软件子***启动,从而使得任一个软件子***启动后都可以单独通过访问控制器访问闪存器件。而且由于访问控制器可以对多个软件子***的访问请求进行排序并依次处理,因此多个软件子***同时访问闪存器件时不会发生冲突。故本方案不需要为多个软件子***分别配置闪存控制器或闪存器件,就可以实现多个软件子***独立访问同一个闪存器件,而且该多个软件子***同时访问该闪存器件时不会发生冲突,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。
可选的,另一种实现方式中,上述访问控制器与运行第一软件子***的第一处理器核共用同一个电源,第一处理器核的上电时长大于或等于预设时长。即访问控制器可以与长期运行的第一软件子***同时上下电。
示例性的,如图5所示,以SoC芯片包括精简指令集处理器架构(advanced RISC machine,ARM)A7 CPU和精简指令集计算机(reduced instruction set computer,RISC-V)CPU,ARM A7 CPU上运行摄像头Camera子***,RISC-V CPU上运行WiFi子***。由于Camera子***只有在有需要时才会上电工作,而WiFi子***需要长期工作,以响应手机侧的远程视频查看需求等。如图5所示,通过将访问控制器与运行WiFi子***的RISC-V CPU采用同一个电源2供电,访问控制器与WiFi子***一起上下电,由于WiFi子***需要长期工作,因此访问控制器长期处于上电状态,如此一来,Camera子***上电后,可以单独通过访问控制器访问闪存器件,这与RISC-V CPU和访问控制器分别采用不同的电源相比,能够降低电源成本。可以理解的,同一颗芯片上运行不同软件子***的处理器核的处理器架构可以相同,也可以不同,本申请实施例对此并不限定,图5仅以ARM架构和RISC架构为例进行示意。
需要说明的是,由于运行上述每个软件子***的处理器核都可以通过总线与访问控制器连接,从而使得访问控制器与长期运行的第一软件子***同时上下电时,该第 一软件子***并不会独占闪存器件,其他软件子***上电后也可以单独通过访问控制器访问闪存器件。例如,访问控制器与WiFi子***同时上下电时,Camera子***上电后,可以单独通过访问控制器访问闪存器件。
可以理解的,由于该实现方式中的访问控制器可以与长期使用的WiFi子***共同上下电,因此Camera子***可以通过该访问控制器访问闪存器件,WiFi子***也可以通过该访问控制器访问闪存器件,无需为多个软件子***分别配置闪存控制器或闪存器件,就能实现多个软件子***独立访问同一个闪存器件,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。而且通过访问控制器与WiFi子***共同上下电,能够降低电源成本。
可选的,如图6所示,上述访问控制器可以包括访问仲裁装置和闪存控制器,该访问仲裁装置用于接收多个软件子***的访问请求,并根据闪存访问策略,对多个软件子***的访问请求进行排序,按照排序顺序依次向闪存控制器发送该多个软件子***的访问请求。
访问仲裁装置,具体用于按照多个软件子***的访问请求的排序顺序,向闪存控制器发送第一个访问请求,并将其他访问请求添加至缓存队列。待闪存控制器处理完第一个访问请求后,按照排序顺序,向闪存控制器发送下一个访问请求。
闪存控制器,用于接收来自访问仲裁装置的访问请求,并在闪存中执行其接收的访问请求。
如图6所示,在访问控制器包括访问仲裁装置和闪存控制器的情况下,该访问仲裁装置和闪存控制器的电源为电源3,而且该电源3独立于SoC芯片中的其他处理器核的电源。因此,访问仲裁装置和闪存控制器可以跟随任一个软件子***上下电,无需为多个软件子***分别配置闪存控制器或闪存器件,就能实现多个软件子***独立访问同一个闪存器件,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。而且通过访问仲裁装置根据闪存访问策略,对多个访问请求进行排序,然后再按照多个访问请求的排序顺序依次向闪存控制器发送该多个访问请求,从而闪存控制器每次只接收一个访问请求,并对其接收的访问请求进行处理,避免了多个软件子***访问同一个闪存时发生冲突的问题。
可选的,图7为本申请实施例提供的一种软件驱动的结构示意图。如图7中的(a)所示,当采用图1至图3所示的架构访问闪存器件时,软件子***的闪存Flash驱动直接操作Flash控制器。当采用图6所示的架构访问闪存器件时,由于在SoC芯片中增加了访问仲裁装置,因此Flash驱动要进行修改适配,修改后的Flash驱动不直接操作Flash控制器,而是先操作访问仲裁装置,再操作Flash控制器。如图7中的(b)所示,软件子***1的Flash驱动和软件子***2的Flash驱动先操作的是SoC芯片中的访问仲裁装置,再操作Flash控制器,而不直接操作Flash控制器,从而能够通过访问仲裁装置对多个访问请求进行排序,避免多个软件子***访问同一个闪存器件时发生冲突的问题。
可选的,结合图4-图7所示,多个软件子***中每个软件子***启动时访问闪存的地址可以为默认访问地址,不同软件子***启动时的默认访问地址可以不同。
例如,多个软件子***包括第一软件子***和第二软件子***,第一软件子*** 启动时访问闪存的地址为第一默认访问地址,第二软件子***启动时访问闪存的地址为第二默认访问地址,第一默认访问地址与第二默认访问地址为闪存中不同的地址。
可选的,该第一软件子***可以为WiFi子***,第二软件子***为摄像头子***。或者,第一软件子***可以为安卓***,第二软件子***可以为基带的驱动***。
可选的,上述每个软件子***启动时的默认访问地址可以为预设地址,也可以是其他软件子***启动后配置的。
当软件子***启动时的默认访问地址为预设地址时,该预设地址可以写死在芯片中,也可以存储在一次性可编程存储器中。例如,第一默认访问地址和第二默认访问地址可以是芯片逻辑固定死的。再例如,第一默认访问地址和第二默认访问地址可以在生产时烧入一次性可编程芯片(one time programmable,OTP)或一次性可编程存储器(electronic fuse,efuse)中。
可选的,软件子***启动时的默认访问地址可以由主控***配置,该主控***启动时的默认访问地址可以为预设的。例如,主控***启动时的默认访问地址写死在芯片中,主控启动后,可以配置其他软件子***的默认访问地址。
示例性的,以第一默认访问地址由第二软件子***启动后配置为例,该第二软件子***可以为主控***,该第二软件子***可以根据安全因素,第一软件子***的大小、第一软件子***的需求,以及第二软件子***的默认访问地址等因素配置第一默认访问地址。本申请实施例对第一默认访问地址和第二默认访问地址的具体配置方式并不限定,在此仅是示例性说明。
可以理解的,通过配置每个软件子***启动时的默认访问地址,不同软件子***启动时的默认访问地址不同,从而使得不同软件子***启动时的默认访问地址不会发生冲突,确保每个软件子***可以独立启动。这与图1所示的闪存访问方法相比,图1中在软件子***1未启动时,软件子***2不能独立启动。而本申请实施例中的每个软件子***可以独立启动,每个软件子***的启动可以不依赖于其他软件子***,因此多个软件子***可以互相独立启动和工作,能够降低***功耗。
可选的,上述处理器核,用于基于第一标志位的值,确定访问控制器与闪存是否已经初始化。在确定访问控制器与闪存未初始化的情况下,将访问控制器与闪存初始化,并将第一标志位的值重置为第一数值。在确定访问控制器与闪存已经初始化的情况下,获取访问控制器与闪存的初始化参数。其中,第一标志位的值包括第一数值和第二数值,第一数值用于指示访问控制器与闪存已经初始化,第二数值用于指示访问控制器与闪存未初始化。
例如,以标志位为0表示闪存和闪存控制器没有初始化过,标志位为1表示闪存和闪存控制器已经初始化为例,软件子***1上电启动时,读取该标志位的值,如果标志位的值为0,确定闪存和闪存控制器没有初始化过,那么软件子***1上电启动时初始化闪存和闪存控制器,并将该标志位置1。当软件子***2上电启动时,读取该标志位的值,由于标志位的值为1,确定闪存和闪存控制器已经初始化,那么软件子***2可以直接从闪存控制器或芯片寄存器中读取已初始化的相关参数,不需要再次将闪存和闪存控制器初始化。而现有的方案中,由于闪存控制器是被主控***独占的,因此主控***启动时需要将闪存和闪存控制器初始化,而主控***外的其他软件 子***由于无法直接接触到闪存控制器,因此无法识别和控制闪存和闪存控制器的初始化。本申请实施例可以通过一个标志位,使得每个软件子***上电时可以获知闪存和闪存控制器是否已经初始化,并在闪存和闪存控制器未初始化的情况下,任何一个软件子***都可以将其初始化,而且多个软件子***上电启动时,闪存和闪存控制器可以仅初始化一次即可,能够避免多次初始化造成已上电的软件子***异常或数据丢失等问题。
需要说明的是,图6所示的***架构与图4或图5所示的***架构的区别在于,图6所示的SoC芯片中访问仲裁装置是独立于闪存控制器的,而图4所示的SoC芯片中访问仲裁装置和闪存控制器集成在一起组成了访问控制器。
可选的,本申请实施例对于访问控制器在SoC芯片内的具体实现形式并不进行限定,在此仅以图4至图6进行示例性示意。实际应用中,该访问控制器也可以是一个独立的芯片。
结合上述图4-图7,如图8所示,本申请实施例提供一种闪存访问方法,该方法应用于上述图4至图6中的SoC芯片,该方法包括以下步骤:
S801、访问控制器接收多个访问请求。
该多个访问请求用于请求访问同一个闪存,该多个访问请求为多个软件子***的访问请求,该多个软件子***运行在同一个芯片的不同处理器核上。可选的,该芯片可以为SoC芯片,该SoC芯片可以为上述图4至图6中的SoC芯片,该处理器核可以为SoC芯片中的CPU核。一个软件子***可以运行在一个或多个CPU核上,不同软件子***运行在不同的CPU核上。
示例性的,SoC芯片包括上述访问控制器,该访问控制器可以独立上下电,比如,该访问控制器可以跟随任一个软件子***上下电,从而使得各个软件子***可以独立访问Flash器件。
示例性的,以该多个访问请求包括第一访问请求和第二访问请求为例,该第一访问请求为第一软件子***的访问请求,该第二访问请求为第二软件子***的访问请求,第一软件子***和第二软件子***运行在不同的处理器核上。例如,第一软件子***运行在第一处理器核上,第二软件子***运行在第二处理器核上。本申请下述实施例仅以该多个访问请求为第一访问请求和第二访问请求为例对本申请提供的闪存访问方法进行说明。
例如,软件子***1运行在CPU核1上,软件子***2运行在CPU核2上,软件子***1通过CPU核1发送访问请求1,软件子***2通过CPU核2发送访问请求2,访问请求1和访问请求2用于请求访问同一个闪存。
可选的,闪存可以为串行***设备接口(serial peripheral interface,SPI)Nor Flash、SPI NAND Flash、NAND Flash、嵌入式多媒体控制(embedded multi media card,EMMC)、通用闪存存储(universal Flash storage,UFS)等Flash器件。本申请实施例对于闪存的具体类型并不限定,该闪存可以具备可读、可写或可擦除功能。
示例性的,上述步骤S801中访问控制器接收多个访问请求,可以包括:访问控制器接收来自第一处理器核的第一访问请求,接收来自第二处理器核的第二访问请求。
可选的,上述第一软件子***和第二软件子***可以同时请求访问同一个闪存, 即第一处理器核和第二处理器核可以在同一时刻发出访问请求,并请求访问同一个闪存。
S802、访问控制器根据闪存访问策略,对多个访问请求进行排序。
示例性的,该闪存访问策略可以包括按照软件子***的优先级处理访问请求、按照访问请求的优先级处理访问请求,或按照访问请求的时间顺序处理访问请求等访问策略中的至少一种。本申请实施例对于闪存访问策略的具体内容并不限定,在此仅是示例性说明。
例如,以闪存访问策略为按照软件子***的优先级处理访问请求为例。当软件子***1通过CPU核1发送访问请求1,软件子***2通过CPU核1发送访问请求2时,访问控制器可以根据软件子***1和软件子***2的优先级对访问请求1和访问请求2进行排序。若软件子***1的优先级高于软件子***2的优先级,那么访问请求1的排序顺序早于访问请求2。
再例如,以闪存访问策略为优先按照访问请求的时间顺序处理访问请求,如果访问请求的时间顺序相同,再按照软件子***的优先级处理访问请求为例。当访问控制器先接收访问请求2,再接收访问请求1时,那么访问请求2的排序顺序早于访问请求1。当访问控制器同时接收到访问请求1和访问请求2时,若软件子***1的优先级高于软件子***2的优先级,那么访问请求1的排序顺序早于访问请求2。
再例如,以闪存访问策略为按照访问请求的优先级处理访问请求为例。每个访问请求中携带优先级标识,访问控制器可以根据访问请求1中携带的优先级标识,与访问请求2中携带的优先级标识,确定访问请求1的优先级和访问请求2的优先级。若访问请求2的优先级高于访问请求1的优先级,那么访问请求2的排序顺序早于访问请求1。
可选的,当访问控制器包括访问仲裁装置和闪存控制器时,上述步骤S802是由访问仲裁装置执行的。
S803、访问控制器按照多个访问请求的排序顺序,依次处理多个访问请求。
下面以多个访问请求包括第一访问请求和第二访问请求,第一访问请求的排序顺序早于第二访问请求为例,对步骤S803的实现方式进行说明。
一种实现方式中,上述步骤S803中访问控制器按照多个访问请求的排序顺序,依次处理多个访问请求,可以包括:访问控制器按照第一访问请求和第二访问请求的排序顺序,在闪存中执行第一访问请求,并将第二访问请求添加至缓存队列中。在第一访问请求处理完成后,访问控制器在闪存中执行第二访问请求。可选的,在闪存中执行第一访问请求表示根据第一访问请求访问闪存中的地址空间,在闪存中执行第二访问请求表示根据第二访问请求访问闪存中的地址空间。
示例性的,访问控制器接收访问请求1和访问请求2后,按照闪存访问策略,对访问请求1和访问请求2进行排序。若访问请求1的排序顺序早于访问请求2,访问请求1请求在Flash中读取数据,访问请求2请求在Flash中写入数据。那么闪存控制器可以将访问请求2添加至缓存队列中,并从Flash中读取数据,待闪存控制器将该读取的数据返回给CPU核1后,闪存控制器在Flash中写入数据。
另一种实现方式中,若访问控制器包括访问仲裁装置和闪存控制器,上述步骤 S803中访问控制器按照多个访问请求的排序顺序,依次处理多个访问请求,包括:访问仲裁装置按照第一访问请求和第二访问请求的排序顺序,向闪存控制器发送第一访问请求,并将第二访问请求添加至缓存队列中。闪存控制器接收第一访问请求,并在闪存中执行第一访问请求。在闪存控制器处理完第一访问请求后,访问仲裁装置向闪存控制器发送第二访问请求。闪存控制器接收第二访问请求,并在闪存中执行第二访问请求。
示例性的,访问仲裁装置接收访问请求1和访问请求2后,按照闪存访问策略,对访问请求1和访问请求2进行排序。若访问请求1的排序顺序早于访问请求2,访问请求1请求在Flash中读取数据,访问请求2请求在Flash中写入数据。那么访问仲裁装置可以向闪存控制器发送访问请求1,并将访问请求2添加至缓存队列中。闪存控制器接收访问请求1后,在Flash中读取数据。若访问仲裁装置查询到闪存控制器已处理完访问请求1,那么访问仲裁装置向闪存控制器发送访问请求2,闪存控制器接收访问请求2后,在Flash中写入数据。可选的,上述访问仲裁装置可以通过中断方式或查询方式获知闪存控制器是否处理完第一访问请求。
可以理解的,本申请实施例提供的闪存访问方法,当一颗芯片上运行的多个软件子***同时访问同一个闪存时,由于访问控制器可以跟随任一个软件子***上下电,因此无需为多个软件子***分别配置闪存控制器或闪存器件,就能实现多个软件子***独立访问同一个闪存器件,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。而且通过访问控制器对该多个软件子***的访问请求进行排序,并按照排序顺序依次处理,使得多个软件子***访问同一个闪存器件时不会发生冲突。
可选的,为了提高同一颗芯片上运行的多个软件子***的安全性,防止多个软件子***之间发生误操作,可以对每个软件子***访问闪存的地址空间进行限制,以确保多个软件子***的安全稳定运行。
可选的,如图9所示,本申请实施例还提供一种闪存访问方法,该方法还可以包括步骤S804-S805。
S804、访问控制器确定每个软件子***的访问请求待访问的地址是否属于该软件子***允许访问的地址空间中的地址。
示例性的,以软件子***的访问请求包括第一软件子***的第一访问请求和第二软件子***的第二访问请求为例。第一软件子***允许访问的地址空间为第一地址空间,第二软件子***允许访问的地址空间为第二地址空间,该第一地址空间中的地址与第二地址空间中的地址不完全相同。
上述访问控制器确定软件子***的访问请求是否属于该软件子***允许访问的地址空间中的地址,包括:访问控制器确定第一访问请求待访问的地址是否属于第一地址空间中的地址,访问控制器确定第二访问请求待访问的地址是否属于第二地址空间中的地址。该第一访问请求待访问的地址可以为第一目的地址,第一访问请求中包括第一目的地址。该第二访问请求待访问的地址可以为第二目的地址,第一访问请求中包括第二目的地址。
例如,如图10所示,软件子***1在闪存器件中允许访的地址空间1,软件子***2在闪存器件中允许访的地址空间2,软件子***n在闪存器件中允许访的地址空 间n。访问控制器接收软件子***1的访问请求1后,确定访问请求1中的目的地址1是否属于地址空间1中的地址。访问控制器接收软件子***2的访问请求2后,确定访问请求2中的目的地址2是否属于地址空间2中的地址。访问控制器接收软件子***n的访问请求n后,确定访问请求n中的目的地址n是否属于地址空间n中的地址。
可选的,一般情况下,如图10所示,不同软件子***在闪存Flash中允许访问的地址空间中的地址互不相同。例如,第一软件子***允许访问的第一地址空间中的地址,与第二软件子***允许访问的第二地址空间中的地址互不相同。但是,为了多个软件子***之间输出共享,多个软件子***可以共享闪存Flash中的一块地址空间,在该地址空间内不同软件子***可以允许进行不同的操作。例如,Flash的地址空间中包括共享地址空间,上述第一软件子***允许访问的第一地址空间与第二软件子***允许访问的第二地址空间均可以包括该共享地址空间。即第一软件子***与第二软件子***都可以访问共享地址空间中的地址。也就是说,当不同软件子***有共享需求的时候,闪存中可以包括共享地址,不同软件子***均可以访问该共享地址,当不同软件子***没有共享需求的时候,不同软件子***允许访问的地址不同。
可选的,第一地址空间和第二地址空间可以是预设的地址空间,该预设的地址空间可以存储在一次性可编程存储器中。第一地址空间和第二地址空间还可以是由主控***配置的地址空间,该主控***在闪存中允许访问的地址空间可以为预设的。例如,以第二软件子***为主控***为例,该第二软件子***在闪存中允许访问的地址空间(第二地址空间)为预设的地址空间,第一地址空间可以由第二软件子***启动后配置。
例如,第一地址空间和第二地址空间可以是芯片逻辑固定死的。再例如,第一地址空间和第二地址空间可以在生产时烧入OTP或efuse中。再例如,第一地址空间可以是由第二软件子***启动后配置的地址空间,第二地址空间可以是由第一软件子***启动后配置的地址空间。本申请实施例对第一地址空间和第二地址空间的具体配置方式并不限定,在此仅是示例性说明。
可选的,闪存中每个软件子***允许访问的地址空间可以包括Boot空间和其他空间。其中,Boot空间用于存储引导程序,其它空间用于存储操作***镜像、文件***、***的其它程序、资源等。例如,Boot空间用于存储启动Boot,其它空间用于存储Kernel、文件***、其它数据等。可以理解的,Boot是存储在Flash器件中的一个引导程序,用来加载软件子***中的操作***。
可选的,上述每个软件子***的Boot空间可以是芯片逻辑固定死的,而每个软件子***允许访问的其他空间可以是由主控***配置的。由于Boot空间较小(例如,1Mb),其他空间较大(例如,200Mb),因此芯片只需要写死较小的Boot空间即可,由软件配置较大的其他空间,从而能够简化芯片设计。而且通过软件配置其他空间时,软件可以根据实际业务需求动态的配置每个软件子***允许访问的其他空间的大小,使得每个软件子***允许访问的其他空间的大小并不是固定死的,能够提高闪存的利用率。
例如,如图11所示,软件子***1允许访问Boot空间1,软件子***2允许访问Boot空间2,软件子***n允许访问Boot空间n,Boot空间1、Boot空间2和Boot空间n的地址可以写死在OTP或efuse中,而软件子***1允许访问的其他空间1, 软件子***2允许访问的其他空间2,以及软件子***n允许访问的其他空间n可以由软件(例如,主控***)配置。
可选的,同一个软件子***的Boot空间和其它空间在Flash中可以是相邻的空间,也可以是不相邻的空间,本申请实施例对此并不限定。图11仅以同一个软件子***的Boot空间和其它空间分开为例进行示意。
可选的,上述每个软件子***允许访问的地址空间中可以包括该软件子***启动时的默认访问地址。例如,第一地址空间可以包括第一默认访问地址,第二地址空间可以包括第二默认访问地址,第一默认访问地址为第一软件子***启动时访问闪存的地址,第二默认访问地址为第二软件子***启动时访问闪存的地址,第一默认访问地址和第二默认访问地址不同。从而使得多个软件子***可以独立启动和工作,而无需依赖于其他软件子***。
可以理解的,在访问控制器包括访问仲裁装置和闪存控制器的情况下,上述步骤S804由访问仲裁装置执行。
可选的,上述步骤S804可以在上述步骤S803之前执行,也可以在上述步骤S802之前,本申请实施例对于步骤S804与步骤S802-S803的执行先后顺序并不进行限定,图9中仅以步骤S804在步骤S802之前执行为例进行示意。
在步骤S804中访问控制器确定软件子***的访问请求待访问的地址属于该软件子***允许访问的地址空间中的地址的情况下,访问控制器继续执行上述步骤S802-S803。例如,在访问控制器确定第一目的地址属于第一地址空间中的地址,和/或,第二目的地址属于第二地址空间中的地址的情况下,访问控制器继续执行上述步骤S802-S803。
例如,如图10所示,软件子***1在闪存器件中允许访问地址空间1,软件子***2在闪存器件中允许访问地址空间2,软件子***n在闪存器件中允许访问地址空间n。当软件子***1的访问请求1中的目的地址1属于地址空间1中的地址,软件子***2的访问请求2中的目的地址2属于地址空间2中的地址,软件子***n的访问请求n中的目的地址n属于地址空间n中的地址时,访问控制器根据访问策略对访问请求1、访问请求2和访问请求n进行排序,并按照排序顺序依次处理访问请求1、访问请求2和访问请求n。
在步骤S804中访问控制器确定软件子***的访问请求待访问的地址不属于该软件子***允许访问的地址空间中的地址的情况下,继续执行步骤S805。
S805、在软件子***的访问请求待访问的地址不属于该软件子***允许访问的地址空间中的地址的情况下,访问控制器确定该访问请求无效。
示例性,在访问控制器确定第一目的地址不属于第一地址空间中的地址,且第二目的地址不属于第二地址空间中的地址的情况下,访问控制器确定该第一访问请求和第二访问请求无效,访问控制器不处理该第一访问请求和第二访问请求。例如,在访问控制器包括访问仲裁装置和闪存控制器的情况下,访问仲裁装置确定该第一访问请求和第二访问请求无效,访问仲裁装置不会向闪存控制器发送第一访问请求和第二访问请求。
示例性,在访问控制器确定第一目的地址属于第一地址空间中的地址,第二目的 地址不属于第二地址空间中的地址的情况下,访问控制器确定第一访问请求有效,第二访问请求无效。那么访问控制器可以按照步骤S802-S803继续处理第一访问请求。在访问控制器确定第一目的地址不属于第一地址空间中的地址,第二目的地址属于第二地址空间中的地址的情况下,访问控制器确定第一访问请求无效,继续处理第二访问请求。
例如,如图10所示,软件子***1在闪存器件中允许访的地址空间1,软件子***2在闪存器件中允许访的地址空间2,软件子***n在闪存器件中允许访的地址空间n。当软件子***1的访问请求1中的目的地址1属于地址空间2中的地址(即不属于地址空间1中的地址),软件子***2的访问请求2中的目的地址2属于地址空间2中的地址,软件子***n的访问请求n中的目的地址n属于地址空间n中的地址时,访问控制器确定访问请求1无效,访问请求2和访问请求n有效,那么访问控制器根据访问策略对访问请求2和访问请求n进行排序,并按照排序顺序依次访问请求2和访问请求n。
可以理解的,本实施例中访问控制器可以对其接收的每个软件子***的访问请求的目的地址是否属于该软件子***允许访问的地址空间中的地址进行判断。当该访问请求的目的地址属于允许访问的地址空间中的地址时,再根据闪存访问策略,对这些访问请求进行排序,并按照排序顺序,依次处理这些访问请求。当访问请求的目的地址不属于允许访问的地址空间中的地址时,确定访问请求无效。
可选的,在访问控制器确定第一访问请求或第二访问请求无效时,访问控制器还可以上报错误信息,指示该软件子***的请求访问的地址超越访问权限。
需要说明的是,本实施例通过对每个软件子***的访问空间进行限制,从而能够提高同一颗芯片上运行的多个软件子***的安全性,防止多个软件子***之间发生误操作。
可选的,如图12所示,本申请实施例还提供一种闪存访问方法,该方法还可以包括步骤S806-S807。
S806、访问控制器确定每个软件子***的访问请求是否超越访问权限。
示例性的,上述访问权限可以包括只读、只写、只可擦除、可读写不可擦除、可读可擦除不可写、或可写可擦除不可读。
可选的,不同软件子***的访问权限可以相同,也可以不同,本申请实施例对此并不进行限定。示例性的,上述访问控制器确定每个软件子***的访问请求是否超越访问权限,可以包括:访问控制器确定每个软件子***的访问请求是否超越该软件子***的访问权限。
可以理解的,在访问控制器包括访问仲裁装置和闪存控制器的情况下,上述步骤S806由访问仲裁装置执行。
可选的,本申请实施例对于步骤S802、S803、S804及S806的先后执行顺序并不进行限定,图12仅是示例性示意。
在步骤S806确定软件子***的访问请求未超越访问权限的情况下,访问控制器继续执行上述步骤S802-S803。
S807、在软件子***的访问请求超越访问权限的情况下,访问控制器确定该超越 访问权限的访问请求无效。
示例性的,在访问请求超越访问权限的情况下,访问控制器还可以上报错误信息,指示该软件子***的访问请求超越访问权限。
可以理解的,本申请实施例提供的闪存访问方法中,由于访问控制器可以跟随任一个软件子***上下电,因此无需为多个软件子***分别配置闪存控制器或闪存器件,就能实现多个软件子***独立访问同一个闪存器件,能够减小芯片面积,降低芯片成本及嵌入式设备的成本。而且通过访问控制器能够对该多个软件子***的访问请求进行排序,并按照排序顺序依次处理,使得多个软件子***访问同一个闪存器件时不会发生冲突。
本申请实施例还提供一种***级芯片,该芯片包括访问控制器和多个处理器核,该多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上。多个处理器核,用于向访问控制器发送多个访问请求,多个访问请求用于请求访问同一个闪存,多个访问请求为多个软件子***的访问请求。该访问控制器,用于执行上述图8、图9、或图12中任一实施例中的闪存访问方法。可选的,该访问控制器可以独立上下电。
本申请实施例还提供一种电子设备,如图13所示,该电子设备包括闪存器件,以及SoC芯片,该SoC芯片包括上述访问控制器和多个处理器核,该多个处理器核分别通过总线连接访问控制器,该多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上。访问控制器的电源与多个处理器核的电源不同,或者,访问控制器与运行第一软件子***的第一处理器核共用同一个电源,第一处理器核的上电时长大于或等于预设时长。该多个处理器核,用于向访问控制器发送多个访问请求,多个访问请求用于请求访问同一个闪存,多个访问请求为多个软件子***的访问请求。该访问控制器,用于执行上述图8、图9、或图12中任一实施例中的闪存访问方法。可选的,该访问控制器可以独立上下电。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定集成电路(Application Specific Integrated Circuit,ASIC)中。另外,该ASIC可以位于嵌入式设备中。当然,处理器和存储介质也可以作为分立组件存在于嵌入式设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专 用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (31)

  1. 一种闪存访问方法,其特征在于,应用于一种***级芯片SoC,所述SoC包括访问控制器和多个处理器核,所述多个处理器核分别通过总线连接所述访问控制器,所述多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上;所述访问控制器的电源与所述多个处理器核的电源不同,或者,所述访问控制器与运行第一软件子***的第一处理器核共用同一个电源,所述第一处理器核的上电时长大于或等于预设时长;所述方法包括:
    所述访问控制器接收多个访问请求,所述多个访问请求用于请求访问同一个闪存,所述多个访问请求为所述多个软件子***的访问请求;
    所述访问控制器根据闪存访问策略,对所述多个访问请求进行排序;
    所述访问控制器按照所述多个访问请求的排序顺序,依次处理所述多个访问请求。
  2. 根据权利要求1所述的方法,其特征在于,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求为所述第一软件子***的访问请求,所述第二访问请求为第二软件子***的访问请求,所述第一访问请求的排序顺序早于所述第二访问请求;所述访问控制器按照所述多个访问请求的排序顺序,依次处理所述多个访问请求,包括:
    所述访问控制器在所述闪存中执行所述第一访问请求,并将所述第二访问请求添加至缓存队列中;
    在所述第一访问请求处理完成后,所述访问控制器在所述闪存中执行所述第二访问请求。
  3. 根据权利要求1所述的方法,其特征在于,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求为所述第一软件子***的访问请求,所述第二访问请求为第二软件子***的访问请求,所述第一访问请求的排序顺序早于所述第二访问请求,所述访问控制器包括访问仲裁装置和闪存控制器;所述访问控制器按照所述多个访问请求的排序顺序,依次处理所述多个访问请求,包括:
    所述访问仲裁装置向所述闪存控制器发送所述第一访问请求,并将所述第二访问请求添加至缓存队列中;
    所述闪存控制器接收所述第一访问请求,并在所述闪存中执行所述第一访问请求;
    在所述闪存控制器处理完所述第一访问请求后,所述访问仲裁装置向所述闪存控制器发送所述第二访问请求;
    所述闪存控制器接收所述第二访问请求,并在所述闪存中执行所述第二访问请求。
  4. 根据权利要求2或3所述方法,其特征在于,所述第一软件子***允许访问所述闪存中的第一地址空间,所述第二软件子***允许访问所述闪存中的第二地址空间,所述第一地址空间中的地址与所述第二地址空间中的地址不完全相同。
  5. 根据权利要求4所述的方法,其特征在于,所述第一访问请求包括第一目的地址,所述第二访问请求包括第二目的地址,所述方法还包括:
    在确定所述第一目的地址不属于所述第一地址空间中的地址的情况下,所述访问控制器确定所述第一访问请求无效;和/或,
    在确定所述第二目的地址不属于所述第二地址空间中的地址的情况下,所述访问 控制器确定所述第二访问请求无效。
  6. 根据权利要求4或5所述的方法,其特征在于,所述第一地址空间对应的地址范围和所述第二地址空间对应的地址范围存储在一次性可编程存储器中。
  7. 根据权利要求4或5所述的方法,其特征在于,所述第一地址空间为预设的地址空间,所述第二地址空间是由所述第一软件子***启动后配置的地址空间;或者,所述第二地址空间为预设的地址空间,所述第一地址空间是由所述第二软件子***启动后配置的地址空间。
  8. 根据权利要求1-7中任一项所述的方法,其特征在于,所述多个软件子***包括安卓***和基带的驱动***。
  9. 根据权利要求1-8中任一项所述的方法,其特征在于,所述多个软件子***包括无线保真WiFi子***和摄像头子***。
  10. 根据权利要求9所述的方法,其特征在于,所述访问控制器与运行所述WiFi子***的处理器核共用同一个电源。
  11. 根据权利要求1-10中任一项所述的方法,其特征在于,每个软件子***允许访问的地址空间包括Boot空间和其他空间,所述Boot空间对应的地址范围存储在一次性可编程存储器中,所述其他空间是由软件子***配置的地址空间。
  12. 根据权利要求1-11中任一项所述的方法,其特征在于,所述软件子***启动时访问所述闪存的地址为默认访问地址,所述多个软件子***启动时的默认访问地址互不相同。
  13. 根据权利要求1-12中任一项所述的方法,其特征在于,所述方法还包括:
    在所述软件子***的访问请求超越访问权限的情况下,所述访问控制器确定超越访问权限的访问请求无效;其中,所述访问权限包括只读、只写、只可擦除、可读写不可擦除、可读可擦除不可写、或可写可擦除不可读。
  14. 根据权利要求1-13中任一项所述的方法,其特征在于,所述方法还包括:
    所述处理器核基于第一标志位的值,在确定所述访问控制器与所述闪存未初始化的情况下,将所述访问控制器与所述闪存初始化,并将所述第一标志位的值设置为第一数值;或者,
    所述处理器核基于所述第一标志位的值,在确定所述访问控制器与所述闪存已经初始化的情况下,获取所述访问控制器与所述闪存的初始化参数;
    其中,所述第一标志位的值包括所述第一数值和第二数值,所述第一数值用于指示所述访问控制器与所述闪存已经初始化,所述第二数值用于指示所述访问控制器与所述闪存未初始化。
  15. 根据权利要求1-14中任一项所述的方法,其特征在于,所述闪存访问策略包括按照软件子***的优先级处理访问请求、按照访问请求的优先级处理访问请求,或按照访问请求的时间顺序处理访问请求中的至少一种。
  16. 一种闪存访问的装置,其特征在于,所述装置包括访问控制器和多个处理器核,所述多个处理器核分别通过总线连接所述访问控制器,所述多个处理器核上运行多个软件子***,不同软件子***运行在不同的处理器核上;所述访问控制器的电源独立于所述多个处理器核的电源,或者,所述访问控制器与运行第一软件子***的第一处 理器核共用同一个电源,所述第一处理器核的上电时长大于或等于预设时长;
    所述多个处理器核,用于向所述访问控制器发送多个访问请求,所述多个访问请求为所述多个软件子***的访问请求,所述多个访问请求用于请求访问同一个闪存;
    所述访问控制器,用于接收所述多个访问请求,根据闪存访问策略,对所述多个访问请求进行顺序;并按照所述多个访问请求的排序顺序,依次处理所述多个访问请求。
  17. 根据权利要求16所述的装置,其特征在于,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求为所述第一软件子***的访问请求,所述第二访问请求为第二软件子***的访问请求,所述第一访问请求的排序顺序早于所述第二访问请求;所述访问控制器,具体用于:
    在所述闪存中执行所述第一访问请求,并将所述第二访问请求添加至缓存队列中;
    在所述第一访问请求处理完成后,在所述闪存中执行所述第二访问请求。
  18. 根据权利要求16所述的装置,其特征在于,所述多个访问请求包括第一访问请求和第二访问请求,所述第一访问请求为所述第一软件子***的访问请求,所述第二访问请求为第二软件子***的访问请求,所述第一访问请求的排序顺序早于所述第二访问请求,所述访问控制器包括访问仲裁装置和闪存控制器;
    所述访问仲裁装置,用于向所述闪存控制器发送所述第一访问请求,并将所述第二访问请求添加至缓存队列中;
    所述闪存控制器,用于接收所述第一访问请求,并在所述闪存中执行所述第一访问请求;
    所述访问仲裁装置,还用于在所述闪存控制器处理完所述第一访问请求后,向所述闪存控制器发送所述第二访问请求;
    所述闪存控制器,还用于接收所述第二访问请求,并在所述闪存中执行所述第二访问请求。
  19. 根据权利要求17或18所述装置,其特征在于,所述第一软件子***允许访问所述闪存中的第一地址空间,所述第二软件子***允许访问所述闪存中的第二地址空间,所述第一地址空间中的地址与所述第二地址空间中的地址不完全相同。
  20. 根据权利要求19所述的装置,其特征在于,所述第一访问请求包括第一目的地址,所述第二访问请求包括第二目的地址,所述访问控制器,还用于:
    在确定所述第一目的地址不属于所述第一地址空间中的地址的情况下,确定所述第一访问请求无效;在所述第二目的地址不属于所述第二地址空间中的地址的情况下,确定所述第二访问请求无效。
  21. 根据权利要求19或20所述的装置,其特征在于,所述第一地址空间对应的地址范围和所述第二地址空间对应的地址范围存储在一次性可编程存储器中。
  22. 根据权利要求19或20所述的装置,其特征在于,所述第一地址空间为预设的地址空间,所述第二地址空间是由所述第一软件子***启动后配置的地址空间;或者,所述第二地址空间为预设的地址空间,所述第一地址空间是由所述第二软件子***启动后配置的地址空间。
  23. 根据权利要求16-22中任一项所述的装置,其特征在于,所述多个软件子*** 包括安卓***和基带的驱动***。
  24. 根据权利要求16-22中任一项所述的装置,其特征在于,所述多个软件子***包括无线保真WiFi子***和摄像头子***。
  25. 根据权利要求24所述的装置,其特征在于,所述访问控制器与运行所述WiFi子***的处理器核共用同一个电源。
  26. 根据权利要求16-25中任一项所述的装置,其特征在于,每个软件子***允许访问的地址空间包括Boot空间和其他空间,所述Boot空间对应的地址范围存储在一次性可编程存储器中,所述其他空间是由软件子***配置的地址空间。
  27. 根据权利要求16-26中任一项所述的装置,其特征在于,所述软件子***启动时访问所述闪存的地址为默认访问地址,所述多个软件子***启动时的默认访问地址互不相同。
  28. 根据权利要求16-27中任一项所述的装置,其特征在于,所述访问控制器,还用于:
    在所述软件子***的访问请求超越访问权限的情况下,所述访问控制器确定超越访问权限的访问请求无效;其中,所述访问权限包括只读、只写、只可擦除、可读写不可擦除、可读可擦除不可写、或可写可擦除不可读。
  29. 根据权利要求16-28中任一项所述的装置,其特征在于,所述处理器核,还用于:
    基于第一标志位的值,在确定所述访问控制器与所述闪存未初始化的情况下,将所述访问控制器与所述闪存初始化,并将所述第一标志位的值重置为第一数值;
    基于所述第一标志位,在确定所述访问控制器与所述闪存已经初始化的情况下,获取所述访问控制器与所述闪存的初始化参数;
    其中,所述第一标志位的值包括所述第一数值和第二数值,所述第一数值用于指示所述访问控制器与所述闪存已经初始化,所述第二数值用于指示所述访问控制器与所述闪存未初始化。
  30. 根据权利要求16-29中任一项所述的装置,其特征在于,所述闪存访问策略包括按照软件子***的优先级处理访问请求、按照访问请求的优先级处理访问请求,或按照访问请求的时间顺序处理访问请求中的至少一种。
  31. 一种电子设备,其特征在于,所述电子设备包括闪存器件,以及如权利要求16-30中任一项所述的闪存访问装置。
CN202180062080.1A 2021-03-29 2021-03-29 一种闪存访问方法及装置 Pending CN116194904A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/083680 WO2022204897A1 (zh) 2021-03-29 2021-03-29 一种闪存访问方法及装置

Publications (2)

Publication Number Publication Date
CN116194904A true CN116194904A (zh) 2023-05-30
CN116194904A8 CN116194904A8 (zh) 2023-08-22

Family

ID=83457400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180062080.1A Pending CN116194904A (zh) 2021-03-29 2021-03-29 一种闪存访问方法及装置

Country Status (4)

Country Link
US (1) US20240020229A1 (zh)
EP (1) EP4307131A4 (zh)
CN (1) CN116194904A (zh)
WO (1) WO2022204897A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187908A (zh) * 2007-09-27 2008-05-28 上海大学 单芯片多处理器共享数据存储空间的访问方法
JP5678784B2 (ja) * 2011-04-14 2015-03-04 セイコーエプソン株式会社 回路、電子機器、及び印刷装置
CN102331977A (zh) * 2011-09-07 2012-01-25 上海交通大学 内存控制器、处理器***及内存访问控制方法
KR102114109B1 (ko) * 2013-10-17 2020-05-22 에스케이하이닉스 주식회사 데이터 저장 장치
US9436395B2 (en) * 2014-03-14 2016-09-06 Advanced Micro Devices, Inc. Mechanisms to save user/kernel copy for cross device communications
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种***级芯片及其内存访问管理方法
KR102650828B1 (ko) * 2016-05-20 2024-03-26 삼성전자주식회사 둘 이상의 프로세서에 의해 공유되는 메모리 장치 및 상기 메모리 장치를 포함하는 시스템
IT201700034731A1 (it) * 2017-03-29 2018-09-29 St Microelectronics Srl Modulo e metodo di gestione dell'accesso ad una memoria

Also Published As

Publication number Publication date
EP4307131A1 (en) 2024-01-17
US20240020229A1 (en) 2024-01-18
EP4307131A4 (en) 2024-05-22
WO2022204897A1 (zh) 2022-10-06
CN116194904A8 (zh) 2023-08-22

Similar Documents

Publication Publication Date Title
CN112099941B (zh) 实现硬件加速处理的方法、设备和***
CN107967225B (zh) 数据传输方法、装置、计算机可读存储介质和终端设备
WO2018157836A1 (zh) 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
CN109522099B (zh) 提高非实时性操作***实时性的方法及其***
CN116244229B (zh) 硬件控制器的访问方法、装置、存储介质和电子设备
US7650488B2 (en) Communication between processor core partitions with exclusive read or write to descriptor queues for shared memory space
US20190227918A1 (en) Method for allocating memory resources, chip and non-transitory readable medium
CN116243996B (zh) 业务的运行切换方法、装置、存储介质及电子装置
US10719333B2 (en) BIOS startup method and apparatus
US8996734B2 (en) I/O virtualization and switching system
CN116868167A (zh) 操作***的运行控制方法和装置,以及嵌入式***和芯片
CN114253749A (zh) 一种交互方法、装置及电子设备和存储介质
CN116830082A (zh) 嵌入式***的启动控制方法和装置、存储介质和电子设备
US6173341B1 (en) System and method for configuring adapters in a computer system
JP2002288104A (ja) コンピュータシステム、そのリソース割り当て方法及びプログラム
CN116302141B (zh) 串口切换方法、芯片及串口切换***
CN116194904A (zh) 一种闪存访问方法及装置
US8423693B2 (en) Circuit and method for pipe arbitration using available state information and arbitration
CN116868170A (zh) 嵌入式***的运行方法和装置、嵌入式***及芯片
CN116521209A (zh) 操作***的升级方法及装置、存储介质及电子设备
JP4841371B2 (ja) コンピュータシステムおよびそのi/o空間リソース割り当て方法
US20220357973A1 (en) Processing system, related integrated circuit, device and method
US8209449B2 (en) Method for enabling several virtual processing units to directly and concurrently access a peripheral unit
US20220269546A1 (en) Control device, method, program, and vehicle
KR20230086548A (ko) 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법

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
CI02 Correction of invention patent application

Correction item: PCT international application to national stage day

Correct: 2023.03.14

False: 2023.03.09

Number: 22-01

Volume: 39

Correction item: PCT international application to national stage day

Correct: 2023.03.14

False: 2023.03.09

Number: 22-01

Page: The title page

Volume: 39

CI02 Correction of invention patent application