System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及固件应用,特别是涉及基于iommu的dsp固件使用方法、系统芯片及车机。
技术介绍
1、在包含cpu(central processing unit,中央处理器)和dsp(digital signalprocessors,数字信号处理器)的soc(system on chip,系统芯片)中,通常情况下,dsp固件由cpu进行加载,dsp和cpu之间通信用的内存缓冲也由cpu进行管理。
2、而由于dsp在架构、资源限制和效率方面的原因,通常dsp为单进程系统,且本身没有mmu(memory management unit),若将所有功能集成在一个固件中,则资源的分配难度和实现的复杂度都很高。因此在实际使用中,通常需要不同的开发人员各自开发相应的dsp固件,来实现不同功能,这就需要进行多个dsp固件的加载和使用切换。然而,对于多个dsp固件,无法实现兼顾高切换速度、开发的便捷性和使用的灵活性。
技术实现思路
1、为了解决现有技术中存在的至少一个问题,本申请的目的在于提供基于iommu的dsp固件使用方法、系统芯片及车机,不仅能够实现高切换速度,而且开发的便捷性高、使用的灵活性佳,应用于需要较高切换速度的场景时,效果尤为显著。
2、为实现上述目的,本申请提供的基于iommu的dsp固件使用方法,应用于系统芯片;所述系统芯片,包括中央处理器cpu、数字信号处理器dsp和内存;其中,所述dsp被配置有输入输出内存管理单元iommu和至少两个dsp固件;在cp
3、基于相应的加载地址,将所述至少两个dsp固件,对应预加载至所述内存中;
4、响应于接收到dsp固件运行指令,将所述dsp固件运行指令相应的待运行固件的加载地址,映射至dsp固件运行iova空间,并确定相应的iova地址;其中,所述至少两个dsp固件的所述dsp固件运行iova空间相同;
5、操作所述dsp基于所述iova地址,运行所述待运行固件。
6、进一步地,所述基于相应的加载地址,将所述至少两个dsp固件,对应预加载至所述内存中的步骤前,所述方法还包括,
7、对所述dsp的iova空间进行固定分配,以分配出固定的dsp固件运行iova空间;
8、基于所述iova空间的所述固定分配,生成所述dsp固件。
9、更进一步地,所述对所述dsp的iova空间进行固定分配,以分配出固定的dsp固件运行iova空间的步骤,包括,
10、将所述dsp的iova空间,至少划分为外设iova空间、dsp固件运行iova空间、dsp和cpu的共享内存iova空间、以及数据缓冲区iova空间。
11、进一步地,所述基于所述iova空间的所述固定分配,生成所述dsp固件的步骤包括,
12、基于所述iova空间分配,配置所述dsp的链接脚本;
13、根据所述链接脚本,链接生成目标格式的所述至少两个dsp固件。
14、更进一步地,所述目标格式为可执行可链接文件格式。
15、进一步地,所述基于相应的加载地址,将所述至少两个dsp固件,对应预加载至所述内存中的步骤前,所述方法还包括,
16、基于所述至少两个dsp固件的固件id、与所述固件id对应的所述加载地址和固件大小,生成固件加载地址表。
17、更进一步地,所述方法还包括,
18、响应于接收到所述dsp固件运行指令,确定待运行的固件id,并通过查询所述固件加载地址表,根据所述待运行的固件id,确定对应的所述加载地址;
19、将相应的待运行固件中的全部片段进行由物理地址至iova地址的第一映射。
20、更进一步地,将所述待运行固件中的一个片段进行所述第一映射的步骤,包括,
21、从所述待运行固件的程序头部表中,读取该片段在所述待运行固件中的偏移地址和片段大小;
22、根据所述待运行固件的加载地址、所述片段的偏移地址和片段大小,确定所述片段的实际物理页;
23、从所述程序头部表中,读取所述片段的物理地址,用作所述片段的iova地址;
24、将所述片段的实际物理页映射至所述iova地址,并更新所述iommu的固件映射页表。
25、更进一步地,所述更新所述iommu的固件映射页表的步骤后,所述方法还包括,
26、确定所述待运行固件中的全部片段的第一映射情况;
27、响应于所述全部片段未完成所述第一映射,对未完成所述第一映射的片段的其中一个,进行所述第一映射的处理。
28、更进一步地,所述方法还包括,
29、响应于所述全部片段完成所述第一映射,操作所述dsp基于所述iova地址,运行所述待运行固件。
30、进一步地,所述方法还包括,
31、与所述dsp通过共享内存iova空间进行dsp命令交互,并通过数据缓冲区iova空间传递dsp命令的输入输出数据。
32、更进一步地,所述方法包括,
33、对发送给所述dsp的命令分配相应内存;
34、控制所述iommu建立缓冲映射页表,将所述命令相应的内存映射至所述数据缓冲区iova空间;
35、分配输入输出数据的缓冲区,并控制所述iommu将每个缓冲区映射至所述数据缓冲区iova空间,并写入所述缓冲映射页表;
36、对每个命令建立一个dsp缓冲表,在所述dsp缓冲表中填入相应命令用到的所述缓冲区的iova。
37、更进一步地,所述对每个命令建立一个数据缓冲表的步骤后,所述方法还包括,
38、写入通信标志位,并通知所述dsp开始运行所述命令;
39、进入等待状态,以等待所述dsp完成中断;
40、响应于所述通信标志位被dsp置为成功,所述cpu读取相应的输出缓冲区。
41、更进一步地,所述方法还包括,
42、响应于所述通信标志位被dsp置为不成功,控制进入错误处理流程。
43、为实现上述目的,本申请还提供的基于iommu的dsp固件的系统芯片,包括,
44、内存;
45、数字信号处理器dsp,被配置有输入输出内存管理单元iommu和至少两个dsp固件;所述至少两个dsp固件,被配置为对应相同的dsp固件运行iova空间;和,
46、中央处理器cpu,被配置为基于相应的加载地址,将所述至少两个dsp固件,对应预加载至所述内存中;并响应于接收到dsp固件运行指令,将所述dsp固件运行指令相应的dsp固件的加载地址,映射至所述dsp固件运行iova空间,并确定相应的iova地址;
47、所述dsp,还被配置为基于所述iova地址运行所述待运行固件。
48、为实现上述目的,本申请还提供的车机,包括,如上所述的基于iommu本文档来自技高网...
【技术保护点】
1.一种基于IOMMU的DSP固件使用方法,其特征在于,应用于系统芯片;所述系统芯片,包括中央处理器CPU、数字信号处理器DSP和内存;其中,所述DSP被配置有输入输出内存管理单元IOMMU和至少两个DSP固件;在CPU端,所述方法包括,
2.根据权利要求1所述的方法,其特征在于,所述基于相应的加载地址,将所述至少两个DSP固件,对应预加载至所述内存中的步骤前,所述方法还包括,
3.根据权利要求2所述的方法,其特征在于,所述对所述DSP的IOVA空间进行固定分配,以分配出固定的DSP固件运行IOVA空间的步骤,包括,
4.根据权利要求2所述的方法,其特征在于,所述基于所述IOVA空间的所述固定分配,生成所述DSP固件的步骤包括,
5.根据权利要求4所述的方法,其特征在于,所述目标格式为可执行可链接文件格式。
6.根据权利要求1所述的方法,其特征在于,所述基于相应的加载地址,将所述至少两个DSP固件,对应预加载至所述内存中的步骤前,所述方法还包括,
7.根据权利要求6所述的方法,其特征在于,所述方法还包括,
...【技术特征摘要】
1.一种基于iommu的dsp固件使用方法,其特征在于,应用于系统芯片;所述系统芯片,包括中央处理器cpu、数字信号处理器dsp和内存;其中,所述dsp被配置有输入输出内存管理单元iommu和至少两个dsp固件;在cpu端,所述方法包括,
2.根据权利要求1所述的方法,其特征在于,所述基于相应的加载地址,将所述至少两个dsp固件,对应预加载至所述内存中的步骤前,所述方法还包括,
3.根据权利要求2所述的方法,其特征在于,所述对所述dsp的iova空间进行固定分配,以分配出固定的dsp固件运行iova空间的步骤,包括,
4.根据权利要求2所述的方法,其特征在于,所述基于所述iova空间的所述固定分配,生成所述dsp固件的步骤包括,
5.根据权利要求4所述的方法,其特征在于,所述目标格式为可执行可链接文件格式。
6.根据权利要求1所述的方法,其特征在于,所述基于相应的加载地址,将所述至少两个dsp固件,对应预加载至所述内存中的步骤前,所述方法还包括,
7.根据权利要求6所述的方法,其特征在于,所述方法还包括,
...【专利技术属性】
技术研发人员:吴斌,
申请(专利权)人:上海励驰半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。