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

📄 common.lst

📁 IAPBootLoader源程序是单片机ARM的在系统编程方法1
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.40A/W32               17/Jan/2007  16:16:25 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  arm                                                  #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  D:\lilian\STR71X\application note\IAP using          #
#                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\common\common #
#                       .c                                                   #
#    Command line    =  "D:\lilian\STR71X\application note\IAP using         #
#                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\common\common #
#                       .c" -lC "D:\lilian\STR71X\application note\IAP       #
#                       using UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\De #
#                       bug\List\" -lA "D:\lilian\STR71X\application         #
#                       note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2. #
#                       0\user\Debug\List\" -o "D:\lilian\STR71X\application #
#                        note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2 #
#                       .0\user\Debug\Obj\" -z2 --no_cse --no_unroll         #
#                       --no_inline --no_code_motion --no_tbaa               #
#                       --no_clustering --no_scheduling --debug --cpu_mode   #
#                       arm --endian little --cpu ARM7TDMI --stack_align 4   #
#                       -e --fpu None --dlib_config "C:\Program Files\IAR    #
#                       Systems\Embedded Workbench                           #
#                       4.0\arm\LIB\dl4tpannl8n.h" --segment                 #
#                       code=CODE_Flash -I "D:\lilian\STR71X\application     #
#                       note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2. #
#                       0\user\..\include\" -I "D:\lilian\STR71X\application #
#                        note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2 #
#                       .0\user\..\common\" -I "C:\Program Files\IAR         #
#                       Systems\Embedded Workbench 4.0\arm\INC\"             #
#    List file       =  D:\lilian\STR71X\application note\IAP using          #
#                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\Debug\Li #
#                       st\common.lst                                        #
#    Object file     =  D:\lilian\STR71X\application note\IAP using          #
#                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\Debug\Ob #
#                       j\common.r79                                         #
#                                                                            #
#                                                                            #
##############################################################################

