微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 如何同时把SBL Bootloader和SimpleBLEPeripheral主程式下载到CC2540

如何同时把SBL Bootloader和SimpleBLEPeripheral主程式下载到CC2540

时间:10-02 整理:3721RD 点击:

大家好!

有如下几个问题:

1. 如何同时把SBL Bootloader和SimpleBLEPeripheral主程式下载到CC2540?

2.我按TI官方的连接:http://processors.wiki.ti.com/index.php/SerialBootLoader

把SBL下载到CC2540,然后配置SimpleBLEPeripheral主程式能生成bin文件,通过串口可以下载主程式;

但问题是:把SBL下载到CC2540后退出debug模式,仿真器CCDebuger还跟2540连着电脑,可以通过SerialBootTool串口下载;

当把仿真器拔掉后,通过SerialBootTool串口不能下载,提示timeout。

还有为什么通过SerialBootTool串口下载一次成功后,再次通过SerialBootTool串口就不能在线更新程式了?

3.bootloader程序的memory map 方式?

知道的帮忙解答下,谢谢!

串口下载的蓝牙代码可以正常运行吗?

串口下载通常需要一个io引脚高低电平判断的!

Hi, zhihao~

这个问题是因为,你通过仿真器下载SBL,芯片内部的主程式被清除,芯片跑在SBL程序内。所以此时你可以使用SerialBootLoader串口下载bin。

但是,如果你下载完成了有效的bin,那么程序会跳转到主程式运行。

换句话说,你不能再次用SerialBootLoader下载程序是因为芯片没有在运行SBL程序。

你可以使用按键、蓝牙指令、UART等方式,在主程式中,调用appForceBoot()接口,使主程序跳回到SBL,然后就可以正常用SerialBootLoader烧写了。这个函数在主程式OnBoard.c/h文件中。给函数添加下代码实现:

/*********************************************************************
 * @fn      appForceBoot
 *
 * @brief   Common force-boot function for the HCI library to invoke.
 *
 * @param   none
 *
 * @return  void
 *********************************************************************/
void appForceBoot(void)
{
  // Dummy function for HCI library that cannot depend on the SBL build defines.
  uint16 crc[2];

  // Make sure SBL is present.
  HalFlashRead(SBL_CRC_PAGE, SBL_CRC_OFFSET, (uint8 *)crc, 4);

  if ((crc[0] == 0xFFFF) || (crc[0] == 0x0000) ||
      (crc[1] == 0xFFFF) || (crc[1] == 0x0000) ||
      (crc[1] != crc[0]))
  {
    return;
  }

  HAL_DISABLE_INTERRUPTS();

  crc[0] ^= 0xFFFF;  // Only write to zero bits that are not already zero.
  crc[1] = 0xFFFF;   // No need to write any bits to zero.
  HalFlashWrite(HAL_SBL_IMG_CRC, (uint8 *)crc, 1);

  HAL_SYSTEM_RESET();
}

 

如果有幸帮到你,麻烦随手点下选择正确答案。(*^__^*)

楼上正解,已确认:)

通过串口下载的蓝牙代码可以正常运行。

确保串口bootloader代码和蓝牙代码地址空间没有冲突,正确烧写程序后自动运行蓝牙,通常不会自动进入串口boot

Hi Viki:

我举个例子,TI 的DSP 28062的flash有A,B,C,D,E,F,G,H八个区,用烧录器先烧录Main主程式,

然后选中A区擦除烧录Bootloader,然后通过串口就可以在线烧录了;

CC2540是不是不能同时烧录Bootloader和Main,只能先通过烧录器烧录Bootloader然后通过串口烧录主程式?

楼主的升级功能用的多不?可以考虑用脱机烧录方式,速度很快的!

这个问题有人遇到过吗?

2.我按TI官方的连接:http://processors.wiki.ti.com/index.php/SerialBootLoader

把SBL下载到CC2540,然后配置SimpleBLEPeripheral主程式能生成bin文件,通过串口可以下载主程式;

但问题是:把SBL下载到CC2540后退出debug模式,仿真器CCDebuger还跟2540连着电脑,可以通过SerialBootTool串口下载;

当把仿真器拔掉后,通过SerialBootTool串口不能下载,提示timeout。

楼主按照标记答案的回答尝试了么?

关于同时下载,请参考我对楼主另一个帖子的回答:

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/132676.aspx

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top