如何同时把SBL Bootloader和SimpleBLEPeripheral主程式下载到CC2540
大家好!
有如下几个问题:
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