打印

cc2530的boot程序要怎么写?

[复制链接]
2508|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
m503022388|  楼主 | 2015-10-17 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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的

使用特权

评论回复
5
m503022388|  楼主 | 2015-10-19 09:33 | 只看该作者
dirtwillfly 发表于 2015-10-17 16:55
可以参考OTA的协议。
如果程序不大,不用外扩flash的

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

使用特权

评论回复
6
dirtwillfly| | 2015-10-19 10:58 | 只看该作者
m503022388 发表于 2015-10-19 09:33
OTA不是需要一个协调器来发射升级包吗,我在做的这个正常情况下只有一个2530,只是为了以后的需要才用zig ...

给2530发送个指令就可以啊。
当然了,也需要2530内的boot程序配合。
你做过串口升级没有?
道理是类似的

使用特权

评论回复
7
m503022388|  楼主 | 2015-10-19 14:42 | 只看该作者
dirtwillfly 发表于 2015-10-19 10:58
给2530发送个指令就可以啊。
当然了,也需要2530内的boot程序配合。
你做过串口升级没有?

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

    if (OTA_crcControl.crc[0] == OTA_crcControl.crc[1])
    {
      break;
    }
    else if ((OTA_crcControl.crc[0] != 0) && (OTA_crcControl.crc[0] == crcCalc()))
    {
      OTA_crcControl.crc[1] = OTA_crcControl.crc[0];
      HalFlashWrite((HAL_OTA_CRC_ADDR / HAL_FLASH_WORD_SIZE), (uint8 *)OTA_crcControl.crc, 1);
    }
    else
    {
      dl2rc();
    }
  }

使用特权

评论回复
8
dirtwillfly| | 2015-10-19 16:13 | 只看该作者
m503022388 发表于 2015-10-19 14:42
就是没做过串口升级呀。。。以前都是用调试器升级程序,串口的只用过STMISP,都不知道从那下手。
我看了O ...

比较crc是否一样,不一样就升级

使用特权

评论回复
9
m503022388|  楼主 | 2015-10-19 16:38 | 只看该作者
dirtwillfly 发表于 2015-10-19 16:13
比较crc是否一样,不一样就升级

我似乎明白了点什么。。。。
还有个问题,是不是可以理解一个flash里有两个main函数,一个是boot代码,一个是应用代码?

使用特权

评论回复
10
m503022388|  楼主 | 2015-10-19 16:42 | 只看该作者
dirtwillfly 发表于 2015-10-19 16:13
比较crc是否一样,不一样就升级

还有忘记问了。。协议栈里的DL和RC是什么意思?

使用特权

评论回复
11
dirtwillfly| | 2015-10-19 17:15 | 只看该作者
m503022388 发表于 2015-10-19 16:38
我似乎明白了点什么。。。。
还有个问题,是不是可以理解一个flash里有两个main函数,一个是boot代码,一 ...

对的。

使用特权

评论回复
12
豆腐块| | 2015-10-19 22:25 | 只看该作者
楼主怎么解决的这个问题

使用特权

评论回复
13
m503022388|  楼主 | 2015-10-20 10:13 | 只看该作者

请问下,OTA的HAL_OTA_DL和HAL_OTA_RC是什么意思?找不到资料说明这两个东西啊,就是不知道DL跟RC指的是什么

使用特权

评论回复
14
m503022388|  楼主 | 2015-10-20 10:15 | 只看该作者
豆腐块 发表于 2015-10-19 22:25
楼主怎么解决的这个问题

先烧OTA的boot部分,然后应用代码再用串口烧入。只是个思路,正在实验。

使用特权

评论回复
15
xyz549040622| | 2015-10-22 17:12 | 只看该作者
m503022388 发表于 2015-10-20 10:13
请问下,OTA的HAL_OTA_DL和HAL_OTA_RC是什么意思?找不到资料说明这两个东西啊,就是不知道DL跟RC指的是 ...

全局搜索也找不到这个定义么?

使用特权

评论回复
16
dirtwillfly| | 2015-10-22 20:51 | 只看该作者
xyz549040622 发表于 2015-10-22 17:12
全局搜索也找不到这个定义么?

这两个是宏定义,代码里有的

使用特权

评论回复
17
m503022388|  楼主 | 2015-10-23 08:49 | 只看该作者
xyz549040622 发表于 2015-10-22 17:12
全局搜索也找不到这个定义么?

定义是能搜到,但是两个定义代表了什么就都没说明。不过现在应该推断出来了。

使用特权

评论回复
18
Thefantasy| | 2015-10-29 16:21 | 只看该作者
看官方的开发包,boot的代码,应该是都会有的。

使用特权

评论回复
19
mmbs| | 2015-10-31 18:05 | 只看该作者
你是要串口烧写DSP吗?

使用特权

评论回复
20
天灵灵地灵灵| | 2015-10-31 22:19 | 只看该作者
官方提供了一个的,你找找看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

37

帖子

0

粉丝