找回密码
 立即注册

只需一步,快速开始

搜索

FM33LG0X之Bootload应用

0
回复
1871
查看
[复制链接]

166

主题

343

帖子

3076

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3076
QQ
2022-1-28 10:41:16 显示全部楼层 |阅读模式
FM33LG0X之Bootload应用


原帖地址:https://bbs.21ic.com/icview-3182390-1-1.html


一、FM33LG0X简介:
该系列MCU拥有多样的封装形式、丰富的模拟外设、充足的嵌入式存储资源,CAN接口、DAC等产品特点,可广泛应用于:物联网通讯、传感模块、智能家电、电池管理、电动工具、智能表计、健康医疗、工业应用等领域。
该开发板存储方面集成了256KB的嵌入式FLASH与32KB的RAM,非常适合bootload+app。


111.png

二、Bootload简介:
bootload程序最必要的功能是负责对MCU固件的更新,也就是MCU自己给自己下载程序。
在实际的MCU项目中,如果加入了bootload功能,就可以为单片机日后升级程序留出一个接口,方便为MCU程序更新。
当然,需要创建两个项目工程,一个是bootload工程,一个是app工程。
MCU 存储区结构如下图所示:
222.png

具有bootload功能的MCU,在上电运行时,若检测到应用程序升级,则会擦除应用区程序代码,然后更新应用,跳转至应用代码区,运行更新后的应用程序;
若未检测到应用程序升级,则会直接跳转至应用代码区,执行原应用程序。
333.png



三、先下载bootload程序:
FM33LG0X开发板的演示程序中有bootload程序,可以直接编译下载使用:
  1. int main(void)

  2. {

  3.         unsigned int volatile i;

  4.         uint32_t JumpAddress;

  5.    

  6.     /* Reset of all peripherals, Initializes the Flash inte**ce and the Systick. */

  7.     /* SHOULD BE KEPT!!! */

  8.     MF_Clock_Init();

  9.    

  10.     /* Configure the system clock */

  11.     /* SHOULD BE KEPT!!! */

  12.     MF_SystemClock_Config();

  13.    

  14.     /* Initialize all configured peripherals */

  15.     /* SHOULD BE KEPT!!! */

  16.     MF_Config_Init();



  17.         IWDT_Init();//看门狗   

  18.     UserInit();

  19.         RemoteBootloadInter=0;        

  20.         BootLoading = 0;

  21.         JumpCount = 0;

  22.         

  23.         Init_CRC_CRC16CCITT();

  24. #ifdef BOOTLOAD_REMOTE_BACKUP_MODE //远程备份模式        

  25.         if(BOOTLOAD_file()==0)// 查看是否有需要bootload的文件

  26.         {

  27.                 IWDT_Clr();

  28.                 /* 跳转到应用程序位置 */

  29.                 JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS_OFFSET + 4);

  30.                 __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS_OFFSET);

  31.                 (*( void (*)( ) )JumpAddress) ();        

  32.         }

  33. #endif



  34. #ifdef BOOTLOAD_REMOTE_NOBACKUP_MODE  //远程不备份模式               

  35.         if((*(unsigned long *)BOOTLOAD_CONFIG_START_ADDRESS) == 0x12345678)

  36.         {

  37.                 RemoteBootloadInter=0x55;//进入远程不备份模式

  38.         }

  39. #endif        

  40.         

  41.         Uartx_Init( UART0 );

  42.         Uartx_Init( UART1 );

  43.     Uartx_Init( UART4 );

  44.         

  45.         Init_lptim();

  46.         

  47.         __enable_irq();        //打开全局中断使能

  48.         

  49.     while(1)

  50.     {     

  51.                 IWDT_Clr();             //清系统看门狗        

  52.                

  53.         if(Uart[CHHW].Flag&B0000_0100)

  54.                 {

  55.                         Uart_Proc(CHHW);        

  56.                         IWDT_Clr();

  57.                 }

  58.         

  59.                 if(Uart[CH485].Flag&B0000_0100)

  60.                 {

  61.                         Uart_Proc(CH485);        

  62.                         IWDT_Clr();

  63.                 }



  64.                 if(Uart[CHZB].Flag&B0000_0100)

  65.                 {

  66.                         Uart_Proc(CHZB);        

  67.                         IWDT_Clr();

  68.                 }

  69.         

  70.                 if( (BootLoading == 0) && (JumpCount >= WAITTIME) && (RemoteBootloadInter == 0) )//是否满足跳转用户程序条件

  71.                 {

  72.                         DeinitSystem();//关闭外设

  73.                         

  74.                         /* 跳转到应用程序位置 */

  75.                         JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS_OFFSET + 4);

  76.                         __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS_OFFSET);

  77.                         (*( void (*)( ) )JumpAddress) ();

  78.                 }

  79.     }

  80. }
复制代码
这块开发板的下载口有SWIO、SWCLK等,虽然类似ST SWD下载口,但是使用了多款ST LINK都无法下载,最后找到一块多功能下载器才搞定:(市面上常见的J-Link和U-Link都能够支持)
555.jpg

四、下载APP:
FM33LG0X开发板有配套的bootload上位机,我们使用一个USB转串口工具即可升级APP:
666.png



至此FM33LG0X的bootload已经成功升级APP!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

返回顶部