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

📄 main.lst

📁 本代bootloader通过usb下载代码首先存放在sdram中
💻 LST
📖 第 1 页 / 共 5 页
字号:
    452            
    453          }
    454          //------------------------------------------------------------------------------
    455          ///change char to int
    456          ///-----------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    457          void ChangChartoInt(unsigned char *Char,unsigned long *Int)
    458          {
   \                     ChangChartoInt:
   \   00000000   01402DE9           PUSH     {R0,LR}
    459            unsigned int i;
    460            for(i=0;i<4;i++)
   \   00000004   0020A0E3           MOV      R2,#+0
    461            {
    462              *Int |= (unsigned int) Char[i]<<(24-8*i);
   \                     ??ChangChartoInt_0:
   \   00000008   003091E5           LDR      R3,[R1, #+0]
   \   0000000C   01C0D0E4           LDRB     R12,[R0], #+1
   \   00000010   18E0A0E3           MOV      LR,#+24
   \   00000014   82E14EE0           SUB      LR,LR,R2, LSL #+3
   \   00000018   1C3E83E1           ORR      R3,R3,R12, LSL LR
   \   0000001C   003081E5           STR      R3,[R1, #+0]
    463            }
   \   00000020   012082E2           ADD      R2,R2,#+1
   \   00000024   040052E3           CMP      R2,#+4
   \   00000028   F6FFFF3A           BCC      ??ChangChartoInt_0
    464          }
   \   0000002C   0050BDE8           POP      {R12,LR}
   \   00000030   1EFF2FE1           BX       LR               ;; return
    465          //------------------------------------------------------------------------------
    466          /// LeadApp() function was used to copy the code in dataflash to sdram
    467          //------------------------------------------------------------------------------
    468          

   \                                 In section .text, align 4, keep-with-next
    469          static unsigned int LeadAPP(void)
    470          {
   \                     LeadAPP:
   \   00000000   F1402DE9           PUSH     {R0,R4-R7,LR}
    471              unsigned int  page,i;
    472              unsigned char *tmp;
    473              unsigned int time;
    474              tmp = SdCodeAddr;
   \   00000004   ........           LDR      R0,??DataTable66  ;; SdCodeAddr
   \   00000008   004090E5           LDR      R4,[R0, #+0]
    475              time = timestamp;
   \   0000000C   28019FE5           LDR      R0,??LeadAPP_0   ;; timestamp
   \   00000010   005090E5           LDR      R5,[R0, #+0]
    476              unsigned long crc,ConfigureCRC;
    477              TRACE_INFO("In LeadApp\n\r");
   \   00000014   24019FE5           LDR      R0,??LeadAPP_0+0x4  ;; `?<Constant "-I- In LeadApp\\n\\r">`
   \   00000018   ........           BL       printf
    478                for(page=1;page< AT45_PageNumber(&at45);page++)
   \   0000001C   0160A0E3           MOV      R6,#+1
   \   00000020   080000EA           B        ??LeadAPP_1
    479                {
    480                  // Verify that page has been erased correctly
    481                  memset(pBuffer, 0, AT45_PageSize(&at45));
    482                  AT45_Read(&at45, pBuffer, AT45_PageSize(&at45), page * AT45_PageSize(&at45));
    483                  for (i=0; i < AT45_PageSize(&at45); i++) 
    484                  {
    485                    *tmp = pBuffer[i];
   \                     ??LeadAPP_2:
   \   00000024   ........           LDR      R0,??DataTable63  ;; pBuffer
   \   00000028   0000D7E7           LDRB     R0,[R7, +R0]
   \   0000002C   0100C4E4           STRB     R0,[R4], #+1
    486                     tmp++;
    487                  }     
   \   00000030   017087E2           ADD      R7,R7,#+1
   \                     ??LeadAPP_3:
   \   00000034   ........           LDR      R0,??DataTable74  ;; at45
   \   00000038   ........           BL       AT45_PageSize
   \   0000003C   000057E1           CMP      R7,R0
   \   00000040   F7FFFF3A           BCC      ??LeadAPP_2
   \   00000044   016086E2           ADD      R6,R6,#+1
   \                     ??LeadAPP_1:
   \   00000048   ........           LDR      R0,??DataTable73  ;; at45 + 28
   \   0000004C   000090E5           LDR      R0,[R0, #+0]
   \   00000050   000090E5           LDR      R0,[R0, #+0]
   \   00000054   000056E1           CMP      R6,R0
   \   00000058   1100002A           BCS      ??LeadAPP_4
   \   0000005C   ........           LDR      R0,??DataTable74  ;; at45
   \   00000060   ........           BL       AT45_PageSize
   \   00000064   0020A0E1           MOV      R2,R0
   \   00000068   0010A0E3           MOV      R1,#+0
   \   0000006C   ........           LDR      R0,??DataTable63  ;; pBuffer
   \   00000070   ........           BL       memset
   \   00000074   ........           LDR      R0,??DataTable74  ;; at45
   \   00000078   ........           BL       AT45_PageSize
   \   0000007C   0070A0E1           MOV      R7,R0
   \   00000080   ........           LDR      R0,??DataTable74  ;; at45
   \   00000084   ........           BL       AT45_PageSize
   \   00000088   970603E0           MUL      R3,R7,R6
   \   0000008C   0020A0E1           MOV      R2,R0
   \   00000090   ........           LDR      R1,??DataTable63  ;; pBuffer
   \   00000094   ........           LDR      R0,??DataTable74  ;; at45
   \   00000098   ........           BL       AT45_Read
   \   0000009C   0070A0E3           MOV      R7,#+0
   \   000000A0   E3FFFFEA           B        ??LeadAPP_3
    488                }
    489                
    490              TRACE_INFO("SdCodeAddr:%x",*SdCodeAddr);
   \                     ??LeadAPP_4:
   \   000000A4   ........           LDR      R0,??DataTable66  ;; SdCodeAddr
   \   000000A8   000090E5           LDR      R0,[R0, #+0]
   \   000000AC   0010D0E5           LDRB     R1,[R0, #+0]
   \   000000B0   8C009FE5           LDR      R0,??LeadAPP_0+0x8  ;; `?<Constant "-I- SdCodeAddr:%x">`
   \   000000B4   ........           BL       printf
    491              TRACE_INFO("Go to Whether\n\r");
   \   000000B8   88009FE5           LDR      R0,??LeadAPP_0+0xC  ;; `?<Constant "-I- Go to Whether\\n\\r">`
   \   000000BC   ........           BL       printf
    492              
    493              if(WhetherEmpty() == 1)
   \   000000C0   ........           BL       WhetherEmpty
   \   000000C4   010050E3           CMP      R0,#+1
   \   000000C8   1900000A           BEQ      ??LeadAPP_5
    494                {
    495                  return 1;
    496                }
    497              else
    498                {     
    499                  TRACE_INFO("The code has transmit to sdram\n\r");
   \   000000CC   78009FE5           LDR      R0,??LeadAPP_0+0x10  ;; `?<Constant "-I- The code has tran...">`
   \   000000D0   ........           BL       printf
    500                  crc = FullCRC(SdCodeAddr,2162160);
   \   000000D4   ........           LDR      R1,??DataTable64  ;; 0x20fdf0
   \   000000D8   ........           LDR      R0,??DataTable66  ;; SdCodeAddr
   \   000000DC   000090E5           LDR      R0,[R0, #+0]
   \   000000E0   ........           BL       FullCRC
   \   000000E4   0040A0E1           MOV      R4,R0
    501                  time = timestamp-time;
   \   000000E8   4C009FE5           LDR      R0,??LeadAPP_0   ;; timestamp
   \   000000EC   000090E5           LDR      R0,[R0, #+0]
   \   000000F0   051040E0           SUB      R1,R0,R5
    502                  TRACE_INFO("CRC end time:%x\n\r",time);
   \   000000F4   54009FE5           LDR      R0,??LeadAPP_0+0x14  ;; `?<Constant "-I- CRC end time:%x\\n\\r">`
   \   000000F8   ........           BL       printf
    503                  TRACE_INFO("CRC over:%x\n\r",crc);
                         ^
Remark[Pe181]: argument is incompatible with corresponding format string
          conversion
   \   000000FC   0410A0E1           MOV      R1,R4
   \   00000100   4C009FE5           LDR      R0,??LeadAPP_0+0x18  ;; `?<Constant "-I- CRC over:%x\\n\\r">`
   \   00000104   ........           BL       printf
    504                  
    505                  AT45_Read(&at45,(unsigned char *)&ConfigureCRC,4,524);
   \   00000108   833FA0E3           MOV      R3,#+524
   \   0000010C   0420A0E3           MOV      R2,#+4
   \   00000110   0D10A0E1           MOV      R1,SP
   \   00000114   ........           LDR      R0,??DataTable74  ;; at45
   \   00000118   ........           BL       AT45_Read
    506                  if(crc == interface->CRC)
   \   0000011C   ........           LDR      R0,??DataTable77  ;; interface
   \   00000120   000090E5           LDR      R0,[R0, #+0]
   \   00000124   0C0090E5           LDR      R0,[R0, #+12]
   \   00000128   000054E1           CMP      R4,R0
    507                    {
    508                      return 0;
   \   0000012C   0000A003           MOVEQ    R0,#+0
    509                    }
    510                  else
    511                    {
    512                      return 1;
   \   00000130   0100A013           MOVNE    R0,#+1
   \                     ??LeadAPP_5:
   \   00000134   F840BDE8           POP      {R3-R7,LR}
   \   00000138   1EFF2FE1           BX       LR               ;; return
   \                     ??LeadAPP_0:
   \   0000013C   ........           DC32     timestamp
   \   00000140   ........           DC32     `?<Constant "-I- In LeadApp\\n\\r">`
   \   00000144   ........           DC32     `?<Constant "-I- SdCodeAddr:%x">`
   \   00000148   ........           DC32     `?<Constant "-I- Go to Whether\\n\\r">`
   \   0000014C   ........           DC32     `?<Constant "-I- The code has tran...">`
   \   00000150   ........           DC32     `?<Constant "-I- CRC end time:%x\\n\\r">`
   \   00000154   ........           DC32     `?<Constant "-I- CRC over:%x\\n\\r">`
    513                    }   
    514                }
    515          }
    516          
    517          //------------------------------------------------------------------------------
    518          ///LoadApp() function was used to promote the application. So when the apllication
    519          // load the application code to the sdram we should save code in dataflash
    520          //\param information was used to store the code information
    521          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    522          static unsigned char LoadApp()
    523          {
   \                     LoadApp:
   \   00000000   73402DE9           PUSH     {R0,R1,R4-R6,LR}
    524            unsigned int j,PageNum;
    525            unsigned char *tmp;
    526            unsigned char * codeaddr;
    527            unsigned long crc;
    528            tmp = (unsigned char *)interface->address;
    529            crc = FullCRC(tmp, interface->CSize);
   \   00000004   ........           LDR      R0,??DataTable77  ;; interface
   \   00000008   000090E5           LDR      R0,[R0, #+0]
   \   0000000C   081090E5           LDR      R1,[R0, #+8]
   \   00000010   ........           LDR      R0,??DataTable77  ;; interface
   \   00000014   000090E5           LDR      R0,[R0, #+0]
   \   00000018   000090E5           LDR      R0,[R0, #+0]
   \   0000001C   ........           BL       FullCRC
   \   00000020   00008DE5           STR      R0,[SP, #+0]
    530            codeaddr = SdCodeAddr;
   \   00000024   ........           LDR      R0,??DataTable66  ;; SdCodeAddr
   \   00000028   004090E5           LDR      R4,[R0, #+0]
    531            TRACE_INFO("IN LOADAPP\n\r");
   \   0000002C   E8019FE5           LDR      R0,??LoadApp_0   ;; `?<Constant "-I- IN LOADAPP\\n\\r">`
   \   00000030   ........           BL       printf
    532            if(crc ==interface->CRC )
   \   00000034   00009DE5           LDR      R0,[SP, #+0]
   \   00000038   ........           LDR      R1,??DataTable77  ;; interface
   \   0000003C   001091E5           LDR      R1,[R1, #+0]
   \   00000040   0C1091E5           LDR      R1,[R1, #+12]
   \   00000044   010050E1           CMP      R0,R1
   \   00000048   7000001A           BNE      ??LoadApp_1
    533            {    
    534            
    535              for(PageNum=1; PageNum<AT45_PageNumber(&at45); PageNum++)
   \   0000004C   0150A0E3           MOV      R5,#+1
   \   00000050   080000EA           B        ??LoadApp_2
    536              {
    537                //将dataflash的数据写入sdram以便于数据的包装
    538                memset(pBuffer, 0, AT45_PageSize(&at45));
    539                  AT45_Read(&at45, pBuffer, AT4

⌨️ 快捷键说明

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