D:\lilian\STR71X\application note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2.0\common\common.c
      1          /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
      2          * File Name          : common.c
      3          * Author             : MCD Application Team
      4          * Date First Issued  : 10/25/2004
      5          * Description        : This file provides all the common functions.
      6          ********************************************************************************
      7          * History:
      8          *  02/01/2006 : IAP Version 2.0
      9          *  11/24/2004 : IAP Version 1.0
     10          ********************************************************************************
     11          THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
     12          CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A
     13          RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR
     14          CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH
     15          SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN
     16          IN CONNECTION WITH THEIR PRODUCTS.
     17          ********************************************************************************/
     18          
     19          #include "common.h"
     20          

   \                                 In segment DATA_Z, align 4, align-sorted
     21          s32 gimagesize = 0;
   \                     gimagesize:
   \   00000000                      DS8 4
     22          typedef void (*pointer)(void );

   \                                 In segment DATA_Z, align 4, align-sorted
     23          pointer jump_function;
   \                     jump_function:
   \   00000000                      DS8 4
     24          /*******************************************************************************
     25          * Function Name  : Int2Str
     26          * Description    : Convert an Integer to a srting
     27          * Input 1        : The string
     28          * Input 2        : The intger to be converted
     29          * Return         : None
     30          *******************************************************************************/

   \                                 In segment CODE_Flash, align 4, keep-with-next
     31          void Int2Str(char* str,s32 intnum)
     32          {
   \                     Int2Str:
   \   00000000   F0402DE9           PUSH     {R4-R7,LR}
   \   00000004   0020B0E1           MOVS     R2,R0
   \   00000008   0130B0E1           MOVS     R3,R1
     33            u32 i,Div=1000000000,j=0,Status=0;
   \   0000000C   AC009FE5           LDR      R0,??Int2Str_0   ;; 0x3b9aca00
   \   00000010   0050B0E1           MOVS     R5,R0
   \   00000014   0000A0E3           MOV      R0,#+0
   \   00000018   0060B0E1           MOVS     R6,R0
   \   0000001C   0000A0E3           MOV      R0,#+0
   \   00000020   0070B0E1           MOVS     R7,R0
     34            for(i=0;i<10;i++)
   \   00000024   0000A0E3           MOV      R0,#+0
   \   00000028   0040B0E1           MOVS     R4,R0
   \                     ??Int2Str_1:
   \   0000002C   0A0054E3           CMP      R4,#+10
   \   00000030   2100002A           BCS      ??Int2Str_2
     35            {
     36              str[j++]=(intnum/Div) + 48;
   \   00000034   0300B0E1           MOVS     R0,R3
   \   00000038   0510B0E1           MOVS     R1,R5
   \   0000003C   ........           _BLF     ??divu32_a,??rA??divu32_a
   \   00000040   300091E2           ADDS     R0,R1,#+48
   \   00000044   0200C6E7           STRB     R0,[R6, +R2]
   \   00000048   016096E2           ADDS     R6,R6,#+1
     37              intnum= intnum%Div;
   \   0000004C   0300B0E1           MOVS     R0,R3
   \   00000050   0510B0E1           MOVS     R1,R5
   \   00000054   ........           _BLF     ??divu32_a,??rA??divu32_a
   \   00000058   0030B0E1           MOVS     R3,R0
     38              Div/=10;
   \   0000005C   0500B0E1           MOVS     R0,R5
   \   00000060   0A10A0E3           MOV      R1,#+10
   \   00000064   ........           _BLF     ??divu32_a,??rA??divu32_a
   \   00000068   0150B0E1           MOVS     R5,R1
     39              if ((str[j-1]=='0')&(Status==0))
   \   0000006C   020096E0           ADDS     R0,R6,R2
   \   00000070   010050E5           LDRB     R0,[R0, #-1]
   \   00000074   300050E3           CMP      R0,#+48
   \   00000078   0100001A           BNE      ??Int2Str_3
   \   0000007C   0100A0E3           MOV      R0,#+1
   \   00000080   000000EA           B        ??Int2Str_4
   \                     ??Int2Str_3:
   \   00000084   0000A0E3           MOV      R0,#+0
   \                     ??Int2Str_4:
   \   00000088   000057E3           CMP      R7,#+0
   \   0000008C   0100001A           BNE      ??Int2Str_5
   \   00000090   0110A0E3           MOV      R1,#+1
   \   00000094   000000EA           B        ??Int2Str_6
   \                     ??Int2Str_5:
   \   00000098   0010A0E3           MOV      R1,#+0
   \                     ??Int2Str_6:
   \   0000009C   000011E1           TST      R1,R0
   \   000000A0   0200000A           BEQ      ??Int2Str_7
     40                j=0;
   \   000000A4   0000A0E3           MOV      R0,#+0
   \   000000A8   0060B0E1           MOVS     R6,R0
   \   000000AC   000000EA           B        ??Int2Str_8
     41              else
     42                Status++;
   \                     ??Int2Str_7:
   \   000000B0   017097E2           ADDS     R7,R7,#+1
     43            }
   \                     ??Int2Str_8:
   \   000000B4   014094E2           ADDS     R4,R4,#+1
   \   000000B8   DBFFFFEA           B        ??Int2Str_1
     44          }
   \                     ??Int2Str_2:
   \   000000BC   F080BDE8           POP      {R4-R7,PC}       ;; return
   \                     ??Int2Str_0:
   \   000000C0   00CA9A3B           DC32     0x3b9aca00
     45          /*******************************************************************************
     46          * Function Name  : Str2Int
     47          * Description    : Convert a srting to an integer
     48          * Input 1        : The string to be converted
     49          * Input 2        : The intger value
     50          * Return         : 1 -- Correct
     51                           : 0 -- Error
     52          *******************************************************************************/

   \                                 In segment CODE_Flash, align 4, keep-with-next
     53          u32 Str2Int(char *inputstr,s32 *intnum)
     54          {
   \                     Str2Int:
   \   00000000   30002DE9           PUSH     {R4,R5}
   \   00000004   0020B0E1           MOVS     R2,R0
     55          	u32 i,res;
     56          	u32 val = 0;
   \   00000008   0000A0E3           MOV      R0,#+0
   \   0000000C   0040B0E1           MOVS     R4,R0
     57          
     58          	if (inputstr[0] == '0' && (inputstr[1] == 'x'||inputstr[1] == 'X'))
   \   00000010   0000D2E5           LDRB     R0,[R2, #+0]
   \   00000014   300050E3           CMP      R0,#+48
   \   00000018   4500001A           BNE      ??Str2Int_0
   \   0000001C   0100D2E5           LDRB     R0,[R2, #+1]
   \   00000020   780050E3           CMP      R0,#+120
   \   00000024   0200000A           BEQ      ??Str2Int_1
   \   00000028   0100D2E5           LDRB     R0,[R2, #+1]
   \   0000002C   580050E3           CMP      R0,#+88
   \   00000030   3F00001A           BNE      ??Str2Int_0
     59          	{	
     60          		if (inputstr[2] == '\0')
   \                     ??Str2Int_1:
   \   00000034   0200D2E5           LDRB     R0,[R2, #+2]
   \   00000038   000050E3           CMP      R0,#+0
   \   0000003C   0100001A           BNE      ??Str2Int_2
     61          		{
     62          			return 0;
   \   00000040   0000A0E3           MOV      R0,#+0
   \   00000044   720000EA           B        ??Str2Int_3
     63          		}
     64          		for (i=2;i<11;i++)
   \                     ??Str2Int_2:
   \   00000048   0200A0E3           MOV      R0,#+2
   \   0000004C   0030B0E1           MOVS     R3,R0
   \                     ??Str2Int_4:
   \   00000050   0B0053E3           CMP      R3,#+11
   \   00000054   3100002A           BCS      ??Str2Int_5
     65          		{
     66          			if (inputstr[i] == '\0')
   \   00000058   0200D3E7           LDRB     R0,[R3, +R2]
   \   0000005C   000050E3           CMP      R0,#+0
   \   00000060   0300001A           BNE      ??Str2Int_6
     67          			{
     68          				*intnum = val;
   \   00000064   004081E5           STR      R4,[R1, #+0]
     69          				res = 1; /* return 1; */
   \   00000068   0100A0E3           MOV      R0,#+1
   \   0000006C   00C0B0E1           MOVS     R12,R0
     70          				break;
   \   00000070   2A0000EA           B        ??Str2Int_5
     71          			}
     72          			if (ISVALIDHEX(inputstr[i]))
   \                     ??Str2Int_6:
   \   00000074   0200D3E7           LDRB     R0,[R3, +R2]
   \   00000078   410050E3           CMP      R0,#+65
   \   0000007C   0200003A           BCC      ??Str2Int_7
   \   00000080   0200D3E7           LDRB     R0,[R3, +R2]
   \   00000084   470050E3           CMP      R0,#+71
   \   00000088   0B00003A           BCC      ??Str2Int_8
   \                     ??Str2Int_7:
   \   0000008C   0200D3E7           LDRB     R0,[R3, +R2]
   \   00000090   610050E3           CMP      R0,#+97
   \   00000094   0200003A           BCC      ??Str2Int_9
   \   00000098   0200D3E7           LDRB     R0,[R3, +R2]
   \   0000009C   670050E3           CMP      R0,#+103
   \   000000A0   0500003A           BCC      ??Str2Int_8
   \                     ??Str2Int_9:
   \   000000A4   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000A8   300050E3           CMP      R0,#+48
   \   000000AC   1900003A           BCC      ??Str2Int_10
   \   000000B0   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000B4   3A0050E3           CMP      R0,#+58
   \   000000B8   1600002A           BCS      ??Str2Int_10
     73          			{
     74          				val = (val << 4) + CONVERTHEX(inputstr[i]);
   \                     ??Str2Int_8:
   \   000000BC   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000C0   300050E3           CMP      R0,#+48
   \   000000C4   0500003A           BCC      ??Str2Int_11
   \   000000C8   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000CC   3A0050E3           CMP      R0,#+58
   \   000000D0   0200002A           BCS      ??Str2Int_11
   \   000000D4   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000D8   300050E2           SUBS     R0,R0,#+48
   \   000000DC   0A0000EA           B        ??Str2Int_12
   \                     ??Str2Int_11:
   \   000000E0   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000E4   410050E3           CMP      R0,#+65
   \   000000E8   0500003A           BCC      ??Str2Int_13
   \   000000EC   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000F0   470050E3           CMP      R0,#+71
   \   000000F4   0200002A           BCS      ??Str2Int_13
   \   000000F8   0200D3E7           LDRB     R0,[R3, +R2]
   \   000000FC   370050E2           SUBS     R0,R0,#+55
   \   00000100   010000EA           B        ??Str2Int_14
   \                     ??Str2Int_13:
   \   00000104   0200D3E7           LDRB     R0,[R3, +R2]
   \   00000108   570050E2           SUBS     R0,R0,#+87
   \                     ??Str2Int_14:
   \                     ??Str2Int_12:
   \   0000010C   044290E0           ADDS     R4,R0,R4, LSL #+4
     75          			}	
   \   00000110   013093E2           ADDS     R3,R3,#+1
   \   00000114   CDFFFFEA           B        ??Str2Int_4
     76          			else

⌨️ 快捷键说明

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