工作环境:

WIN7 64位

IAR 版本: 8.10.3 (8.10.3.10338)

ZStack-CC2530-2.3.1-1.4.0协议栈,下载地址:http://download.csdn.net/detail/loveliyun/4143607

为了节约板子的空间,在上面放一个大的仿真接口不被允许,这种情况下,可以使用串口下载,

批量生成时,则可以先将SBL的bootloader程序下载进入FLASH的bootloader区(0x0000-0x2000),然后在使用串口烧录我们用户自己的应用程序到FLASH

详细可以参考:1、http://processors.wiki.ti.com/index.php/CC253x_Serial_Boot_Loader

2、协议栈目录: C:\Texas Instruments\ZStack-CC2530-2.3.1-1.4.0\Documents\CC2530\Serial Boot Loader for CC253x.pdf

我也参考上面的文件做了自己的实验,具体如下:

第一步:首先安装好协议栈,进入C:\Texas Instruments\ZStack-CC2530-2.3.1-1.4.0\Projects\zstack\Utilities\BootLoad\CC2530,打开Boot.eww工程

不做任何修改,直接使用仿真机将程序烧录至板子里面(如果硬件有不一样,则自己参考自己的硬件相关设置的代码,其他完全不修改),

此时,SBL的bootloader程序被下载到FLASH的第一个bank的最开始的位置(0x0000-0x2000).

第二步:进入C:\Texas Instruments\ZStack-CC2530-2.3.1-1.4.0\Projects\zstack\Samples\GenericApp\CC2530DB,打开GenericApp.eww工程

调整工程的option里面的配置(具体可以参考上面提供的参考文档,非常详细),另外工程配置完毕后,编译。

打开生成的GenericApp.map文件,如下图所示,复制checksum到onboard.c里面的const CODE uint16 _crcShdw = 0x418f;,我这里是0x418f。

更改后重新编译,这时候生成的GeneralApp.bin才是我们使用串口工具来烧录所需的文件.

   

打开GeneralApp.bin的文件,如下图所示

0090-0091为编译计算出来的cheaksum(可以从上面图片的计算方法看出,计算没有计算2090-2093,刚好这个地方存放就是Cheaksum),

0092-0093为我们在onboard.c里面写入的_crcShdw=0x418f,

此两处的cheaksum一定要一样,因为在SBL程序里面会核对这两次校验是否一样,只有一样的情况下,才能跳转到正常程序执行。

第三步:进入C:\Texas Instruments\ZStack-CC2530-2.3.1-1.4.0\Tools\SBL Tool,打开SBDemo.exe,点击下载,即可开始下载,

下载具体过程如下:

首先数据格式为:

| 数据头部SOF | 数据长度LEN | 命令1 | 命令2 | 数据 | 帧校验FCS|

例如:FE 01 4D 10 00 5C,和上面一一对应

在SBL的程序中有如下定义:

  // Bootloader Serial Interface Subsystem
  #define SB_RPC_SYS_BOOT 0x4D

  // Commands to Bootloader
  #define SB_WRITE_CMD 0x01
  #define SB_READ_CMD 0x02
  #define SB_ENABLE_CMD 0x03
  #define SB_HANDSHAKE_CMD 0x04

1、先发送一个

FE 01 4D 10 00 5C

命令2为10,对比上面的定义发现这个在SBL程序里面没有,所以我也不知道是干什么用的,可能是给我们用户自己使用,用于扩展功能的,暂时忽略。

2、在发送

FE 01 4D 04 02 4A

命令2为04,对比上面的定义,是握手命令,PC和板子建立下载链接,如果发一段时间的握手信号,都没有程序,PC会显示超时。

3、接着是发送

FE 42 4D 01 00 00 02 2A 62 02 21 D3 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 02 28 A3 FF FF FF FF FF 02 25 F9 FF FF FF FF FF FF FF FF FF FF E3

命令2为01,对比上面的定义,是写命令,命令的第二个字节代表数据长度是42转化为十进制是66,其中2个字节是写入地址(这里是00 00),另外64个字节就是写入的数据内容。这个命令会连续发送,直到整个程序都写入完毕。

4、程序写入完毕后,再发送,

FE 02 4D 02 00 00 4D

命令2为02,对比上面的定义,是读命令,命令的第二个字节是02,即数据长度为2位,表示需要从FLASH读数据的位置(这里是00 00),读出数据进行校验。

5、所有地址的数据校验完毕后会根据你在SBL烧录软件上是否勾选No Reset Vector Verification(8051 only),选择是否发送复位命令

FE 00 4D 03 4E,

命令2位03,串口启动使能命令,复位芯片。

6、复位芯片后,会进入等待状态(LED1和LED2交替闪烁),等待状态下,有3种方式进入应用程序

