关于cc3200在启动时的bootloader加载过程以及ota升级的几个问题
我在看《CC3200 Bootloader OTA_Update Note.pdf》这个文档时有几个问题,请TI的朋友帮忙解答一下
1. 出厂后的板子的flash中初始有“/sys/mcuimg.bin”和“/sys/mcuimg1.bin”两个文件,后续随着ota升级会再增加“/sys/mcuimg2.bin”和“/sys/mcuimg3.bin”。
“/sys/mcuimg.bin”是relocator.bin+bootmgr.bin,作用是将/sys/mcubootinfo.bin中标志位指定的“/sys/mcuimgX.bin”加载入RAM并执行,这样看来实际的App程序应该是 “/sys/mcuimgX.bin”。
我的问题是,为什么使用UniFlash向cc3200 launchpad的flash烧程序时目标文件是“/sys/mcuimg.bin”?我们烧的程序应该是App程序,难道目标程序不应该是 “/sys/mcuimgX.bin”吗?
没人回答吗?
是我的问题描述不清晰吗?
请知道的朋友帮忙解答一下,谢谢!
请对这个比较清楚的朋友帮忙解答一下,感激不尽
/sys/mcuimg.bin的作用是选择启动哪个程序。
/sys/mcuimg1.bin的作用是从网络上把mcuimg2.3下载到flash里面,等价于用uniflash烧写进去,
Song Fu Sheng
/sys/mcuimg.bin的作用是选择启动哪个程序。
/sys/mcuimg1.bin的作用是从网络上把mcuimg2.3下载到flash里面,等价于用uniflash烧写进去,
多谢回复
你的意思是说mcuimg1.bin仅仅负责ota升级下载mcuimg2.3,除此之外所有其他的app程序都不在mcuimg1.bin文件中?
在CC3200的Spi_Flash中,
/sys/mcuimg .bin ------是你自己写的Bootloader 程序
/sys/mcubootinfo.bin -------这个是系统自己创建的文件
/sys/mcuimg1.bin -------出厂IMG_FACTORY_DEFAULT
/sys/mcuimg2.bin --------你实际的APP.bin程序
/sys/mcuimg3.bin --------你实际的APP.bin程序(做备份处理,如果上一次升级失败了可以退回到之前的版本中正常运行)
在升级过程中mcuimg2/mcuimg3均失败时,程序可以退回到出厂固件mcuimg1中,否则仅退回到上一次固件版本中。
Terry Han
在CC3200的Spi_Flash中,
/sys/mcuimg .bin ------是你自己写的Bootloader 程序
/sys/mcubootinfo.bin -------这个是系统自己创建的文件
/sys/mcuimg1.bin -------出厂IMG_FACTORY_DEFAULT
/sys/mcuimg2.bin --------你实际的APP.bin程序
/sys/mcuimg3.bin --------你实际的APP.bin程序(做备份处理,如果上一次升级失败了可以退回到之前的版本中正常运行)
在升级过程中mcuimg2/mcuimg3均失败时,程序可以退回到出厂固件mcuimg1中,否则仅退回到上一次固件版本中。
mcuimg1.bin也是app程序吧,是出厂时的app程序。
那这样的话我在用uniflash向开发板的flash上刷程序更新/sys/mcuimg.bin时,是不是也更新了/sys/mcuimg1.bin这个文件呢?
我做的一个项目就是利用
/sys/mcuimg.bin -bootloader
/sys/mcuimg1.bin -ota
两个文件实现从服务器下载文件到/sys/mcuimg2.bin然后把/sys/mcuimg2.bin复制到/sys/mcuimg3.bin供升级失败回滚。
下载成功之后运行mcuimg2.bin
uniflash上面可以选择更新文件的擦除 校验 编程
多谢楼上各位的回复。
可能是我的问题说的不够清楚,大家的回复没能解决我的疑问。
请看这样一个场景:
我在尝试wlan_station这个sample,我在CCS中打开wlan_station工程,编译后生成了一个wlan_station.bin文件,我使用uniflash向开发板的flash上刷程序,这需要我选择刚编译生成的wlan_station.bin文件去更新/sys/mcuimg.bin,刷写成功。
我使用uniflash去“List File System”,结果发现仅有“/sys/mcuimg.bin”,没有“/sys/mcuimg1.bin”文件。
按照文档上的说法,mcuimg.bin是relocator.bin+bootmgr.bin,mcuimg1.bin才是app程序,那么为什么这里没有mcuimg1.bin,而且wlan_station的app程序在mcuimg.bin中?
请对这一块比较清楚地朋友不吝赐教,谢谢!
请参考我的output, 你要不要用最新的UNIFLASH再试试看,版本3.4.1.
[17:57:16] Begin ListFileSystem operation.
[17:57:17] INFO: > Executing Operation: Connect
[17:57:19] INFO: setting break signal
[17:57:19] INFO: connection succeeded
[17:57:19] INFO: getting storage list
[17:57:19] INFO: > Executing Operation: Init
[17:57:19] INFO: reading version info
[17:57:19] INFO: DEVICE CC3200 ES1.33
[17:57:19] INFO: reading version info
[17:57:20] INFO: reading version info
[17:57:22] INFO: > Executing Operation: ListFileSystem
[17:57:22] INFO: extracting file system information...
[17:57:22] INFO: Serial Flash block size: 4096 bytes
[17:57:22] INFO: Serial Flash capacity: 256 blocks
[17:57:22] INFO: file start size fail total size filename
[17:57:22] INFO: index block [BLKs] safe [BLKs]
[17:57:22] INFO: ----------------------------------------------------------------------------
[17:57:22] INFO: N/A 0 5 N/A 5 FATFS
[17:57:22] INFO: 0 81 11 no 11 /sys/mcuimg.bin
[17:57:22] INFO: 4 5 5 yes 10 /tmp/phy.cal
[17:57:22] INFO: 6 15 33 yes 66 /sys/servicepack.ucf
[17:57:22] INFO: 7 92 2 no 2 www/index.html
[17:57:22] INFO: 8 94 3 no 3 www/about.html
[17:57:22] INFO: 9 97 1 no 1 www/demos.html
[17:57:22] INFO: 10 98 2 no 2 www/demos-appliances.html
[17:57:22] INFO: 11 100 2 no 2 www/demos-energy.html
[17:57:22] INFO: 12 102 2 no 2 www/demos-security.html
[17:57:22] INFO: 13 104 2 no 2 www/demos-sprinkler.html
[17:57:22] INFO: 14 106 1 no 1 www/overview.html
[17:57:22] INFO: 15 107 1 no 1 www/param_about.html
[17:57:22] INFO: 16 108 1 no 1 www/param_config.html
[17:57:22] INFO: 17 109 1 no 1 www/param_demos.html
[17:57:22] INFO: 18 110 1 no 1 www/param_online.html
[17:57:22] INFO: 19 111 2 no 2 www/portal.html
[17:57:22] INFO: 20 113 4 no 4 www/setup.html
[17:57:22] INFO: 21 117 3 no 3 www/css/style.css
[17:57:22] INFO: 22 120 1 no 1 www/images/demo-lightswitch.jpg
[17:57:22] INFO: 23 121 2 no 2 www/images/demo-security-alarmoff.jpg
[17:57:22] INFO: 24 123 3 no 3 www/images/demo-security-alarmon.jpg
[17:57:22] INFO: 26 126 12 no 12 www/images/demo-sprinkler-on.jpg
[17:57:22] INFO: 27 138 13 no 13 www/images/demo-sprinkler-off.jpg
[17:57:22] INFO: 28 151 12 no 12 www/images/demo-washerdryer.jpg
[17:57:22] INFO: 29 163 5 no 5 www/images/hw-sbd.gif
[17:57:22] INFO: 30 168 1 no 1 www/images/icon-demo-safety.gif
[17:57:22] INFO: 31 169 2 no 2 www/images/icon-demo-smartenergy.gif
[17:57:22] INFO: 32 171 4 no 4 www/images/sw-sbd.gif
[17:57:22] INFO: 33 175 1 no 1 www/images/icon_l_html_a.png
[17:57:22] INFO: 34 176 1 no 1 www/images/icon-demo-homeappliances.gif
[17:57:22] INFO: 35 177 1 no 1 www/images/icon-demo-homeautomation.gif
[17:57:22] INFO: 36 178 1 no 1 www/images/ticom3-tab-left.gif
[17:57:22] INFO: 37 179 1 no 1 www/images/tab-line.gif
[17:57:22] INFO: 38 180 1 no 1 www/images/ticom3-tab-right.gif
[17:57:22] INFO: 39 181 1 no 1 www/images/ti-logo.png
[17:57:22] INFO: 40 182 2 no 2 www/js/com.ti.numericstepper.js
[17:57:22] INFO: 41 184 1 no 1 www/js/com.ti.tokenpoller.js
[17:57:22] INFO: 42 185 1 no 1 www/js/jquery.rwdimagemaps.js
[17:57:22] INFO: 43 186 1 no 1 www/js/jquery.rwdimagemaps.min.js
[17:57:22] INFO: 44 187 24 no 24 www/js/jquery-1.8.3.min.js
[17:57:22] INFO: 45 211 2 no 2 www/js/page-actions.js
[17:57:22] INFO:
[17:57:22] INFO: Flash usage
[17:57:22] INFO: -------------------------
[17:57:22] INFO: used space: 213 blocks
[17:57:22] INFO: free space: 43 blocks
[17:57:22] INFO: memory hole: [213-255]
[17:57:22] INFO: > Executing Operation: Disconnect
[17:57:22] Operation ListFileSystem returned.
请问你是怎么弄,能提供相关的代码吗。邮箱349071257@qq.com
没有代码,我就只是用uniflash把out_of_box例程烧录进去了。然后用uniflash去读文件列表。
hi Yonghua Pan
谢谢回复
我现在使用的uniflash版本就是3.4.1
从你的ListFileSystem操作的输出结果来看,flash上只有/sys/mcuimg.bin文件,没有/sys/mcuimg1.bin文件
这就是我有疑问的地方
按照文档上的说法,mcuimg.bin是relocator.bin+bootmgr.bin,mcuimg1.bin才是app程序,那么为什么这里没有mcuimg1.bin,而且app程序在mcuimg.bin中?
能否先做一个实验,先格式化,然后用uniflash打开C:\ti\CC3200SDK_1.2.0\cc3200-sdk\example\out_of_box\html\out_of_box.ucf,烧录到CC3200里面,再用unflash读取一下,记得SOP2要跳上,看看列表和我上面的是否一样。
如果和我上面的一样,再试一下格式化再烧录你的mcuimg1等等,如果还有问题,把你的usf打包保存下来上传,我这里可以测试看看。
能否先做一个实验,先格式化,然后用uniflash打开C:\ti\CC3200SDK_1.2.0\cc3200-sdk\example\out_of_box\html\out_of_box.ucf,烧录到CC3200里面,再用unflash读取一下,记得SOP2要跳上,看看列表和我上面的是否一样。
如果和我上面的一样,再试一下格式化再烧录你的mcuimg1等等,如果还有问题,把你的usf打包保存下来上传,我这里可以测试看看。
能否先做一个实验,先格式化,然后用uniflash打开C:\ti\CC3200SDK_1.2.0\cc3200-sdk\example\out_of_box\html\out_of_box.ucf,烧录到CC3200里面,再用unflash读取一下,记得SOP2要跳上,看看列表和我上面的是否一样。
如果和我上面的一样,再试一下格式化再烧录你的mcuimg1等等,如果还有问题,把你的usf打包保存下来上传,我这里可以测试看看。
http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/p/113625/315534.aspx#315534
终于弄明白了
mcuimg就是cc3200内置bootloader启动的img
在调试类似于wlan_station这种example时,mcuimg由cc3200内置bootloader启动,它就是app的bin文件
在加入ota升级功能后,mcuimg是另一个bootloader,它在被cc3200内置bootloader启动后,本身再去读取mcubootinfo中的信息并选择mcuimg1.bin、mcuimg2.bin、mcuimg3.bin其中之一启动,后三者就是app的bin文件
谢谢这个帖子里的各位朋友的帮助
你好,
有两问题请赐教:
(1)上电后拷贝系统内置Bootloader到SRAM的原因?在ROM里面不可以直接运行吗?
(2)如果烧写固件的过程中,主动给CC3200断电,会有什么后果?
在线等回复,先表谢意。
就是我现在需要一种功能,就是通过建立一个TCP连接,然后进行应用程序的远程升级,之前有用atmel做过这个的远程升级,
现在想把这部分功能移植到CC3200上面,具体有没有这方面的示例程序。
之前ATMEL的做法是:
(1)修改bootload.c
主要是串口透传的从服务器读取文件
(2)应用程序倒没有做什么特别的要求
(3)ATMEL有一个融丝烧写的。
漏掉了一个
(4)之前是单独有个ATMEL bootload工程代码。
我看到有类似的博客介绍,这个CC3200 bootload工程代码的,但是不知道如何进行修改。
ATMEL bootload远程APP.bin远程升级的做法细化:
a.切换到bootload区域,执行代码
b.通过串口发送wifi模块的AT指令,发送HTTP请求,从云端获取,hex文件。
c.从串口接收HTTP数据,有一个串口缓存,轮询的按页的方式,使能读写用户数据,(这些AVR有专门的函数)写入到特定128字节的写入到用户应用存储程序的区域,读写完成,结束。
d.退出,切换到应用区域执行代码,重新启动程序。
但是有一个前提是,我的wifi是和AVR单片机相互独立的。
CC3200该如何做到?http://blog.csdn.net/hytgab/article/details/48014103 看这个连接,他好像是自己从flash里面读取的。