最近做BLE CC2541 OAD空中升级,鉴于256K的flash,如果编译代码code大的话,存储空间显得有些力不从心。有的人会采用双CPU工作,主从形式,不过显得有些奢侈。Flash分成三个区:bootloader(BIM)、Image-A、Image-B区。bootloader(BIM)区是固定的不用改,Image-A应该尽量小,这样Image-B才会有足够的升级空间。遇到的问题列一下:
1.在PC端用SmartRF Flash Programmer软件下载好BIM、Image-A之后,BIM下载时Actions要选择全部擦除芯片。下载Image-A要选择烧录到前一个映像后面Append and verify。然后打开BLE Device Monitor软件进行Image-B bin文件写入。遇到端口无反应
这是因为USB Dongle固件的问题,在作为BTool\BLE Device Monitor 使用前,需要下载对应的固件,在协议栈目录下:c:\Texas Instruments\BLE-CC254x-1.4.0\Accessories\HexFiles\CC2540_USBdongle_HostTestRelease_All.hex下载后就可以识别端口了。
2.下载了BIM和Image-B,用BLE Device Monitor加载Image-B .bin文件后,点击Start开始升级,一会就断开连接,软件自动关闭。如下:
这是可能由于软件版本太低的原因,下载最新的即可。
不过感觉在PC端升级时间太长,可以适当修改从机的连接参数,速度会提升。如:
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 16//80
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 16//800
// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY 0
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 50//1000
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST FALSE//TRUE
更多技术文章浏览请关注:
百家号:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh
头条号:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987