OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3268|回复: 5

[阿波罗F767] 【IAP用SD卡】F7 IAP升级

[复制链接]

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17657
金钱
17657
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-3-9 12:17:20 | 显示全部楼层 |阅读模式
本帖最后由 Psheng 于 2019-3-9 14:45 编辑

本次IAP设计中     0x0800 0000 -0x0801 0000   存放bootloader程序(64kb)
                         0x0801 0000  之后为APP


bootloader程序思路:
      第一步进行了必要的硬件初始化,然后检查SD卡是否就位,

          1.1如果没有SD,检查app地址0x0801 0000中时候有APP程序了  如果有就跳转到APP程序  没有就串口一直打印APP error
        1.2检查到有SD卡后 ,挂载到FATFS上,并检查在SD卡根目录是否有 firmware.bin 文件
             1.2.1如果没有这个文件  则检查app地址0x0801 0000中时候有APP程序了  如果有就跳转到APP程序  没有就串口一直打印APP error
             1.2.2有这个文件,则将文件数据复制到SDRAM,并将SDRAM的数据写片内FALSH的APP位置后 删除这个文件 然后跳转到app执行



       在bootloder中 函数
jump2app()详解
  [mw_shl_code=c,true]void jump2app(void)
{
    HAL_TIM_Base_Stop_IT(&htim3);/*在本bootloder中开了定时器3的中断,所以要在这里关闭
                                   不然在APP中开启所有的中断后  如果没有写定时器3的中断服务函数  触发定时器3的中断后
                                   会因为没有函数跳转 导致函数卡死*/
   
    INTX_DISABLE();//关闭所有中断
                    /*防止在切换中断向量时,有中断触发 不确定是进入哪个中断服务函数 引发卡死*/
   
    MSR_MSP(APP_ADDR_START);/*设置栈顶地址*/
                            /*stm32 芯片的程序中 第一个32bit地址存放的是栈顶的地址
                               这里直接将APP的栈顶地址 复制给CPU的R14寄存器(栈顶寄存器)*/
   
    ( (void(*)()) APP_ADDR_RESET )();/*跳转到app*/
                                    /*stm32 芯片的程序中 第二个32bit地址存放的是复位中断函数的地址
                                      取出存放的复位中断函数的地址 并强制转换成函数 然后运行
                                       这个时候cpu指针 就运行到APP的复位中断函数中了 在APP的复位中断函数中会
                                        初始化时钟后 再跳转到APP的main函数中
                                    */

}[/mw_shl_code]

APP程序注意点:
   再工程中改变整个代码的地址,偏移到0x0801 0000 也要重新设置中断向量表到这个地址 并生成这个firmware.bin文件
  因为在bootloder中我们关闭了所有的中断  ,在APP中 我们设置好向量表后 要开启所有的中断
  SCB->VTOR = FLASH_BASE | 0x10000;//设置偏移量 64KB之后
  INTX_ENABLE(); /*开启所有中断*/APP: FreeRTOS实验14-1 FreeRTOS二值信号量实验.rar (17.93 MB, 下载次数: 458)
/*
*
*
*
*
*
*/
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14287
金钱
14287
注册时间
2018-8-3
在线时间
1147 小时
发表于 2019-3-9 18:21:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

头像被屏蔽

0

主题

207

帖子

0

精华

禁止发言

积分
276
金钱
276
注册时间
2019-3-4
在线时间
4 小时
发表于 2019-3-11 08:21:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

233

主题

957

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2011-10-9
在线时间
222 小时
发表于 2019-9-5 09:18:22 | 显示全部楼层
用这个 boot 升级后 程序可以跳转 但是我的app变得不稳定  有时候会卡在开始初始化的语句 有时候又不卡  怪了,  卡的时候连 初始化LED都过不去  按一下rst 又可以过去
回复 支持 反对

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17657
金钱
17657
注册时间
2018-3-3
在线时间
523 小时
 楼主| 发表于 2019-9-9 10:23:09 | 显示全部楼层
simms01 发表于 2019-9-5 09:18
用这个 boot 升级后 程序可以跳转 但是我的app变得不稳定  有时候会卡在开始初始化的语句 有时候又不卡  怪 ...

单独测试下APP程序看看
/*
*
*
*
*
*
*/
回复 支持 反对

使用道具 举报

233

主题

957

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2011-10-9
在线时间
222 小时
发表于 2019-9-9 11:01:40 | 显示全部楼层
APP 正常的  因为之前一直正常的  就修改了程度地址以及中断地址 以及 初始化后打开了全部中断
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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