?? common.lst
字號:
##############################################################################
# #
# 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 + -