📄 main.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 KICKSTART 31/Oct/2005 18:05:26 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IA #
# R4_30-1_2\AT91SAM7X256-BasicEmac\src\main.c #
# Command line = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IA #
# R4_30-1_2\AT91SAM7X256-BasicEmac\src\main.c -D ESS #
# -lC E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMA #
# C_IAR4_30-1_2\AT91SAM7X256-BasicEmac\compil\bin\List #
# \ -o E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEM #
# AC_IAR4_30-1_2\AT91SAM7X256-BasicEmac\compil\bin\Obj #
# \ -z3 --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --cpu_mode thumb --endian #
# little --cpu ARM7TDMI --stack_align 4 --interwork #
# -e --fpu None --dlib_config "D:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Kickstart\arm\LIB\dl4tptinl8n.h" -I #
# E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IA #
# R4_30-1_2\AT91SAM7X256-BasicEmac\compil\..\..\ -I #
# E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IA #
# R4_30-1_2\AT91SAM7X256-BasicEmac\compil\srcIAR\ -I #
# "D:\Program Files\IAR Systems\Embedded Workbench #
# 4.0 Kickstart\arm\INC\" #
# List file = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IA #
# R4_30-1_2\AT91SAM7X256-BasicEmac\compil\bin\List\mai #
# n.lst #
# Object file = E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IA #
# R4_30-1_2\AT91SAM7X256-BasicEmac\compil\bin\Obj\main #
# .r79 #
# #
# #
##############################################################################
E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-BasicEMAC_IAR4_30-1_2\AT91SAM7X256-BasicEmac\src\main.c
1 //*----------------------------------------------------------------------------
2 //* ATMEL Microcontroller Software Support - ROUSSET -
3 //*----------------------------------------------------------------------------
4 //* The software is delivered "AS IS" without warranty or condition of any
5 //* kind, either express, implied or statutory. This includes without
6 //* limitation any warranty or condition with respect to merchantability or
7 //* fitness for any particular purpose, or against the infringements of
8 //* intellectual property rights of others.
9 //*----------------------------------------------------------------------------
10 //* File Name : main.c
11 //* Object : main application written in C
12 //* Creation : Hi 11/18/2002
13 //* Modification : JGe 07/28/2005
14 //*----------------------------------------------------------------------------
15 #include "board.h"
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_PIO_CfgPeriph(AT91PS_PIO, unsigned int, unsigned int)
\ AT91F_PIO_CfgPeriph:
\ 00000000 0167 STR R1,[R0, #+0x70]
\ 00000002 4267 STR R2,[R0, #+0x74]
\ 00000004 0A43 ORR R2,R1
\ 00000006 4260 STR R2,[R0, #+0x4]
\ 00000008 7047 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_PIO_CfgOutput(AT91PS_PIO, unsigned int)
\ AT91F_PIO_CfgOutput:
\ 00000000 0160 STR R1,[R0, #+0]
\ 00000002 0161 STR R1,[R0, #+0x10]
\ 00000004 7047 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_PIO_ClearOutput(AT91PS_PIO, unsigned int)
\ AT91F_PIO_ClearOutput:
\ 00000000 4163 STR R1,[R0, #+0x34]
\ 00000002 7047 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_PMC_EnablePeriphClock(AT91PS_PMC, unsigned int)
\ AT91F_PMC_EnablePeriphClock:
\ 00000000 0161 STR R1,[R0, #+0x10]
\ 00000002 7047 BX LR ;; return
16
17 #include "Emac.h"
18 #include <stdio.h>
19 #include <string.h>
20 #include "mii.h"
21
22 // function in appli.c
23 extern void Init_LED_FOR_APPLI (void);
24 extern void APPLI(void);
25 extern void LED_Toggle(unsigned int led);
26 extern void LED_TurnOn(unsigned int led);
27 extern void LED_TurnOff(unsigned int led);
28
29 // function in dbgu.c
30 extern void AT91F_DBGU_Printk(char *buffer);
31 extern void Init_DBGU(void);
32
33 // functions in Emac.c
34 extern void AT91F_EMAC_HANDLER (void);
35 extern int AT91F_EmacEntry(void);
36 extern int AT91F_ProcessEmacPacket(AT91PS_IPheader pHeader);
37 extern void write_phy(AT91PS_EMAC pEmac, unsigned char phy_addr, unsigned char address, unsigned int value);
38 extern void read_phy(AT91PS_EMAC pEmac, unsigned char phy_addr, unsigned char address, unsigned int *value);
39
40 extern void AT91F_Enable_Mdi(AT91PS_EMAC pEmac);
41 extern void AT91F_Disable_Mdi(AT91PS_EMAC pEmac);
42
43 // Message buffer
\ In segment DATA_Z, align 4, align-sorted
44 char MsgBuffer[256];
\ MsgBuffer:
\ 00000000 DS8 256
45
46 // system timer counter
47 extern AT91PS_RxTdDescriptor RxtdList;
48 extern AT91PS_TxTdDescriptor TxtdList;
49
50 #define AT91C_ID_EMAC_B 16
51 //#undef RMII
52 #define RMII
53 //#define EMAC_IRQ
54 #define DISPLAY_IP_PACKET
55
56 //*----------------------------------------------------------------------------
57 //* \fn AT91F_DisplayIpPacket
58 //* \brief This function is invoked by main
59 //* This function is for demonstration purpose only
60 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
61 void AT91F_DisplayIpPacket(AT91PS_IPheader pIpHeader)
62 {
\ AT91F_DisplayIpPacket:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 82B0 SUB SP,#+0x8
\ 00000004 041C MOV R4,R0
63 char address[6];
64 #ifdef DISPLAY_IP_PACKET
65 AT91F_DBGU_Printk("\n\n\r-I- ================ IP HEADER ======================\n\r");
\ 00000006 5448 LDR R0,??AT91F_DisplayIpPacket_0 ;; `?<Constant "\\n\\n\\r-I- ==============...">`
\ 00000008 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
66 sprintf(MsgBuffer, "\n\r IP Version = v.%d",(pIpHeader->ip_hl_v & 0xF0) >> 4);
\ 0000000C 2078 LDRB R0,[R4, #+0]
\ 0000000E 021C MOV R2,R0
\ 00000010 1206 LSL R2,R2,#+0x18 ;; ZeroExt R2,R2,#+0x18,#+0x18
\ 00000012 120E LSR R2,R2,#+0x18
\ 00000014 1209 LSR R2,R2,#+0x4
\ 00000016 1206 LSL R2,R2,#+0x18 ;; ZeroExt R2,R2,#+0x18,#+0x18
\ 00000018 120E LSR R2,R2,#+0x18
\ 0000001A 5049 LDR R1,??AT91F_DisplayIpPacket_0+0x4 ;; `?<Constant "\\n\\r IP Version ...">`
\ 0000001C .... LDR R0,??DataTable21 ;; MsgBuffer
\ 0000001E ........ _BLF sprintf,sprintf??rT
67 AT91F_DBGU_Printk(MsgBuffer);
\ 00000022 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000024 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
68
69 sprintf(MsgBuffer, "\n\r Header Length = %d",pIpHeader->ip_hl_v & 0x0F);
\ 00000028 2078 LDRB R0,[R4, #+0]
\ 0000002A 0207 LSL R2,R0,#+0x1C ;; ZeroExt R2,R0,#+0x1C,#+0x1C
\ 0000002C 120F LSR R2,R2,#+0x1C
\ 0000002E 4C49 LDR R1,??AT91F_DisplayIpPacket_0+0x8 ;; `?<Constant "\\n\\r Header Length ...">`
\ 00000030 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000032 ........ _BLF sprintf,sprintf??rT
70 AT91F_DBGU_Printk(MsgBuffer);
\ 00000036 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000038 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
71
72 sprintf(MsgBuffer, "\n\r Type of service = 0x%x",pIpHeader->ip_tos);
\ 0000003C 6278 LDRB R2,[R4, #+0x1]
\ 0000003E 4949 LDR R1,??AT91F_DisplayIpPacket_0+0xC ;; `?<Constant "\\n\\r Type of service ...">`
\ 00000040 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000042 ........ _BLF sprintf,sprintf??rT
73 AT91F_DBGU_Printk(MsgBuffer);
\ 00000046 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000048 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
74
75 sprintf(MsgBuffer, "\n\r Total IP Length = 0x%X", (((pIpHeader->ip_len)>>8)&0xff) + (((pIpHeader->ip_len)<<8)&0xff00) );
\ 0000004C 6088 LDRH R0,[R4, #+0x2]
\ 0000004E 0004 LSL R0,R0,#+0x10 ;; ZeroExt R0,R0,#+0x10,#+0x10
\ 00000050 000C LSR R0,R0,#+0x10
\ 00000052 000A LSR R0,R0,#+0x8
\ 00000054 0004 LSL R0,R0,#+0x10 ;; ZeroExt R0,R0,#+0x10,#+0x10
\ 00000056 000C LSR R0,R0,#+0x10
\ 00000058 6188 LDRH R1,[R4, #+0x2]
\ 0000005A 0902 LSL R1,R1,#+0x8
\ 0000005C FF22 MOV R2,#+0xFF
\ 0000005E 1202 LSL R2,R2,#+0x8 ;; #+0xFF00
\ 00000060 0A40 AND R2,R1
\ 00000062 8218 ADD R2,R0,R2
\ 00000064 4049 LDR R1,??AT91F_DisplayIpPacket_0+0x10 ;; `?<Constant "\\n\\r Total IP Length ...">`
\ 00000066 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000068 ........ _BLF sprintf,sprintf??rT
76 AT91F_DBGU_Printk(MsgBuffer);
\ 0000006C .... LDR R0,??DataTable21 ;; MsgBuffer
\ 0000006E ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
77
78 sprintf(MsgBuffer, "\n\r ID = 0x%X", (((pIpHeader->ip_id)>>8)&0xff) + (((pIpHeader->ip_id)<<8)&0xff00) );
\ 00000072 A088 LDRH R0,[R4, #+0x4]
\ 00000074 0004 LSL R0,R0,#+0x10 ;; ZeroExt R0,R0,#+0x10,#+0x10
\ 00000076 000C LSR R0,R0,#+0x10
\ 00000078 000A LSR R0,R0,#+0x8
\ 0000007A 0004 LSL R0,R0,#+0x10 ;; ZeroExt R0,R0,#+0x10,#+0x10
\ 0000007C 000C LSR R0,R0,#+0x10
\ 0000007E A188 LDRH R1,[R4, #+0x4]
\ 00000080 0902 LSL R1,R1,#+0x8
\ 00000082 FF22 MOV R2,#+0xFF
\ 00000084 1202 LSL R2,R2,#+0x8 ;; #+0xFF00
\ 00000086 0A40 AND R2,R1
\ 00000088 8218 ADD R2,R0,R2
\ 0000008A 3849 LDR R1,??AT91F_DisplayIpPacket_0+0x14 ;; `?<Constant "\\n\\r ID ...">`
\ 0000008C .... LDR R0,??DataTable21 ;; MsgBuffer
\ 0000008E ........ _BLF sprintf,sprintf??rT
79 AT91F_DBGU_Printk(MsgBuffer);
\ 00000092 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000094 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
80
81 sprintf(MsgBuffer, "\n\r Header Checksum = 0x%X", (((pIpHeader->ip_sum)>>8)&0xff) + (((pIpHeader->ip_sum)<<8)&0xff00) );
\ 00000098 6089 LDRH R0,[R4, #+0xA]
\ 0000009A 0004 LSL R0,R0,#+0x10 ;; ZeroExt R0,R0,#+0x10,#+0x10
\ 0000009C 000C LSR R0,R0,#+0x10
\ 0000009E 000A LSR R0,R0,#+0x8
\ 000000A0 0004 LSL R0,R0,#+0x10 ;; ZeroExt R0,R0,#+0x10,#+0x10
\ 000000A2 000C LSR R0,R0,#+0x10
\ 000000A4 6189 LDRH R1,[R4, #+0xA]
\ 000000A6 0902 LSL R1,R1,#+0x8
\ 000000A8 FF22 MOV R2,#+0xFF
\ 000000AA 1202 LSL R2,R2,#+0x8 ;; #+0xFF00
\ 000000AC 0A40 AND R2,R1
\ 000000AE 8218 ADD R2,R0,R2
\ 000000B0 2F49 LDR R1,??AT91F_DisplayIpPacket_0+0x18 ;; `?<Constant "\\n\\r Header Checksum ...">`
\ 000000B2 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000B4 ........ _BLF sprintf,sprintf??rT
82 AT91F_DBGU_Printk(MsgBuffer);
\ 000000B8 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000BA ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
83
84
85 switch(pIpHeader->ip_p) {
\ 000000BE 607A LDRB R0,[R4, #+0x9]
\ 000000C0 0128 CMP R0,#+0x1
\ 000000C2 09D0 BEQ ??AT91F_DisplayIpPacket_1
\ 000000C4 8021 MOV R1,#+0x80
\ 000000C6 0901 LSL R1,R1,#+0x4 ;; #+0x800
\ 000000C8 8842 CMP R0,R1
\ 000000CA 0BD1 BNE ??AT91F_DisplayIpPacket_2
86 case PROT_IP:
87 sprintf(MsgBuffer, "\n\r Protocol = %s","IP");
\ ??AT91F_DisplayIpPacket_3:
\ 000000CC 294A LDR R2,??AT91F_DisplayIpPacket_0+0x1C ;; `?<Constant "IP">`
\ 000000CE 2A49 LDR R1,??AT91F_DisplayIpPacket_0+0x20 ;; `?<Constant "\\n\\r Protocol ...">`
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -