DSP芯片的启动方法和启动装置与流程

文档序号:27079301发布日期:2021-10-24 11:31阅读:844来源:国知局
DSP芯片的启动方法和启动装置与流程
dsp芯片的启动方法和启动装置
技术领域
1.本公开涉及dsp芯片技术领域,特别涉及一种dsp芯片的启动方法和启动装置。


背景技术:

2.dsp(digital signal processing,数字信号处理)芯片一般运行速率较高,其ram(random access memory,随机存取存储器)中的应用程序也在高速运行中。dsp芯片只有在正常启动的情况下,才能实现对应的功能。dsp芯片的启动过程是指将应用程序加载到ram中的过程。
3.在相关技术中,通常会预先将dsp芯片的启动程序存储在dsp芯片内部的闪存(flash)中。由于在flash中程序的运行速率较慢,因此,当系统上电时,会将dsp芯片内部的flash中的启动程序复制搬移到dsp芯片内部的ram中,在ram中运行启动程序,引导启动应用程序,使应用程序重新加载到dsp芯片内部的ram中。
4.在上述启动过程中,若启动程序损坏,工作人员无法迅速准确知道启动程序中哪部分产生了问题,从而无法对启动程序进行快速修复,导致dsp芯片不能正常启动。若dsp芯片不能正常启动,则dsp芯片的其它所有功能均无法实现,设备易陷入瘫痪状态。


技术实现要素:

