插上USB之后,识别出了虚拟串口设备,这是很自然的。接着,还识别出了一个“磁盘”设备,我立即就明白了ST为什么要用STM32L151来做USB转串口功能——不仅仅是一个虚拟串口啊,这样就像Nucleo上的ST-Link v2-1那样,还带了烧写程序的功能,应该把HEX文件拷贝进去就可以烧程序了。
电脑上已安装过了 BlueNRG-1_2 DK 2.5.0 软件,先看看有没有现成的Demo编译好的可以试。在 DK 安装的目录下面,一搜.HEX的文件便找到了,在这里:
我发现 Application 目录里面有"BlueNRG-1 Flasher"这个程序,应该也可以实现烧录的。打开试了一下,它自动识别出了开发板。选了BLE_Chat这个Demo的HEX文件,果然可以烧进去。
在运行 BLE_Chat 时要关闭 Flasher, 用终端软件打开串口。重新复位一下,可以看到程序输出的信息。在我的手机上,也可以搜索到"BLE Chat"的蓝牙设备了。等明天安装App再继续玩。
STEVAL-IDB007V1 上面没有带 ST-Link, 从电路图上看 BlueNRG-1 的SWD调试口是只连到 20-pin JTAG座上的,那么JFlasher软件只能是通过串口烧写的。同样,通过向虚拟磁盘设备拷贝.HEX文件烧写,也只能是STM32L151通过串口对BlueNRG-1进行操作来实现。这么看来是通过 BlueNRG-1 的 bootloader 来实现ISP了。查阅了它的文档,果然有关于bootloader的说明。
既然 BlueNRG-1 也是像STM32那样有SWD口的,用ST-Link/J-Link这些也应该可以像普通ARM MCU那样进行调试和烧写。ST提供了一个BlueNRG专用的 ST-Link Utility 软件,不妨就试一下。工具有GUI和命令行的版本,这是命令行的:
它的命令和 ST-Link_CLI 是一样的,我用 -CmpFile 来比较了一下Flash内容和(用拷贝文件的方式写入的)和HEX文件是否一致。
总结, 烧写 STEVAL-IDB007V1 上面 BlueNRG-1 的Flash有三种途径:
1. 通过JTAG座用SWD连接ST-Link等工具,像普通单片机那样烧写。
2. 在USB连接的条件下,通过向板上STM32L151虚拟出的磁盘拷贝.HEX文件的办法,不需要其它软件。
3. 用BlueNRG-1 Flasher软件,通过USB虚拟串口和bootloader直接通信实现烧写。前提是串口不要被占用,烧写前需要复位,才能执行bootloader程序。
本帖最后由 cruelfox 于 2017-12-30 13:22 编辑