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.

那种在线烧程序的方法最易实现?



产品需要有在线升级的功能,我查阅了一些资料,看到要实现这一功能有很多种方法,我想请问有此项目经验的朋友请教一下,哪种方法最简便。

因为我没有做做过串口烧程序这方面的项目。是用C2Prog好 还是 用Flash281x_API函数烧写技术好?

  • 建议用C2Prog,但要能改boot方式,有串口A引出来了。

  • 谢谢您! 遗憾的是我们的用的是SCI B口, A口没引出来。 SCI A Boot的跳线到时引出来了。

  • xiansheng,

    由于C2prog的串口烧写需要对boot引脚进行跳线,即配置GPIO34,GPIO37的引脚电平为SCI boot的模式才能够使用C2prog的串口烧写方式。所以你们需要评估你们的产品能否在升级的时候配置GPIO34为高电平,GPIO37为低电平。这也是最简单的方式。

    如果不能够配置GPIO34和GPIO37,则自己写串口升级代码,通过串口在线升级。需要做的包括:1.编写升级代码,包括串口通信接收发送数据功能,以及调用Flash API将接收到的数据烧写到指定的flash地址。2. 主应用程序需要放一个升级判断代码,当接收到串口发送过来的升级指令时,则跳转到升级代码区域,执行升级操作。3. 开发上位机软件,需要解析升级用的应用程序,一般是hex文件。同时还具有发送相关命令的功能。

    Eric

  • 装置正常运行时是flash启动,因此不会用sciA启动方式的。如果C2prog在线升级需要跳线的话,则不太适合用于在现场运行的产品。因此我们应该会采纳您提出的“串口在线升级”的方案。谢谢您的热心相助!有问题再向您请教!

  • 你好Eric,请教你一个问题。我想自己写一个像C2PROG的上位机,通过串口对DSP进行烧写。通过截取C2PROG串口发送的数据,我发现它先将flasher28021_2_3_6_7_200_emu文件里面的数据放到RAM,然后返回到0x00000000地址;接着检测boot版本并且解锁CSM;然后把flash api的函数load到安全区里面;检测flash api版本;最后发送用户数据,通过flash api烧写到flash里面。不知道这个过程是否有错?里面的flasher28021_2_3_6_7_200_emu文件是什么作用呢?我使用串口工具模拟CEPROG发送的数据,但是到了检测boot版本的时候总是执行不下去,不知道0x00000000地址开始运行的程序是怎么处理串口的数据呢?