CN114546441A - 一种dsp与cpu通信方式的动态设定方法 - Google Patents
一种dsp与cpu通信方式的动态设定方法 Download PDFInfo
- Publication number
- CN114546441A CN114546441A CN202210136810.4A CN202210136810A CN114546441A CN 114546441 A CN114546441 A CN 114546441A CN 202210136810 A CN202210136810 A CN 202210136810A CN 114546441 A CN114546441 A CN 114546441A
- Authority
- CN
- China
- Prior art keywords
- communication
- dsp
- cpu
- handshake
- mode
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
一种DSP与CPU通信方式的动态设定方法,包括以下步骤:1)在链接脚本中增加存放全局符号的通信用数据段,增加通信方式设定的处理代码,编译并生成DSP固件;2)设定DSP与CPU所用的通信共享内存地址,加载DSP固件;3)启动DSP,读取所述通信共享内存地址的内容,并根据内容中的模式进行配置。本发明的DSP与CPU通信方式的动态设定方法,将通信共享内存地址和通信方式的设置放在加载DSP固件时进行动态配置,避免了对于不同项目不同的资源分配都必须重新编译各自的DSP固件并升级文件系统,减少了资源配置的复杂度。
Description
技术领域
本发明涉及数字信号处理运行控制技术领域,尤其涉及一种DSP与CPU通信方式的动态设定方法。
背景技术
随着现代集成电路产业的发展,越来越多的电子产品中应用了DSP芯片,以汽车电子为例,需要基于DSP芯片实现图像,语音,以及神经网络等各种处理,并与应用CPU之间进行数据交互与控制执行,完成异构计算。
为了能够使得DSP芯片和应用CPU之间的交互得以完成,设定DSP与CPU之间的通信方式是不可或缺的重要步骤。其中,包括设定DSP与CPU所用的通信共享内存地址,以及两者分别采用中断或者轮询的通信方式。
现有技术中,DSP与CPU所用的通信共享内存地址和通信方式一般是在DSP固件编译时直接确定,当CPU加载DSP固件时,按照固件中确定的方式进行通信。这种做法灵活性不足,因为系统资源配置在实际项目中经常会发生调整,如果固定了DSP与CPU通信之间的通信共享内存地址和通信方式,对于不同的项目,有不同的资源配置,都需要修改编译DSP固件,增加了不同项目系统资源调整的复杂程度。
发明内容
为了解决现有技术的缺陷,本发明的目的在于提供一种DSP与CPU通信方式的动态设定方法,在加载DSP固件时,根据需求动态地设定DSP与CPU所用的通信共享内存地址,并分别配置DSP和CPU使用中断或者轮询的模式,保持系统的灵活性。
为了实现上述目的,本发明提供的DSP与CPU通信方式的动态设定方法,包括以下步骤:
1)在链接脚本中增加存放全局符号的通信用数据段,增加通信方式设定的处理代码,编译并生成DSP固件;
2)设定DSP与CPU所用的通信共享内存地址,加载DSP固件;
3)启动DSP,读取所述通信共享内存地址的内容,并根据内容中的模式进行配置。
进一步地,所述步骤1)还包括,
在链接脚本中增加名为communication section的通信用数据段;
定义communication_base,作为DSP与CPU通信使用的通信共享内存地址的全局符号,并放入所述通信用数据段中;
定义handshake_data,用于放置DSP和CPU使用的通信方式的配置的全局符号,并放入所述通信用数据段中;
增加通信方式设定的处理代码;
编译并生成ELF格式的DSP固件。
进一步地,所述handshake_data的数据结构为:
cpu_mode | CPU通信模式配置,0:轮询1:中断 |
dsp_mode | DSP通信模式配置,0:轮询1:中断 |
cpu_irq | CPU irq号,供DSP触发CPU中断 |
dsp_irq | DSP irq号,供DSP注册中断处理函数 |
进一步地,所述步骤2)还包括,
CPU读取DSP固件到内存中,寻找文件中communication section和communication_base,并确认.communicaion段在固件中存在;
修改communication_base符号所在地址的内容为需要的通信共享内存地址;
将handshake_data表放入communication section中;
开始DSP加载,将所有需要加载的代码段和数据段到指定的内存地址;
在通信共享内存地址handshake flag握手状态标志位写入HANDSHAKE_START。
进一步地,所述communication_base的内容为:
handshake flag | 握手标志位:开始-START,成功-READY,失败-FAILED |
buffers | DSP和CPU交互内容 |
,
其中,handshake flag为握手状态标志位,Buffers为可读写的共享内存。
进一步地,所述步骤3)还包括,
DSP开始运行,读取communication_base指向的通信共享内存地址的内容,并确认handshake flag握手标志位的内容为HANDSHAKE_START;
DSP读取handshake_data的内容,并根据内容中的模式配置;
如配置成功,在communication_base指向的通信共享内存地址handshake flag握手标志位处写入HANDSHAKE_READY,否则写入HANDSHAKE_FAILED;
配置成功,根据模式配置进入模式运行,否则DSP停止。
更进一步地,所述DSP读取handshake_data的内容,并根据内容中的模式配置的步骤还包括,
若cpu_mode为irq模式,根据cpu_irq内容配置中断发送函数;
若dsp_mode为irq模式,根据dsp_irq内容注册中断处理函数。
为了实现上述目的,本发明还提供一种电子设备,包括,存储器和处理器,所述存储器上储存有在所述处理器上运行的程序,所述处理器运行所述程序时执行上述DSP与CPU通信方式的动态设定方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述DSP与CPU通信方式的动态设定方法的步骤。
本发明提供的DSP与CPU通信方式的动态设定方法,与现有技术相比具有如下的有益效果:
通信共享内存地址和通信方式的设置放在加载DSP固件时动态配置,在系统资源配置发生变化时,避免了对于不同项目不同的资源分配都必须重新编译各自的DSP固件并升级文件系统,减少了资源配置的复杂度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的DSP与CPU通信方式的动态设定方法流程图;
图2为根据本发明的DSP固件编译处理流程图;
图3为根据本发明的CPU加载DSP固件处理流程图;
图4为根据本发明的DSP启动处理流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
图1为根据本发明的DSP与CPU通信方式的动态设定方法流程图,下面将参考图1,对本发明的本发明的DSP与CPU通信方式的动态设定方法进行详细描述。
首先,在步骤101,进行DSP固件编译。
在本发明实施例中,在链接脚本中增加存放作为DSP与CPU使用的通信共享内存地址的全局符号(communication_base)和用来放置DSP和CPU使用的通信方式的配置的全局符号(handshake_data)的通信用数据段(communication section)、增加通信方式设定的处理代码,编译并生成ELF格式的DSP固件。
在步骤102,CPU加载DSP固件,设定DSP与CPU所用的通信共享内存地址。
在本发明实施例中,CPU读取DSP固件到内存中,查询communication section并修改communication_base和handshake_data,将所有需加载的communication section加载到指定内存,完成DSP与CPU所用的通信共享内存地址的设定。
在步骤103,DSP启动处理。
在本发明实施例中,读取通信共享内存地址,并根据读取的内容中的模式进行配置,完成DSP启动。
以上步骤完成之后,DSP和CPU就可以通过communication_base指向的通信共享内存地址处的buffers读写交互内容,通过所配置的中断或者轮询,进行通信。
实施例2
图2为根据本发明的DSP固件编译处理流程图,下面将参考图2,对本发明的DSP固件编译处理流程进行详细描述。
本发明实施例中,DSP固件编译时的处理主要是增加一个通信用数据段(section)和两个符号,以及相关处理代码。
在步骤201,在链接脚本中增加一个名为communication section的通信用数据段:
在步骤202,定义全局符号communication_base,作为DSP与CPU使用的通信共享内存地址,定义该地址为0,放在步骤201中增加的通信字段中:
_attribute_((section(″.communication″)))void*communication_base=0。
在步骤203,定义全局符号handshake_data,用来放置DSP和CPU使用的通信方式的配置,放在步骤201中定义的section中:
_attribute_((section(″.communication″)))struct handshake handshake_data={0}。
本发明实施例中,handshake_data的数据结构如下:
cpu_mode | CPU通信模式配置,0:轮询1:中断 |
dsp_mode | DSP通信模式配置,0:轮询1:中断 |
cpu_irq | CPU irq号,供DSP触发CPU中断 |
dsp_irq | DSP irq号,供DSP注册中断处理函数 |
。
在步骤204,增加通信方式设定的处理代码,用于读取communication_base和handshake_data的内容并进行处理。
在步骤205,编译并生成ELF格式的固件。
实施例3
图3为根据本发明的CPU加载DSP固件处理流程图,下面将参考图3,对本发明的CPU加载DSP固件处理流程进行详细描述。
在步骤301,读取DSP固件到内存中,寻找文件中communication section和全局符号communication_base,并确认.communicaion段在固件中存在。
本发明实施例中,固件readelf工具显示的elf格式固件文件的section表如下:
其中,Nr表示section的编号,Name表示section的名称,Type表示section的类型(strtab表示该section为字符串表,symtab表示该section为符号表,progbits表示为代码段),Addr表示该section加载到的内存地址,Off为该section在elf文件中的偏移,Size表示该seciotn的大小。Addr、Off、Size的具体值在编译时由编译器动态决定。
通过.symtab和.strtab找到符号communication_base,确认其ndx为.communication的nr。ndx、nr均为编号,readelf工具显示section和symbol table的名字略有不同
readelf工具打印出的communication_base全局符号表(symbol table)项为:
其中,num是编号,value是地址,size是改符号占用的内存大小,type为类型,bind为局部还是全局,vis为可见范围,ndx为该符号所在的段(section)的编号(这里的num,value和ndx编译时由编译器动态决定,不固定)这里主要是展示一下ndx会和前面section表的nr一致。
在步骤302,将全局符号communication_base地址处的内容修改为需要的通信共享内存地址。
本发明实施例中,将步骤301中获得的communication_base全局符号的Value项减去communication section的Addr项,即可得到communication_base在communicationsection中的偏移。而communication section在固件中的偏移可由固件section中的Off得到,两者相加,即可得到communication_base符号在固件中的偏移,再加上读取固件放置到内存的地址,可得到该符号在内存中的具体地址,将其内容修改为需要的值。
在步骤303,在communication section中放入handshake_data表。
本发明实施例中,readelf工具打印出的communication_base全局符号表项为:
其中,Num是编号,Value是地址,Size是改符号占用的内存大小,Type为类型,Bind为局部还是全局,Vis为可见范围,Ndx为该符号所在的段(section)的编号,Name为符号名,这里只是表明在elf的符号表中名为handshake_data的符号存在。
本发明实施例中,使用与步骤302中相同的方式获得handshake_data表在固件中的偏移。将handshake_data表内容修改为按照handshake的结构放置的cpu通信模式、dsp通信模式、cpu的irq和dsp的irq。
在步骤304,已读取到内存中的固件完成所有修改后,开始加载,将所有需加载的代码段和数据段section加载到指定内存(包括dsp内部ram)。
在步骤305,将HANDSHAKE_START(握手启动)写入到通信共享内存地址handshakeflag握手状态标志位,等待DSP回应。
本发明实施例中,communication_base指向的通信共享内存地址处的内容为:
handshake flag | 握手标志位:开始-START,成功-READY,失败-FAILED |
buffers | DSP和CPU交互内容 |
,
其中,handshake flag是握手状态标志位,cpu会写入HANDSHAKE_START开始握手过程;DSP会根据handshake_data表中的设置进行配置,如果配置成功,会写入HANDSHAKE_READY,失败则写入HANDSHAKE_FAILED。CPU根据返回的flag确定下一步操作;Buffers是一段双方均可读写的共享内存,可以根据需要分配存放业务相关的交互数据,对buffers的操作为常规操作。
实施例4
图4为根据本发明的DSP启动处理流程图,下面将参考图4,对本发明的DSP启动处理流程进行详细描述。
在步骤401,初始化运行时环境工作。
在步骤402,读取communication_base全局符号指向的通信共享内存地址的内容。
本发明实施例中,communication_base的内容已被CPU在加载时写入为需要的通信共享内存地址,读取此地址。
在步骤403,若此地址的内容为HANDSHAKE_START,进行下一步骤,否则返回步骤402重新读取。
在步骤404,读取handshake_data的内容,并根据内容中的模式配置。
本发明实施例中,handshake_data的内容已被CPU写入为所需配置。读取handshake_data的内容,按handshake的结构进行解析:
若cpu_mode为1即irq模式,根据cpu_irq内容配置中断发送函数;
若dsp_mode为1即irq模式,根据dsp_irq内容注册中断处理函数。
在步骤405,根据配置结果将HANDSHAKE_START或者HANDSHAKE_FAILED写入communication_base全局符号指向的通信共享内存地址handshake flag握手状态标志位。
本发明实施例中,如果配置成功,往communication_base指向的通信共享内存地址handshake flag握手状态标志位写入HANDSHAKE_READY,完成通信方式的设置。如果配置失败,往communication_base指向的通信共享内存地址handshake flag握手状态标志位写入HANDSHAKE_FAILED,DSP停止运行。
在配置成功的情况下,若dsp_mode为1即irq模式,进入中断等待,等待CPU发送中断;若dsp_mode为0即polling模式,循环读取buffers内存处等待CPU写入新数据。
在步骤406,根据dsp_mode的配置进入irq模式或者polling模式继续运行。
实施例5
本发明的一个实施例中,还提供一种电子设备,包括,存储器和处理器,所述存储器上储存有在所述处理器上运行的程序,所述处理器运行所述程序时执行上述DSP与CPU通信方式的动态设定方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述DSP与CPU通信方式的动态设定方法的步骤。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种DSP与CPU通信方式的动态设定方法,包括以下步骤:
1)在链接脚本中增加存放全局符号的通信用数据段,增加通信方式设定的处理代码,编译并生成DSP固件;
2)设定DSP与CPU所用的通信共享内存地址,加载DSP固件;
3)启动DSP,读取所述通信共享内存地址的内容,并根据内容中的模式进行配置。
2.根据权利要求1所述的DSP与CPU通信方式的动态设定方法,其特征在于,所述步骤1)还包括,
在链接脚本中增加名为communication section的通信用数据段;
定义communication_base,作为DSP与CPU通信使用的通信共享内存地址的全局符号,并放入所述通信用数据段中;
定义handshake_data,用于放置DSP和CPU使用的通信方式的配置的全局符号,并放入所述通信用数据段中;
增加通信方式设定的处理代码;
编译并生成ELF格式的DSP固件。
4.根据权利要求2所述的DSP与CPU通信方式的动态设定方法,其特征在于,所述步骤2)还包括,
CPU读取DSP固件到内存中,寻找文件中communication section和communication_base,并确认.communicaion段在固件中存在;
修改communication_base符号所在地址的内容为需要的通信共享内存地址;
将handshake_data表放入communication section中;
开始DSP加载,将所有需要加载的代码段和数据段到指定的内存地址;
在通信共享内存地址handshake flag握手状态标志位写入HANDSHAKE_START。
6.根据权利要求2所述的DSP与CPU通信方式的动态设定方法,其特征在于,所述步骤3)还包括,
DSP开始运行,读取communication_base指向的通信共享内存地址的内容,并确认handshake flag握手标志位的内容为HANDSHAKE_START;
DSP读取handshake_data的内容,并根据内容中的模式配置;
如配置成功,在communication_base指向的通信共享内存地址handshake flag握手标志位处写入HANDSHAKE_READY,否则写入HANDSHAKE_FAILED;
配置成功,根据模式配置进入模式运行,否则DSP停止。
7.根据权利要求6所述的DSP与CPU通信方式的动态设定方法,其特征在于,所述DSP读取handshake_data的内容,并根据内容中的模式配置的步骤还包括,
若cpu_mode为irq模式,根据cpu_irq内容配置中断发送函数;
若dsp_mode为irq模式,根据dsp_irq内容注册中断处理函数。
8.一种电子设备,其特征在于,包括,存储器和处理器,所述存储器上储存有在所述处理器上运行的程序,所述处理器运行所述程序时执行权利要求1-7任一项所述的DSP与CPU通信方式的动态设定方法的步骤。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述计算机指令运行时执行权利要求1-7任一项所述的DSP与CPU通信方式的动态设定方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210136810.4A CN114546441A (zh) | 2022-02-15 | 2022-02-15 | 一种dsp与cpu通信方式的动态设定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210136810.4A CN114546441A (zh) | 2022-02-15 | 2022-02-15 | 一种dsp与cpu通信方式的动态设定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546441A true CN114546441A (zh) | 2022-05-27 |
Family
ID=81675473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210136810.4A Pending CN114546441A (zh) | 2022-02-15 | 2022-02-15 | 一种dsp与cpu通信方式的动态设定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546441A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453318A (zh) * | 2023-12-25 | 2024-01-26 | 上海励驰半导体有限公司 | 基于iommu的dsp固件使用方法、系统芯片及车机 |
-
2022
- 2022-02-15 CN CN202210136810.4A patent/CN114546441A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453318A (zh) * | 2023-12-25 | 2024-01-26 | 上海励驰半导体有限公司 | 基于iommu的dsp固件使用方法、系统芯片及车机 |
CN117453318B (zh) * | 2023-12-25 | 2024-03-15 | 上海励驰半导体有限公司 | 基于iommu的dsp固件使用方法、系统芯片及车机 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104424002B (zh) | 一种基于插件机制的动态加载组件方法和系统 | |
RU2473111C1 (ru) | Способ динамической компоновки программы на встроенной платформе и встроенная платформа | |
JPH0836488A (ja) | ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置 | |
JP2006092544A (ja) | プリオペレーティングシステム環境におけるモジュールの動的リンク | |
US20060200815A1 (en) | Electronic Device and Method for Updating Related Programs | |
US20050204351A1 (en) | Dynamic addressing (DA) using a centralized DA Manager | |
JPWO2010073444A1 (ja) | バスコントローラ及び初期ブートプログラムのパッチ方法 | |
CN112860473B (zh) | 程序运行错误时定位源代码的方法、装置及计算设备 | |
CN107305495A (zh) | 实现软件安装包功能修改的方法及终端 | |
CN112015522B (zh) | 系统功能扩展方法、装置及计算机可读存储介质 | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
CN114546441A (zh) | 一种dsp与cpu通信方式的动态设定方法 | |
CN111061486B (zh) | 一种安卓应用程序增量方法 | |
CN117234953B (zh) | 一种基于影子代码缓存的内核调试方法 | |
WO2022184112A1 (zh) | 安卓系统的应用调试方法、装置、程序、介质及电子设备 | |
CN114780173A (zh) | 一种在应用中加载插件的方法、计算设备及存储介质 | |
CN117193872B (zh) | 一种基于符号表动态执行的芯片启动固件装置和方法 | |
CN111427617A (zh) | 数据处理方法、装置及设备 | |
CN115934423A (zh) | 一种基于实时操作系统的嵌入式软件生成方法和系统 | |
CN115994348A (zh) | 程序流水线的控制方法、处理装置和存储介质 | |
CN112596751B (zh) | 应用程序安装包的编译方法、终端、服务器及存储介质 | |
CN110275710B (zh) | 一种Java本地接口一致性检查方法及系统、存储介质及终端 | |
CN113434213A (zh) | 一种终端的程序运行方法以及装置 | |
US20240211277A1 (en) | Program call stack creation method and unwind stack method and apparatus | |
CN111459570B (zh) | Pdf插件加载方法、电子设备和计算机存储介质 |
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 |