×
单片机 > 单片机程序设计 > 详情

LPC1788升级程序调试备忘

发布时间:2020-08-26 发布时间:
|

1、程序运行地址跳转


__asm void JMP_Boot( uint32_t address )

{

  LDR SP, [R0]            ;Load new stack pointer address

LDR PC, [R0, #4]        ;Load new program counter address

}


2、中断向量表重新映射目标地址 DestAddr

#define DestAddr 0x00000000 

SCB->VTOR = DestAddr & 0x1FFFFF80; 


3、flash地址跳转校验

uint8_t app_checksum_is_correct(void)

{

    int i;

    uint32_t cksum, *buff;

 

    buff = (uint32_t *)NOR_FLASH_BASE;

 

//判断App程序的第一个跳转指令地址 是否是SDRAM的高位地址  

    if((buff[1] & SDRAM_BASE_ADDR) != SDRAM_BASE_ADDR)

        return 0;

 

   //以下是校验码算法,各位自己琢磨

    cksum = 0;

 

    for (i = 0; i < 7; ++i) {

        cksum += buff[i];

    }

 

    cksum = (0xFFFFFFFF - cksum + 1);

 

//判断校验码是否符合要求,返回1 表示OK

    return ((cksum == buff[7]) && (buff[7] != 0));

}

After Build/Rebuild


$KARMBINELFDWT.EXE !L BASEADDRESS(0x00000000)


Target 


IROM1 :  Start  size




//ram 地址对其


 __align(4) uint8_t SendData[512]; 




4、遇到问题一定要自己独立多想办法解决




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项