CN119003431A - 片上系统及其外设数据传输方法和电子设备 - Google Patents
片上系统及其外设数据传输方法和电子设备 Download PDFInfo
- Publication number
- CN119003431A CN119003431A CN202411139987.5A CN202411139987A CN119003431A CN 119003431 A CN119003431 A CN 119003431A CN 202411139987 A CN202411139987 A CN 202411139987A CN 119003431 A CN119003431 A CN 119003431A
- Authority
- CN
- China
- Prior art keywords
- processor
- peripheral
- controller
- read
- dma
- 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
Links
- 230000002093 peripheral effect Effects 0.000 title claims abstract description 337
- 230000005540 biological transmission Effects 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000015654 memory Effects 0.000 claims abstract description 152
- 230000004044 response Effects 0.000 claims description 31
- 238000012546 transfer Methods 0.000 claims description 28
- 238000004891 communication Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Landscapes
- Bus Control (AREA)
Abstract
本公开提供了一种片上系统及其外设数据传输方法和电子设备,片上系统包括第一处理器、第二处理器、直接寄存器访问DMA控制器、外设控制器、共享内存,所述DMA控制器、共享内存以及第二处理器挂接于同一总线。外设数据传输方法,包括:第一处理器向共享内存写入针对外设控制器的读写参数;第二处理器利用读写参数配置并使能DMA控制器;被使能后,DMA控制器将外设控制器中的外设数据搬运至共享内存,以使得第一处理器能够从共享内存中读取到外设数据。本公开实施例解决了片上系统内外设数据传输中的数据堵塞、耗时太长等问题。
Description
技术领域
本公开涉及芯片技术领域,特别涉及一种片上系统的外设数据传输方法和电子设备。
背景技术
片上系统(SoC,System on a Chip)的多处理器架构是在一个芯片上集成多个处理器核心以实现更高性能、更低功耗和更紧凑的系统设计。这种架构通常用于需要处理大量并行任务或需要更高计算能力的应用。在片上系统的多处理器架构中,每个处理器核心可以独立运行程序,执行任务,并通过共享内存或其他通信机制进行通信和协作。
多处理器架构的片上系统中处理器与外设之间路径较长,处理器访问外设的响应等待时间较长,导致片上系统产生整体数据传输性能较低等问题。
发明内容
有鉴于此,本公开提供了一种片上系统及其外设数据传输方法和电子设备,能够有效提升片上系统中外设数据的传输效率,从而提升片上系统的整体数据传输性能、总线数据流的连续性。
根据本公开的第一方面,提供了一种片上系统的外设数据传输方法,所述片上系统包括第一处理器、第二处理器、直接寄存器访问DMA控制器、外设控制器、共享内存,所述DMA控制器、共享内存以及第二处理器挂接于同一总线;所述片上系统的外设数据传输方法,包括:第一处理器向所述共享内存写入针对外设控制器的读写参数;第二处理器利用所述读写参数配置并使能所述DMA控制器;被使能后,所述DMA控制器将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据。
本公开第一方面的一些实施方式中,所述第二处理器利用所述读写参数配置并使能所述DMA控制器,包括:
所述第二处理器根据外设总线传输速率和所述读写参数指示的读写数据量估算总线传输时长,所述外设总线用于挂接所述外设控制器;
若所述总线传输时长大于DMA配置时长阈值,则所述第二处理器配置并使能所述DMA控制器。
本公开第一方面的一些实施方式中,还包括:若所述总线传输时长小于或等于DMA配置时长阈值,则所述第二处理器从所述外设控制器的数据寄存器地址读取所述外设数据并送至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据。
本公开第一方面的一些实施方式中,所述第二处理器利用所述读写参数配置并使能所述DMA控制器,包括:确定对应所述外设控制器的DMA通道;将所述外设控制器的数据寄存器地址设置为所述DMA控制器的源地址;将对应所述外设控制器的共享内存空间地址设置为所述DMA控制器的目标地址;根据所述读写参数中的读写数据量设置所述DMA控制器的数据传输长度;使能所述DMA控制器。
本公开第一方面的一些实施方式中,所述确定对应所述外设控制器的DMA通道,包括如下之一:
申请所述DMA控制器的空闲DMA通道并将所述空闲DMA通道绑定至所述外设控制器;
若所述外设控制器已绑定的DMA通道当前被标记为空闲,则直接使用所述外设控制器已绑定的DMA通道;
若所述DMA控制器中所有DMA通道被占用,检索处于绑定状态的DMA通道,释放被标记为空闲且处于绑定状态的DMA通道以获得空闲DMA通道,将所述空闲DMA通道绑定至所述外设控制器。
本公开第一方面的一些实施方式中,所述DMA控制器将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据,包括:
所述DMA控制器将所述外设控制器的数据寄存器地址处存放的外设数据搬运至所述共享内存,并在搬运完成后发起第二中断;
响应于所述第二中断,第二处理器运行中断服务函数以向所述第一处理器发起第三中断,以使得所述第一处理器响应于所述第三中断向所述共享内存读取所述外设数据。
本公开第一方面的一些实施方式中,所述第二处理器中设置有搬运任务模块,所述搬运任务模块用于响应于来自第一处理器的第一中断唤醒第二处理器的DMA控制器配置程序;所述第二处理器利用所述读写参数配置并使能所述DMA控制器,具体为:第二处理器运行DMA控制器配置程序以完成DMA控制器的配置与使能。
本公开第一方面的一些实施方式中,所述读写参数包括多组,每组读写参数针对不同的外设控制器;所述第二处理器利用所述读写参数配置并使能所述DMA控制器,包括:响应于第一处理器发起的第一中断,所述第二处理器从所述共享内存中读取所述第一处理器写入的多组读写参数,所述第二处理器对所述多组读写参数排序,按照所述排序流水线式执行每组读写参数的DMA控制器的配置与使能,不同的读写参数分配不同的DMA通道以使用不同DMA通道搬运不同外设控制器的外设数据。
本公开第一方面的一些实施方式中,所述第二处理器对所述多组读写参数排序,包括:
所述第二处理器根据如下信息中之一对所述多组读写参数排序:
读写参数对应的外设控制器的优先级;
读写参数对应的读数据请求的时序;
读写参数对应的读数据请求的应用程序优先级。
本公开第一方面的一些实施方式中,被使能后,所述DMA控制器将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据,包括:
所述DMA控制器按照所述排序使用不同的DMA通道流水线式搬运外设控制器的外设数据至所述共享内存,每检测到一个DMA通道传输完成则发起一次第二中断;
每收到一次所述第二中断,所述第二处理器发起一次第三中断,所述第三中断用于通知所述第一处理器相应外设控制器的外设数据传输完成,以便所述第一处理器响应于所述第三中断从所述共享内存中读取相应的外设数据,直至多组读写参数对应的外设控制器的外设数据都能够被所述第一处理器读取到。
本公开第一方面的一些实施方式中,所述外设控制器包括如下之一或多种:
通用的串行通信接口UART;
串行通信总线接口I2C;
同步串行数据接口SPI;
存储卡接口SD/MMC;
数字音频接口I2S;
增强型串行外设接口eSPI。
根据本公开的第二方面,提供了一种片上系统,所述片上系统包括第一处理器、第二处理器、直接寄存器访问DMA控制器、外设控制器、共享内存,所述DMA控制器、共享内存以及第二处理器挂接于同一总线;所述第一处理器,用于向所述共享内存写入针对外设控制器的读写参数;所述第二处理器,用于利用所述读写参数配置并使能所述DMA控制器;所述DMA控制器,用于被使能后,将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据。
根据本公开的第三方面,提供了一种电子设备,包括:上述的片上系统。
由上述技术方案可以看出,本公开实施例通过在片上系统中增设DMA,DMA控制器设置在第二处理器所在的总线上,第二处理器仅需基于共享内存中的读写参数配置并使能DMA控制器,之后可以由DMA控制器将来自外设控制器的外设数据搬运至共享内存,而无需第二处理器的参与,由此,在使能DMA控制器后,第二处理器的核资源便可被自动释放出来以用于其他外设任务,从而有效避免第二处理器的核资源被占满,解决了第二处理器的数据拥堵问题,提升了第二处理器的核资源利用率和处理效率;同时,由于DMA控制器在共享内存和外设控制器之间搬运数据的中间环节更简单、消耗的时间更少,DMA控制器搬运数据的耗时往往比第二处理器直接从外设控制器中读取数据所花费的时间更少,且DMA控制器搬运数据的耗时通常会低于外设总线上完成实际数据传输的时间,因此,本公开实施例的方法还可减少外设数据的传输耗时,提升总线数据传输的连续性,让外设总线能够满带宽传输,减少带宽资源的浪费,从而提升片上系统的整体数据传输性能。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的片上系统的示例性架构示意图;
图2为本公开实施例提供的片上系统的外设数据传输方法的流程示意图;
图3为本公开实施例涉及的针对SPI的外设数据传输过程示意图;
图4为本公开实施例涉及的多外设场景下的外设数据传输时序图;
图5为本公开实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在本公开实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
术语解释:
RV核:即基于RISC-V指令集架构的处理器核,RISC-V是一种基于精简指令集计算机(RISC)原则的开放指令集架构(ISA),RISC-V ISA的设计简洁、模块化,具有可扩展性,可以支持不同的应用需求。它定义了一组基本指令集,同时也提供了标准的扩展,如浮点、向量、加密等,使得用户可以根据自己的需求选择合适的指令集扩展。本公开实施例的第二处理器采用RV核构建。
外设:也可称为SoC外围设备,SoC连接的外部硬件设备,包括但不限于串口设备、音频设备、存储设备等。
直接内存访问(DMA,irect Memory Access):计算机系统中一种用于提高数据传输效率的技术,无需CPU控制便可在内存与外设之间进行数据搬运,可减轻CPU负担,提高系统整体性能。
静态随机存取存储器(SRAM,Static Random-Access Memory):一种随机存取存储器,其“静态”特性意味着只要保持通电,里面储存的数据便可以恒常保持,无需周期性刷新,它提供了较高的性能,SRAM主要用于高速缓存(Cache)等需要快速数据访问的场景。
示例性系统
本公开实施例提供了一种片上系统,该片上系统可以包括:第一处理器、第二处理器、DMA控制器、外设控制器、共享内存,DMA控制器、共享内存以及第二处理器挂接于同一总线;本公开实施例的片上系统可执行下文的外设数据传输方法。
具体地,第一处理器可以用于向共享内存写入针对外设控制器的读写参数,第二处理器可以用于利用读写参数配置并使能DMA控制器,DMA控制器可以用于被使能后,将外设控制器中的外设数据搬运至共享内存以使得第一处理器能够从共享内存中读取到外设数据。
下面对本公开实施例提供的片上系统的示例性架构做详细说明。
图1示出了本公开实施例提供的片上系统100的架构示例图。参见图1所示,本公开实施例的片上系统100可以包括第一处理器、第二处理器、DMA控制器、共享内存、外设控制器、系统总线、外设总线以及第二处理器总线等。其中,系统总线为一级总线,外设总线和第二处理器总线均为二级总线,外设总线和第二处理器总线通过系统总线连接,第一处理器挂接于系统总线,第二处理器、共享内存以及DMA控制器均挂接于第二处理器总线,各外设控制器连接在外设总线上,第一处理器连接在系统总线上。
一些实施方式中,片上系统100中还可包括存储器(图1未示出),该存储器可以为片上系统的内存,也可以作为片上系统内置的其他存储器,其挂接于系统总线上,第一处理器可通过系统总线访问该存储器,第二处理器可以通过第二处理器总线和系统总线访问该存储器。示例性地,因DDR具有更高的数据传输速率和效率,且能够在每个时钟周期内传输两次数据,提供更高的带宽,因此,本公开实施例的存储器优选为双倍速率同步动态随机存储器(DDR,Double Data Rate Synchronous Dynamic Random Access Memory)等。可以理解的是,存储器还可以是其他任何类型的随机存储器(RAM),例如SDR等,对此,本公开实施例不做限制。
一些实施方式中,参见图1,片上系统100还可包括作为第二处理器内存的SRAM或其他类似的存储器,其用于存储第二处理器的程序相关数据,也即,第二处理器的程序运行在SRAM上。
参见图1,各外设控制器(也可称为外设控制器接口)通过外设总线、系统总线和第二处理器总线连接第二处理器。不同类型的外设控制器可通过不同的标准总线协议与相应的外部硬件设备通信。示例性地,外设控制器可以包括多种。示例性地,外设控制器可以包括但不限于如下之一或多种:通用的串行通信接口(UART,Universal AsynchronousReceiver-Transmitter)、串行通信总线接口(I2C,Inter-Integrated Circuit)、同步串行数据接口(SPI,Serial Peripheral Interface)、高清晰度音频接口(HAD,HighDefinition Audio)、存储卡接口(SD/MMC,Secure Digital/Multimedia Card)、千兆以太网控制器接口(GMAC,Gigabit Media Access Control)、神经处理单元(NPU,NeuralProcessing Unit)、数字音频接口标准(I2S,Inter-IC Sound)、编解码器(CODEC,Coder-Decoder)、增强型串行外设接口(eSPI,Enhanced Serial Peripheral Interface)等。具体应用中,外设控制器可以根据需要进行扩展,对此,本公开实施例不做限制。
示例性地,第一处理器可以为单核处理器或多核处理器,第一处理器的核可以是但不限于ARM、RV核或其他各种类型的处理器核。
示例性地,第二处理器可以为单核处理器,第二处理器可以采用基于RISC-V指令集架构的处理器核(本文简称为RV核)、ARM核或者与第一处理器相同的处理器核。
一些实施方式中,第一处理器可采用大核,第二处理器可采用小核,第一处理器可以作为片上系统的主处理器,第二处理器可作为片上系统的从处理器,片上系统应用层的各类任务均可由第一处理器负责,第二处理器则可用于执行片上系统中例如外设、输入输出接口等特定组件的相关处理。
例如,第一处理器可用于执行应用层任务,优选采用多核处理器,包括但不限于核1、核2、……、核n,n为大于2的整数,第一处理器中的各个核可以相同、也可不同。第二处理器可以为处理输入输出(I/O)操作的处理器(IOP,IO Processor IOP),优选采用单核处理器,其可用于管理各个外设控制器以实现片上系统100与外设之间的通信。第一处理器与第二处理器间可通过核间通信组件通信,第二处理器可通过第二处理器总线、外设总线与外设控制器交互,第一处理器通过第二处理器获取存储于外设控制器中的外设数据。
示例性地,第一处理器与第二处理器间可通过例如核间通信组件、低速串行总线、高速串行总线或其他任意可行的方式进行通信。其中,核间通信组件可以包括但不限于寄存器组(regfile)、共享内存组(share mem,shared memory)等。图1中的共享内存包含在该共享内存组中。具体应用中,参见图1,第一处理器向第二处理器传送数据的过程可以为:来自第一处理器的数据依次经过系统总线、第二处理器总线进入共享内存,第二处理器通过第二处理器总线访问该共享内存以读取该数据。第二处理器向第一处理器返回数据的过程与此类似,不再赘述。
本公开实施例的片上系统100除包含前述的第一处理器和第二处理器外,还可包括其他处理器。例如,片上系统100还可包括第三处理器(图中为示出),该第三处理器也可作为从处理器来使用,其可用于执行例如系统控制、安全任务等处理,安全任务可以包括但不限于加解密、安全认证等,系统控制包括但不限于系统上下电、系统配置等。第三处理器可挂接于系统总线上,第三处理器可通过系统总线、共享内存、寄存器组等与第一处理器通信。
由于第二处理器和外设控制器挂在不同的二级总线上,第二处理器与外设控制器间的数据传输需要经外设总线、系统总线和第二处理器总线,传输路径长,耗时多,第二处理器等待外设控制器响应的时间加上其他代码运行的必要时间将会大于外设总线上完成实际数据传输的时间,导致总线上数据流不连续,外设总线无法满带宽传输,第二处理器的核资源又被占满、无法及时处理其他业务,最终引起带宽资源的浪费和第二处理器的数据堵塞等问题。鉴于此,本公开实施例提供的片上系统100中设置了DMA,并将DMA挂接于第二处理器总线上,通过DMA实现第二处理器与外设控制器之间的外设数据传输,从而解决上述问题。
需要说明的是,上述系统100仅做示意,本公开实施例适用的系统架构不限于此。本领域技术人员应当理解,本公开实施例的下述方法可适用于其他形式的片上系统,只要该片上系统中包含两个处理器,DMA控制器挂接在能够与外设控制器直接交互的处理器所属的总线上即可。
示例性方法
图2示出了本公开实施例提供的片上系统的外设数据传输方法流程示意图。参见图2,该外设数据传输方法200可以包括:
步骤201,第一处理器向共享内存写入针对外设控制器的读写参数;
步骤202,第二处理器利用读写参数配置并使能DMA控制器;
步骤203,被使能后,DMA控制器将外设控制器中的外设数据搬运至共享内存,以使得第一处理器能够从共享内存中读取到外设数据。
针对外设控制器的读写参数是指针对外设控制器的数据读取参数或者针对外设控制器的数据写入参数。
本公开实施例中,通过在片上系统中增设DMA,DMA控制器设置在第二处理器所在的总线上,第二处理器仅需根据第一处理器写入共享内存的读写参数配置并使能DMA控制器,之后由DMA控制器便可将外设控制器的外设数据搬运至共享内存,从而第一处理器可通过访问共享内存获取外设数据。由于DMA控制器搬运外设数据的过程中完全无需第二处理器的参与,因此,第二处理器的核资源将被自动释放用以处理其他任务,从而有效避免第二处理器的核资源被占满,解决了第二处理器的数据拥堵问题,提升了第二处理器的核资源利用率和处理效率;同时,由于DMA控制器在共享内存和外设控制器之间搬运数据的中间环节更简单、消耗的时间更少,DMA控制器搬运数据的耗时往往比第二处理器直接从外设控制器中读取数据所花费的时间更少,且DMA控制器搬运数据的耗时通常会低于外设总线上完成实际数据传输的时间,因此,本公开实施例的方法还可减少外设数据的传输耗时,提升总线数据传输的连续性,让外设总线能够满带宽传输,减少带宽资源的浪费,从而提升片上系统的整体数据传输性能。
本公开实施例中,外设数据可以包括但不限于如下几种:1)设备数据:包括从外设设备读取数据并将其传递给应用程序,以及将应用程序生成的数据传输给外设设备。2)状态信息,驱动程序可能会传递外设设备的状态信息给应用程序,状态信息包括连接状态、错误信息、设备配置等。3)事件通知:驱动程序可能会向应用程序发送事件通知,如设备插拔事件、错误事件、完成事件等。4)控制命令:应用程序可能会通过驱动程序向外设发送控制命令,驱动程序负责将这些命令传递给外设设备。5)中断处理:驱动程序负责处理外设设备发出的中断信号,并通知应用程序相应的中断事件。当然,外设数据还可包括其他,对此,本公开实施例不做限制。
若针对外设控制的读写参数中可以包括但不限于传输数据量和数据地址。读取时第二处理器将数据地址配置为DMA控制器的目的地址,将外设数据寄存器配置为DMA控制器的源地址,以通过DMA控制器将数据读取到数据地址中。发送时第一处理器将要发送的数据写到数据地址,第二处理器将该数据地址配置为DMA控制器的源地址,将外设数据寄存器配置为DMA控制器的目的地址,以通过DMA控制器将数据发送至外设控制器,经外设控制器传输出去。由于每个外设控制器的数据寄存器地址通常是固定的,因此无需通过读写参数将该数据寄存器地址传递给第二处理器。读写数据量此外,读写参数中还可包括其他内容,对此,本公开实施例不做限制。
其中,外设控制器的数据寄存器用于传输数据到外设或从外设接收数据。数据寄存器通常用于在外设和片上系统之间传递数据,该数据即为本文的外设数据。
在步骤201中,第一处理器还可将对应上述读写参数的读指令与读写参数一同写入共享内存中,以便第二处理器能够在该读指令的触发下利用读写参数执行后续处理。具体地,该读指令可用于唤醒第二处理器中的搬运任务模块,以通过该搬运任务模块利用读写参数执行后续处理。具体细节可参见下文相关描述,此处不再赘述。
读写参数与读指令可以是第一处理器根据应用程序的读请求而产生。或者,读写参数与读指令可以是第一处理器通过应用层接收的用户输入信息。对此,本公开实施例不做限制。
需要说明的是,对于读写参数与读指令的格式、内容及其获取方式,本公开实施例不做限制。
一些实施方式中,步骤202可以包括:第二处理器根据外设总线传输速率和读写参数指示的读写数据量估算总线传输时长,该外设总线为是外设控制器连接外部设备的总线,在SoC外部,由SoC管脚引出来连接到外设;若总线传输时长大于DMA配置时长阈值,则第二处理器配置并使能DMA控制器。由此,可以在确定总线传输时长大于DMA控制器传输时长的情况下再采用DMA控制器进行外设数据传输,使得DMA控制器的应用能够尽可能地减少数据传输耗时。
进一步地,本公开实施例的方法还可以包括:若总线传输时长小于或等于DMA配置时长阈值,则第二处理器从外设控制器的数据寄存器地址读取外设数据并送至共享内存,以使得第一处理器能够从共享内存中读取到外设数据。由此,可以在总线传输时长小于或等于DMA控制器传输时长的情况下采用原有的直接数据传输的方式,而不使用DMA控制器进行外设数据搬运,从而尽可能地减少数据传输耗时。
DMA配置时长阈值可以取经验值。具体地,使用DMA控制器传输数据时需要申请空闲的DMA通道,进行DMA通道初始化,DMA控制器传输完成后会产生中断,对DMA通道进行处理,这两部分是配置DMA控制器的必要耗时,这两部分必要耗时是固定不变的,该两部分耗时即为DMA配置时长,DMA配置时长阈值可以取该DMA配置时长的经验值。例如,可以运行一次或多次如下的DMA传输过程:使用DMA控制器传输数据时需要申请空闲的DMA通道,进行DMA通道初始化,DMA控制器传输完成后会产生中断,对DMA通道进行处理;统计出每次DMA传输过程的运行时长、取平均值作为DMA配置时长阈值。
一些示例中,总线传输时长可以通过下式(1)计算得到:
总线传输时长=(1/总线传输速率)*8*字节数(1)
其中,“/”表示除,“*”表示乘,字节数即为读写数据量的字节数。以SPI为例,SPI总线传输速率是25Mbps(即每秒传输25兆比特的数据),则传输1字节的数据需要(1/25000000)*8=0.32us,传输10字节的数据则是3.2us。
具体应用中,第二处理器可以在每次需要传输外设数据前先进行判断,若总线传输时长大于DMA配置时长阈值,则认为是大数据量传输,使用DMA控制器进行外设数据的传输。否则,可以采用原有的直接数据传输的方式或其他可适用于的方式进行外设数据传输。
图3示出了本公开实施例的外设数据传输方法的具体实现过程示意图。图3的示例中,以SPI flash读为例,第一处理器运行操作系统,应用程序与SPI驱动框架运行在操作系统之上,与SPI控制器相关的底层驱动框架在第二处理器中运行。图3的示例,通过在第二处理器的架构中引入了DMA控制器来进行外设数据的传输而大大提高了片上系统的整体数据传输效率。其他外设控制器的外设数据传输过程与此原理相同,本领域技术人员应当理解可通过图3直接推导其他外设控制器的外设数据传输过程。下文将结合图3对本公开实施例的技术细节做详细说明。
一些实施方式中,步骤201中,第一处理器可以响应于应用层发起的读数据请求向共享内存中写入针对外设控制器的读写参数。具体地,步骤201可以包括:响应于应用层发起的读数据请求,第一处理器的外设驱动层将读数据请求对应的读命令和读写参数写入共享内存以触发第一中断,第一中断用于触发第二处理器对DMA控制器的配置与使能。
具体地,以图3为例,用户空间的用户应用程序(User application)发起SPIflash读数据请求,SPI驱动层响应该读数据请求,该读数据请求依次经过SPI驱动框架中的SPI设备驱动(spi device driver)、内存技术设备(MTD,Memory Technology Device)层、SPI核心(spi core)和SPI控制器驱动(spi master driver)的处理后,对应的读命令和读写参数被写入共享内存中以触发针对第二处理器的第一中断,第一中断用于通知第二处理器有命令待处理。
其中,SPI核心(spi core)通过调用例如spi transfer、spi_nor等Linux操作系统驱动框架内部的组件完成处理,SPI控制器驱动(spi master driver)的处理过程中会调用Transfer_one_message回调函数来完成spi_transfer链表的处理和传输工作。
一些实施方式中,步骤202中可以包括如下过程:首先,确定对应外设控制器的DMA通道;其次,将外设控制器的数据寄存器地址设置为DMA控制器的源地址;第三,将外设控制器对应的共享内存空间的地址设置为DMA控制器的目标地址;第四,根据读写参数中的读写数据量设置DMA控制器的数据传输长度;最后,使能DMA控制器。由此,可以实现DMA控制器的配置与使能,使得DMA控制器的源地址为外设控制器的数据寄存器地址、目标地址为对应外设控制器的共享内存空间地址,以便DMA控制器在使能后完成相应外设数据的搬运。
具体应用中,共享内存中可以设置对应各不同外设控制器的共享内存空间,各个外设控制器的共享内存空间的地址可以预先保存在第二处理器中,以便第二处理器在配置DMA控制器时通过例如外设控制器标识等信息查找到其共享内存空间地址。以图3为例,共享内存包括第一部分和第二部分,第一部分可用于存储针对不同外设控制器的读写参数与读指令(图3中的方框cmd),另一部分用于存放不同外设控制器的外设数据(图3中的方框data)。这两个部分分别可以划分为多个空间,每个空间对应一个外设控制器。例如,共享内存的第一部分中可以设置对应SPI的第一共享内存空间,该第一共享内存空间用于存放SPI的读写参数与读指令,第二部分可以设置对应SPI的第二共享内存空间,该第二共享内存空间可用于存放SPI的外设数据。
其中,确定对应外设控制器的DMA通道的具体实施方式有多种。一些实施方式中,示例性地,确定对应外设控制器的DMA通道的方式可以为如下之一:1)申请DMA控制器的空闲DMA通道并将空闲DMA通道绑定至外设控制器;2)若外设控制器已绑定的DMA通道当前被标记为空闲,则直接使用外设控制器已绑定的DMA通道;3)若DMA控制器中所有DMA通道被占用,检索处于绑定状态的DMA通道,释放被标记为空闲且处于绑定状态的DMA通道以获得空闲DMA通道,将空闲DMA通道绑定至外设控制器。由此,可以结合具体应用场景、DMA通道的实际情况、外设控制器的数量等各种因素在配置DMA控制器时为各外设控制器选择合适的DMA通道,以进一步缩减DMA控制器传输数据的耗时。
考虑到增加DMA控制器后,每次配置DMA控制器时需要申请空闲的DMA通道进行初始化,DMA控制器传输数据完成后再将DMA通道释放出来,这会增加DMA控制器传输数据的耗时。因此,可以采用前述1)和2)的方式来确定外设控制器的DMA通道,将外设控制器与DMA通道绑定,这样,第二处理器核启动时便会完成DMA通道的基本初始化,DMA控制器的配置过程中仅需设置源地址、目标地址、传输数据量即可,DMA控制器的配置时间可以被大大缩短,从而进一步缩减DMA控制器传输外设数据的耗时。
参见图3,DMA控制器(DMA controller)中包含有多组DMA通道chan1、chan2、chan3、……,该多组DMA通道分别被分配给多个SPI控制器(spi controller),DMA通道chan1被分配给spi controller1,DMA通道chan2被分配给spi controller3,DMA通道chan3被分配给spi controller3,DMA通道chan1可用于在spi controller1对应的共享内存空间data与spi controller1之间搬运外设数据,DMA通道chan2可用于在spi controller2对应的共享内存空间data与spi controller2之间传输外设数据,DMA通道chan3可以在spicontroller3对应的共享内存空间data与spi controller3之间传输外设数据。具体应用中,一个SPI控制器需分配两个DMA通道,一个通道用于读取数据,一个通道用于发送数据。前述的DMA通道chan1、chan2、chan3……等分别包含两个DMA通道。
示例性地,DMA通道的状态可以通过变量来指示。具体地,可以在第二处理器的内存中预先存储指示DMA控制器中DMA通道状态的变量,该变量可指示三种状态,即,使用状态、空闲状态和绑定状态。例如,可以通过三个不同的变量指示DMA通道的该三个状态,也可以通过一个变量的多种取值来指示DMA通道的该三个状态。
若外设控制器较多,DMA通道数量不足以为每个外设控制器绑定专用DMA通道,可以由第一处理器统计每个外设控制器的历史外设数据的传输数据量,单次传输的外设数据量较大的外设控制器绑定固定的DMA通道,单次传输的外设数据量较小的外设控制器继续采用常用的申请空间DMA通道的方式,由此,可以在DMA通道有限而外设控制器较多的情况下,主要针对外设数据量较大的外设控制器设置专用DMA通道,在提升DMA通道利用率的同时进一步缩减了DMA控制器传输外设数据的耗时。
若外设控制较多,DMA通道有限,而DMA通道可能是因为绑定于固定的外设控制器而被占用,此时,可以采用前述3)的方式来确定外设控制器的DMA通道,由此,可以在DMA通道有限的情况下高效快速地完成DMA控制器配置中的DMA通道分配,从而进一步缩减DMA控制器传输外设数据的耗时。具体地,在第一次使用DMA控制器时,每个外设控制器可以绑定当前使用的DMA通道同时将该DMA通道的状态标记为使用状态,DMA通道使用完后,不立即释放DMA通道,只将其状态标记为空闲,下次该外设控制器可以继续使用该DMA通道进行外设数据的传输,只需要简单配置即可,可以节约DMA控制器的配置时间。等到全部DMA通道被占用完,新的外设控制器没有DMA通道使用时,可以检索处于绑定状态的DMA通道,遇到有处于绑定状态的DMA通道空闲时,则将该DMA通道释放并分配给该新的外设控制器使用。由此,可以充分利用DMA控制器中的所有DMA通道资源进一步缩短DMA控制器的配置时间,从而减少DMA控制器传输外设数据的耗时。
步骤203可以包括:DMA控制器将外设控制器的数据寄存器地址处存放的外设数据搬运至共享内存,并在搬运完成后发起第二中断;以及,响应于第二中断,第二处理器运行中断服务函数以向第一处理器发起第三中断,以使得第一处理器响应于第三中断向共享内存读取外设数据。由此,DMA控制器在传输完成后可以通过中断通知第二处理器,再由第二处理器通过中断通知第一处理器,从而第一处理器便可及时从共享内存中获取到所需的外设数据。
一些实施方式中,第二处理器中可以设置中断服务函数,该中断服务函数用于发起第三中断同时释放DMA通道,该中断服务函数可以包括但不限于DMA中断服务函数。具体地,第二处理器可以响应于第二中断运行中断服务函数,通过中断服务函数发起第三中断以通知第一处理器的同时,还可通过运行中断服务函数同时释放相应的DMA通道,以便DMA控制器将DMA通道分配给其他外设控制器使用。具体应用中,第二处理器可以通过写复位寄存器的方式来释放DMA通道。
一些实施方式中,第二处理器中设置有搬运任务模块,该搬运任务模块用于响应于来自第一处理器的第一中断唤醒第二处理器的DMA控制器配置程序。步骤202中,第二处理器运行DMA控制器配置程序以完成DMA控制器的配置与使能。此外,搬运任务模块还可用于在确认外设数据传输完成后向第一处理器发起第三中断以通知第一处理器从共享内存中读取外设数据。
参见图3,第二处理器中设置有搬运任务模块(spi_task),第一处理器的SPI驱动框架与搬运任务模块(spi_task)间可通过中断通知进行通信,DMA控制器(DMAcontroller)可以通过中断与搬运任务模块(spi_task)交互。
具体地,参见图3,SPI的外设数据传输过程可以包括:
首先,应用程序发起针对SPI的读请求后,SPI驱动框架响应于该读请求将相应的读命令和读写参数写入共享内容以触发第一中断,通过第一中断通知第二处理器有命令待处理。
然后,响应于第一中断,第一处理器唤醒SPI任务模块spi_task,spi_task根据共享内存中的读命令和读写参数调用相应的读数据接口(读数据接口为SPI任务模块的子模块,即读数据接口可以为第二处理器的操作系统中预配置的读数据函数)触发第二处理器运行DMA控制器配置程序以执行如下过程:在第一中断的触发下读取共享内存中的读写参数与读指令,根据读写参数与读指令判断是否使用DMA传输方式(具体判断方式可见前文,此处不再赘述),若总线传输时长超过了DMA配置时长阈值则使用DMA传输方式,则采用DMA数据传输方式,即配置并使能DMA控制器,DMA控制器被使能后,第一处理器的核资源被释放而进入空闲状态(idle)或者切换至其他外设任务。
最后,DMA控制器执行SPI控制器与共享内存之间的外设数据搬运,传输完成后DMA控制器向第二处理器发起第二中断,第二处理器运行DMA中断处理器函数以确认处理完成后通过spi_task向第一处理器的SPI驱动框架发起第三中断以通知第一处理器,第一处理器的SPI驱动框架响应于第三中断向共享内存空间读取外设数据。
由上可见,通过在第二处理器中设置搬运任务模块,可使第二处理器能够更好地兼容原有的直接数据传输方式与DMA数据传输方式,适时地选择合适的数据传输方式,从而更加高效快速地完成外设数据在第一处理器与外设控制器之间的传输。
通过本公开实施例的方法中,还可实现DMA控制器针对多个外设控制器与共享内存之间外设数据的流水线式传输。由此,可以进一步缩短多外设控制器的数据传输耗时。
一些实施方式中,步骤201中,第一处理器可以同时或先后将多组读写参数写入共享内存,每组读写参数可针对不同的外设控制器。例如,多组读写参数中可以包括第一读写参数、第二读写参数和第三读写参数,第一读写参数针对SPI,第二读写参数针对UART,第三读写参数则针对I2C。
读写参数包括多组时,步骤202可以包括:响应于第一处理器发起的第一中断,第二处理器从共享内存中读取第一处理器写入的多组读写参数,第二处理器对多组读写参数排序,按照该排序流水线式执行每组读写参数的DMA控制器的配置与使能,不同的读写参数分配不同的DMA通道以使用不同DMA通道搬运不同外设控制器的外设数据。由于DMA控制器执行外设数据搬运时第一处理器的核资源将自动被释放,因此,多组读写参数同步处理时,第一处理器可以流水线式处理多个“第一处理器->第二处理器->第一处理器”的执行流程,每个外设控制器只需要等待排序在前的外设控制器的DMA配置与使能完成即可,而DMA配置与使能的耗时为微妙级,因此,多外设控制器的数据传输耗时将会大幅缩减。
读写参数包括多组时,步骤203可以包括:DMA控制器按照排序使用不同的DMA通道流水线式搬运外设控制器的外设数据至共享内存,每检测到一个DMA通道传输完成则发起一次第二中断;每收到一次第二中断,第二处理器发起一次第三中断,第三中断用于通知第一处理器相应外设控制器的外设数据传输完成,以便第一处理器响应于所述第三中断从共享内存中读取相应的外设数据,如此,直至多组读写参数对应的外设控制器的外设数据都被写入共享内存空间且第一处理器被通知到。
具体应用中,第一处理器可以针对多组读写参数发起一次第一中断,也可以针对该多组读写参数中的每组分别发起一次第一中断。
第二处理器对多组读写参数排序的方式可以有多种。一个示例中,第二处理器可以根据如下信息中之一对多组读写参数排序:1)读写参数对应的外设控制器的优先级;2)读写参数对应的读数据请求的时序;3)读写参数对应的读数据请求的应用程序优先级。此外,还可结合其他信息对读写参数进行排序。其他示例中,还可采用例如随机排序等方式对多组读写参数排序。对此,本公开实施例不做限制。读写参数的顺序即为外设控制器的数据搬运次序,通过读写参数排序便可实现外设控制器数据搬运的灵活排序,从而适应各类应用场景的具体需求。
一些实施方式中,按照排序流水线式执行每组读写参数的DMA控制器的配置与使能,可以包括:首先,第二处理器针对排序在首位的第一读写参数配置DMA控制器以分配第一DMA通道用于搬运第一外设控制器的外设数据,使能DMA控制器的第一DMA通道,第一读写参数的读取地址为第一外设控制器的数据寄存器地址;其次,第二处理器针对排序在次首位的第二读写参数配置DMA控制器以分配第二DMA通道用于搬运第二外设控制器的外设数据,使能DMA控制器的第二DMA通道,第二读写参数的读取地址为第二外设控制器的数据寄存器地址;如此类推,直至所有读写参数的DMA控制器的配置与使能完成。
一些实施方式中,外设数据的流水线式搬运过程可以包括:首先,第一DMA通道被使能后,DMA控制器使用第一DMA通道将第一外设控制器的外设数据搬运至共享内存中对应第一外设控制器的共享内存空间并发起第二中断,第二处理器响应于该第二中断向第一处理器发起第三中断以通知第一处理器向共享内存中对应第一外设控制器的共享内存空间读取第一外设控制器的外设数据;其次,第二DMA通道被使能后,DMA控制器使用第二DMA通道将第二外设控制器的外设数据搬运至共享内存中对应第二外设控制器的共享内存空间并发起第二中断,第二处理器响应于该第二中断向第一处理器发起第三中断以通知第一处理器向共享内存中对应第二外设控制器的共享内存空间读取第二外设控制器的外设数据;如此类推,直至所有外设控制器的外设数据均被存入共享内存并通知到第一处理器。
图4示出了DMA控制器针对3个外设控制器(分别为SPI、UART、I2C)与共享内存之间外设数据的流水线式传输示意图。图4的示例中存在多组读写参数,即第一读写参数、第二读写参数和第三读写参数,第一读写参数针对SPI,第二读写参数针对UART,第三读写参数则针对I2C。
参见图4,针对多个外设控制器的数据传输流程可以包括:
3个外设(即SPI设备、UART设备、I2C设备)的应用程序同时发起读请求,响应于这些读请求第一处理器向共享内存中写入相应的3组读写参数及其对应的读指令并发出第一中断至第二处理器;
第二处理器响应于第一中断按照优先级对相应的3个外设控制器进行排序,SPI优先级最高,UART优先级次高,I2C优先级最低;
按照排序,第二处理器先配置并使能DMA控制器以分配第一DMA通道给SPI,配置完成后第二处理器的核资源自动释放;
DMA控制器被使能后使用第一DMA通道搬运从SPI的数据寄存器中搬运外设数据至SPI的共享内存空间,同时第二处理器继续配置并使能DMA控制器以分配第二DMA通道给UART,配置完成后第二处理器的核资源再次被自动释放,之后第二处理器再次配置并使能DMA控制器以分配第三DMA通道给I2C;
DMA控制器完成SPI的外设数据搬运后向第二处理器发起第二中断,并在发出第二中断后继续按照使能顺序使用第二DMA通道从UART的数据寄存器中搬运外设数据至UART的共享内存空间,同时第二处理器响应于第二中断向第一处理器发起第三中断以通知第一处理器SPI数据传输的执行结果,第一处理器响应于第三中断从SPI的共享内存空间读取SPI的外设数据;
DMA控制器完成UART的外设数据搬运后再次向第二处理器发起第二中断,并在发出第二中断后继续按照使能顺序使用第三DMA通道从I2C的数据寄存器中搬运外设数据至I2C的共享内存空间,同时第二处理器响应于第二中断向第一处理器发起第三中断以通知第一处理器UART数据传输的执行结果,第一处理器响应于第三中断从UART的共享内存空间读取UART的外设数据;
最后,DMA控制器完成I2C的外设数据搬运后第三次向第二处理器发起第二中断,在发出第二中断后DMA控制器停止数据搬运,同时第二处理器响应于第二中断向第一处理器发起第三中断以通知第一处理器I2C数据传输的执行结果,第一处理器响应于第三中断从I2C的共享内存空间读取I2C的外设数据,至此,3个外设控制器的外设数据传输完成。
通过图4可见,在多个外设控制器的外设数据传输过程中,本公开实施例可采用流水线式执行,第二处理器仅需执行DMA控制器的配置与使能,DMA控制器无需第二处理器的参与即可完成数据搬运,因此,外设数据的传输效率更高,第二处理器的数据堵塞也得到了有效解决。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
另外,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,程序包括指令,所述指令在由计算装置的一个或者多个处理器执行时,执行时前述方法实施例中所述片上系统的外设数据传输方法的步骤。
本公开实施例还提供了一种电子设备,该电子设备可以包含前述的片上系统100。
本公开实施例还提供的另一种电子设备,如图5所示,电子设备500包括一个或多个处理器501,还包括存储一个或多个程序的存储器502,被上述一个或多个处理器501执行以实现本公开上述实施例中所示的方法流程和/或装置中各单元所对应的程序单元。
各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器501可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示用户界面的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。
处理器501可包括一个或多个单核处理器或多核处理器。处理器501可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。
存储器502即为本公开所提供的计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及单元,例如本公开实施例中的如图2所示的方法对应的程序指令/单元。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及单元,从而执行诸如上述方法实施例中如图2所示的方法对应的程序、指令以及单元。
电子设备500还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与调试装置相关的用户设置以及功能控制有关的信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
上述程序(也称作软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用面向对象的编程语言、汇编或机器语言来实施这些计算程序。
随着时间、技术的发展,介质含义越来越广泛,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载等。可以采用一个或多个计算机可读的存储介质的任意组合。计算机可读存储介质可以采用但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
以上对本公开所提供的技术方案进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本公开的限制。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换等,均应包含在本公开的保护范围之内。
Claims (13)
1.一种片上系统的外设数据传输方法,其特征在于,所述片上系统包括第一处理器、第二处理器、直接寄存器访问DMA控制器、外设控制器、共享内存,所述DMA控制器、共享内存以及第二处理器挂接于同一总线;
所述片上系统的外设数据传输方法,包括:
第一处理器向所述共享内存写入针对外设控制器的读写参数;
第二处理器利用所述读写参数配置并使能所述DMA控制器;
被使能后,所述DMA控制器将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据。
2.根据权利要求1所述的方法,其特征在于,所述第二处理器利用所述读写参数配置并使能所述DMA控制器,包括:
所述第二处理器根据外设总线传输速率和所述读写参数指示的读写数据量估算总线传输时长,所述外设总线用于挂接所述外设控制器;
若所述总线传输时长大于DMA配置时长阈值,则所述第二处理器配置并使能所述DMA控制器。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述总线传输时长小于或等于DMA配置时长阈值,则所述第二处理器从所述外设控制器的数据寄存器地址读取所述外设数据并送至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据。
4.根据权利要求1所述的方法,其特征在于,
所述第二处理器利用所述读写参数配置并使能所述DMA控制器,包括:
确定对应所述外设控制器的DMA通道;
将所述外设控制器的数据寄存器地址设置为所述DMA控制器的源地址;
将对应所述外设控制器的共享内存空间地址设置为所述DMA控制器的目标地址;
根据所述读写参数中的读写数据量设置所述DMA控制器的数据传输长度;
使能所述DMA控制器。
5.根据权利要求4所述的方法,其特征在于,所述确定对应所述外设控制器的DMA通道,包括如下之一:
申请所述DMA控制器的空闲DMA通道并将所述空闲DMA通道绑定至所述外设控制器;
若所述外设控制器已绑定的DMA通道当前被标记为空闲,则直接使用所述外设控制器已绑定的DMA通道;
若所述DMA控制器中所有DMA通道被占用,检索处于绑定状态的DMA通道,释放被标记为空闲且处于绑定状态的DMA通道以获得空闲DMA通道,将所述空闲DMA通道绑定至所述外设控制器。
6.根据权利要求1所述的方法,其特征在于,所述DMA控制器将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据,包括:
所述DMA控制器将所述外设控制器的数据寄存器地址处存放的外设数据搬运至所述共享内存,并在搬运完成后发起第二中断;
响应于所述第二中断,第二处理器运行中断服务函数以向所述第一处理器发起第三中断,以使得所述第一处理器响应于所述第三中断向所述共享内存读取所述外设数据。
7.根据权利要求1所述的方法,其特征在于,
所述第二处理器中设置有搬运任务模块,所述搬运任务模块用于响应于来自第一处理器的第一中断唤醒第二处理器的DMA控制器配置程序;
所述第二处理器利用所述读写参数配置并使能所述DMA控制器,具体为:第二处理器运行DMA控制器配置程序以完成DMA控制器的配置与使能。
8.根据权利要求1所述的方法,其特征在于,
所述读写参数包括多组,每组读写参数针对不同的外设控制器;
所述第二处理器利用所述读写参数配置并使能所述DMA控制器,包括:
响应于第一处理器发起的第一中断,所述第二处理器从所述共享内存中读取所述第一处理器写入的多组读写参数,
所述第二处理器对所述多组读写参数排序,按照所述排序流水线式执行每组读写参数的DMA控制器的配置与使能,不同的读写参数分配不同的DMA通道以使用不同DMA通道搬运不同外设控制器的外设数据。
9.根据权利要求8所述的方法,其特征在于,所述第二处理器对所述多组读写参数排序,包括:
所述第二处理器根据如下信息中之一对所述多组读写参数排序:
读写参数对应的外设控制器的优先级;
读写参数对应的读数据请求的时序;
读写参数对应的读数据请求的应用程序优先级。
10.根据权利要求8所述的方法,其特征在于,被使能后,所述DMA控制器将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据,包括:
所述DMA控制器按照所述排序使用不同的DMA通道流水线式搬运外设控制器的外设数据至所述共享内存,每检测到一个DMA通道传输完成则发起一次第二中断;
每收到一次所述第二中断,所述第二处理器发起一次第三中断,所述第三中断用于通知所述第一处理器相应外设控制器的外设数据传输完成,以便所述第一处理器响应于所述第三中断从所述共享内存中读取相应的外设数据,直至多组读写参数对应的外设控制器的外设数据都能够被所述第一处理器读取到。
11.根据权利要求1所述的方法,其特征在于,所述外设控制器包括如下之一或多种:
通用的串行通信接口UART;
串行通信总线接口I2C;
同步串行数据接口SPI;
存储卡接口SD/MMC;
数字音频接口I2S;
增强型串行外设接口eSPI。
12.一种片上系统,其特征在于,所述片上系统包括第一处理器、第二处理器、直接寄存器访问DMA控制器、外设控制器、共享内存,所述DMA控制器、共享内存以及第二处理器挂接于同一总线;
所述第一处理器,用于向所述共享内存写入针对外设控制器的读写参数;
所述第二处理器,用于利用所述读写参数配置并使能所述DMA控制器;
所述DMA控制器,用于被使能后,将所述外设控制器中的外设数据搬运至所述共享内存,以使得所述第一处理器能够从所述共享内存中读取到所述外设数据。
13.一种电子设备,其特征在于,包括:权利要求12所述的片上系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202411139987.5A CN119003431A (zh) | 2024-08-19 | 2024-08-19 | 片上系统及其外设数据传输方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202411139987.5A CN119003431A (zh) | 2024-08-19 | 2024-08-19 | 片上系统及其外设数据传输方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN119003431A true CN119003431A (zh) | 2024-11-22 |
Family
ID=93481204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202411139987.5A Pending CN119003431A (zh) | 2024-08-19 | 2024-08-19 | 片上系统及其外设数据传输方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN119003431A (zh) |
-
2024
- 2024-08-19 CN CN202411139987.5A patent/CN119003431A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489213B (zh) | 一种任务处理方法及处理装置、计算机系统 | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
US10241946B2 (en) | Multi-channel DMA system with command queue structure supporting three DMA modes | |
KR102219545B1 (ko) | 소프트웨어 지원 콘텍스트 스위치를 갖는 미드-쓰레드 선점 | |
KR101775569B1 (ko) | 가상 재시도 큐 | |
US20100125717A1 (en) | Synchronization Controller For Multiple Multi-Threaded Processors | |
US11243795B2 (en) | CPU overcommit with guest idle polling | |
US10459771B2 (en) | Lightweight thread synchronization using shared memory state | |
JPH07175666A (ja) | データプロセッサおよびその割込み要求処理方法 | |
JP5578713B2 (ja) | 情報処理装置 | |
WO2012016472A1 (zh) | 多核CPU加载Linux操作系统的方法及系统 | |
CN112306669B (zh) | 一种基于多核系统的任务处理方法及装置 | |
CN113468097A (zh) | 基于片上系统的数据交换方法 | |
CN114579188A (zh) | 一种risc-v向量访存处理系统及处理方法 | |
WO2017206151A1 (zh) | 在单任务系统中实现多任务的方法、装置及单任务系统 | |
US20150268985A1 (en) | Low Latency Data Delivery | |
CN114691594B (zh) | 一种基于非对称双核mcu设计的芯片架构及其实现方法 | |
US9268577B2 (en) | Information processing apparatus | |
EP3770759A1 (en) | Wake-up and scheduling of functions with context hints | |
CN108958903B (zh) | 嵌入式多核中央处理器任务调度方法与装置 | |
CN114610494A (zh) | 资源分配方法、电子设备及计算机可读存储介质 | |
US9946665B2 (en) | Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU) | |
CN111694787A (zh) | 一种芯片启动的方法、网络设备和机器可读存储介质 | |
CN119003431A (zh) | 片上系统及其外设数据传输方法和电子设备 | |
CN108958904B (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 |