CN109101457B - 一种基于c6678的单核实现ndk通信与srio传输的方法 - Google Patents
一种基于c6678的单核实现ndk通信与srio传输的方法 Download PDFInfo
- Publication number
- CN109101457B CN109101457B CN201810876927.XA CN201810876927A CN109101457B CN 109101457 B CN109101457 B CN 109101457B CN 201810876927 A CN201810876927 A CN 201810876927A CN 109101457 B CN109101457 B CN 109101457B
- Authority
- CN
- China
- Prior art keywords
- srio
- ndk
- qmss
- descriptors
- memory region
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于C6678的单核实现NDK通信与SRIO传输的方法,属于信息处理领域。所述方法包括首先对NDK及SRIO内的QMSS模块与CPPI模块进行配置,包括设置系统所需要用到的QMSS描述符数量及所述描述符大小,为所述NDK/SRIO分配对应Memory Region,各对应Memory Region配置有对应数量的QMSS描述符,使用NDK/SRIO内的CPPI对所述第一数量的QMSS描述符进行初始化,其次,对SRIO或NDK之一进行初始化,最后对SRIO、NDK、QMSS和CPPI分配不同的硬件信号量以避免数据传输冲突。通过该方法NDK与SRIO可在同一核上运行互不干扰,网络通信任务正常工作,充分利用了核上资源。
Description
技术领域
本发明属于信息处理领域,具体涉及一种基于C6678的单核实现NDK通信与SRIO传输的方法。
背景技术
美国德州仪器(Texas Instruments,简称TI)公司的TMS320C6678(简称为C6678)是2014年后嵌入式高性能计算场合使用较广泛的多核数字信号处理器(DSP)芯片。
SYS/BIOS是一个可裁剪的实时内核,它被设计用于那些要求实时调度和同步或实时测量的应用程序,且同时支持单核和多核器件。在设计上SYS/BIOS把对目标板的内存和CPU需求降到最低。它本身仅占用极少的CPU资源,提供丰富的应用函数接口、优先抢占式的多线程管理、硬件抽象化、实时分析、和配置工具,可用于支持系统实时分析、线程管理、调度软件中断、后台运行函数以及外部硬件中断管理等。
RapidIO技术是一种基于协议包格式的互联技术,在TMS320C6678芯片手册中,通常把RapidIO称为SRIO,为DSP之间提供一种高带宽、低延迟、低系统成本的通信,是系统互连的最佳选择之一。
Network Developer’s Kit(NDK)是一个基于SYS/BIOS实时操作系统的网络协议栈,目前主要用于开发和验证TI C6000系列和ARM系列嵌入式处理器的网络应用功能。
一片C6678中有8个C66x核(以下以0~7核表示),每个核有独立的运算单元、64kB内部L1 SRAM(静态内存)和512kB内部L2 SRAM;多个核共享4kB RAM以及片外的DDR3存储器。在传统的DSP编程中,通常开发者使用不同的核来处理不同任务,在实时性不强以及资源不紧张的情况下,可以满足要求。
但是,如果使用多核并行计算并且在任务调度比较复杂,资源使用比较紧张的情况下,会带来若干问题:
在传统DSP编程中,通常使用不同的核来处理NDK网络任务以及SRIO传输任务来避免冲突。但是每个核单独工作无法完全发挥DSP的性能,容易造成计算资源的浪费,资源调度不够平均。
传统SRIO的传输会占用CPU时间,如果进行大的数据量的传输会造成大量的时间损耗,当传输占用CPU时,无法处理复杂的并发任务,也无法快速响应其他的额外事件,影响系统的实时性。
原SRIO驱动对传输数据量存在一个大小的限制,并且没有对传输状态的一个实时的带宽监控以及错误状态的反馈。
发明内容
为了解决上述问题,本发明提供了一种在SYS/BIOS中,在多核并行计算时,能够在同一核上实现NDK的网络通信与SRIO的传输功能,能够自由调度,并且使两者在实际的任务使用中不发生冲突或者是性能的降低,实现资源利用最大化。
为此,本发明基于C6678的单核实现NDK通信与SRIO传输的方法主要包括:
步骤一、对NDK内的QMSS模块与CPPI模块进行配置,包括设置系统所需要用到的QMSS描述符数量及所述描述符大小,为所述NDK分配第一Memory Region,所述第一MemoryRegion配置有第一数量的QMSS描述符,使用NDK内的CPPI对所述第一数量的QMSS描述符进行初始化;
同理,对SRIO内的QMSS模块与CPPI模块进行配置,为SRIO分配第二MemoryRegion,所述第二Memory Region配置有第二数量的QMSS描述符,使用SRIO内的CPPI模块对所述第二数量的QMSS描述符进行初始化;
所述第一数量的QMSS描述符与所述第二数量的QMSS描述符数量之和小于设置的系统所需要用到的QMSS描述符数量;
步骤二、对SRIO或NDK之一进行初始化,包括设置SRIO或NDK之一的接收队列以及发送队列均使用对应的Memory Region,以及设置SRIO或NDK之一的包加速模块使用对应的Memory Region并重新指定队列管理通道;
设置SRIO与NDK所使用的QMSS描述符数量及大小与对应的Memory Region所使用的QMSS描述符数量及大小一致;
步骤三、对SRIO、NDK、QMSS和CPPI分配不同的硬件信号量。
优选的是,为所述NDK分配第一Memory Region时包括为所述NDK分配存储所述第一Memory Region地址的第一Linking Ram;同理,为所述SRIO分配第二Memory Region时包括为所述SRIO分配存储所述第二Memory Region地址的第二Linking Ram。
优选的是,在步骤一之前,包括从TI的C6678芯片的标准官方例程中提取SRIO库与NDK库。
本发明的创新点在于:
优化与修改NDK与SRIO的QMSS与CPPI模块参数。
优化初始化参数使之符合基本的SRIO传输性能要求,修改SRIO传输配置完成后台传输功能,以及兼容NDK网络任务的通信需求。
本发明的优点:SRIO传输时不占用CPU时间,对大数据量进行分包传输,一旦传输开始便进入后台利用空闲时间传输,并且带宽并未下降;NDK与SRIO可在同一核上运行互不干扰,网络通信任务正常工作,实施对传输进行监控,充分利用核上资源。
本发明可适用于使用TMS320C6678DSP的嵌入式信息处理系统中,如航空、航天、船舶、通信、软件无线电、人工智能等领域。
附图说明
图1为按照本发明的基于C6678的单核实现NDK通信与SRIO传输的方法的一优选实施例的流程图;
图2为按照本发明图1所示实施例的CPPI与QMSS模块的用途以及其与SRIO等其他驱动之间的关系示意图。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图对本发明的实施例进行详细说明。
由于TI公司提供的标准工程都是基于单独的功能,在实际使用中无法同时调用。SRIO与NDK在SYS/BIOS下的通信与传输都使用了QMSS与CPPI模块。本发明通过配置TI公司的多个标准工程,根据实际工程需求集成多个功能,封装成库,以使得在多核并行计算时,能够在同一核上实现NDK的网络通信与SRIO的传输功能,能够自由调度,并且使两者在实际的任务使用中不发生冲突或者是性能的降低,实现资源利用最大化。
如图2所示,SRIO以及NDK在SYS/BIOS下,在实际的使用过程中,都需要使用QMSS与CPPI模块来进行数据的发送与接收。在标准官方例程中,两者由于QMSS与CPPI的参数配置冲突原因只能够单独使用SRIO库与NDK库(例子)中的一个。为了使SRIO与NDK能够兼容在同一核上使用,需要对驱动进行重新配置。在初始化SRIO与NDK之前,必须单独对QMSS与CPPI进行单独的初始化设置。
如图1所示,本发明基于C6678的单核实现NDK通信与SRIO传输的方法主要包括以下步骤:
QMSS模块与CPPI模块进行配置;
对SRIO或NDK之一进行初始化;
对SRIO及NDK分配不同的硬件信号量。
具体的:
步骤一、对NDK内的QMSS模块与CPPI模块进行配置,包括设置系统所需要用到的QMSS描述符数量及所述描述符大小,为所述NDK分配第一Memory Region,所述第一MemoryRegion配置有第一数量的QMSS描述符,使用NDK内的CPPI对所述第一数量的QMSS描述符进行初始化;
同理,对SRIO内的QMSS模块与CPPI模块进行配置,为SRIO分配第二MemoryRegion,所述第二Memory Region配置有第二数量的QMSS描述符,使用SRIO内的CPPI模块对所述第二数量的QMSS描述符进行初始化;
所述第一数量的QMSS描述符与所述第二数量的QMSS描述符数量之和小于设置的系统所需要用到的QMSS描述符数量;
步骤二、对SRIO或NDK之一进行初始化,包括设置SRIO或NDK之一的接收队列以及发送队列均使用对应的Memory Region,以及设置SRIO或NDK之一的包加速模块使用对应的Memory Region并重新指定队列管理通道;
设置SRIO与NDK所使用的QMSS描述符数量及大小与对应的Memory Region所使用的QMSS描述符数量及大小一致;
步骤三、对SRIO、NDK、QMSS和CPPI分配不同的硬件信号量。
可以理解的是,在实际应用过程中,一般都是从TI公司的C6678芯片的标准官方例程中先行提取出SRIO库与NDK库,本发明在此基础上,对上述两个库及其内的QMSS模块及CPPI模块进行配置修改,以完成单核运行的功能。
在步骤一中,在初始化NDK与SRIO之前优先初始化QMSS与CPPI模块,针对即将需要初始化的SRIO与NDK,分别分配不同的Memory Region模块以及Linking Ram,在分配时,先需要对系统所需要用到的QMSS描述符数量进行设置,同时规定描述符的大小。接着分配两块不同的Memory Region,记录系统分配的不同Memory Region模块编号,在后续的SRIO以及NDK的初始化时需要用到该编号。在分配时,两块Memory Region所分配的QMSS描述符数量总和要小于总的分配的描述符数量,同时在描述符大小方面保持一致性。使用CPPI对刚才所分配的QMSS的描述符进行初始化。大小与SRIO以及NDK需求的大小形同,保持两者在初始化方面保持一致,保证两者所使用的QMSS与CPPI模块保持一致。
其中,上述Linking Ram用于存储Memory Region的地址,例如为所述NDK分配第一Memory Region时包括为所述NDK分配存储所述第一Memory Region地址的第一LinkingRam;同理,为所述SRIO分配第二Memory Region时包括为所述SRIO分配存储所述第二Memory Region地址的第二Linking Ram。
根据前面已经初始化的QMSS与CPPI模块,分别调整SRIO与NDK初始化驱动中关于QMSS与CPPI的部分,针对各自所拥有的QMSS与CPPI模块进行设置。需要说明的是,在步骤二中,只需要对SRIO与NDK中的一个进行配置,另一个采用默认配置方式即可,以配置SRIO为例,在SRIO初始化程序中,使用分配给SRIO的第一Memory Region模块编号,SRIO的接收队列以及发送队列都需要使用该第一Memory Region,对SRIO的包加速模块同样分配该第一Memory Region以及新的通道编号。
本实施例中,对SRIO的包加速模块分配的通道编号在30-40之间。分配该编号的通道能够显著降低后期使用过程中的传输冲突问题。
本实施例中,针对SRIO初始化,根据工程实际需要,删除初始化中冗余部分,精简代码,增加程序的可读性,由于QMSS与CPPI仅能够初始化一次,因此在NDK的初始化中,需要删除与QMSS及CPPI初始化中重复的部分。
在步骤三中,为了SRIO与NDK在实际使用过程中不发生冲突以及性能降低的情况,评估两者在使用过程中所占用的硬件及软件资源,在实时操作系统中主要是考察信号量的使用及分配,使用相同的硬件信号量会在实际运行过程中造成网络任务的中断以及SRIO传输速率的下降,通过分配不同的硬件信号量避免两者的冲突,同时需要防止与QMSS和CPPI的硬件信号量冲突,为此,对了SRIO、NDK、QMSS和CPPI需要分配4个不同的硬件信号量。
本发明还提供了传输挂起功能及错误反馈机制,为了实现SRIO传输在后台挂起功能,首先会根据输入的参数,对任意长度的传输内容进行一个自动分包,每个包自动配置LSU寄存器,在配置最后挂起等待信号量,进入后台开始传输,直至传输完成后,由中断完成重新释放信号量,进入前台开始下一个传输包的配置及发送,周而复始。在传输函数中附加带宽速度的计算模块,并且在传输出现错误时返回相应的错误代码。
本发明的优点:SRIO传输时不占用CPU时间,对大数据量进行分包传输,一旦传输开始便进入后台利用空闲时间传输,并且带宽并未下降;NDK与SRIO可在同一核上运行互不干扰,网络通信任务正常工作,实施对传输进行监控,充分利用核上资源。
本发明可适用于使用TMS320C6678DSP的嵌入式信息处理系统中,如航空、航天、船舶、通信、软件无线电、人工智能等领域。
4)不开箱的情况下对多板卡FPGA进行动态在线配置,具有较好的灵活性,在需要动态改变FPGA配置的软件无线电平台等应用场合具有较好的应用前景。
最后需要指出的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (3)
1.一种基于C6678的单核实现NDK通信与SRIO传输的方法,其特征在于,包括:
步骤一、对NDK内的QMSS模块与CPPI模块进行配置,包括设置系统所需要用到的QMSS描述符数量及所述描述符大小,为所述NDK分配第一Memory Region,所述第一Memory Region配置有第一数量的QMSS描述符,使用NDK内的CPPI对所述第一数量的QMSS描述符进行初始化;
同理,对SRIO内的QMSS模块与CPPI模块进行配置,为SRIO分配第二Memory Region,所述第二Memory Region配置有第二数量的QMSS描述符,使用SRIO内的CPPI模块对所述第二数量的QMSS描述符进行初始化;
所述第一数量的QMSS描述符与所述第二数量的QMSS描述符数量之和小于设置的系统所需要用到的QMSS描述符数量;
步骤二、对SRIO或NDK之一进行初始化,包括设置SRIO或NDK之一的接收队列以及发送队列均使用对应的Memory Region,以及设置SRIO或NDK之一的包加速模块使用对应的Memory Region并重新指定队列管理通道;
设置SRIO与NDK所使用的QMSS描述符数量及大小与对应的Memory Region所使用的QMSS描述符数量及大小一致;
步骤三、对SRIO、NDK、QMSS和CPPI分配不同的硬件信号量。
2.如权利要求1所述的基于C6678的单核实现NDK通信与SRIO传输的方法,其特征在于,为所述NDK分配第一Memory Region时包括为所述NDK分配存储所述第一Memory Region地址的第一Linking Ram;同理,为所述SRIO分配第二Memory Region时包括为所述SRIO分配存储所述第二Memory Region地址的第二Linking Ram。
3.如权利要求1所述的基于C6678的单核实现NDK通信与SRIO传输的方法,其特征在于,在步骤一之前,包括从TI的C6678芯片的标准官方例程提取SRIO库与NDK库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810876927.XA CN109101457B (zh) | 2018-08-03 | 2018-08-03 | 一种基于c6678的单核实现ndk通信与srio传输的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810876927.XA CN109101457B (zh) | 2018-08-03 | 2018-08-03 | 一种基于c6678的单核实现ndk通信与srio传输的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101457A CN109101457A (zh) | 2018-12-28 |
CN109101457B true CN109101457B (zh) | 2021-08-03 |
Family
ID=64848380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810876927.XA Active CN109101457B (zh) | 2018-08-03 | 2018-08-03 | 一种基于c6678的单核实现ndk通信与srio传输的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101457B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102395954A (zh) * | 2009-03-12 | 2012-03-28 | 多芯软件公司 | 生成多核通信拓扑的装置及相关方法 |
CN104239271A (zh) * | 2014-09-16 | 2014-12-24 | 中国科学院光电技术研究所 | 一种采用fpga和dsp实现的仿真图像播放器 |
CN106095724A (zh) * | 2016-08-18 | 2016-11-09 | 四川赛狄信息技术有限公司 | 一种基于mpc8640d的信息处理板系统 |
CN107222256A (zh) * | 2017-06-30 | 2017-09-29 | 中国航空工业集团公司雷华电子技术研究所 | 一种基于fpga的srio光纤链路在线重链接的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8869156B2 (en) * | 2010-05-18 | 2014-10-21 | Lsi Corporation | Speculative task reading in a traffic manager of a network processor |
-
2018
- 2018-08-03 CN CN201810876927.XA patent/CN109101457B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102395954A (zh) * | 2009-03-12 | 2012-03-28 | 多芯软件公司 | 生成多核通信拓扑的装置及相关方法 |
CN104239271A (zh) * | 2014-09-16 | 2014-12-24 | 中国科学院光电技术研究所 | 一种采用fpga和dsp实现的仿真图像播放器 |
CN106095724A (zh) * | 2016-08-18 | 2016-11-09 | 四川赛狄信息技术有限公司 | 一种基于mpc8640d的信息处理板系统 |
CN107222256A (zh) * | 2017-06-30 | 2017-09-29 | 中国航空工业集团公司雷华电子技术研究所 | 一种基于fpga的srio光纤链路在线重链接的实现方法 |
Non-Patent Citations (2)
Title |
---|
一种改进的基于NDK的DSP服务器端程序设计与实现;王星宇等;《舰船电子对抗》;20160825;全文 * |
多核DSP和FPGA之间的高速SRIO通信;汪安民等;《单片机与嵌入式系统应用》;20170201;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109101457A (zh) | 2018-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8286178B2 (en) | Allocation and regulation of CPU entitlement for virtual processors in logical partitioned platform | |
US8438578B2 (en) | Network on chip with an I/O accelerator | |
CN106648896B (zh) | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 | |
WO2002031672A2 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
US11347546B2 (en) | Task scheduling method and device, and computer storage medium | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
EP1346549B1 (en) | Intercommunication preprocessor | |
WO2016189294A1 (en) | Single-chip multi-processor communication | |
Zuepke et al. | AUTOBEST: a united AUTOSAR-OS and ARINC 653 kernel | |
US11734083B1 (en) | Systems and methods for inter-partition communication | |
CN112395056B (zh) | 一种嵌入式非对称实时系统及电力二次设备 | |
US7614056B1 (en) | Processor specific dispatching in a heterogeneous configuration | |
CN109101457B (zh) | 一种基于c6678的单核实现ndk通信与srio传输的方法 | |
Golchin et al. | Tuned pipes: end-to-end throughput and delay guarantees for USB devices | |
CN116841952A (zh) | 核间通信系统、方法、装置、设备、芯片及可读存储介质 | |
US20100023948A1 (en) | Allocating resources in a multicore environment | |
CN113608861B (zh) | 一种软件化载荷计算资源虚拟化分配方法及装置 | |
CN116578416A (zh) | 一种基于gpu虚拟化的信号级仿真加速方法 | |
CN114281529A (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
CN112597080B (zh) | 读请求控制装置及方法以及存储器控制器 | |
CN114416322A (zh) | 基于双链表的任务调度方法、装置、电子设备及存储介质 | |
West et al. | Real-Time USB Networking and Device I/O | |
CN117149471B (zh) | 通信方法、装置、嵌入式系统、存储介质以及电子设备 | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 | |
CN112131169B (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 |