cc2530的boot程序要怎么写?

2019-07-25 14:12发布

我目前是把2530挂载在一个主控芯片上,然后有主控把bin文件用串口发给2530实现更新。那这样就涉及到boot程序的修改了吧,如果不是该怎么做?各位大神求指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
dirtwillfly
1楼-- · 2019-07-25 14:44
可以用OTA升级
参考:Z-Stack_OTA_Upgrade_User's_Guide.pdf
m503022388
2楼-- · 2019-07-25 18:57
dirtwillfly 发表于 2015-10-17 11:33
可以用OTA升级
参考:Z-Stack_OTA_Upgrade_User's_Guide.pdf

可是我的2530只是作为从设备挂在主控上,也没有再扩展flash,只能是主控收到bin文件然后用串口发给2530.因为串口也可以用来烧写程序,我现在就是不知道2530是怎么区分串口接收到的数据是不是升级包。
dirtwillfly
3楼-- · 2019-07-26 00:44
m503022388 发表于 2015-10-17 14:27
可是我的2530只是作为从设备挂在主控上,也没有再扩展flash,只能是主控收到bin文件然后用串口发给2530. ...

可以参考OTA的协议。
如果程序不大,不用外扩flash的
m503022388
4楼-- · 2019-07-26 04:56
dirtwillfly 发表于 2015-10-17 16:55
可以参考OTA的协议。
如果程序不大,不用外扩flash的

OTA不是需要一个协调器来发射升级包吗,我在做的这个正常情况下只有一个2530,只是为了以后的需要才用zigbee功能。
请问下,如果2530只用串口烧写程序,它是怎么区分串口收到的是升级包还是普通的串口通信数据?是拉低某个引脚就自动进入烧写模式还是每个串口数据都有一个默认的协议,然后按IAP的方式烧写的?
dirtwillfly
5楼-- · 2019-07-26 06:01
 精彩回答 2  元偷偷看……
m503022388
6楼-- · 2019-07-26 09:28
dirtwillfly 发表于 2015-10-19 10:58
给2530发送个指令就可以啊。
当然了,也需要2530内的boot程序配合。
你做过串口升级没有?

就是没做过串口升级呀。。。以前都是用调试器升级程序,串口的只用过STMISP,都不知道从那下手。
我看了OTA的boot.eww,main函数就一个while循环,是不是说循环检测两个crc,一个是升级包的crc另一个是旧程序的?有点蒙
  1. while (1)
  2.   {
  3.     HalFlashRead(HAL_OTA_CRC_ADDR / HAL_FLASH_PAGE_SIZE,
  4.                  HAL_OTA_CRC_ADDR % HAL_FLASH_PAGE_SIZE,
  5.                  (uint8 *)&OTA_crcControl, sizeof(OTA_crcControl));

  6.     if (OTA_crcControl.crc[0] == OTA_crcControl.crc[1])
  7.     {
  8.       break;
  9.     }
  10.     else if ((OTA_crcControl.crc[0] != 0) && (OTA_crcControl.crc[0] == crcCalc()))
  11.     {
  12.       OTA_crcControl.crc[1] = OTA_crcControl.crc[0];
  13.       HalFlashWrite((HAL_OTA_CRC_ADDR / HAL_FLASH_WORD_SIZE), (uint8 *)OTA_crcControl.crc, 1);
  14.     }
  15.     else
  16.     {
  17.       dl2rc();
  18.     }
  19.   }
复制代码

一周热门 更多>