cc2530的boot程序要怎么写?

[复制链接]
 楼主| m503022388 发表于 2015-10-17 10:28 | 显示全部楼层 |阅读模式
我目前是把2530挂载在一个主控芯片上,然后有主控把bin文件用串口发给2530实现更新。那这样就涉及到boot程序的修改了吧,如果不是该怎么做?各位大神求指点
dirtwillfly 发表于 2015-10-17 11:33 | 显示全部楼层
可以用OTA升级
参考:Z-Stack_OTA_Upgrade_User's_Guide.pdf
 楼主| m503022388 发表于 2015-10-17 14:27 | 显示全部楼层
dirtwillfly 发表于 2015-10-17 11:33
可以用OTA升级
参考:Z-Stack_OTA_Upgrade_User's_Guide.pdf

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

可以参考OTA的协议。
如果程序不大,不用外扩flash的
 楼主| m503022388 发表于 2015-10-19 09:33 | 显示全部楼层
dirtwillfly 发表于 2015-10-17 16:55
可以参考OTA的协议。
如果程序不大,不用外扩flash的

OTA不是需要一个协调器来发射升级包吗,我在做的这个正常情况下只有一个2530,只是为了以后的需要才用zigbee功能。
请问下,如果2530只用串口烧写程序,它是怎么区分串口收到的是升级包还是普通的串口通信数据?是拉低某个引脚就自动进入烧写模式还是每个串口数据都有一个默认的协议,然后按IAP的方式烧写的?
dirtwillfly 发表于 2015-10-19 10:58 | 显示全部楼层
m503022388 发表于 2015-10-19 09:33
OTA不是需要一个协调器来发射升级包吗,我在做的这个正常情况下只有一个2530,只是为了以后的需要才用zig ...

给2530发送个指令就可以啊。
当然了,也需要2530内的boot程序配合。
你做过串口升级没有?
道理是类似的
 楼主| m503022388 发表于 2015-10-19 14:42 | 显示全部楼层
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.   }
dirtwillfly 发表于 2015-10-19 16:13 | 显示全部楼层
m503022388 发表于 2015-10-19 14:42
就是没做过串口升级呀。。。以前都是用调试器升级程序,串口的只用过STMISP,都不知道从那下手。
我看了O ...

比较crc是否一样,不一样就升级
 楼主| m503022388 发表于 2015-10-19 16:38 | 显示全部楼层
dirtwillfly 发表于 2015-10-19 16:13
比较crc是否一样,不一样就升级

我似乎明白了点什么。。。。
还有个问题,是不是可以理解一个flash里有两个main函数,一个是boot代码,一个是应用代码?
 楼主| m503022388 发表于 2015-10-19 16:42 | 显示全部楼层
dirtwillfly 发表于 2015-10-19 16:13
比较crc是否一样,不一样就升级

还有忘记问了。。协议栈里的DL和RC是什么意思?
dirtwillfly 发表于 2015-10-19 17:15 | 显示全部楼层
m503022388 发表于 2015-10-19 16:38
我似乎明白了点什么。。。。
还有个问题,是不是可以理解一个flash里有两个main函数,一个是boot代码,一 ...

对的。
豆腐块 发表于 2015-10-19 22:25 | 显示全部楼层
楼主怎么解决的这个问题
 楼主| m503022388 发表于 2015-10-20 10:13 | 显示全部楼层

请问下,OTA的HAL_OTA_DL和HAL_OTA_RC是什么意思?找不到资料说明这两个东西啊,就是不知道DL跟RC指的是什么
 楼主| m503022388 发表于 2015-10-20 10:15 | 显示全部楼层
豆腐块 发表于 2015-10-19 22:25
楼主怎么解决的这个问题

先烧OTA的boot部分,然后应用代码再用串口烧入。只是个思路,正在实验。
xyz549040622 发表于 2015-10-22 17:12 | 显示全部楼层
m503022388 发表于 2015-10-20 10:13
请问下,OTA的HAL_OTA_DL和HAL_OTA_RC是什么意思?找不到资料说明这两个东西啊,就是不知道DL跟RC指的是 ...

全局搜索也找不到这个定义么?
dirtwillfly 发表于 2015-10-22 20:51 | 显示全部楼层
xyz549040622 发表于 2015-10-22 17:12
全局搜索也找不到这个定义么?

这两个是宏定义,代码里有的
 楼主| m503022388 发表于 2015-10-23 08:49 | 显示全部楼层
xyz549040622 发表于 2015-10-22 17:12
全局搜索也找不到这个定义么?

定义是能搜到,但是两个定义代表了什么就都没说明。不过现在应该推断出来了。
Thefantasy 发表于 2015-10-29 16:21 | 显示全部楼层
看官方的开发包,boot的代码,应该是都会有的。
mmbs 发表于 2015-10-31 18:05 | 显示全部楼层
你是要串口烧写DSP吗?
天灵灵地灵灵 发表于 2015-10-31 22:19 来自手机 | 显示全部楼层
官方提供了一个的,你找找看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部