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.

CC3200 OTA在线程序升级问题

Other Parts Discussed in Thread: CC3200, UNIFLASH

 我们不想用别人的云存储服务器,想自己搭建,我选用了linux开源的sparkleshare来搭建自己的CDN服务器,是否可行?
另外除了CC3200 Over-The-Air (OTA) Update Application Note和CC3200 Simplelink OTA Extlib API User's Guide还有没有其他可以参考的文档?谢谢!
  • 自己搭建升级服务器当然可以。具体要看你嵌入式端使用什么协议与升级服务器通讯。

  • 就是要用TI的协议和CC3X00 Simplelink OTA Extlib API来和服务器通讯,并使用TI的Commit和Roll back机制。有没有使用sparkleshare成功的案例。

  • 这个实现是有点困难,不知道那些FAE有成功的没。OTA的实现,技术这块跟不上,datasheet的寥寥几句把最关键的几点没说明白。

    我也开始自己搭建了,不过一两周内完成不了。

  • 用sparkleshare搭建云,网上的资料太少,我现在尝试用openstack。


  • 我也遇到同样的问题,但是有人已经搞通了,但是好像不是用的OTA,具体感觉还有好多同喜需要摸索一下。

  • 关于OTA的一些笔记:

    Bootloader Application Update Sequence

    首先Spi_Flash中存储:

    /sys/mcuimg .bin

    /sys/mcubootinfo.bin

    /sys/mcuimg1.bin

    /sys/mcuimg2.bin

    /sys/mcuimg3.bin

    1CC3200当上电的时候,会把内置ROM中的bootloader拷贝到0x2000 0000 ~ 0x2000 4000

    2CC3200内置ROMbootloaderRAM中运行,会/sys/mcuimg.bin(也就是本程序生成bootloader=relocator.bin+bootmgr.bin)

           拷贝到0x2000 4000处,并从该地址执行程序

    3、首先运行relocator.bin文件,relocator文件的功能就是把bootmgr.bin拷贝到0x2000 0000,并接着跳到0x2000 0000处执行

    4CC3200RAM的起始地址运行bootmgr.bin,在这个bin文件首先读取SPI_Flash的文件/sys/mcubootinfo.bin,根据事先存在 

           SPI_Flash中的标志位选择加载文件

    5、选定加载文件后会把SPI_Flash存储的.bin文件拷贝到RAM 0x2000 4000之后,程序开始接着执行0x2000 4000 App文件,

           完成bootloader任务!

    6、在升级过程中mcuimg2/mcuimg3均失败时,程序可以退回到出厂固件mcuimg1中,否则仅退回到上一次固件版本中

    关于bin文件

    1relocator这个bin文件是sdk就提供的该文件的空间位置位于0x2000 4000

    2bootmgr.bin的空间位置是位于0x2000 0000

    3bootloader是上面两者的结合体,等于relocator + bootmgr,relocator 是在前面的, bootmgr在后面。

    4relocator 占据了0x100大小,上图bin文件及合成后的大小

    注意几点问题:

    注意最后一个文件sys/mcubootinfo.bin在使用Uniflash下载程序中需要Erase,将之前可能存储在Sflash的启动标志位清除。

    /sys/mcubootinfo.bin文件并未通过Uniflash事先下载,而是bootloader创建并保 存到SPI_Flash中,默认会写入启动出厂固件标志位

    实际升级用户APP程序会在mcuimg2/mcuimg3中通过boot启动标志位进行选择

    1、修改OTA.lib用于不同的云服务器官方例程使用的Dropbox,可以修改为其他云服务器

    2、周期性调用OTAUpdateTask() / FactoryResetTask()用户升级程序和出厂固件恢复程序

    3、通过OTAUpdateTask() 连接到云服务器下载升级.bin文件,成功更新并重启CC3200系统 RebootMCU(); 程序进行二级bootloader选择boot启动最新更新的用户APP程序    

    4、通过FactoryResetTask()恢复默认的出厂设置

    5、注意在重启之前需要修改/sys/mcubootinfo.bin文件,选择重启后需要加载的boot文件

    •注意该例程的OTA程序.a文件基于dropbox,且Dropbox使用了CDN内容分发网络,其实本质上跟普通的文件放在web服务器上基本一致,但在CDN内容分发网络中,这个文件可能存放到很多web服务器上,不同地方获取这个文件速度不同,缓解网络压力。
    •国内客户可以采用http协议的方式直接从web服务器上下载文件,使用get方式,get方式可以获取网络上的所有资源,打开一个网页就是一个get请求,如果把APP_Updata.bin文件放到web服务器上,通过get的方式将该文件下载到CC3200中并转存到SPI_Flash中实现固件写入。
    •注意由于web服务器不同,可能http的请求头不同,可以先用浏览器去下载这个文件,查找发出设么请求头,在移植到CC3200中。