BigLee1986

    1. 我把这两个子函数贴出来,看是不是哪里错了 __asm void BootJump(u32 address) {         LDR SP, [R0]                // Load new stack pointer address         LDR PC, [R0, #4]        // Load new program counter address } __asm s32 zyIrqDisable(void) {         CPSID   I         MOV     R0, #0         BX      LR } __asm s32 zyIrqEnable(void) {         CPSIE   I         MOV     R0, #0         BX      LR } u16 ProgramPage(u32 adr, u32 sz, u8 *buf) {         u32 n; #if SET_VALID_CODE != 0    // Set valid User Code Signature         if(adr == 0)    // Check for Interrupt Vectors         {                 n =  *((u32 *)(buf + 0x00)) +        // Reset Vector                         *((u32 *)(buf + 0x04)) +        // Undefined Instruction Vector                         *((u32 *)(buf + 0x08)) +        // Software Interrupt Vector                         *((u32 *)(buf + 0x0C)) +        // Prefetch Abort Vector                         *((u32 *)(buf + 0x10)) +        // Data Abort Vector                         *((u32 *)(buf + 0x14)) +        // IRQ Vector                         *((u32 *)(buf + 0x18));                // FIQ Vector                 *((u32 *)(buf + 0x1C)) = 0 - n;        // Signature at Reserved Vector         } #endif         n = GetSecNum(adr);        // Get Sector Number         IAP.cmd    = 50;        // Prepare Sector for Write         IAP.par[0] = n;        // Start Sector         IAP.par[1] = n;        // End Sector         IAP_Call(&IAP.cmd, &IAP.stat);                // Call IAP Command         if(IAP.stat)         {                 return (1);        // Command Failed         }         IAP.cmd    = 51;        // Copy RAM to Flash         IAP.par[0] = adr;        // Destination Flash Address         IAP.par[1] = (u32)buf;        // Source RAM Address         IAP.par[2] = sz;        // Fixed Page Size         IAP.par[3] = CCLK;                // CCLK in kHz         IAP_Call(&IAP.cmd, &IAP.stat);                // Call IAP Command         if(IAP.stat)         {                 return (1);        // Command Failed         }         return (0);          // Finished without Errors }
    2. SCB->VTOR = APP_2_ADDR & 0x1FFFFF80; BootJump(APP_2_ADDR); 这就是你说的吧 我原来就是这样
    3. 浅谈单片机应用程序架构 157/70920 NXP MCU 2011-11-24
      抽空好好试下!
    4. :) 刚用到,果然值得注意
    5. 刚接触,正需要

最近访客

< 1/1 >

统计信息

已有380人来访过

  • 芯积分:--
  • 好友:4
  • 主题:2
  • 回复:5

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言