stm32w108 Bootloader的使用

来源:互联网 发布:变色龙运行mac黑屏 编辑:程序博客网 时间:2024/06/06 01:29

     stm32w108系列可以通过radio无线射频发送数据,也就是说可以通过无线来更新程序。在线升级。开始也是摸索下,下载了st公司提供的simplemac源程序。  分析了几天源代码,但是不知道怎么用,后来查找资料大楷明白了是什么流程。

      其实可以理解为两个程序 ,FLASH中有两段代码,一段是IAP代码,另一段就是用户的应用程序即APP代码,以自己理解的话,只有当APP代码段跳刀iap的时候,程序就进入了升级模式,拿simplemac的sun的例子来说 ,有一个“O”commend,通过串口输入O就进入iap。当然这只是基本的程序流程。下载的

时候注意的东西还是蛮多的。下面是做的时候出的些错误。(iar环境下编译调试的,注意下iar版本,有的源代码不能在低版本运行。)

   1选择正确的device  。就拿我这块板子来说源代码初始设置是st stm32w108cc 编译可以通过,但是下载时候报错。后来换成stm32w108cb(板子的datasheet可以找到)。


   2.通过分析源代码,了解到app的代码段运行在0x08003000后,所以要设置下载地址。iar就可以。option的linker下 点击edit(可能有的不能编辑,可以先选取edit上的选项再编辑,就可以弹出对话框)。

IAP跳转的地址必须APP的起始地址一致,相应的中断向量表(开始就是因为这个问题走了很多弯路。)也要修改,否则APP将不能正确的运行。代码中,串口方式的IAP跳转的地址为0x08003000,因此应用程序的起始地址也应为0x08003000。如下图所示:

后面再改memory:

后面再通过其他下载工具把simplemac里面的STM32W108xx_SimpleMAC_V2.0.1\Utilities\iap_bootloader\STM32W108xB文件夹的iap_bootloader.s37加载到0x08000000上面。这样就下载好了第一块板子。

既然是在线通信,当然是两块板子配合。另一块板子下载Bootloader_demo这个程序。然后通过串口调试。下载过程如下:

1通过串口打开进入“o”模式。(例子:sun),可以单步走来看下流程。(以前如果没有下载iap_bootloader.s37的话会一直死在硬件错误中断里面,while(1);里面,如果加载了可以在调试工具里面看到程序运行在0x08000000下面点。因为app是下载到0x08003000后面,就可以理解为程序已经跳转到升级模式下面了)。

2在另一块板子下面可以看到有些get loadimage等命令。可以输入loadimage这样就可以把一段程序下载到第一块板子上面了。(可以在源码中找到const unsigned char image[] = { 0x00,0x04,..........................)很长很长····。文件名是image.h/image256.h.

3.运行loadimage。串口会打印进度条。(如果是node not found的话有可能是距离的问题。话说我们那块板子很多时候要把两块芯片挨的足够近才能够发送数据。略坑··)

4.会显示下载时间什么的。这时第一块板子会重启变成下载的那个程序。






0 0