5.本公开实施例提供了一种dsp芯片的启动方法,可以使工作人员迅速准确知道启动程序中哪部分产生了问题,从而对启动程序进行快速修复,保证dsp芯片的正常启动。所述技术方案如下:
6.一方面,提供了一种dsp芯片的启动方法,所述启动方法包括:
7.启动第一级启动程序,所述第一级启动程序出厂固化在dsp芯片内部的闪存flash中,所述第一级启动程序用于引导启动第二级启动程序;
8.将所述第二级启动程序复制搬移到所述dsp芯片内部的随机存取存储器ram中,并在所述ram中启动所述第二级启动程序,所述第二级启动程序中具有底层硬件初始化函数,所述第二级启动程序用于引导启动第三级启动程序;
9.根据所述底层硬件初始化函数初始化所述dsp芯片的底层硬件系统,在所述dsp芯片的底层硬件系统初始化完成后,对所述dsp芯片的底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果;
10.将所述第三级启动程序复制搬移到所述ram中,并在所述ram中启动所述第三级启动程序,所述第三级启动程序中具有高层硬件初始化函数,所述第三级启动程序用于引导启动应用程序;
11.根据所述高层硬件初始化函数初始化所述dsp芯片的高层硬件系统,在所述dsp芯片的高层硬件系统初始化完成后,对所述dsp芯片的高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果;
12.将所述应用程序复制搬移到所述ram中,并在所述ram中启动所述应用程序。
13.可选地,所述dsp芯片外部的闪存flash中存储有多个第三级启动程序;
14.所述将所述第三级启动程序复制搬移到所述ram中,包括:
15.从所述dsp芯片外部的flash中存储的所述多个第三级启动程序中选取一个所述第三级启动程序复制到所述ram中。
16.可选地,所述从所述dsp芯片外部的flash中存储的所述多个第三级启动程序中选取一个所述第三级启动程序复制到所述ram中,包括:
17.校验所述多个第三级启动程序的完整性;
18.根据所述多个第三级启动程序的完整性校验结果、版本号和更新时间,从所述多个第三级启动程序中选取一个所述第三级启动程序复制到所述dsp芯片内的随机存取存储器ram中。
19.可选地,所述根据所述多个第三级启动程序模块的完整性校验结果、版本号和更新时间,从所述多个第三级启动程序中选取一个所述第三级启动程序复制到所述dsp芯片内的随机存取存储器ram中,包括:
20.从所述多个第三级启动程序中选取通过完整性校验、且版本号和更新时间最新的所述第三级启动程序启动。
21.可选地,所述启动方法还包括:
22.接收上位机发送的更新数据包;
23.将所述更新数据包写入到所述dsp芯片外部的flash中,以对所述dsp芯片外部flash中存储的目标启动程序模块进行更新,所述目标启动程序模块包括第二级启动程序和第三级启动程序中的至少一种。
24.可选地,所述启动方法还包括:
25.在对所述目标启动程序模块进行更新之后,对更新后的目标启动程序模块进行校验;
26.若校验失败,则向所述上位机发送校验失败信息。
27.另一方面,提供了一种dsp芯片的启动装置,所述启动装置包括:
28.第一程序启动模块,用于启动第一级启动程序,所述第一级启动程序出厂固化在dsp芯片内部的闪存flash中,所述第一级启动程序用于引导启动第二级启动程序;
29.第二程序启动模块,用于将所述第二级启动程序复制搬移到所述dsp芯片内部的随机存取存储器ram中,并在所述ram中启动所述第二级启动程序,所述第二级启动程序中具有底层硬件初始化函数,所述第二级启动程序用于引导启动第三级启动程序;
30.底层硬件初始化模块,用于根据所述底层硬件初始化函数初始化所述dsp芯片的底层硬件系统,在所述dsp芯片的底层硬件系统初始化完成后,对所述dsp芯片的底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果;
31.第三程序启动模块,将所述第三级启动程序复制搬移到所述ram中,并在所述ram中启动所述第三级启动程序,所述第三级启动程序中具有高层硬件初始化函数,所述第三级启动程序用于引导启动应用程序;
32.高层硬件初始化模块,用于根据所述高层硬件初始化函数初始化所述dsp芯片的高层硬件系统,在所述dsp芯片的高层硬件系统初始化完成后,对所述dsp芯片的高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果;
33.应用程序启动模块,用于将所述应用程序复制搬移到所述ram中,并在所述ram中启动所述应用程序。
34.可选地,所述dsp芯片外部的闪存flash中存储有多个第三级启动程序;
35.所述第三程序启动程序模块还包括:
36.程序选取子模块,用于从所述dsp芯片外部的flash中存储的所述多个第三级启动程序中选取一个所述第三级启动程序复制到所述dsp芯片内的随机存取存储器ram中;
37.存储子模块,用于将复制的所述第三级启动程序存储到所述dsp芯片内的随机存取存储器ram中。
38.可选地,所述程序选取子模块用于:
39.校验所述多个第三级启动程序的完整性;
40.根据所述多个第三级启动程序的完整性校验结果、版本号和更新时间,从所述多个第三级启动程序中选取一个所述第三级启动程序复制到所述dsp芯片内的随机存取存储器ram中。
41.可选地,所述启动装置还包括更新模块,所述更新模块用于:
42.接收上位机发送的更新数据包;
43.将所述更新数据包写入到所述dsp芯片外部的flash中,以对所述dsp芯片外部flash中存储的目标启动程序模块进行更新,所述目标启动程序模块包括第二级启动程序和第三级启动程序中的至少一种。
44.本公开实施例提供的技术方案带来的有益效果是:
45.通过将启动程序分成三级,其中第一级启动程序固化在dsp芯片内部,不会被更改,即不会损坏。第二级启动程序可以初始化底层硬件,在初始化完成后,对底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第二级启动程序是否损坏。同样地,第三级启动程序也可以对高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第三级启动程序是否损坏。这样工作人员通过上位机即可迅速准确知道启动程序中哪部分的启动程序产生了问题,从而可以对启动程序进行快速修复,保证dsp芯片的正常启动。
附图说明
46.为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1是本公开实施例提供的一种dsp芯片的启动方法流程图;
48.图2是本公开实施例提供的另一种dsp芯片的启动方法流程图;
49.图3是本公开实施例提供的一种dsp芯片中各启动程序的分级示意图;
50.图4是本公开实施例提供的一种dsp芯片的启动装置的结构框图。
具体实施方式
51.为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方
式作进一步地详细描述。
52.图1是本公开实施例提供的一种dsp芯片的启动方法流程图,如图1所示,该启动方法包括:
53.步骤101、启动第一级启动程序。
54.其中,第一级启动程序出厂固化在dsp芯片内部的闪存flash中,第一级启动程序用于引导启动第二级启动程序。dsp芯片内部包括闪存flash和随机存取存储器ram。
55.步骤102、将第二级启动程序复制搬移到dsp芯片内部的随机存取存储器ram中,并在ram中启动第二级启动程序。
56.其中,第二级启动程序中具有底层硬件初始化函数,第二级启动程序用于引导启动第三级启动程序。
57.步骤103、根据底层硬件初始化函数初始化dsp芯片的底层硬件系统,在dsp芯片的底层硬件系统初始化完成后,对dsp芯片的底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。
58.步骤104、将第三级启动程序复制搬移到ram中,并在ram中启动第三级启动程序。
59.其中,第三级启动程序中具有高层硬件初始化函数,第三级启动程序用于引导启动应用程序。
60.步骤105、根据高层硬件初始化函数初始化dsp芯片的高层硬件系统,在dsp芯片的高层硬件系统初始化完成后,对dsp芯片的高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。
61.步骤106、将应用程序复制搬移到ram中,并在ram中启动应用程序。
62.本公开实施例提供的启动方法中用到的第一级启动程序、第二级启动程序和第三级启动程序之间高度去耦合,以防止各模块之间相互影响。
63.本公开实施例通过将启动程序分成三级,其中第一级启动程序固化在dsp芯片内部,不会被更改,即不会损坏。第二级启动程序可以初始化底层硬件,在初始化完成后,对底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第二级启动程序是否损坏。同样地,第三级启动程序也可以对高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第三级启动程序是否损坏。这样工作人员通过上位机即可迅速准确知道启动程序中哪部分的启动程序产生了问题,从而可以对启动程序进行快速修复,保证dsp芯片的正常启动。
64.图2是本公开实施例提供的另一种dsp芯片的启动方法流程图,如图2所示,该启动方法包括:
65.步骤201、启动第一级启动程序。
66.其中,第一级启动程序出厂固化在dsp芯片内部的闪存flash中,第一级启动程序用于引导启动第二级启动程序。
67.可选地,第一级启动程序中具有第一启动引导函数,用于引导启动第二级启动程序。
68.示例性地,第一启动引导函数为指针跳转函数,可以让dsp的pc(program counte,程序计数器)指针指向第二级启动程序的入口地址。指针跳转函数可以为void jump_to_level2(void)函数。
69.在本公开实施例中,第一级启动程序即在芯片出厂时就被烧写到芯片内部的flash中,无法被任何手段进行擦除和更改。
70.步骤202、将第二级启动程序复制搬移到dsp芯片内部的随机存取存储器ram中,并在ram中启动第二级启动程序。
71.其中,将第二级启动程序搬移到芯片内部的ram中运行,可以提高程序运行的速度。
72.步骤203、根据底层硬件初始化函数初始化dsp芯片的底层硬件系统,在dsp芯片的底层硬件系统初始化完成后,对dsp芯片的底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。
73.其中,第二级启动程序中具有底层硬件初始化函数,第二级启动程序用于引导启动第三级启动程序。
74.示例性地,底层硬件初始化函数为void init_base_dev(void)函数。
75.可选地,dsp芯片的底层硬件系统包括dsp的核时钟,l1和l2缓存,片外flash、片外ram和调试串口等。
76.可选地,第二级启动程序中具有第二启动引导函数,用于引导启动第三级启动程序。
77.示例性地,第二启动引导函数为void jump_to_level2(void)函数。
78.在本公开实施例中,第二级启动程序存储在dsp芯片外部的flash中。第二级启动程序被密码保护,必须在输入正确密码取得相应的权限之后才能被更改。且第二级启动程序被配置为只能通过仿真器升级,不可以被其他任何方式擦除或覆盖。需要说明的是,第二级启动程序的代码量极少,且被密码保护,具有极端的安全性。
79.示例性地,可以先对第二级启动程序进行循环冗余校验(cyclic redundancy check,crc)算法的校验,校验和存储在flash中。下一次启动第二级启动程序时,再重新对第三级启动程序进行一次crc算法的校验,并将该次的校验和与上一次存储的校验和进行比对。如果两次的校验和不一致,则证明程序已经被损坏。
80.步骤204、将第三级启动程序复制搬移到ram中,并在ram中启动第三级启动程序。
81.其中,第三级启动程序中具有高层硬件初始化函数,第三级启动程序用于引导启动应用程序。
82.示例性地,高层硬件初始化函数为void init_high_dev(void)函数。
83.可选地,第三级启动程序中具有第三启动引导函数,用于引导启动应用程序。
84.示例性地,第三启动引导函数为void jump_to_app(void)函数。
85.示例性地,dsp芯片外部的闪存flash中存储有多个第三级启动程序。例如dsp芯片外部的闪存flash中存储有三个第三级启动程序。
86.则步骤204中将第三级启动程序复制搬移到ram中,可以包括:
87.从dsp芯片外部flash中存储的多个第三级启动程序中选取一个第三级启动程序复制到ram中。
88.在本公开实施例的一种实现方式中,从dsp芯片外部flash中存储的多个第三级启动程序中选取一个第三级启动程序复制到ram中,可以包括:
89.校验多个第三级启动程序的完整性;
90.根据多个第三级启动程序的完整性校验结果、版本号和更新时间,从多个第三级启动程序中选取一个第三级启动程序复制到dsp芯片内的ram中。
91.示例性地,可以从多个第三级启动程序中选取通过完整性校验、且版本号和更新时间最新的第三级启动程序启动。
92.在本公开实施例中,每个第三级启动程序会标识自己的版本号和更新时间。每个第三级启动程序均具备校验和,能够被检测完整性。
93.示例性地,可以先对第三级启动程序进行循环冗余校验(cyclic redundancy check,crc)算法的校验,校验和存储在flash中。下一次启动第三级启动程序时,再重新对第三级启动程序进行一次crc算法的校验,并将该次的校验和与上一次存储的校验和进行比对。如果两次的校验和不一致,则证明程序已经被损坏。
94.通过设计几个并行可相互替代的第三级启动程序,且多个第三级启动程序之间具有高度的去耦合性。当多个第三级启动程序中的一个第三级启动程序被损坏时,仍可启动其它第三级启动程序,保证了系统的稳定性,在系统可升级,用户可自由更改相关功能的同时,保证了系统的稳定性。即使出现更新过程中掉电,写入flash出错等极端情况,系统仍然能恢复到早期版本,正常启动。
95.步骤205、根据高层硬件初始化函数初始化dsp芯片的高层硬件系统,在dsp芯片的高层硬件系统初始化完成后,对dsp芯片的高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。
96.示例性地,dsp芯片的高层硬件系统至少包括网口、srio(serial rapid i/o,串行快速输入/输出)、pcie(peripheral component interconnect express,高速串行计算机扩展总线标准)、spi(software process improvement,软件过程改进)等等。
97.步骤206、将应用程序复制搬移到ram中,并在ram中启动应用程序。
98.需要说明的是,在本公开实施例中,应用程序即为应用层程序,应用层程序与上述第一级启动程序、第二级启动程序和第三级启动程序去耦和,应用层程序的更改不影响三级启动程序模块的运行。
99.步骤207、接收上位机发送的第一更新数据包,将第一更新数据包写入到dsp芯片外部的flash中,以对第二级启动程序进行更新。
100.示例性地,第一更新数据包为第二级启动程序的二进制代码。
101.步骤208、在第二级启动程序进行更新之后,对更新后的第二级启动程序进行校验。
102.若校验失败,则发送第一校验失败信息至上位机。若校验成功,则继续执行下一步骤。
103.步骤209、接收上位机发送的第二更新数据包,将第二更新数据包写入到dsp芯片外部的flash中,以对多个第三级启动程序中的至少一个第三级启动程序进行更新。
104.示例性地,第二更新数据包为第三级启动程序的二进制代码。
105.步骤210、在多个第三级启动程序进行更新之后,对更新后的多个第三级启动程序进行校验。
106.若校验失败,则发送第二校验失败信息至上位机。若校验成功,则完成更新。
107.需要说明的是,在本公开实施例中,步骤207和步骤208、以及步骤209和步骤210均
为可选步骤。上述可选步骤在步骤206后执行,即在dsp芯片启动后执行。本公开实施例对此不做限制。
108.此时,即使在程序更新过程中出现掉电,第二级启动程序和第三级启动程序被损坏,dsp芯片外部的flash中仍然存储有更新前的版本的程序。即仍然可以通过dsp芯片外部的flash中存储的第二级启动程序和第三级启动程序启动dsp芯片,而不会影响dsp芯片的启动过程。且本公开实施例将需要频繁更新的第二级启动程序和第三级启动程序存储在dsp芯片外部的闪存flash中,从而可以减少对存储在dsp芯片内部flash中的启动程序的读取,大大减小dsp芯片内部的flash损坏的可能性。
109.本公开实施例通过将启动程序分成三级,其中第一级启动程序固化在dsp芯片内部,不会被更改,即不会损坏。第二级启动程序可以初始化底层硬件,在初始化完成后,对底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第二级启动程序是否损坏。同样地,第三级启动程序也可以对高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第三级启动程序是否损坏。这样工作人员通过上位机即可迅速准确知道启动程序中哪部分的启动程序产生了问题,从而可以对启动程序进行快速修复,保证dsp芯片的正常启动。
110.图3是本公开实施例提供的一种dsp芯片中各启动程序的分级示意图,如图3所示,第一级启动程序301、第二级启动程序302、第三级启动程序303和应用程序304依次按序启动。
111.图4是本公开实施例提供的一种dsp芯片的启动装置的结构框图,如图4所示,该启动装置400包括第一程序启动模块401、第二程序启动模块402、底层硬件初始化模块403、第三程序启动模块404、高层硬件初始化模块405和应用程序启动模块406。
112.第一程序启动模块401,用于启动第一级启动程序,第一级启动程序出厂固化在dsp芯片内部的闪存flash中,第一级启动程序用于引导启动第二级启动程序;
113.第二程序启动模块402,用于将第二级启动程序复制搬移到dsp芯片内部的随机存取存储器ram中,并在ram中启动第二级启动程序,第二级启动程序中具有底层硬件初始化函数,第二级启动程序用于引导启动第三级启动程序;
114.底层硬件初始化模块403,用于根据底层硬件初始化函数初始化dsp芯片的底层硬件系统,在dsp芯片的底层硬件系统初始化完成后,对dsp芯片的底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果;
115.第三程序启动模块404,用于将第三级启动程序复制搬移到ram中,并在ram中启动第三级启动程序,第三级启动程序中具有高层硬件初始化函数,第三级启动程序用于引导启动应用程序;
116.高层硬件初始化模块405,用于根据高层硬件初始化函数初始化dsp芯片的高层硬件系统,在dsp芯片的高层硬件系统初始化完成后,对dsp芯片的高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果;
117.应用程序启动模块406,用于将应用程序复制搬移到ram中,并在ram中启动应用程序。
118.可选地,dsp芯片外部的flash中存储有多个第三级启动程序;
119.第三程序启动模块404还包括:
120.程序选取子模块4041,用于从dsp芯片外部的flash中存储的多个第三级启动程序中选取一个第三级启动程序复制到dsp芯片内的随机存取存储器ram中;
121.存储子模块4042,用于将复制的第三级启动程序存储到dsp芯片内的随机存取存储器ram中。
122.可选地,程序选取子模块4041采用如下方式实现从dsp芯片外部的flash中存储的多个第三级启动程序中选取一个第三级启动程序复制到dsp芯片内的随机存取存储器ram中:
123.校验多个第三级启动程序的完整性;
124.根据多个第三级启动程序的完整性校验结果、版本号和更新时间,从多个第三级启动程序中选取一个第三级启动程序复制到dsp芯片内的随机存取存储器ram中。
125.示例性地,可以从多个第三级启动程序中选取通过完整性校验、且版本号和更新时间最新的第三级启动程序启动。
126.可选地,该启动装置400还包括:
127.第一更新模块407,用于接收上位机发送的第一更新数据包,将第一更新数据包写入到dsp芯片外部的flash中,对第二级启动程序进行更新。
128.可选地,该启动装置400还包括:
129.第一校验模块408,用于在第二级启动程序进行更新之后,对更新后的第二级启动程序进行校验;若校验失败,则发送第一校验失败信息至上位机。
130.可选地,该启动装置400还包括:
131.第二更新模块409,用于接收上位机发送的第二更新数据包,将第二更新数据包写入到dsp芯片外部的flash中,对多个第三级启动程序中的至少一个第三级启动程序进行更新。
132.可选地,该启动装置400还包括:
133.第二校验模块410,用于在多个第三级启动程序进行更新之后,对更新后的多个第三级启动程序进行校验;若校验失败,则发送第二校验失败信息至上位机。
134.本公开实施例通过将启动程序分成三级,其中第一级启动程序固化在dsp芯片内部,不会被更改,即不会损坏。第二级启动程序可以初始化底层硬件,在初始化完成后,对底层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第二级启动程序是否损坏。同样地,第三级启动程序也可以对高层硬件系统进行扫描和诊断,并向上位机汇报扫描和诊断结果。上位机即可通过扫描和诊断结果,判断第三级启动程序是否损坏。这样工作人员通过上位机即可迅速准确知道启动程序中哪部分的启动程序产生了问题,从而可以对启动程序进行快速修复,保证dsp芯片的正常启动。
135.需要说明的是:上述实施例提供的启动装置在进行dsp芯片的启动时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的启动装置与启动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
136.以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1