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.

关于C2000的IAP功能

Expert 1795 points

IAP的目的就是为了当产品已经卖到用户手中,又需要对产品进行bug修正或升级功能时可以让用户自己进行烧录操作,这个功能是很重要的,且要求很高,必须傻瓜操作,说明书不能超过一张A4纸,不需拆机器,不需购买任何额外设备,一台电脑加一条手机数据线就搞定。

找了很久,TI官方似乎没有一个完整的例程应对这个需求,论坛里有不少讨论,基本都是关于bootloader这个东西,但bootloader始终逃不过两个问题:需要通过跳线改变启动方式,需要一个USB转串口的设备。

由于我用的芯片是28035,应该注定是不可能仅靠一条手机数据线就能烧录了,不过还好,我用28035只是控制电机,人机界面是STM32单片机,STM32有USB端口,同时STM32可以利用USB端口虚拟成串口,而28035又是和STM32通过串口通讯的,所以我很兴奋,很有可能将STM32临时作为USB转串口的工具,然后用一根手机数据线,让用户从人机界面直接对28035进行烧录。

可是研究了几天,发现TI的官方例程 f2803x_flash_kernel 依然需要靠硬件设置来改变启动方式,而且是先下载一个flash kernel到ram里面,然后靠flash kernel再下载应用程序。这意味着我的电路板需要设置一个开关以便改变启动方式,而且用户必须打开盖子去打开关(一般一个用户手里同时有几个到近百个产品,一个一个拆也是很麻烦的)。或许这还不算是大问题,真正的问题是,28035和STM32之间用RS485通讯,仅做成半双工模式,而SCI引导启动后的通讯,我想应该不支持半双工吧?也就是说,flash kernel程序无法靠单双工通讯下载。所以我只能考虑将自己做的支持半双工的flash kernel程序固化在28035中,由STM32发信息,当28035接收到烧录命令时,便将程序载入ram进行烧录。

虽然使用28035已经3年多,但是这种比较底层的应用还是一窍不通,官方的资料又少,基本没中文,STM32这方面的应用网上一堆资料,捣鼓几天就有完美结果,来这里发帖,希望得到TI专家的帮助,同时也是吐槽一下

  • 你可以不需要通过硬件方式去跳转啊。你通过串口接收到你上位机的升级指令后,让芯片跳转到ROM的SCI_BOOT函数地址,这样就进入那种模式啦。裸片的话才需要通过硬件跳转。

    如果你有什么自己的想法,也可以基于那个历程去修改。

    Eric

  • 感谢您的回复!您说的SCI_BOOT函数就是例程中那个函数吧?如果是那个函数的话,我就理解了,但是问题又来了,我首先要修改CMD文件,让这个例程能烧录到flash。这个问题对我来说就已经很大了。然后,这个例程是独立的工程,编译后我看到他占用了很大的RAM,算起来已经和我自己的程序冲突了,那么,我能把这个工程移植在我的工程中吗?如果两个工程各自独立,那该如何编写CMD文件,能像STM32那样顺利就调试成功吗?看到CMD文件我就怕了,也已经在这个文件折腾过不少时间,对其敬而远之。

  • 作为一个C2000老用户,我最近会发布一个bootloader,完美解决楼主的问题。敬请期待,项目地址https://github.com/xjtuecho/UARTCAN

  • Xiao Dong 说:

    作为一个C2000老用户,我最近会发布一个bootloader,完美解决楼主的问题。敬请期待,项目地址https://github.com/xjtuecho/UARTCAN

    不明觉厉!