硬汉嵌入式论坛

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

[BOOT/IAP] 做bootload,写了内部flash,之后无法跳转的问题

[复制链接]

3

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2023-10-27 10:32:01 | 显示全部楼层 |阅读模式
0x08000000-0x08010000做bootload的分区,0x08010000-0x08020000做app, 在bootload中写了flash到0x08010000-0x08020000,写的是一个镜像,写完之后不能跳转到app,但是可以跳转到bootload,也就是跳转到0x08000000处,不知道为什么,请教一下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2023-10-27 12:37:23 | 显示全部楼层
方便的话,发代码看下
回复

使用道具 举报

3

主题

2

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-10-27 13:01:09 | 显示全部楼层
会进入while循环
int main(void)
{
        /* 使能CPU Cache */
        CPU_CACHE_Enable();

    HAL_Init();       
        /* 系统时钟初始化成480MHz */
        SystemClock_Config();
//        LED_GPIO_Config();

        DEBUG_USART_Config();
        /* 32M串行flash W25Q256初始化 */
        QSPI_FLASH_Init();
   
    Indirect_Mode_Init();//qspi间接模式
    printf(" BOOTLOAD STRING\n");     
    Mapping_Mode_Init();//QSPI进入内存映射状态
    stmflash_write(FLASH_SAVE_ADDR, (uint32_t *)image, sizeBYTE(63232));   /* 指定地址开始写入指定长度的数据 */
   __set_CONTROL(0);
  CPU_CACHE_Disable();
  SysTick->CTRL = 0;
  JumpToApplication = (pFunction) (*(__IO uint32_t*) (APPLICATION_ADDRESS + 4));
  __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
  JumpToApplication();
while(1){

}
回复

使用道具 举报

3

主题

2

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-10-27 13:23:24 | 显示全部楼层
eric2013 发表于 2023-10-27 12:37
方便的话,发代码看下

我镜像搞错了,感谢硬汉哥
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2023-10-28 08:28:43 | 显示全部楼层
wafg147 发表于 2023-10-27 13:23
我镜像搞错了,感谢硬汉哥

感谢告知最终问题原因。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2023-11-2 23:35:17 | 显示全部楼层
eric2013 发表于 2023-10-27 12:37
方便的话,发代码看下

硬汉哥,我也是像他这样分区的,芯片型号是stm32h750vbt6,我是写入了app之后,没有执行app的程序,app里面我也设置了偏移0x10000,我debug调试的时候看了我写入flash的和app程序是一样的,但是不执行app的代码,app是打印一句话。
                if(key1_flag == 1)
                {
                                 key1_flag = 0;       
                               
                                 if (((*(volatile uint32_t *)(0X20001000 + 4)) & 0xFF000000) == 0x08000000)  /* ÅжÏÊÇ·ñΪ0X08XXXXXX */
                                                {
                                                         iap_write_appbin(FLASH_APP1_ADDR, app_receive_buf, app_number_byte);            /* ¸üÐÂFLASH´úÂë */
                                                         printf("¹Ì¼þ¸üÐÂÍê³É!\r\n");
                                                }
                                 else
                                                {
                                                                 printf("·ÇFLASHÓ¦ÓóÌÐò!\r\n");
                                                }       
                }                               
                if(key2_flag == 1)
                {
                                 key2_flag = 0;       
                               
                                if (((*(volatile uint32_t *)(FLASH_APP1_ADDR + 4)) & 0xFF000000) == 0x08000000) /* ÅжÏFLASHÀïÃæÊÇ·ñÓÐAPP,ÓеĻ°Ö´ÐÐ */
                                        {
                                                        printf("¿ªÊ¼Ö´ÐÐFLASHÓû§´úÂë!!\r\n\r\n");
                                                        HAL_Delay(1000);   
                                                        iap_load_app(FLASH_APP1_ADDR);/* Ö´ÐÐFLASH APP´úÂë */       
                                        }
                                else
                                        {
                                                        printf("ûÓпÉÒÔÔËÐеĹ̼þ!\r\n");
                                        }       
    }
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2023-11-3 01:41:19 | 显示全部楼层
小花生 发表于 2023-11-2 23:35
硬汉哥,我也是像他这样分区的,芯片型号是stm32h750vbt6,我是写入了app之后,没有执行app的程序,app里 ...

这个要排查下,可以先boot里面什么都不做,上电后main方式里面就一条 iap_load_app函数,看看正常不。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2023-11-3 10:39:21 | 显示全部楼层
eric2013 发表于 2023-11-3 01:41
这个要排查下,可以先boot里面什么都不做,上电后main方式里面就一条 iap_load_app函数,看看正常不。

iap_load_app(0x8000000);这样吗  程序卡住了没运行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 06:48 , Processed in 0.226271 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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