linux串口烧写dsp,一种通过串口进行DSP程序烧制的方法与流程

本发明提出了一种通过串口进行DSP(TMS320F2812)用户程序烧写的方法,解决了现有技术中 DSP程序升级不便的问题。该方法配置简单,仅需一个GPIO,使用RS422串口提高传输距离和可靠性,适用于外场环境。Bootloader程序固化在Flash中,通过上位机发送控制指令进行连接、擦除和传输,实现用户程序的更新。
摘要由CSDN通过智能技术生成

本发明属于信息

技术领域:

,尤其涉及一种通过串口进行DSP用户程序烧写的方法。

背景技术:

:TMS320F2812DSP是一款高性能微控制器,被大量用于机载和弹上设备,能够实现复杂的控制算法。但是由于外场场地、空间等限制,DSP系统一般安装在复杂、封闭的环境,程序升级非常不便。目前较多采用的为以下两种方式:一是利用CCS集成的Flash烧写插件进行程序烧写。该方法简单易行,可直接烧写编译后生成的.out文件,无需进行格式转化。但是通过CCS集成的Flash烧写插件烧写程序必须连接JTAG仿真器,常常受空间和传输距离限制,并不适合安装复杂、封闭的外场环境。二是通过F2812的SCI串口烧写;该方法配置F2812从SCIA启动,通过SDFlash软件烧写片内Flash。该方法是通过串口烧写无需连接JTAG仿真器,但是配置Bootloader需要4个GPIOPin(GPIOF2、GPIOF3、GPIOF4、GPIOF12、),并且GPIOF4与SCITXDA复用,启动配置比较复杂。技术实现要素:本发明旨在解决上述问题,提供一种配制简单、传输可靠的通过串口进行DSP用户程序烧写的方法。本发明所述的通过串口进行DSP用户程序烧写的方法,包括如下步骤:(1)将DSP配置为从Flash启动;(2)将Flash划分为若干扇区,选取其中任一扇区固化Bootloader程序;其余扇区用于存放用户程序数据;(3)将上位机通过串口与DSP相连接进行数据通信;通过串口与DSP通讯并发送用户程序数据;(4)执行固化在Flash中的Bootloader程序,及上位机传送的控制指令,直至用户程序数据烧写完成。本发明所述的通过串口进行DSP用户程序烧写的方法,步骤(3)所述串口为RS422。本发明所述的通过串口进行DSP用户程序烧写的方法,步骤(1)所述DSP为TMS320F2812。本发明所述的通过串口进行DSP用户程序烧写的方法,所述控制指令包括连接指令、擦除指令和传输指令。根据权利要求4所述的通过串口进行DSP用户程序烧写的方法,传输指令采用小端传输模式,多字节数据传送时低字节在前,高字节在后;校验和保证该帧数据相加低8位为0。本发明所述的通过串口进行DSP用户程序烧写的方法,只需要一个GPIO进行配置,提高了程序烧写的灵活性;使用RS422进行数据传输可增加传输距离和数据传输可靠性,满足外场程序更新需求。附图说明图1为本发明所述Bootloader程序流程示意图。具体实施方式下面结合附图及实施例对本发明所述通过串口进行DSP用户程序烧写的方法进行详细说明。本实施例选用TMS320F2812,通过RS422进行用户程序的烧写,上位机采用PC机。将Bootloader程序固化在片内Flash的FLASHA扇区,Bootloader程序的流程如图1所示;由于F1ash2812_API函数不能在Flash中运行去擦出、烧写其他扇区,因此需将该部分程序Copy至RAM执行,Bootloader程序CMD文件设计如下:MEMORY{PAGE0:FLASHA:origin=0x3F6000,length=0x001F80CSM_RSVD:origin=0x3F7F80,length=0x000076BEGIN:origin=0x3F7FF6,length=0x000002CSM_PWL:origin=0x3F7FF8,length=0x000008ROM:origin=0x3FF000,length=0x000FC0RESET:origin=0x3FFFC0,length=0x000002VECTORS:origin=0x3FFFC2,length=0x00003EPAGE1:RAMM0:origin=0x000000,length=0x000400RAMM1:origin=0x000400,length=0x000400RAML1:origin=0x009000,length=0x001000FLASHB:origin=0x3F4000,length=0x002000RAMH0:origin=0x3F8000,length=0x002000}SECTIONS{.cinit:>FLASHAPAGE=0.pinit:>FLASHAPAGE=0.text:>FLASHAPAGE=0Codestart:>BEGINPAGE=0Flash28_API:{-lFlash2812_API_V210.lib(.econst)-lFlash2812_API_V210.lib(.text)}LOAD=FLASHA,RUN=RAML0,LOAD_START(_Flash28_API_LoadStart),LOAD_END(_Flash28_API_LoadEnd),RUN_START(_Flash28_API_RunStart),PAGE=0Ramfuncs:LOAD=FLASHA,RUN=RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE=0Csmpasswds:>CSM_PWLPAGE=0csm_rsvd:>CSM_RSVDPAGE=0.stack:>RAMM0PAGE=1.ebss:>RAML1PAGE=1.esysmem:>RAMH0PAGE=1.econst:>FLASHAPAGE=0.switch:>FLASHAPAGE=0.reset:>RESET,PAGE=0,TYPE=DSECTVectors:>VECTORSPAGE=0,TYPE=DSECT}程序入口为BEGIN,地址为Flash启动地址0x3F7FF6。用户程序数据固化至在片内Flash的FLASHG扇区,用户程序入口为0x3E0000,用户程序CMD文件设计如下:MEMORY{PAGE0:FLASHG:origin=0x3E0002,length=0x003FFECSM_RSVD:origin=0x3F7F80,length=0x000076BEGIN:origin=0x3E0000,length=0x000002CSM_PWL:origin=0x3F7FF8,length=0x000008ROM:origin=0x3FF000,length=0x000FC0RESET:origin=0x3FFFC0,length=0x000002VECTORS:origin=0x3FFFC2,length=0x00003EPAGE1:RAMM0:origin=0x000000,length=0x000400RAMM1:origin=0x000400,length=0x000400RAML1:origin=0x009000,length=0x001000FLASHB:origin=0x3F4000,length=0x002000RAMH0:origin=0x3F8000,length=0x002000}SECTIONS{.cinit:>FLASHGPAGE=0.pinit:>FLASHGPAGE=0.text:>FLASHGPAGE=0Codestart:>BEGINPAGE=0Ramfuncs:LOAD=FLASHG,RUN=RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE=0Csmpasswds:>CSM_PWLPAGE=0csm_rsvd:>CSM_RSVDPAGE=0.stack:>RAMM0PAGE=1.ebss:>RAML1PAGE=1.esysmem:>RAMH0PAGE=1.econst:>FLASHGPAGE=0.switch:>FLASHGPAGE=0.reset:>RESET,PAGE=0,TYPE=DSECTVectors:>VECTORSPAGE=0,TYPE=DSECT}上位机使用hex2000将编译生成的.out文件转换为.hex文件,通过串口与下位机通讯并发送程序数据,命令如下:hex2000.exexxx.out–x-mapxxx_hex.map-oxxx.hex-memwidth16-romwidth16Hex文件使用ExtendedTektronixObjectFormat文件格式(-x选项),具体格式分析如下:%2A6E48003E23A61A0501FF761AF6077700FF690006%:Headercharacter2A:Blocklength(minusthe%)6:Blocktype(Data)E4:Checksum8:Lengthofloadaddress003E23A6:Loadaddress1A0501FF761AF6077700FF690006:Objectcode上位机的控制指令包括连接指令、擦除指令和传输指令,具体如下:1)连接指令:上位机发送0x10,下位机回送0x1A。2)擦除指令:上位机发送0xA5、0x5A,下位机回送0x2A表示擦除成功、0x25表示擦除失败。3)传输指令:上位机发送数据格式如下表:帧头1帧头2数据长度烧写地址数据校验和0xAA0x551字节4字节N字节1字节数据长度为帧总长度;采用小端传输模式,多字节数据传送时低字节在前,高字节在后;校验和保证该帧数据相加低8位为0。下位机回送0xAA表示烧写成功、0x35表示烧写失败、0x45表示校验错误。使用这种串口烧写方法外部只需要1个GPIO进行配置,提高了程序烧写的灵活性;使用RS422进行数据传输可增加传输距离和数据传输可靠性,满足外场程序更新需求。除本实施例所具例外,还可以根据需求更改Bootloader中对外接口模块,采用Can、SPI、USB、以太网、无线等接口进行程序数据传输。当前第1页1&nbsp2&nbsp3&nbsp

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值