This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP2812远程数据更新



最近在搞DSP2812的远程更新Flash程序,在网上查找了一些资料,都只是说用串口下载然后远程传输,但中间的具体细节和关键技术都没有说清楚,请教一下各位大神DSP远程更新flash如何实现,如果我程序烧写在不同的Flash扇区,我该如何引导我的程序从不同的扇区进行读写数据!

  • rong,

    可以用串口进行在线升级。

    首先是你要自己先一段bootloader程序放在一个特殊的扇区,这个扇区在升级的过程中是不能擦除的。

    然后在用户程序中监视串口的命令,当接收到串口发送过来升级的指令的时候,就需要调到bootloader的入口,bootloader进行初始化,重新初始化系统时钟,串口等,然后回送应答给串口上位机,准备接收上位机发送过来的数据。因为升级数据很大,所以不可能一次接收完,一般是分次接收,当接收到一块数据后,就调用Flash API函数烧写到Flash中,烧写完后,回送应答给上位机,上位机再发送下一个数据块。当然,这个数据块需要包含地址信息,数据长度,数据,校验和。

    最后烧写完成后,就可以重新跳到Flash的入口,0x3F7FF6。

    在上位机你也要读hex文件,解析成一块块数据,发送给下位机。

    这是大概的思路。

    附件是2812的SCI boot Flash烧写的例子,跟在线升级不同的地方是,这个例程的bootloader是通过SCI boot 方式load到RAM中,然后再运行bootloader接收上位机数据,调用Flash API烧写。

     

    Eric