CN108153536A - 一种动态调整ram空间的dsp在线升级方法 - Google Patents
一种动态调整ram空间的dsp在线升级方法 Download PDFInfo
- Publication number
- CN108153536A CN108153536A CN201711380420.7A CN201711380420A CN108153536A CN 108153536 A CN108153536 A CN 108153536A CN 201711380420 A CN201711380420 A CN 201711380420A CN 108153536 A CN108153536 A CN 108153536A
- Authority
- CN
- China
- Prior art keywords
- code
- upgrade
- dsp
- ram
- flash
- 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.)
- Granted
Links
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Abstract
本发明涉及一种动态调整RAM空间的DSP在线升级方法,包括步骤1、对于程序代码进行分组;步骤2、分配RAM存储空间;步骤3、DSP上电后,根据升级指令,动态调整RAM存储空间;步骤4、进入在线升级流程,分包传输升级代码直到在线升级完毕。本发明在RAM空间较小的老旧DSP上实现了程序在线升级;无需片外RAM存储器或者FPGA,节省成本及硬件资源,同时可以减少硬件电路尺寸;可以对原来不具备在线升级功能的产品进行改进而无需重新设计电路。
Description
技术领域
本发明属于信号处理技术领域,具体而言涉及一种动态调整RAM空间的DSP在线升级方法。
背景技术
DSP程序在线升级技术是一种不使用仿真器对系统程序进行升级维护技术,通常通过串口或数据总线将待升级程序发送给DSP,DSP接收到代码后自己调用FLASH擦写程序对FLASH进行擦除再编译。该技术能够简化产品生产调试流程,减少产品拆装次数,增强产品维护性。
近年来各种DSP在线升级技术主要是基于以下硬件平台实现:
1)片内RAM空间较大的新型处理器(通常大于64KB);
2)DSP外挂较大容量RAM存储器的系统;
3)DSP外挂FPGA的系统。
以上系统存储空间大,能够提供足够的程序运行空间及升级代码缓存空间。能够将升级代码全部接收并缓存到RAM或FPGA中后,再烧写入DSP的内部FLASH中,算法实现较简单。
在一些领域,老旧型号DSP仍有大量应用,这些DSP由于以下原因较难实现程序在线升级:
1)设计初期由于成本及体积限制,硬件电路上并没有大容量的外部RAM存储器及FPGA;
2)DSP片内RAM存储空间小(通常只有几KB或十几KB);
3)升级时由于FLASH中的代码会被擦除,所以升级必须的FLASH擦写函数和外部通讯函数必须从FLASH中拷贝至RAM中运行;
4)程序的主流程运行也需要占用RAM空间。为了保证程序代码的实时运行,必须将尽可能多的代码拷贝到RAM中运行,甚至需要占用全部的RAM空间。
因此,急需一种能够在不改动硬件的前提下,利用有限片内存储空间实现老旧型号DSP程序在线升级及程序RAM内实时运行的方法。
发明内容
为了解决现有技术中的上述技术问题,本发明提出了一种动态调整RAM空间的DSP在线升级方法,实现老旧型号DSP在不改动硬件情况下的在线升级。
本发明的技术方案如下:
一种动态调整RAM空间的DSP在线升级方法,包括以下步骤:
步骤1、对升级程序代码按照功能和是否占用RAM空间进行分组;
步骤2、根据程序代码的分组情况分配RAM存储空间;
步骤3、DSP上电后,从片内FLASH中拷贝底层代码到RAM中运行,判断是否有升级指令,动态调整RAM存储空间;
步骤4、进入在线升级流程,开始分包传输升级代码至RAM的升级代码缓冲区,并擦除FLASH中的原代码,将升级代码写入FLASH中,直到在线升级完毕。
进一步地,所述程序代码分为三组:
1)底层代码,所述代码为必须拷贝到RAM中运行的代码,包括FLASH擦写代码和对外通讯代码;
2)核心代码,所述代码为在RAM中运行实时性要求较高的代码;
3)其它代码,所述代码为留在FLASH中的代码。
进一步地,所述RAM存储空间分为三个区:
底层代码运行区,运行程序的底层代码,其占用的RAM空间的大小和位置固定;
核心代码运行区,运行程序的核心代码;
升级代码缓冲区,缓冲待升级的程序代码。
进一步地,动态调整RAM存储空间包括:
当判断程序代码不升级时,RAM中除底层代码运行区外,所有的剩余空间均设置为核心代码运行区;
当判断程序代码升级时,RAM中除底层代码运行区外,所有的剩余空间均设置为升级代码缓冲区,用来进行升级代码缓冲。
进一步地,步骤3具体包括以下子步骤:
1)将底层代码中的对外通讯代码拷贝到RAM中运行,建立DSP芯片与外界的通讯;
2)判断是否有升级指令,是,则进入代码升级,通过串口接收升级代码,并调用底层代码中的FLASH擦写代码用来对芯片FLASH进行擦写,将待升级代码写入FLASH;否,则进入正常工作流程;
3)根据升级指令动态调整RAM存储空间;
当未接收到升级指令时,进行正常工作流程,关闭升级代码缓冲区,将系统剩余全部的RAM空间用来运行程序;
当接收到升级指令时,则切换到在线升级流程,将RAM中剩余空间全部转为升级代码缓冲区,准备接收待升级程序。
进一步地,步骤4具体包括以下子步骤:
1)进入在线升级流程后,对待升级代码数据进行分包;
2)对分包数据再进行打包;
3)将再打包数据发送到RAM的升级代码缓冲区中;
4)DSP对该包数据进行校验,如果校验通过,则调用FLASH擦写程序擦除FLASH中的原代码,将升级代码写入FLASH中,操作成功后DSP向上位机反馈操作成功标志位,上位机开始发送第二包与缓冲区大小所述缓冲区大小相同的待升级代码,如此往复直至所有代码烧写完毕;如果校验失败,则不调用FLASH擦写程序,DSP向上位机反馈接收错误标志位,上位机重发本包数据。
进一步地,待升级代码分包数据的大小与升级代码缓冲区大小相同。
进一步地,所述打包方法为在分包数据的头添加帧头、数据长度和包序号;在分包数据的尾添加数据校验位;所述数据校验位为帧头、数据长度、包序号和分包数据所有字节的累加和。
进一步地,所述校验的方法为:DSP将接收到数据包的帧头、数据长度、包序号和分包数据所有字节进行累加,判断累加和是否与该包的数据校验位相同,并判断包序号是否与待烧写的数据包序号一致。
进一步地,所述在线升级方法适用于TMS320x28xx系列DSP。
根据上述技术方案,本发明的有益效果为:
在RAM空间较小的老旧DSP上实现了程序在线升级;
无需片外RAM存储器或者FPGA,节省成本及硬件资源,同时可以减少硬件电路尺寸;
可以对原来不具备在线升级功能的产品进行改进而无需重新设计电路。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为动态调整RAM空间的DSP在线升级方法流程图。
具体实施方式
下面结合附图对本发明具体实施方式进行详细说明。
一种动态调整RAM空间的DSP在线升级方法,如图1所示,包括以下步骤:
步骤1、对于程序代码大于RAM空间的DSP系统,依据程序代码功能和是否占用RAM空间对代码进行分组;
具体将程序代码分为三部分:
1)底层代码,所述代码为必须拷贝到RAM中运行的代码,包括FLASH擦写代码和对外通讯代码;
2)核心代码,所述代码为在RAM中运行实时性要求较高的代码;
3)其它代码,所述代码为留在FLASH中的代码;
步骤2、根据程序代码的分组情况分配RAM存储空间;
根据步骤1的分组情况,确定需要在RAM中运行的代码为底层代码和核心代码,DSP在线升级过程中,还需要在RAM中为升级代码开辟缓冲区;故最终将RAM存储空间分为以下三个区:
1)底层代码运行区,运行程序的底层代码,其占用的RAM空间的大小和位置固定,占用后不再变化;
核心代码运行区,运行程序的核心代码;
升级代码缓冲区;缓冲待升级的程序代码;
为了既能保证程序的实时运行,又能提高代码升级效率,减少升级程序数据包的拆分,本发明采用动态调配RAM空间的方法实现升级,
动态调整的原则是“空间共享,用者通吃”,以保证程序运行及代码升级的最大效率。
当判断程序代码不升级时,RAM中除底层代码运行区外,所有的剩余空间均设置为核心代码运行区;
当判断程序代码升级时,RAM中除底层代码运行区外,所有的剩余空间均设置为升级代码缓冲区,用来进行升级代码缓冲。
步骤3、DSP上电后,从片内FLASH中拷贝底层代码到RAM中运行,判断是否有升级指令,动态调整RAM存储空间;
具体为:
1)将底层代码中的对外通讯代码拷贝到RAM中运行,建立DSP芯片与外界的通讯,
2)判断是否有升级指令,是,则进入代码升级,通过串口接收升级代码,并调用底层代码中的FLASH擦写代码用来对芯片FLASH进行擦写,将待升级代码写入FLASH;否,则进入正常工作流程。
3)动态调整RAM存储空间;
当未接收到升级指令时,进行正常工作流程,关闭升级代码缓冲区,将系统剩余全部的RAM空间用来运行程序;
当接收到升级指令时,则切换到在线升级流程,将RAM中剩余空间全部转为升级代码缓冲区,准备接收待升级程序。
步骤4、进入在线升级流程,开始分包传输升级代码RAM的升级代码缓冲区,并擦除FLASH中的原代码,将升级代码写入FLASH中,直到在线升级完毕;
具体为:
1)进入在线升级流程后,依据升级代码缓冲区大小对待升级代码数据进行分包;
2)对分包数据再进行打包,所述打包为在分包数据的头添加帧头、数据长度和包序号;在分包数据的尾添加数据校验位;所述数据校验位为帧头、数据长度、包序号和分包数据所有字节的累加和;
3)将再打包数据发送到RAM的升级代码缓冲区中;
2)DSP对该包数据进行校验,如果校验通过,则调用FLASH擦写程序擦除FLASH中的原代码,将升级代码写入FLASH中,操作成功后DSP向上位机反馈操作成功标志位,上位机开始发送第二包与缓冲区大小所述缓冲区大小相同的待升级代码,如此往复直至所有代码烧写完毕;如果校验失败,则不调用FLASH擦写程序,DSP向上位机反馈接收错误标志位,上位机重发本包数据;
所述校验的方法为:DSP将接收到数据包的帧头、数据长度、包序号和分包数据所有字节进行累加,判断累加和是否与该包的数据校验位相同,并判断包序号是否与待烧写的数据包序号一致。
综上所述,本发明设计的动态调整RAM空间的DSP在线升级方法,在RAM空间较小的老旧DSP上实现程序在线升级;无需片外RAM存储器或者FPGA,节省成本及硬件资源,同时可以减少硬件电路尺寸;可以对原来不具备在线升级功能的产品进行改进而无需重新设计电路。
上述具体实施方式仅用于解释和说明本发明的技术方案,但并不能构成对权利要求的保护范围的限定。本领域技术人员应当清楚,在本发明的技术方案的基础上做任何简单的变形或替换而得到的新的技术方案,均将落入本发明的保护范围之内。
Claims (10)
1.一种动态调整RAM空间的DSP在线升级方法,其特征在于,包括以下步骤:
步骤1、对升级程序代码按照功能和是否占用RAM空间进行分组;
步骤2、根据程序代码的分组情况分配RAM存储空间;
步骤3、DSP上电后,从片内FLASH中拷贝底层代码到RAM中运行,判断是否有升级指令,动态调整RAM存储空间;
步骤4、进入在线升级流程,开始分包传输升级代码至RAM的升级代码缓冲区,并擦除FLASH中的原代码,将升级代码写入FLASH中,直到在线升级完毕。
2.根据权利要求1所述的DSP在线升级方法,其特征在于,
所述程序代码分为三组:
1)底层代码,所述代码为必须拷贝到RAM中运行的代码,包括FLASH擦写代码和对外通讯代码;
2)核心代码,所述代码为在RAM中运行实时性要求较高的代码;
3)其它代码,所述代码为留在FLASH中的代码。
3.根据权利要求2所述的DSP在线升级方法,其特征在于,
所述RAM存储空间分为三个区:
底层代码运行区,运行程序的底层代码,其占用的RAM空间的大小和位置固定;
核心代码运行区,运行程序的核心代码;
升级代码缓冲区,缓冲待升级的程序代码。
4.根据权利要求1所述的DSP在线升级方法,其特征在于,
动态调整RAM存储空间包括:
当判断程序代码不升级时,RAM中除底层代码运行区外,所有的剩余空间均设置为核心代码运行区;
当判断程序代码升级时,RAM中除底层代码运行区外,所有的剩余空间均设置为升级代码缓冲区,用来进行升级代码缓冲。
5.根据权利要求1所述的DSP在线升级方法,其特征在于,步骤3具体包括以下子步骤:
1)将底层代码中的对外通讯代码拷贝到RAM中运行,建立DSP芯片与外界的通讯;
2)判断是否有升级指令,是,则进入代码升级,通过串口接收升级代码,并调用底层代码中的FLASH擦写代码用来对芯片FLASH进行擦写,将待升级代码写入FLASH;否,则进入正常工作流程;
3)根据升级指令动态调整RAM存储空间;
当未接收到升级指令时,进行正常工作流程,关闭升级代码缓冲区,将系统剩余全部的RAM空间用来运行程序;
当接收到升级指令时,则切换到在线升级流程,将RAM中剩余空间全部转为升级代码缓冲区,准备接收待升级程序。
6.根据权利要求5所述的DSP在线升级方法,其特征在于,步骤4具体包括以下子步骤:
1)进入在线升级流程后,对待升级代码数据进行分包;
2)对分包数据再进行打包;
3)将再打包数据发送到RAM的升级代码缓冲区中;
4)DSP对该包数据进行校验,如果校验通过,则调用FLASH擦写程序擦除FLASH中的原代码,将升级代码写入FLASH中,操作成功后DSP向上位机反馈操作成功标志位,上位机开始发送第二包与缓冲区大小所述缓冲区大小相同的待升级代码,如此往复直至所有代码烧写完毕;如果校验失败,则不调用FLASH擦写程序,DSP向上位机反馈接收错误标志位,上位机重发本包数据。
7.根据权利要求6所述的DSP在线升级方法,其特征在于,待升级代码分包数据的大小与升级代码缓冲区大小相同。
8.根据权利要求6所述的DSP在线升级方法,其特征在于,所述打包方法为在分包数据的头添加帧头、数据长度和包序号;在分包数据的尾添加数据校验位;所述数据校验位为帧头、数据长度、包序号和分包数据所有字节的累加和。
9.根据权利要求6所述的DSP在线升级方法,其特征在于,所述校验的方法为:DSP将接收到数据包的帧头、数据长度、包序号和分包数据所有字节进行累加,判断累加和是否与该包的数据校验位相同,并判断包序号是否与待烧写的数据包序号一致。
10.根据权利要求1-9任一所述的DSP在线升级方法,其特征在于,所述在线升级方法适用于TMS320x28xx系列DSP。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711380420.7A CN108153536B (zh) | 2017-12-20 | 2017-12-20 | 一种动态调整ram空间的dsp在线升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711380420.7A CN108153536B (zh) | 2017-12-20 | 2017-12-20 | 一种动态调整ram空间的dsp在线升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153536A true CN108153536A (zh) | 2018-06-12 |
CN108153536B CN108153536B (zh) | 2020-12-04 |
Family
ID=62463993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711380420.7A Active CN108153536B (zh) | 2017-12-20 | 2017-12-20 | 一种动态调整ram空间的dsp在线升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153536B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358891A (zh) * | 2018-09-18 | 2019-02-19 | 中国船舶重工集团公司第七〇九研究所 | 一种嵌入式控制器的dsp软件升级方法及系统 |
CN109445705A (zh) * | 2018-10-29 | 2019-03-08 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
CN111459517A (zh) * | 2020-03-30 | 2020-07-28 | 中国电子科技集团公司第五十四研究所 | 一种光纤环网架构下的主从设备在线程序升级方法 |
CN112241161A (zh) * | 2020-10-22 | 2021-01-19 | 贝思特门机(嘉兴)有限公司 | 一种门机控制器软件升级方式 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040065021A (ko) * | 2003-01-13 | 2004-07-21 | 엘지전자 주식회사 | 휴대단말기의 디에스피 송수신부 구성 및 방법 |
CN101957764A (zh) * | 2010-08-02 | 2011-01-26 | 珠海许继电气有限公司 | 一种远方终端程序远程更新的方法 |
CN106648803A (zh) * | 2016-12-30 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种dsp芯片在线升级方法 |
-
2017
- 2017-12-20 CN CN201711380420.7A patent/CN108153536B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040065021A (ko) * | 2003-01-13 | 2004-07-21 | 엘지전자 주식회사 | 휴대단말기의 디에스피 송수신부 구성 및 방법 |
CN101957764A (zh) * | 2010-08-02 | 2011-01-26 | 珠海许继电气有限公司 | 一种远方终端程序远程更新的方法 |
CN106648803A (zh) * | 2016-12-30 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种dsp芯片在线升级方法 |
Non-Patent Citations (2)
Title |
---|
朱艳芳等: "一种基于RS422的DSP应用程序的在线升级方法", 《航天制造技术》 * |
汪晶晶等: "基于串口通信的DSP应用程序在线升级方法", 《微型机与应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358891A (zh) * | 2018-09-18 | 2019-02-19 | 中国船舶重工集团公司第七〇九研究所 | 一种嵌入式控制器的dsp软件升级方法及系统 |
CN109358891B (zh) * | 2018-09-18 | 2022-03-01 | 中国船舶重工集团公司第七一九研究所 | 一种嵌入式控制器的dsp软件升级方法及系统 |
CN109445705A (zh) * | 2018-10-29 | 2019-03-08 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
CN109445705B (zh) * | 2018-10-29 | 2022-03-22 | 湖南国科微电子股份有限公司 | 固件认证方法及固态硬盘 |
CN111459517A (zh) * | 2020-03-30 | 2020-07-28 | 中国电子科技集团公司第五十四研究所 | 一种光纤环网架构下的主从设备在线程序升级方法 |
CN112241161A (zh) * | 2020-10-22 | 2021-01-19 | 贝思特门机(嘉兴)有限公司 | 一种门机控制器软件升级方式 |
Also Published As
Publication number | Publication date |
---|---|
CN108153536B (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108153536A (zh) | 一种动态调整ram空间的dsp在线升级方法 | |
CN103685399B (zh) | 一种登录类Unix虚拟容器的方法、装置和系统 | |
CN109240730B (zh) | 一种单片机在线升级方法和系统 | |
CN105138382B (zh) | 一种Android系统升级的方法及终端 | |
CN100462921C (zh) | 用于简档形成接口辅助类加载的方法和系统 | |
CN106569847A (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
JP2839201B2 (ja) | 仮想計算機システム | |
CN104965700B (zh) | VxWorks操作系统下实现驱动SPI设备的方法和系统 | |
CN106648803A (zh) | 一种dsp芯片在线升级方法 | |
CN103023879A (zh) | 一种基于高速缓存的数据中心间广域数据同步方法 | |
CN104102518A (zh) | 一种双cpu系统及其程序升级方法 | |
CN104820586A (zh) | 一种航天器嵌入式软件在轨维护方法 | |
CN107870879A (zh) | 一种数据搬移方法、加速器板卡、主机及数据搬移系统 | |
JPWO2010073444A1 (ja) | バスコントローラ及び初期ブートプログラムのパッチ方法 | |
CN106843954A (zh) | 传感器节点远程升级方法 | |
CN110990133B (zh) | 边缘计算服务迁移方法、装置、电子设备及介质 | |
CN106897090A (zh) | 一种嵌入式设备程序升级方法及系统 | |
CN103885807A (zh) | 设备程序更新方法 | |
CN111490946B (zh) | 基于OpenCL框架的FPGA连接实现方法及装置 | |
CN106569833A (zh) | 一种具有二级boot的dsp程序在线升级方法 | |
CN101963911B (zh) | 补丁生成方法和装置 | |
CN113342471A (zh) | 虚拟机迁移方法、系统及电子设备 | |
CN111506334A (zh) | 一种dsp芯片程序在线升级方法及系统 | |
CN110046114B (zh) | 基于pcie协议的dma控制器及dma数据传输方法 | |
KR20210041972A (ko) | 차량 ecu 소프트웨어 업데이트 장치 |
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 |