1、如果等待一段时间无操作(具体多长时间可以用过跳转SBL程序static uint8 sblWait(void)里面的uint32 dlyCnt = 0x260000;的大小来调整等待时间),则程序跳转到0x2000,开始运行我们的应用程序,

   2、在等待状态下,我们也可以通过S1 和 S2按键来控制进入下载模式还是正常工作模式,S1如果是高电平,则进入下载模式; 如果S1为低电平,S2为高电平,则进入正常工作模式

3、在等待状态下,也可以通过串口发送0xF8进入下载模式,发送0x07(0xF8^0xFF)进入正常工作模式。

CC2530使用串口下载(SBL)的更多相关文章

  1. STM32的JTAG、SWD和串口下载的问题

    最近有一个项目用到STM32,为了使PCB布线方便一些所以改了一些引脚,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下载采用SWD模式.这样在实际操作中做出一些总结(方法网上都有.这 ...

  2. STM8不用手动复位进入自带Bootloader方法(串口下载)

    源:STM8不用手动复位进入自带Bootloader方法(串口下载) STM8不用手动复位进入自带Bootloader方法(串口下载)除非STM8片子的空的,如果复位运行的是自带Bootloader, ...

  3. 使用串口下载vxworks映象的方法

    使用串口下载vxworks映象的方法 由于坛子里这方面的可行性文章比较少,不时有一些网友在询问这方面的问题,再加上通过这种方法可以调试网络驱动,所以我花了一点时间把整个下载过程试了一下. 1.配置co ...

  4. 正点原子stm32f103mini版串口下载BOOT0引脚与与CH340G芯片引脚RTS、DTR、的关系原理

    在做串口实验时,一直搞不明白一键下载是怎么回事,于是自己就去捉摸CH340G这块芯片,那么这里我将详细的讲解一下这块芯片怎么与stm32配合使用的. 1.由CH340G芯片资料可以知道这两个引脚的功能 ...

  5. STM32 ~ JTAG、SWD和串口下载的问题

    最近有一个项目用到STM32,为了使PCB布线方便一些所以改了一些引脚,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下载采用SWD模式.这样在实际操作中做出一些总结(方法网上都有.这 ...

  6. [ZigBee] 9、ZigBee之AD剖析——AD采集CC2530温度串口显示

    1.ADC 简介 ADC 支持多达14 位的模拟数字转换,具有多达12 位有效数字位.它包括一个模拟多路转换器,具有多达8 个各自可配置的通道:以及一个参考电压发生器.转换结果通过DMA 写入存储器. ...

  7. Uboot的串口下载文件命令:loads / loadb / loady

    1. loads loads [ off ] 通过串口,下载S-Rec文件到off位置 loads命令可以通过串口线下载S-Record格式文件. 2. loadb loadb [ off ] [ b ...

  8. 通过USB转TTL串口下载stm32程序

    目录: 1.硬件及其接线 2.驱动及软件 3.下载程序测试 1.硬件及其接线 1.1 USB转TTL刷机板(CH340模块升级小板) 1.2 主芯片STM32F103C8T6开发板 1.3接线 1.3 ...

  9. CC2530中串口波特率改为9600时单个数据包来不及接收的解决方案

    在调试CC2530过程中发现波特率改为9600时,单个包仅有3个Byte时,接收DMA就会启动 因而数据包被强迫拆分成多个,显然只要将接收DMA启动延时做到足够大即可. 具体修改内容如下图所示: 经过 ...

随机推荐

  1. 《JavaScript高级程序设计(第3版)》笔记-序

    很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...

  2. Android中Context的理解及使用(一)——Context的作用

    Context的作用:用来访问全局信息的接口,通过Context进行资源的访问. 1.Context获取字符串资源: public class MainActivity extends AppComp ...

  3. 关于JavaScript设计模式(一)

    以后都在简书写文章了,所以这个转载我在简书中写的.地址这里 http://www.jianshu.com/p/c7b3c2c148c5

  4. MySQL 磁盘I/O问题

    一.使用磁盘阵列:RAID,廉价磁盘冗余阵列,可靠性,性能好. 二.使用 Symbolic Links 分布I/O 利用操作系统的符号链接将不同的数据库或表.索引指向不同的物理磁盘,达到分布磁盘I/O ...

  5. basic use of sidekiq (2)

    vim Gemfile source "https://rubygems.org" gem "sidekiq"gem 'rack-protection' gem ...

  6. 什么时候用Model,什么时候用Entity?

    在建立一个实体类的时候,究竟是用Model还是用Entity?比如MVC中,Model存了数据实体,但是他被称为Model,而在EF中,Entity也是存放数据实体,却被称作Entity,这两者有何区 ...

  7. extern "c"用法解析

    转自: extern "c"用法解析 - 简书 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言, ...

  8. sql查删更

    //查询#SELECT * FROM user_cawefwfrd where usewwr_cawrqqd_qaid=2252227//删除#DELETE FROM user_cauyuyurd w ...

  9. maven学习(上)- 基本入门用法

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...

  10. express细节点注意

    删除 cookie 需要这么 res.cookie('admin_uid',"null",{maxAge:0, httpOnly:true, path:'/',domain:'.o ...