CN107656773B - 一种多核dsp启动方法 - Google Patents
一种多核dsp启动方法 Download PDFInfo
- Publication number
- CN107656773B CN107656773B CN201710898403.6A CN201710898403A CN107656773B CN 107656773 B CN107656773 B CN 107656773B CN 201710898403 A CN201710898403 A CN 201710898403A CN 107656773 B CN107656773 B CN 107656773B
- Authority
- CN
- China
- Prior art keywords
- user program
- core
- mode
- starting
- peripheral
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种多核DSP启动方法,步骤包括:S1.在多核DSP芯片内部设置一个ROM区域,在ROM区域内加载一个预先建立的启动加载程序,启动加载程序包括多种外设的多种启动多核DSP芯片的启动模式,通过一个启动模式寄存器配置芯片启动时所需采用的外设以及外设所需采用的启动模式;S2.芯片复位后,主核执行启动加载程序,读取启动模式寄存器,获取得到当前所需采用的目标外设以及所需采用的目标启动模式,加载用户程序,完成用户程序加载后,通过中断方式使其余核跳转到指定的地址开始执行各自的用户程序。本发明能够实现多外设多模式的多核DSP启动,内存利用率及效率高且适用范围广、灵活性强。
Description
技术领域
本发明涉及多核DSP芯片技术领域,尤其涉及一种多核DSP启动方法。
背景技术
DSP芯片一般运行速率较高,其RAM中的应用程序也在高速运转中,当系统掉电时,运行的程序就会消失,应用程序必须重新加载到RAM中才能重新开始运行,因此绝大多数DSP芯片都要完成将应用程序重新加载到内核的过程,也就是DSP芯片的启动过程。DSP的启动单元主要就是用来在芯片上电时将用户应用程序从片外存储空间搬移到片内某个存储区,该应用程序可以存储在非易失存储介质中,如存放在DSP的ROM中,然后被搬移到高速存储区执行。
在单片芯片上能够集成多个处理器核和大量外设,多核DSP芯片的架构和规模在不断扩大的同时,需要多样化的启动方式相配合,而与单核DSP的启动方案不同,多核DSP的启动方案不但需要负责主DSP核启动程序的加载,还需通过核间中断和数据协同方式完成其他DSP核启动程序的加载,因此多核DSP启动方案实现更为复杂。
针对于单核DSP芯片,目前通常是通过多种不同的启动程序加载方式以适应不同系统的要求,如SRIO启动方式,网络启动方式等,为了达到系统的最大兼容性,上述加载方式还包括了并行总线和串行接口的各种类型启动模式的加载方式,以及通过HPI(HostPort Interface)加载启动程序的等,还可以支持8位字节和16位字模式的启动程序加载方式。但是单核DSP芯片的启动程序加载过程简单,主要由固化在芯片内部的ROM代码进行启动程序的加载工作,而ROM容量较小,一次只能加载不超过1KB的用户程序,若启动程序超过1KB,则必须在原基础上进行二次启动加载。
多核DSP芯片的启动程序则需要依赖于CPU的体系结构和具体嵌入式板级配置,对于不同的硬件,必须根据需要对其做出相应修改,这就要求芯片内部ROM区域是可擦除的,从而达到ROM代码需要实时修改的需求,但这会使得开发难度大且繁琐复杂。目前的多核DSP启动方式设置了多种数据格式,包括参数表、配置表等,因此需要采用多种不同的转化工具进行格式的转化,同时由于格式的不同,存储地址和作用等均会存在差异,如某些多核启动方式采用参数表格式将片外启动模式引脚的配置信息保存在主DSP核的L2 SRAM中,在启动时根据需求进行读取和修改,因而格式、存放位置和功能的各不相同,会导致启动程序生成的过程复杂,需要附加的格式转化工具及多核加载的来回跳转过程,从而浪费存储空间,同时增加了启动时延而造成功耗浪费。
综上所述,单核DSP或多核DSP均是采用固定的启动模式,灵活性差,且单核DSP启动程序大小受限,在多核启动过程中存在内存浪费、效率低等问题,亟需提供一种适用于多核DSP芯片的启动方法,使得能够提高多核DSP芯片启动的灵活性、效率以及内存利用率。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种内存利用率及效率高且适用范围广、灵活性强的多核DSP启动方法,能够实现多外设多模式的多核DSP启动。
为解决上述技术问题,本发明提出的技术方案为:
一种多核DSP启动方法,步骤包括:
S1.在多核DSP芯片内部设置一个ROM区域,在所述ROM区域内加载一个预先建立的启动加载程序,启动加载程序包括多种外设的多种启动多核DSP芯片的启动模式,通过一个启动模式寄存器配置芯片启动时所需采用的外设以及外设所需采用的启动模式;
S2.芯片复位后,主核执行所述启动加载程序,读取所述启动模式寄存器,获取得到当前所需采用的目标外设以及所需采用的目标启动模式,按照获取的目标外设、目标启动模式加载用户程序,完成用户程序加载后,通过中断方式使其余核跳转到指定的地址开始执行各自的用户程序。
作为本发明的进一步改进:所述启动模式包括No Boot模式、Host Boot模式以及Slave Boot模式,所述No Boot模式使用外设EMIF,芯片通过EMIF直接启动并执行用户程序;所述Host Boot模式使用PCIE、SRIO0、SRIO1、GMAC的主外设,通过主外设搬移用户程序;所述Slave Boot模式使用EMIF、SPI、I2C、UART的从外设,所述启动加载程序通过从外设搬移用户程序。
作为本发明的进一步改进:所述No Boot模式具体为,各核用户程序存放在EMIF的FLASH空间,在主核上运行的所述启动加载程序首先通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;主核在执行完启动加载程序后,执行自己的用户程序。
作为本发明的进一步改进:所述Host Boot模式具体为,各核用户程序位于芯片的PCIE、SRIO0、SRIO1、GMAC主外设中,芯片的各所述主外设主动将各核用户程序加载到指定的存储区域,然后各核用户程序从指定存储区域开始运行;在主核上运行的所述启动加载程序负责设置并启动各所述主外设,并等待所各述主外设将各核用户程序搬移完毕之后,通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;最后主核执行自己的用户程序。
作为本发明的进一步改进,所述Host Boot模式中主外设为PCIe、SRIO时,所述将各核用户程序加载到指定的存储区域具体为:直接将用户程序搬移到初始的存储位置,搬移完成后,将搬移后的用户程序的存储首地址存放在指定地址BOOTADDR中;在外部主机通过PCIe或SRIO搬移用户程序过程中,所述启动加载程序不断查询所述地址BOOTADDR的值,如果查询到值非零,则判定搬移结束。
作为本发明的进一步改进,所述Slave Boot模式具体为,各核用户程序位于芯片的EMIF、SPI、I2C、UART从外设的外接FLASH中,芯片的各所述从外设被动将各核用户程序加载到指定的存储区域,然后各核用户程序从指定存储区域开始运行;在主核上运行的所述启动加载程序设置并启动各所述从外设,并主动操作各所述从外设将各核用户程序搬移至指定的存储区域,通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;最后主核执行自己的用户程序。
作为本发明的进一步改进,所述Host Boot模式中主外设为GMAC时通过配置一个第一启动表定义用户程序的数据量和起始地址,所述第一启动表的用户程序由外部主机通过GMAC网络存放到芯片的GMAC Boot临时存储区,使用所述第一启动表将各核用户程序加载到指定的存储区域;所述Slave Boot模式通过配置一个第二启动表定义用户程序的数据量和起始地址,所述第二启动表的用户程序存放在从外设的FLASH中,使用所述第二启动表将各核用户程序加载到指定的存储区域。
作为本发明的进一步改进,所述使用所述第一启动表将各核用户程序加载到指定的存储区域具体为:通过所述启动加载程序配置GMAC发送、接收描述符,所述发送描述符用于每隔指定时间向GMAC网络广播BOOTP帧,所述BOOTP帧中存储有芯片的MAC地址、IP地址;外部主机收到所述BOOTP帧后,以GMAC标准帧格式向芯片发送所述启动表的用户程序,通过所述接收描述符接收外部主机传输来的数据,并存放在指定的临时存储区域,所述启动加载程序从所述临时存储区域中读取启动表的用户程序,并将用户程序搬移存放在所需的存储区。
作为本发明的进一步改进,所述第一启动表、第二启动表包含一个头地址、多个段和一个结束标志,所述头地址位于启动表的起始处,所述头地址为用户程序加载到存储位置后的起始地址,每个所述段包括用于设置所需搬移的数据字节数的段字节数位、用于所需搬移数据的目的起始地址的配置段地址位、以及所需搬移的数据位,当所述启动加载程序在搬移完后跳转到所述头地址位置,所述启动加载程序在搬移启动表的用户程序时,不断地读取和搬移段数据,当读取到结束标志时,则跳转到启动表中所述头地址位置。
作为本发明的进一步改进:所述启动模式寄存器包括PLL(锁相环)配置信息位、外设选择信息位、外设启动模式配置信息位以及配置引脚位,所述PLL配置信息位用于设置芯片启动时PLL工作状态和频率,所述外设选择信息位用于设置进行用户程序加载所需的外设,所述外设启动模式配置信息位用于设置外设的启动模式,所述配置引脚位与芯片的配置引脚对应,用于在芯片复位时锁定配置状态。
与现有技术相比,本发明的优点在于:
1)本发明多核DSP启动方法,通过在ROM区域加载一个启动加载程序,由启动加载程序可实现多种外设的多种启动模式,由启动模式寄存器配置所需采用的外设、启动模式,在芯片复位后,由主核执行启动加载程序,从启动模式寄存器中获取所需采用的外设、启动模式后,即可由所需外设按照所需启动模式加载用户程序,可以支持芯片通过多种外设接口进行启动,每种外设启动模式又可配置在多种工作模式下,灵活性强、适用范围广,不受程序大小的限制且内存利用率、启动效率高;
2)本发明多核DSP启动方法,进一步启动模式具体包括No Boot模式、Host Boot模式以及Slave Boot模式,能够支持芯片通过EMIF、SPI、UART、I2C、GMAC、SRIO、PCIE等多种外设接口进行启动,每种外设启动模式可配置在多种工作模式下,能够极大的提高使用灵活性,满足用户板级系统设计的多种需求;
3)本发明多核DSP启动方法,进一步针对Host Boot模式中GMAC外设以及SlaveBoot模式配置启动表,由启动表定义用户程序的数据量和起始地址,使启动加载程序搬移用户程序时能够直接获取搬移的目的地址和搬移量大小,通过启动表使得芯片启动时可以加载任意大小和任意目的地址的用户程序,进一步提高了多核DSP芯片启动方式的适用范围及灵活性。
附图说明
图1是本实施例多核DSP启动方法的实现流程示意图。
图2是本实施例实现多核DSP启动方法的结构原理示意图。
图3是本发明具体实施例中启动寄存器的结构示意图。
图4是本发明具体实施例中多核DSP启动方法的实现原理示意图。
图5是本实施例中主核(核0)的启动流程示意图。
图6是本实施例中核i(i=1,…,n-1)的启动流程示意图。
图7是本发明具体实施例中启动表的结构示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例多核DSP启动方法步骤包括:
S1.在多核DSP芯片内部设置一个ROM区域,在ROM区域内加载一个预先建立的启动加载程序,启动加载程序包括多种外设的多种启动多核DSP芯片的启动模式,即可使用多种外设,外设可使用多种启动模式,通过一个启动模式寄存器配置芯片启动时所需采用的外设以及外设所需采用的启动模式;
S2.芯片复位后,主核执行启动加载程序,读取启动模式寄存器,获取得到当前所需采用的目标外设以及所需采用的目标启动模式,按照获取的目标外设、目标启动模式加载用户程序,完成用户程序加载后,通过中断方式使其余核跳转到指定的地址开始执行各自的用户程序。
本实施例通过在ROM区域加载一个启动加载程序,由启动加载程序可实现多种外设的多种启动模式,由启动模式寄存器配置所需采用的外设、启动模式,则在芯片复位后,由主核执行启动加载程序,从启动模式寄存器中获取所需采用的外设、启动模式后,即可由所需外设按照所需启动模式加载用户程序,可以支持芯片通过多种外设接口进行启动,每种外设启动模式又可配置在多种工作模式下,灵活性强、适用范围广,能够在多核启动过程中减少内存浪费,启动程序的加载不受程序大小的限制且内存利用率、启动效率高。
本实施例中,启动模式具体包括No Boot模式、Host Boot模式以及Slave Boot模式,其中No Boot模式使用外设EMIF(External Memory InterFace,外部存储接口),芯片通过EMIF直接启动并执行用户程序;Host Boot模式使用PCIE(Peripheral ComponentInterconnect Express,高速外设互连)、SRIO0(Serial Rapid Input/Output 0,快速串行输入输出口0)、SRIO1(Serial Rapid Input/Output 0,快速串行输入输出口1)、GMAC(Gigabit Media Access Control,吉比特媒体访问控制)的主外设,通过主外设搬移用户程序;Slave Boot模式使用EMIF、SPI(Serial Peripheral Interface,串行外设接口)、I2C(Inter-Integrated Circuit,集成电路总线)、UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)的从外设,启动加载程序通过从外设搬移用户程序。即No Boot模式使用外设EMIF,芯片通过EMIF直接启动并执行用户程序,Host Boot模式使用主外设PCIE、SRIO0、SRIO1、GMAC,主外设负责搬移用户程序;Slave Boot模式使用从外设EMIF、SPI、I2C、UART,启动加载程序负责通过从外设搬移用户程序。
通过配置上述启动模式,能够支持芯片通过EMIF、SPI、UART、I2C、GMAC、SRIO、PCIE等多种外设接口进行启动,每种外设启动模式可配置在多种工作模式下,能够极大的提高使用灵活性,满足用户板级系统设计的多种需求。当然还可以根据实际需求配置除上述外设、启动模式外的其他外设、启动模式,以进一步提高启动灵活性及性能。
如图2所示,本实施例首先在多核DSP芯片内部设置一个ROM区域,将包括上述不同外设启动代码固化在ROM区域,构成多核DSP芯片启动加载程序,由于固化代码不可更改,硬件开销小,通过芯片引脚配置可以选择不同的启动加载程序分支,从而实现通过不同外设完成芯片启动;通过读写逻辑提供访问ROM区域的读写通路。假设多核DSP芯片共有n个DSP核,芯片复位后,核i(i=1,…,n-1)执行IDLE指令,进入等待状态,核0(主核)执行启动加载程序,并跳转到芯片引脚配置所指定的启动加载子程序并执行,完成用户程序加载后,再通过中断方式使核i(i=1,…,n-1)跳转到指定的地址开始执行各自的用户程序。
本实施例中,启动模式寄存器包括PLL(Phase-Locked Loop,锁相环)配置信息位、外设选择信息位、外设启动模式配置信息位以及配置引脚位,PLL配置信息位用于设置芯片启动时PLL工作状态和频率,外设选择信息位用于设置进行用户程序加载所需的外设,外设启动模式配置信息位用于设置外设的启动模式,配置引脚位与芯片的配置引脚对应,用于在芯片复位时锁定配置状态。即通过启动寄存器定义芯片启动时PLL工作状态和频率、采用哪个外设进行用户程序加载、所采用外设的工作模式。芯片启动模式通过15根专用配置引脚进行设置。在芯片复位时,15根引脚的配置状态锁定到启动模式寄存器中。
如图3所示,本发明具体实施例中启动模式寄存器包括32位,其中高17位为保留位,第11到14位为芯片PLL配置信息,指定芯片启动时PLL工作状态和频率;第0到2位为外设选择信息,指定芯片启动时采用哪个外设进行用户程序加载;第3到10位为外设工作模式配置信息,指定第0到2位所选择外设的工作模式;启动模式寄存器的第0到14位对应芯片的15根专用配置引脚,在芯片复位时,15根引脚的配置状态就锁定到启动模式寄存器中。
本发明具体实施例中芯片启动时PLL配置如表1所示,配置锁相环PLL工作在旁路(bypass)模式、1GHz或800MHz,设定芯片启动时的频率。
表1:PLL配置。
BOOTMODE[14:11] | 含义 |
x000 | PLL bypass模式 |
0xxx(除0000外) | 内部主时钟1GHz |
1xxx(除1000外) | 内部主时钟800MHz |
本发明具体实施例中外设编号配置如表2所示,配置芯片启动时采用哪个外设进行用户程序加载,具体包括8个外设,分别是:EMIF,PCIe,GMAC,SRIO0,SRIO1,I2C,SPI和UART。启动加载程序在读取到外设编号后,激活对应的外设,并采用该外设进行用户程序加载。
表2:外设编号。
BOOTMODE[2:0] | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
含义 | EMIF | PCIe | GMAC | SRIO0 | SRIO1 | I2C | SPI | UART |
本发明具体实施例中外设工作模式配置如表3所示,设置不同外设的多种的工作模式。表3:各外设工作模式。
如图4所示,本实施例通过核0(主核)读取启动模式寄存器,识别不同字段值后获取当前所需执行的启动模式,进行接口的初始化和PLL配置,同时根据启动模式决定是否搬移程序;对于其他DSP核(核i(i=1,…,n-1)),进入IDLE状态等待核0发过来的中断,中断一到,根据不同的核编号跳到不同的入口地址开始执行各自的用户程序分支。
本实施例核0(主核)启动流程具体如图5所示,芯片复位后,核0执行启动加载程序,首先读取启动模式寄存器值,获得当前芯片的启动方式;然后根据不同启动方式配置,采用不同的外设,完成用户程序加载;然后通过中断激活核i(i=1,…,n-1)执行各自用户程序;最后读取并执行核0用户程序。
本实施例核i(i=1,…,n-1)的启动流程具体如图6所示,芯片复位后,核0执行启动加载程序的同时,核i(i=1,…,n-1)执行IDLE指令,进入等待状态,直到中断的到来,各核跳入中断复位程序读取BOOTADDR的值,并跳转到指定地址开始执行各自用户程序。
本实施例中,No Boot模式具体为:各核用户程序存放在EMIF的FLASH空间,在主核上运行的启动加载程序首先通过中断方式使其他核)跳转到指定的地址开始执行各自用户程序;主核在执行完启动加载程序后,执行自己的用户程序。具体No Boot模式时,启动加载程序配置外设存储接口EMIF,用户程序从首地址开始存放在EMIF FLASH空间,启动加载程序直接跳转到该空间首地址且启动加载程序通过中断方式使核i(i=1,…,n-1)跳转到指定的地址开始执行各自用户程序,最后核0跳转到指定的地址读取并执行核0的用户程序。
本实施例中,Host Boot模式具体为:各核用户程序位于芯片的PCIE、SRIO0、SRIO1、GMAC主外设中,芯片的各主外设主动将各核用户程序加载到指定的存储区域,然后各核用户程序从指定存储区域开始运行;在主核上运行的启动加载程序负责设置并启动各主外设,并等待所各述主外设将各核用户程序搬移完毕之后,通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;最后主核执行自己的用户程序。具体Host Boot模式时,用户程序存放在与芯片PCIe、SRIO0、SRIO1、GMAC等主设备相连接的片外某位置处,启动加载程序配置主外设,由于主外设能够自主搬移启动程序,通过自身端口加载用户程序。
本实施例中,Host Boot模式中主外设为PCIe、SRIO0、SRIO1时,将各核用户程序加载到指定的存储区域具体为:PCIe、SRIO0、SRIO1直接将用户程序搬移到初始的存储位置,搬移完成后,将搬移后的用户程序的存储首地址存放在指定地址BOOTADDR中;在外部主机通过PCIe或SRIO0、SRIO1搬移用户程序过程中,启动加载程序不断查询地址BOOTADDR的值,如果查询到值非零,则判定搬移结束;然后启动加载程序通过中断方式使核i(i=1,…,n-1)跳转到指定的地址开始执行各自用户程序,最后核0跳转到指定的地址读取并执行核0的用户程序。
本实施例中,Host Boot模式中主外设为GMAC时通过配置一个第一启动表定义用户程序的数据量和起始地址,第一启动表的用户程序由外部主机通过GMAC网络存放到芯片的GMAC Boot临时存储区,使用第一启动表将各核用户程序加载到指定的存储区域。
对于GMAC主设备,由于芯片外部主机并不知晓芯片内部地址空间,本实施例中使用第一启动表将各核用户程序加载到指定的存储区域具体为:通过启动加载程序配置GMAC发送、接收描述符,发送描述符用于每隔指定时间向GMAC网络广播BOOTP帧,BOOTP帧中存储有芯片的MAC地址、IP地址等,具体按所需要完成的操作条件进行配置;外部主机收到BOOTP帧后,以GMAC标准帧格式向芯片发送启动表的用户程序,通过接收描述符接收外部主机传输来的数据,并存放在指定的GMAC Boot临时存储区域,启动加载程序从临时存储区域中读取启动表的用户程序,并将用户程序搬移存放在所需的存储区;然后启动加载程序通过中断方式使核i(i=1,…,n-1)跳转到指定的地址开始执行各自用户程序,最后核0跳转到指定的地址读取并执行核0的用户程序。
本实施例针对Host Boot模式中GMAC主设备特性配置启动表,由启动表定义用户程序的数据量和起始地址,使启动加载程序搬移用户程序时能够直接获取搬移的目的地址和搬移量大小,启动表可以由任意多段组成,从而通过启动表芯片启动时可以加载任意大小和任意目的地址的用户程序,进一步提高了多核DSP芯片启动方式的适用范围及灵活性,能够满足多核DSP芯片各种板级系统和应用场景需要。
本实施例中,Slave Boot模式具体为:各核用户程序位于芯片的EMIF、SPI、I2C、UART从外设的外接FLASH中,芯片的各从外设被动将各核用户程序加载到指定的存储区域,然后各核用户程序从指定存储区域开始运行;在主核上运行的启动加载程序设置并启动各从外设,并主动操作各从外设将各核用户程序搬移至指定的存储区域,通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;最后主核执行自己的用户程序。
本实施例同时为Slave Boot模式配置一个第二启动表,定义用户程序的数据量和起始地址,第二启动表的用户程序存放在从外设的FLASH中,使用第二启动表将各核用户程序加载到指定的存储区域,则由启动表定义用户程序的数据量和起始地址,使启动加载程序搬移用户程序时能够直接获取搬移的目的地址和搬移量大小,从而通过启动表芯片启动时可以加载任意大小和任意目的地址的用户程序。具体Slave Boot模式时,用户程序以启动表从首地址开始存放在与芯片EMIF、SPI、I2C、UART等从设备相连接的片外FLASH中,启动加载程序配置EMIF、SPI、I2C、UART等从外设,并通过从外设将启动表的用户程序搬移至到合适的存储位置,搬移完毕后,启动加载程序通过中断方式使核i(i=1,…,n-1)跳转到指定的地址开始执行各自用户程序;最后核0跳转到指定的地址读取并执行核0的用户程序。
如图7所示,本实施例中第一启动表、第二启动表结构相同,均包含一个头地址(具体为32位)、多个段和一个结束标志,头地址位于启动表的起始处,头地址为用户程序加载到存储位置后的起始地址,每个段包括用于设置所需搬移的数据字节数的段字节数位、用于所需搬移数据的目的起始地址的配置段地址位、以及所需搬移的数据位,当启动加载程序在搬移完后跳转到头地址位置,启动加载程序在搬移启动表的用户程序时,不断地读取和搬移段数据,当读取到结束标志时,则跳转到启动表中头地址位置。
以多核DSP芯片工作在1GHz下,多核DSP芯片的I2C接口外接一个I2C FLASH器件,且该I2C FLASH器件采用0x51地址为例,用户程序首先以启动表方式存放在该I2C FLASH器件中,为了完成多核DSP的启动,将启动模式寄存器的第14位至第11位设置为0000,第2位至第0位设置为101,第3位设置为1;多核DSP芯片启动时,在核0上运行的启动加载程序负责设置并启动I2C从设备,并操作I2C从I2C FLASH中将各核用户程序搬移至指定的存储区域(在启动表中定义),然后通过中断方式使核i(i=1,…,n-1)跳转到指定的地址开始执行各自用户程序;最后核0执行自己的用户程序。
本实施例的用户程序有两种形态:①原始二进制或十六进制用户程序,在No Boot方式和Host Boot–PCIe/SRIO方式中使用;②启动表的用户程序,在Host Boot–GMAC方式和Slave Boot方式中使用。对于Host Boot–GMAC启动模式和Slave Boot启动模式,启动加载程序主动搬移用户程序,由于用户程序由用户编程实现,大小不定,本实施例通过启动表定义了用户程序的数据量和起始地址,使启动加载程序搬移用户程序时能够知道搬移的目的地址和搬移量大小,采用启动表时,芯片启动时可以加载任意大小和任意目的地址的用户程序,解决了传统DSP芯片一次只能加载不超过1KB的用户程序的限制问题,极大的提高了灵活性和适用性。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (8)
1.一种多核DSP启动方法,其特征在于,步骤包括:
S1.在多核DSP芯片内部设置一个ROM区域,在所述ROM区域内加载一个预先建立的启动加载程序,启动加载程序包括多种外设的多种启动多核DSP芯片的启动模式,通过一个启动模式寄存器配置芯片启动时所需采用的外设以及外设所需采用的启动模式;
S2.芯片复位后,主核执行所述启动加载程序,读取所述启动模式寄存器,获取得到当前所需采用的目标外设以及所需采用的目标启动模式,按照获取的目标外设、目标启动模式加载用户程序,完成用户程序加载后,通过中断方式使其余核跳转到指定的地址开始执行各自的用户程序;
所述启动模式包括No Boot模式、Host Boot模式以及Slave Boot模式,所述No Boot模式使用外设EMIF,芯片通过EMIF直接启动并执行用户程序;所述Host Boot模式使用PCIE、SRIO0、SRIO1、GMAC的主外设,通过主外设搬移用户程序;所述Slave Boot模式使用EMIF、SPI、I2C、UART的从外设,所述启动加载程序通过从外设搬移用户程序;
所述Host Boot模式中主外设为GMAC时通过配置一个第一启动表定义用户程序的数据量和起始地址,所述第一启动表的用户程序由外部主机通过GMAC网络存放到芯片的GMACBoot临时存储区,使用所述第一启动表将各核用户程序加载到指定的存储区域;所述SlaveBoot模式通过配置一个第二启动表定义用户程序的数据量和起始地址,所述第二启动表的用户程序存放在从外设的FLASH中,使用所述第二启动表将各核用户程序加载到指定的存储区域。
2.根据权利要求1所述的多核DSP启动方法,其特征在于:所述No Boot模式具体为,各核用户程序存放在EMIF的FLASH空间,在主核上运行的所述启动加载程序首先通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;主核在执行完启动加载程序后,执行自己的用户程序。
3.根据权利要求1所述的多核DSP启动方法,其特征在于:所述Host Boot模式具体为,各核用户程序位于芯片的PCIE、SRIO0、SRIO1、GMAC主外设中,芯片的各所述主外设主动将各核用户程序加载到指定的存储区域,然后各核用户程序从指定存储区域开始运行;在主核上运行的所述启动加载程序负责设置并启动各所述主外设,并等待所各述主外设将各核用户程序搬移完毕之后,通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;最后主核执行自己的用户程序。
4.根据权利要求3所述的多核DSP启动方法,其特征在于:所述Host Boot模式中主外设为PCIe、SRIO时,所述将各核用户程序加载到指定的存储区域具体为:直接将用户程序搬移到初始的存储位置,搬移完成后,将搬移后的用户程序的存储首地址存放在指定地址BOOTADDR中;在外部主机通过PCIe或SRIO搬移用户程序过程中,所述启动加载程序不断查询所述地址BOOTADDR的值,如果查询到值非零,则判定搬移结束。
5.根据权利要求3所述的多核DSP启动方法,其特征在于:所述Slave Boot模式具体为,各核用户程序位于芯片的EMIF、SPI、I2C、UART从外设的外接FLASH中,芯片的各所述从外设被动将各核用户程序加载到指定的存储区域,然后各核用户程序从指定存储区域开始运行;在主核上运行的所述启动加载程序设置并启动各所述从外设,并主动操作各所述从外设将各核用户程序搬移至指定的存储区域,通过中断方式使其他核跳转到指定的地址开始执行各自用户程序;最后主核执行自己的用户程序。
6.根据权利要求1所述的多核DSP启动方法,其特征在于:所述使用所述第一启动表将各核用户程序加载到指定的存储区域具体为:通过所述启动加载程序配置GMAC发送、接收描述符,所述发送描述符用于每隔指定时间向GMAC网络广播BOOTP帧,所述BOOTP帧中存储有芯片的MAC地址、IP地址;外部主机收到所述BOOTP帧后,以GMAC标准帧格式向芯片发送所述启动表的用户程序,通过所述接收描述符接收外部主机传输来的数据,并存放在指定的临时存储区域,所述启动加载程序从所述临时存储区域中读取启动表的用户程序,并将用户程序搬移存放在所需的存储区。
7.根据权利要求6所述的多核DSP启动方法,其特征在于:所述第一启动表、第二启动表包含一个头地址、多个段和一个结束标志,所述头地址位于启动表的起始处,所述头地址为用户程序加载到存储位置后的起始地址,每个所述段包括用于设置所需搬移的数据字节数的段字节数位、用于所需搬移数据的目的起始地址的配置段地址位、以及所需搬移的数据位,当所述启动加载程序在搬移完后跳转到所述头地址位置,所述启动加载程序在搬移启动表的用户程序时,不断地读取和搬移段数据,当读取到结束标志时,则跳转到启动表中所述头地址位置。
8.根据权利要求1~7中任意一项所述的多核DSP启动方法,其特征在于:所述启动模式寄存器包括PLL配置信息位、外设选择信息位、外设启动模式配置信息位以及配置引脚位,所述PLL配置信息位用于设置芯片启动时PLL工作状态和频率,所述外设选择信息位用于设置进行用户程序加载所需的外设,所述外设启动模式配置信息位用于设置外设的启动模式,所述配置引脚位与芯片的配置引脚对应,用于在芯片复位时锁定配置状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710898403.6A CN107656773B (zh) | 2017-09-28 | 2017-09-28 | 一种多核dsp启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710898403.6A CN107656773B (zh) | 2017-09-28 | 2017-09-28 | 一种多核dsp启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107656773A CN107656773A (zh) | 2018-02-02 |
CN107656773B true CN107656773B (zh) | 2021-06-25 |
Family
ID=61116174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710898403.6A Active CN107656773B (zh) | 2017-09-28 | 2017-09-28 | 一种多核dsp启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107656773B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768667B (zh) * | 2018-04-24 | 2020-08-07 | 中船重工(武汉)凌久电子有限责任公司 | 一种用于多核处理器片内核间网络通信的方法 |
CN108874727B (zh) * | 2018-05-29 | 2019-09-10 | 中国人民解放军国防科技大学 | 一种面向gpdsp的多核并行计算实现方法 |
CN109032938A (zh) * | 2018-07-17 | 2018-12-18 | 中国航空无线电电子研究所 | 多核dsp程序开发调试方法、程序文档及加载方法 |
CN110858254A (zh) * | 2018-08-22 | 2020-03-03 | 北京芯愿景软件技术股份有限公司 | 一种安全芯片 |
CN109213531A (zh) * | 2018-09-01 | 2019-01-15 | 哈尔滨工程大学 | 一种基于emif16的多核dsp上电自启动的简化实现方法 |
CN109582341A (zh) * | 2018-12-14 | 2019-04-05 | 哈尔滨市科佳通用机电股份有限公司 | 一种机车信号车载系统设备的主机系统及其程序变更方法 |
CN109901890B (zh) * | 2019-03-07 | 2020-12-01 | 深圳忆联信息系统有限公司 | 一种控制器加载多核固件的方法、装置、计算机设备及存储介质 |
CN109947500A (zh) * | 2019-03-08 | 2019-06-28 | 西安电子科技大学 | 一种程序加载方法、装置、系统、芯片和存储介质 |
CN110187891B (zh) * | 2019-03-18 | 2023-03-03 | 杭州电子科技大学 | 一种用于多核可编程控制器的程序开发方法及系统 |
CN110427223A (zh) * | 2019-07-02 | 2019-11-08 | 中国航空工业集团公司雷华电子技术研究所 | 一种基于上位机pcie总线动态加载多核dsp的方法及系统 |
CN111124517B (zh) * | 2019-12-23 | 2023-01-20 | 湖南国科微电子股份有限公司 | 嵌入式芯片引导启动方法、装置、计算机设备和存储介质 |
WO2021134762A1 (zh) * | 2020-01-02 | 2021-07-08 | 华为技术有限公司 | 一种控制方法及装置 |
CN111796850B (zh) * | 2020-07-20 | 2021-05-11 | 上海航天电子通讯设备研究所 | 一种卫星载荷软件在轨维护设备及方法 |
CN112905395B (zh) * | 2021-03-12 | 2022-08-23 | 湖南长城银河科技有限公司 | 一种面向异构多核/众核微处理器的自纠错启动系统 |
CN113434087B (zh) * | 2021-06-28 | 2022-09-23 | 山东航天电子技术研究所 | 基于共享空间的多核启动方法 |
CN114138360B (zh) * | 2021-11-12 | 2024-03-26 | 上海华元创信软件有限公司 | DSP在Flash上的多核烧写启动方法及系统 |
CN115484219B (zh) * | 2022-08-23 | 2023-06-27 | 中国电子科技集团公司第十研究所 | 规避国产srio交换芯片端口关联的方法、设备及介质 |
CN116755783B (zh) * | 2023-06-19 | 2024-04-09 | 合芯科技有限公司 | 一种多核芯片启动方法、控制器及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013102521A1 (en) * | 2012-01-03 | 2013-07-11 | International Business Machines Corporation | Method for secure self-booting of an electronic device |
CN104750510A (zh) * | 2013-12-30 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法及多核处理器芯片 |
-
2017
- 2017-09-28 CN CN201710898403.6A patent/CN107656773B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013102521A1 (en) * | 2012-01-03 | 2013-07-11 | International Business Machines Corporation | Method for secure self-booting of an electronic device |
CN104750510A (zh) * | 2013-12-30 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种芯片启动方法及多核处理器芯片 |
Non-Patent Citations (4)
Title |
---|
刘大雪等.基于固化代码的多外设多核数字信号处理器启动设计.《第十九届计算机工程与工艺年会暨第五届微处理器技术论坛论文集》.2015, * |
基于固化代码的多外设多核数字信号处理器启动设计;刘大雪等;《第十九届计算机工程与工艺年会暨第五届微处理器技术论坛论文集》;20151018;正文第2节、第3节,图1-7,表1-2 * |
基于多核DSP的信号采集处理板设计;宋亚坪;《中国优秀硕士学位论文全文数据库信息科技辑》;20160315;正文第5.1节 * |
多核X-DSP芯片复位与启动控制部件的设计与实现;嵇薇薇;《中国优秀硕士学位论文全文数据库信息科技辑》;20170315;正文第3.6节 * |
Also Published As
Publication number | Publication date |
---|---|
CN107656773A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107656773B (zh) | 一种多核dsp启动方法 | |
US10802866B2 (en) | Central processing unit with DSP engine and enhanced context switch capabilities | |
US20140325043A1 (en) | Network Switching Method, Version Upgrade Method, and Terminal Device | |
WO2011116621A1 (zh) | 电子设备、可配置的部件及其配置信息存储方法 | |
US9543996B2 (en) | Method and system for initializing RF module through non-volatile control | |
TW201227516A (en) | System and method for facilitating wireless communication during a pre-boot phase of a computing device | |
CN111831309A (zh) | 物联网Wifi带载多MCU的升级方法、装置、设备及介质 | |
CN112463662B (zh) | 一种用户态控制i2c设备的方法与终端 | |
GB2463809A (en) | Peripheral device operation method, peripheral device and host | |
CN116627520B (zh) | 基板管理控制器的系统运行方法以及基板管理控制器 | |
CN116243996B (zh) | 业务的运行切换方法、装置、存储介质及电子装置 | |
CN103473102A (zh) | 多操作系统的系统启动引导方法和工具 | |
US10635450B2 (en) | Electronic device performing booting operation based on boot-up instruction provided from endpoint device | |
CN111782027A (zh) | Ddr存储器运行频率调整方法及装置 | |
CN114138360B (zh) | DSP在Flash上的多核烧写启动方法及系统 | |
EP3438816A1 (en) | Bios starting method and device | |
CN109375543B (zh) | Dvs电压管理装置、系统及方法、存储介质、计算机设备 | |
CN101788946B (zh) | Cpld上连接有e2prom设备的固件烧结方法及装置 | |
CN112199121B (zh) | Dsp按需扩容加载程序方法 | |
US10203962B2 (en) | Tigersharc DSP boot management chip and method | |
CN116302122A (zh) | 多核异构域控制器、外设适配方法以及存储介质 | |
CN110765065A (zh) | 片上系统 | |
CN106354514B (zh) | 一种快速引导申威处理器bios的方法 | |
CN110572387B (zh) | 一种链路层处理方法 | |
CN114641763B (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 |