⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 本代bootloader通过usb下载代码首先存放在sdram中
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000000   01                 DC8 1
    162          
    163          // struct Inter is an interface for transmit information from usb or application
    164          // to bootloader
    165          
    166          // define a global interface varialble

   \                                 In section .bss, align 4
    167          INTERFACE * interface;
   \                     interface:
   \   00000000                      DS8 4
    168          
    169          #define  LEADAPP_STATE                       1
    170          #define  STARTAPP_STATE                      2
    171          #define  LOADAPP_STATE                       3
    172          #define  STARTUSB_STATE                      4
    173          #define  LISTEN                              5
    174          
    175          //My define variable end ******************************************************
    176          /// SPI driver instance.

   \                                 In section .bss, align 4
    177          static Spid spid;
   \                     spid:
   \   00000000                      DS8 16
    178          
    179          /// AT45 driver instance.

   \                                 In section .bss, align 4
    180          static At45 at45;
   \                     at45:
   \   00000000                      DS8 40
    181          
    182          /// Pins used by the application.

   \                                 In section .rodata, align 4
    183          static const Pin pins[]  = {BOARD_AT45_A_SPI_PINS, BOARD_AT45_A_NPCS_PIN};
   \                     pins:
   \   00000000   0010000000F4       DC32 4096, 0FFFFF400H
   \              FFFF        
   \   00000008   02000100           DC8 2, 0, 1, 0
   \   0000000C   0020000000F4       DC32 8192, 0FFFFF400H
   \              FFFF        
   \   00000014   02000100           DC8 2, 0, 1, 0
   \   00000018   0040000000F4       DC32 16384, 0FFFFF400H
   \              FFFF        
   \   00000020   02000100           DC8 2, 0, 1, 0
   \   00000024   0008000000F4       DC32 2048, 0FFFFF400H
   \              FFFF        
   \   0000002C   02000100           DC8 2, 0, 1, 0
    184          
    185          /// Page buffer.

   \                                 In section .bss, align 4
    186          static unsigned char pBuffer[2112];
   \                     pBuffer:
   \   00000000                      DS8 2112
    187          
    188          //------------------------------------------------------------------------------
    189          //         Internal functions
    190          //------------------------------------------------------------------------------
    191          
    192          //------------------------------------------------------------------------------
    193          /// SPI interrupt handler. Invokes the SPI driver handler to check for pending
    194          /// interrupts.
    195          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    196          static void ISR_Spi(void)
    197          {
   \                     ISR_Spi:
   \   00000000   01402DE9           PUSH     {R0,LR}
    198              SPID_Handler(&spid);
   \   00000004   ........           LDR      R0,??DataTable42  ;; spid
    199          }
   \   00000008   0050BDE8           POP      {R12,LR}
   \   0000000C   ........           B        SPID_Handler     ;; tailcall
    200          
    201          //------------------------------------------------------------------------------
    202          /// Retrieves and returns the At45 current status, or 0 if an error
    203          /// happened.
    204          /// \param pAt45  Pointer to a At45 driver instance.
    205          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    206          static unsigned char AT45_GetStatus(At45 *pAt45)
    207          {
   \                     AT45_GetStatus:
   \   00000000   13402DE9           PUSH     {R0,R1,R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    208              unsigned char error;
    209              unsigned char status;
    210          
    211              // Sanity checks
    212              ASSERT(pAt45, "-F- AT45_GetStatus: pAt45 is null\n\r");
   \   00000008   0400001A           BNE      ??AT45_GetStatus_0
   \   0000000C   ........           LDR      R0,??DataTable12  ;; `?<Constant "-F- ASSERT: ">`
   \   00000010   ........           BL       printf
   \   00000014   68009FE5           LDR      R0,??AT45_GetStatus_1  ;; `?<Constant "-F- AT45_GetStatus: p...">`
   \   00000018   ........           BL       printf
   \                     ??AT45_GetStatus_2:
   \   0000001C   FEFFFFEA           B        ??AT45_GetStatus_2
    213          
    214              // Issue a status register read command
    215              error = AT45_SendCommand(pAt45, AT45_STATUS_READ, 1, &status, 1, 0, 0, 0);
   \                     ??AT45_GetStatus_0:
   \   00000020   0010A0E3           MOV      R1,#+0
   \   00000024   0000A0E3           MOV      R0,#+0
   \   00000028   03002DE9           PUSH     {R0,R1}
   \   0000002C   0100A0E3           MOV      R0,#+1
   \   00000030   03002DE9           PUSH     {R0,R1}
   \   00000034   10308DE2           ADD      R3,SP,#+16
   \   00000038   0020A0E1           MOV      R2,R0
   \   0000003C   D710A0E3           MOV      R1,#+215
   \   00000040   0400A0E1           MOV      R0,R4
   \   00000044   ........           BL       AT45_SendCommand
   \   00000048   10D08DE2           ADD      SP,SP,#+16       ;; stack cleaning
    216              ASSERT(!error, "-F- AT45_GetStatus: Failed to issue command.\n\r");
   \   0000004C   000050E3           CMP      R0,#+0
   \   00000050   0400000A           BEQ      ??AT45_GetStatus_3
   \   00000054   ........           LDR      R0,??DataTable12  ;; `?<Constant "-F- ASSERT: ">`
   \   00000058   ........           BL       printf
   \   0000005C   24009FE5           LDR      R0,??AT45_GetStatus_1+0x4  ;; `?<Constant "-F- AT45_GetStatus: F...">`
   \   00000060   ........           BL       printf
   \                     ??AT45_GetStatus_4:
   \   00000064   FEFFFFEA           B        ??AT45_GetStatus_4
    217          
    218              // Wait for command to terminate
    219              while (AT45_IsBusy(pAt45));
   \                     ??AT45_GetStatus_3:
   \   00000068   0400A0E1           MOV      R0,R4
   \   0000006C   ........           BL       AT45_IsBusy
   \   00000070   000050E3           CMP      R0,#+0
   \   00000074   FBFFFF1A           BNE      ??AT45_GetStatus_3
    220          
    221              return status;
   \   00000078   0000DDE5           LDRB     R0,[SP, #+0]
   \   0000007C   1C40BDE8           POP      {R2-R4,LR}
   \   00000080   1EFF2FE1           BX       LR               ;; return
   \                     ??AT45_GetStatus_1:
   \   00000084   ........           DC32     `?<Constant "-F- AT45_GetStatus: p...">`
   \   00000088   ........           DC32     `?<Constant "-F- AT45_GetStatus: F...">`
    222          }
    223          
    224          //------------------------------------------------------------------------------
    225          /// Waits for the At45 to be ready to accept new commands.
    226          /// \param pAt45  Pointer to a At45 driver instance.
    227          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    228          static void AT45_WaitReady(At45 *pAt45) 
    229          {
   \                     AT45_WaitReady:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    230              unsigned char ready = 0;
    231          
    232              // Sanity checks
    233              ASSERT(pAt45, "-F- AT45_WaitUntilReady: pAt45 is null\n\r");
   \   00000008   0400001A           BNE      ??AT45_WaitReady_0
   \   0000000C   ........           LDR      R0,??DataTable12  ;; `?<Constant "-F- ASSERT: ">`
   \   00000010   ........           BL       printf
   \   00000014   1C009FE5           LDR      R0,??AT45_WaitReady_1  ;; `?<Constant "-F- AT45_WaitUntilRea...">`
   \   00000018   ........           BL       printf
   \                     ??AT45_WaitReady_2:
   \   0000001C   FEFFFFEA           B        ??AT45_WaitReady_2
    234          
    235              // Poll device until it is ready
    236              while (!ready) {
    237          
    238                  ready = AT45_STATUS_READY(AT45_GetStatus(pAt45));
   \                     ??AT45_WaitReady_0:
   \   00000020   0400A0E1           MOV      R0,R4
   \   00000024   ........           BL       AT45_GetStatus
   \   00000028   800010E2           ANDS     R0,R0,#0x80
    239              }
   \   0000002C   FBFFFF0A           BEQ      ??AT45_WaitReady_0
    240          }
   \   00000030   1040BDE8           POP      {R4,LR}
   \   00000034   1EFF2FE1           BX       LR               ;; return
   \                     ??AT45_WaitReady_1:
   \   00000038   ........           DC32     `?<Constant "-F- AT45_WaitUntilRea...">`
    241          
    242          //------------------------------------------------------------------------------
    243          /// Reads and returns the JEDEC identifier of a At45.
    244          /// \param pAt45  Pointer to a At45 driver instance.
    245          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    246          static unsigned int AT45_GetJedecId(At45 *pAt45)
    247          {
   \                     AT45_GetJedecId:
   \   00000000   13402DE9           PUSH     {R0,R1,R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    248              unsigned char error;
    249              unsigned int id;
    250          
    251              // Sanity checks
    252              ASSERT(pAt45, "-F- AT45_GetJedecId: pAt45 is null\n\r");
   \   00000008   0400001A           BNE      ??AT45_GetJedecId_0
   \   0000000C   ........           LDR      R0,??DataTable12  ;; `?<Constant "-F- ASSERT: ">`
   \   00000010   ........           BL       printf
   \   00000014   68009FE5           LDR      R0,??AT45_GetJedecId_1  ;; `?<Constant "-F- AT45_GetJedecId: ...">`
   \   00000018   ........           BL       printf
   \                     ??AT45_GetJedecId_2:
   \   0000001C   FEFFFFEA           B        ??AT45_GetJedecId_2
    253          
    254              // Issue a manufacturer and device ID read command
    255              error = AT45_SendCommand(pAt45, AT45_ID_READ, 1, (void *) &id, 4, 0, 0, 0);
   \                     ??AT45_GetJedecId_0:
   \   00000020   0010A0E3           MOV      R1,#+0
   \   00000024   0000A0E3           MOV      R0,#+0
   \   00000028   03002DE9           PUSH     {R0,R1}
   \   0000002C   0400A0E3           MOV      R0,#+4
   \   00000030   03002DE9           PUSH     {R0,R1}
   \   00000034   10308DE2           ADD      R3,SP,#+16
   \   00000038   0120A0E3           MOV      R2,#+1
   \   0000003C   9F10A0E3           MOV      R1,#+159
   \   00000040   0400A0E1           MOV      R0,R4
   \   00000044   ........           BL       AT45_SendCommand
   \   00000048   10D08DE2           ADD      SP,SP,#+16       ;; stack cleaning
    256              ASSERT(!error, "-F- AT45_GetJedecId: Could not issue command.\n\r");
   \   0000004C   000050E3           CMP      R0,#+0
   \   00000050   0400000A           BEQ      ??AT45_GetJedecId_3
   \   00000054   ........           LDR      R0,??DataTable12  ;; `?<Constant "-F- ASSERT: ">`
   \   00000058   ........           BL       printf
   \   0000005C   24009FE5           LDR      R0,??AT45_GetJedecId_1+0x4  ;; `?<Constant "-F- AT45_GetJedecId: ...">_1`
   \   00000060   ........           BL       printf
   \                     ??AT45_GetJedecId_4:
   \   00000064   FEFFFFEA           B        ??AT45_GetJedecId_4
    257          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -