求助:stm32 用内部flash虚拟u盘进行IAP

2019-12-11 18:39发布

求助:stm32 用内部flash虚拟u盘进行IAP

现在我虚拟出来了(stm32f103c8t6) iap程序8k 虚拟出来是52k,格式化后32k(1024字节)
转跳程序.png (16.48 KB, 下载次数: 0) 下载附件 转跳程序 2014-8-21 21:14 上传
iap_load_app(0x08008000);        无法转跳,直接进入IAP
iap_load_app(0x08008800); 死机



我直接将app程序强制写进0x08008000,iap转跳成功(IAP设置转跳地址为08008000)..

求助..为啥直接放bin不能转跳.bin不是直接可以读取的文件?我找到bin真地址转跳不就行了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
95条回答
wuguoyan
1楼-- · 2019-12-15 07:32
这个必须是个精华帖
hellolinux
2楼-- · 2019-12-15 12:40
LZ好人,这个必须是个精华帖!!
有IAR的吗?
FlandreUNX
3楼-- · 2019-12-15 14:11
 精彩回答 2  元偷偷看……
hellolinux
4楼-- · 2019-12-15 14:29
FlandreUNX 发表于 2014-8-25 23:01
MDK5.x版的
源代码直接招搬进去就是了.声明一下是用F10X_MD版 是B版的EVAL

LZ 我现在用的是STM32F103VBT6  128K的应该怎么改啊?
试了一下
mass_mal.c 文件中
#define FLASH_SIZE                        0xD000改为0x18000

进入IAP,格式化后可以认出76K的空间

APP程序如下
#include "stm32f10x.h"
void delayms(u16 tim)
{
        u16 i;
        while(tim--)
        {
                i = 1000;
                while(i--);
        }

}
int main(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
               
        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);
               
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE , ENABLE);       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);
       
       
        while(1)
        {
                GPIO_ResetBits(GPIOE, GPIO_Pin_6);
                delayms(500);
                GPIO_SetBits(GPIOE, GPIO_Pin_6);       
                delayms(500);
        }
}

编译设置和PDF文档中的一致IROM1 为 0x8008000。生成的bin文件放到U盘重启,不执行啊??
FlandreUNX
5楼-- · 2019-12-15 17:45
请看我上面的全部过程 在u盘中bin并不是在8000这个位置
FlandreUNX
6楼-- · 2019-12-15 21:47
hellolinux 发表于 2014-8-26 15:10
LZ 我现在用的是STM32F103VBT6  128K的应该怎么改啊?
试了一下
mass_mal.c 文件中

bin并不是在8000位置中 请看我全我帖子 用winhex查看实际地址

一周热门 更多>