【STM32WB55 测评】+USBDongle变砖记
<div class='showpostmsg'> 本帖最后由 freebsder 于 2019-5-9 00:50 编辑想把USBDongle刷成sniffer用来监听蓝牙无线的情况。
于是,安装最新的STM32Cube_FW_WB_V1.1.0,安装烧写工具STMCubeprogrammer。
在STM32Cube_FW_WB_V1.1.0中找到固件的烧写说明 STM32Cube_FW_WB_V1.1.0/Projects/STM32WB_Copro_Wireless_Binaries/Release_Notes.html
大概意思第一步安装 STM32CubeProgrammer,第二步把USBDongle的boot模式选择到Boot0,第三步删除当前协议栈,第四步读取内存中的版本信息,用于后面的Firmware Upgrade Services升级,第五步,烧写FUS,第六步烧写协议栈。
读取的版本信息。根据提示,我需要升级FUS,所以,执行第五步命令
到这里,出现问题了,升级失败,重试三次后抹掉写入信息推出:
我以为是版本问题,要么就恢复到以前的版本应该可以,所以,专门又下载了STM32Cube_FW_WB_V1.0.0,结果里面没有FUS固件。那我就根据1.0.0的说明刷写1.0.0的协议栈吧,同样的,失败。。。
好了,至此,USBDongle新固件的写不了,老的固件不能恢复,变砖了。@okhxyyo只能问问ST,还有没有救。。。
此内容由EEWORLD论坛网友freebsder原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> :Sad:好的我给问问去。 我昨天看了一下USBDongle的原理图,调试接口是引出到边上的接口了的。应该是可以用STLINK烧写的。
damiaa 发表于 2019-5-9 08:50
我昨天看了一下USBDongle的原理图,调试接口是引出到边上的接口了的。应该是可以用STLINK烧写的。
如果只是需要flash写这么简单,何必弄个命令行又是升级又是刷代码? 没用的,烧进去紧接着还有二次动作。 damiaa 发表于 2019-5-9 08:50
我昨天看了一下USBDongle的原理图,调试接口是引出到边上的接口了的。应该是可以用STLINK烧写的。
只有 CPU2 才能访问那部分 FLASH, SWD也不能访问,读都不能读。 本帖最后由 damiaa 于 2019-5-9 10:26 编辑
cruelfox 发表于 2019-5-9 09:45
只有 CPU2 才能访问那部分 FLASH, SWD也不能访问,读都不能读。
哦 这样。我刚才看了NUCLEO板子的例子,README文件里提到了一句:
This application requests having the stm32wb5x_BLE_Stack_fw.bin binary flashed on the Wireless Coprocessor.
If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the
Wireless Coprocessor binary.
意思无线协处理器的更改方法是用STM32CubeProgrammer。好像是只提到了Projects\STM32WB_Copro_Wireless_Binaries\Release_Notes这个更改方法。
wb的库提供了doggle的源码,可以自己定制和编译,应该可以写入的,不用急。我正在研究,也试一下写入自定义的bin,看是成功还是变砖。 本帖最后由 damiaa 于 2019-5-9 10:30 编辑
北方 发表于 2019-5-9 09:57
wb的库提供了doggle的源码,可以自己定制和编译,应该可以写入的,不用急。我正在研究,也试一下写入自定义 ...
哈哈。:loveliness: 还是留几个好的吧。都变砖了就不好玩了。 damiaa 发表于 2019-5-9 10:28
哈哈。 还是留几个好的吧。都变砖了就不好玩了。
ST看到大家这么有探究精神也不知道是什么感受 damiaa 发表于 2019-5-9 10:28
哈哈。 还是留几个好的吧。都变砖了就不好玩了。
革命的火种要保留! 北方 发表于 2019-5-9 09:57
wb的库提供了doggle的源码,可以自己定制和编译,应该可以写入的,不用急。我正在研究,也试一下写入自定义 ...
有代码的那部分应该是应用代码,固件代码好像真没看到 cruelfox 发表于 2019-5-9 09:45
只有 CPU2 才能访问那部分 FLASH, SWD也不能访问,读都不能读。
是的,估计cube programer里面和bootloader里面有特定的协议才能写这块区域。 仔细的看了楼主的操作,是没发现什么问题。第五步升级FUS挂了,如果到1.0版本也不能烧写无线固件 Wireless Coprocessor Binary,目前没看到有其他提供的方法。直接用1.0版本估计规避这个FUS升级问题。 freebsder 发表于 2019-5-9 10:54
革命的火种要保留!
楼主还好,还有一块NUCLEO吧。直接用1.0版本玩。:congratulate: 楼主提醒的好!我做了WB的板子,等芯片焊上去后多试试,不担心变砖。开发板是不敢动了,只能下载应用程序看看。:) 问一下楼主,sniffer固件对应的是哪一个bin文件? 通过这两个工具,难道不能烧写到指定区域吗? 卡森 发表于 2019-5-9 16:51
通过这两个工具,难道不能烧写到指定区域吗?
最后一个bin。你可以试试那些工具行不行。 freebsder 发表于 2019-5-9 17:08
最后一个bin。你可以试试那些工具行不行。
我等过几天DIY的板子上试试看,我想都是通过内置BootLoader写进去的吧,只是方式不同罢了,如果再增加一种烧写方式,那有些多此一举了吧,希望能成功。
另外,我还没完全看懂是怎么访问M0处理器的,看代码有些累,应该是通过命令与之通信,望多交流。 freebsder 发表于 2019-5-9 17:08
最后一个bin。你可以试试那些工具行不行。
我看了下你更新的flash地址是0x080EC000,而最后一个固件bin需要更新在0x080EA000,会不会这里出错了?