[51单片机] silicon 1060的BootLoader跳转问题

[复制链接]
 楼主| tomorrowa 发表于 2020-3-30 17:22 | 显示全部楼层 |阅读模式
我现在基于 SI1060 的片子,做一个BootLoader的功能,现在已经实现了搬运APP的功能,但是现在一直不能从BootLoader跳转到APP。
我的APP程序通过BootLoader写到了0x2800地址处。

跳转函数是写在 STARTUP.A51里面的:

  1. ;******************************************************************************
  2. ; Begin custom code for CAN_BL - Target_BL_FW ->
  3. ;******************************************************************************

  4. ;------------------------------------------------------------------------------
  5. ; Redirects the HW interrupt vectors to a jump table starting at INTVEC_TABLE.
  6. ; This table will always be part of the App_FW space and can be modified by the
  7. ; bootloader's ERASE and WRITE commands.

  8. ;HW Interrupt Entries
  9. HW_INTVEC_TABLE       EQU 0003h     ;HW Interrupt vector table starts here
  10. HW_INTVEC_SEPARATION  EQU 8         ;HW Interrupt vector separation is 8 Bytes

  11. ;Redirected Interrupt Entries
  12. ;Changes to INTVEC_TABLE location should be mirrored in:
  13. ;   BL FW's USB_BL_Defs.h (APP_START_PAGE)
  14. ;   App FW's STARTUP.A51, Compiler and Linker command lines
  15. PUBLIC START_APPLICATION            ;The entry point (relocated reset vector)
  16. START_APPLICATION     EQU  2800h    ;for the application FW project

  17. INTVEC_TABLE          EQU  START_APPLICATION+3  ;Interrupt vector table starts here
  18. INTVEC_SEPARATION     EQU  3        ;Interrupt vector separation is 3 Bytes

  19. ;     CSEG  AT 2800h                   ;(HW Reset Interrupt)
  20. ;?C_STARTUP11:   LJMP  START_APPLICATION       ;Jump to RAM initialization code

  21.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 0)  ;03h (Intr. 00)
  22.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 0)

  23.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 1)  ;0Bh (Intr. 01)
  24.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 1)

  25.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 2)  ;13h (Intr. 02)
  26.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 2)

  27.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 3)  ;1Bh (Intr. 03)
  28.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 3)

  29.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 4)  ;23h (Intr. 04)
  30.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 4)

  31.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 5)  ;2Bh (Intr. 05)
  32.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 5)

  33.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 6)  ;33h (Intr. 06)
  34.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 6)

  35.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 7)  ;3Bh (Intr. 07)
  36.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 7)

  37.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 8)  ;43h (Intr. 08)
  38.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 8)

  39.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 9)  ;4Bh (Intr. 09)
  40.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 9)

  41.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 10) ;53h (Intr. 10)
  42.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 10)

  43.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 11) ;5Bh (Intr. 11)
  44.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 11)

  45.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 12) ;63h (Intr. 12)
  46.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 12)

  47.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 13) ;6Bh (Intr. 13)
  48.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 13)

  49.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 14) ;73h (Intr. 14)
  50.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 14)

  51.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 15) ;73h (Intr. 15)
  52.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 15)

  53.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 16) ;73h (Intr. 16)
  54.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 16)

  55.       CSEG  AT HW_INTVEC_TABLE + (HW_INTVEC_SEPARATION * 17) ;73h (Intr. 17)
  56.       LJMP  INTVEC_TABLE + (INTVEC_SEPARATION * 17)

  57. ;******************************************************************************
  58. ;End of custom code <-
  59. ;Unmodified Keil STARTUP.A51 code continues below ->
  60. ;******************************************************************************
我的整个调试环境是这样:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| tomorrowa 发表于 2020-4-1 11:46 | 显示全部楼层
我自己已经解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部