打印

f4的iap程序读出bin的数组为什么是低位在前高位在后,不应该是高位在前么??

[复制链接]
151|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "stmflash.h"
#include "iap.h"
//////////////////////////////////////////////////////////////////////////////////         
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F407开发板
//IAP 代码           
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2014/7/21
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved                                                                          
//////////////////////////////////////////////////////////////////////////////////

iapfun jump2app;
u32 iapbuf[512];         //2K字节缓存  
//appxaddr:应用程序的起始地址
//appbuf:应用程序CODE.
//appsize:应用程序大小(字节).
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
        u32 t;
        u16 i=0;
        u32 temp;
        u32 fwaddr=appxaddr;//当前写入的地址
        u8 *dfu=appbuf;
        for(t=0;t<appsize;t+=4)
        {                                                   
                temp=(u32)dfu[3]<<24;   
                temp|=(u32)dfu[2]<<16;   
                temp|=(u32)dfu[1]<<8;
                temp|=(u32)dfu[0];         
                /*不应该是高位在前么???
                temp=(u32)dfu[0]<<24;   
                temp|=(u32)dfu[1]<<16;   
                temp|=(u32)dfu[2]<<8;
                temp|=(u32)dfu[3];         
                  */


                dfu+=4;//偏移4个字节
                iapbuf[i++]=temp;            
                if(i==512)
                {
                        i=0;
                        STMFLASH_Write(fwaddr,iapbuf,512);
                        fwaddr+=2048;//偏移2048  512*4=2048
                }
        }
        if(i)STMFLASH_Write(fwaddr,iapbuf,i);//将最后的一些内容字节写进去.  
}

//跳转到应用程序段
//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
        if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)        //检查栈顶地址是否合法.
        {
                jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)               
                MSR_MSP(*(vu32*)appxaddr);                                        //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
                jump2app();                                                                        //跳转到APP.
        }
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

384

主题

384

帖子

0

粉丝