硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2858|回复: 6
收起左侧

[有问必答] 移植st官方的http-iap例程,http接受后跳转运行不了

[复制链接]

0

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2022-2-17 14:33:52 | 显示全部楼层 |阅读模式
本帖最后由 Wendb 于 2022-2-17 14:45 编辑

我在板子上移植了st官方的http-iap例程,但是使用ie浏览器上传bin文件后跳转,app运行不了,不知道是什么原因,目前能确定的是:
1. 使用STM32 ST-LINK Utility工具,分别将BootLoader的bin以及app的bin下载到板子,可以跳转并成功运行app;
2. 使用STM32 ST-LINK Utility工具,先将BootLoader的bin下载到板子,再使用ie浏览器给板子下载app 的 bin文件,然后再跳转,app运行失败;
我怀疑是使用浏览器给板子上传app的bin文件时,或者烧写到flash中时,中途丢了什么数据。但是不知道该怎么检查使用浏览器给板子上传的bin文件是否完整,有没有小伙伴使用过这个例程并且遇到过我这样的问题的?
代码是在cubeide上的,我将代码导出来。

iap_app.rar

5.47 MB, 下载次数: 10

bootloader.rar

1.6 MB, 下载次数: 16

回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2022-2-17 14:37:06 | 显示全部楼层
本帖最后由 Wendb 于 2022-2-17 14:46 编辑

app代码很简单,裸机的led灯闪烁
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2022-2-18 01:10:18 | 显示全部楼层
大概率你跳转前没有提供一个干净的环境。这两种测试的最大的区别是,你运行浏览器方式,网络已经正常运行操作了。
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2022-2-18 10:10:53 | 显示全部楼层
eric2013 发表于 2022-2-18 01:10
大概率你跳转前没有提供一个干净的环境。这两种测试的最大的区别是,你运行浏览器方式,网络已经正常运行操 ...

嗯嗯,我看了下我的工程和官方的例程,确实有点区别,官方例程在跳转前什么只初始化了按键。不过我改成和官方的一样,好像还是跳转失败了
  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */
  4.   uint32_t i = 0;
  5.   BSP_PB_Init();
  6.   if (!key_scan())
  7.   { /* Key push-button not pressed: jump to user application */
  8.     /* Check if valid stack address (RAM address) then jump to user application */
  9.     if (1)
  10.     {
  11.       /* Jump to user application */
  12. //      printf("jump to app\r\n");

  13.       __set_PRIMASK(1);      /* 关闭全局中断 */

  14.           SysTick->CTRL = 0;     /* 关闭滴答定时器,复位到默认值 */
  15.           SysTick->LOAD = 0;
  16.           SysTick->VAL = 0;

  17.           HAL_RCC_DeInit();           /* 设置所有时钟到默认状态,使用HSI时钟 */

  18.           for (i = 0; i < 8; i++) /* 关闭所有中断,清除所有中断挂起标志 */
  19.           {
  20.             NVIC->ICER[i]=0xFFFFFFFF;
  21.             NVIC->ICPR[i]=0xFFFFFFFF;
  22.           }

  23.       JumpAddress = *(__IO uint32_t*) (USER_FLASH_FIRST_PAGE_ADDRESS + 4);
  24.       Jump_To_Application = (pFunction) JumpAddress;
  25.       /* Initialize user application's Stack Pointer */
  26.       __set_MSP(*(__IO uint32_t*) USER_FLASH_FIRST_PAGE_ADDRESS);

  27.       HAL_TIM_Base_MspDeInit(&htim7); //要在启动app之前反初始化tim外设,否则app会运行卡死
  28.       HAL_UART_MspDeInit(&huart5);
  29.       HAL_UART_MspDeInit(&huart4);

  30.       Jump_To_Application();
  31.       /* do nothing */
  32.       while(1);
  33.     }
  34.     else
  35.     { /* Otherwise, do nothing */
  36.       /* LED3 (RED) ON to indicate bad software (when not valid stack address) */
  37. //      printf("unvalid address\r\n");
  38.           HAL_GPIO_TogglePin(GPIOE, LED_Pin);
  39.       /* do nothing */
  40.       while(1);
  41.     }
  42.   }
  43.    /* Enter in IAP mode */
  44.   else
  45.   {
  46.   /* USER CODE END 1 */

  47.   /* MCU Configuration--------------------------------------------------------*/
  48.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  49.     HAL_Init();

  50.   /* USER CODE BEGIN Init */
  51.   /* USER CODE END Init */

  52.   /* Configure the system clock */
  53.     SystemClock_Config();

  54.   /* USER CODE BEGIN SysInit */
  55.   /* USER CODE END SysInit */

  56.   /* Initialize all configured peripherals */
  57.     MX_GPIO_Init();
  58.     MX_UART4_Init();
  59.     MX_UART5_Init();
  60.     MX_TIM7_Init();
  61.     MX_LWIP_Init();
  62.   /* USER CODE BEGIN 2 */

  63.      /* Initialize the webserver module */
  64.         printf("bootloader\r\n");
  65.     IAP_httpd_init();

  66.   /* USER CODE END 2 */

  67.   /* Infinite loop */
  68.   /* USER CODE BEGIN WHILE */
  69.         while (1)
  70.         {
  71.           MX_LWIP_Process();
  72.     /* USER CODE END WHILE */
  73.     /* USER CODE BEGIN 3 */
  74.     }
  75.   }
  76.   /* USER CODE END 3 */
  77. }
复制代码
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2022-2-18 10:11:53 | 显示全部楼层
另外,附上官方的例程代码压缩包

LwIP_IAP.rar

166.14 KB, 下载次数: 15

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2022-2-19 08:22:29 | 显示全部楼层
可以考虑,此贴解决方案试试。

实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时制作了一个视频操作说明
https://forum.anfulai.cn/forum.p ... 9595&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2022-2-21 08:30:24 | 显示全部楼层
eric2013 发表于 2022-2-19 08:22
可以考虑,此贴解决方案试试。

实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR ...

谢谢硬汉哥,我看一下
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:52 , Processed in 0.048357 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表