📄 usbprinter.lst
字号:
###############################################################################
# #
# 28/Apr/2009 14:33:36 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION #
# Copyright 1999-2007 IAR Systems. All rights reserved. #
# #
# Cpu mode = arm #
# Endian = little #
# Source file = E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\USBPrinter.c #
# Command line = E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\USBPrinter.c -D at91sam7se512 -D flash -D #
# TRACE_LEVEL=4 -lC E:\workplace\bootloaderOK\at91sam7se-e #
# k\basic-dataflash-project\ewp\at91sam7se512_flash\List\ #
# --remarks --diag_suppress Pe826,Pe1375 -o #
# E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\at91sam7se512_flash\Obj\ --no_cse #
# --no_unroll --no_inline --no_code_motion --no_tbaa #
# --no_clustering --no_scheduling --debug --endian little #
# --cpu ARM7TDMI -e --fpu None --dlib_config "D:\Program #
# Files\arm\ARM\INC\DLib_Config_Full.h" -I #
# E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\..\..\..\at91lib/peripherals\ -I #
# E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\..\..\..\at91lib\ -I #
# E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\..\..\..\at91lib/memories\ -I #
# E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\..\..\..\at91lib/boards/at91sam7se-ek\ -I #
# "D:\Program Files\arm\ARM\INC\" --interwork --cpu_mode #
# arm -Oh #
# List file = E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\at91sam7se512_flash\List\USBPrinter.lst #
# Object file = E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash- #
# project\ewp\at91sam7se512_flash\Obj\USBPrinter.o #
# #
# #
###############################################################################
E:\workplace\bootloaderOK\at91sam7se-ek\basic-dataflash-project\USBPrinter.c
1 #include <board.h>
2 #include <pio/pio.h>
3 #include <pio/pio_it.h>
4 #include <aic/aic.h>
5 #include <utility/trace.h>
6 #include<usb\device\core\USBD.h>
7 #include<usb\device\usbprinter\USBPrinterDriver.h>
8 #include <usb/device/usbprinter/USBPrinterDriverDescriptors.h>
9
10 #include "USBPrinter.h"
11
12 #define DATABUFFERSIZE \
13 BOARD_USB_ENDPOINTS_MAXPACKETSIZE(USBPrinterDriverDescriptors_DATAIN)
14
\ In section .bss, align 1
15 static unsigned char Flag_USBUpdataReday;
\ Flag_USBUpdataReday:
\ 00000000 DS8 1
16
\ In section .bss, align 4
17 static unsigned char usbBuffer[DATABUFFERSIZE];
\ usbBuffer:
\ 00000000 DS8 64
18
\ In section .rodata, align 4
19 static const Pin pinVbus = PIN_USB_VBUS;
\ pinVbus:
\ 00000000 0000080000F8 DC32 524288, 0FFFFF800H
\ FFFF
\ 00000008 04020000 DC8 4, 2, 0, 0
20
\ In section .bss, align 4
21 static INTERFACE Inter;
\ Inter:
\ 00000000 DS8 64
22
\ In section .bss, align 4
23 static unsigned char* AppBuf;
\ AppBuf:
\ 00000000 DS8 4
24
\ In section .bss, align 4
25 static unsigned char* temp;
\ temp:
\ 00000000 DS8 4
26
27 extern int size;
28
\ In section .text, align 4, keep-with-next
29 static void ISR_Vbus(const Pin *pPin)
30 {
\ ISR_Vbus:
\ 00000000 01402DE9 PUSH {R0,LR}
31 if (PIO_Get(&pinVbus)) {
\ 00000004 ........ LDR R0,??DataTable4 ;; pinVbus
\ 00000008 ........ BL PIO_Get
\ 0000000C 000050E3 CMP R0,#+0
\ 00000010 0100000A BEQ ??ISR_Vbus_0
32
33 USBD_Connect();
\ 00000014 0050BDE8 POP {R12,LR}
\ 00000018 ........ B USBD_Connect ;; tailcall
34 }
35 else {
36
37 USBD_Disconnect();
38 }
39 }
\ ??ISR_Vbus_0:
\ 0000001C 0050BDE8 POP {R12,LR}
\ 00000020 ........ B USBD_Disconnect ;; tailcall
40
41
\ In section .text, align 4, keep-with-next
42 static void VBus_Configure( void )
43 {
\ VBus_Configure:
\ 00000000 01402DE9 PUSH {R0,LR}
44
45 TRACE_INFO("VBus_Configure ");
\ 00000004 40009FE5 LDR R0,??VBus_Configure_0 ;; `?<Constant "-I- VBus_Configure ">`
\ 00000008 ........ BL printf
46
47 // Configure PIO
48 PIO_Configure(&pinVbus, 1);
\ 0000000C 0110A0E3 MOV R1,#+1
\ 00000010 ........ LDR R0,??DataTable4 ;; pinVbus
\ 00000014 ........ BL PIO_Configure
49 PIO_ConfigureIt(&pinVbus, ISR_Vbus);
\ 00000018 30109FE5 LDR R1,??VBus_Configure_0+0x4 ;; ISR_Vbus
\ 0000001C ........ LDR R0,??DataTable4 ;; pinVbus
\ 00000020 ........ BL PIO_ConfigureIt
50 PIO_EnableIt(&pinVbus);
\ 00000024 ........ LDR R0,??DataTable4 ;; pinVbus
\ 00000028 ........ BL PIO_EnableIt
51
52 // Check current level on VBus
53 if (PIO_Get(&pinVbus)) {
\ 0000002C ........ LDR R0,??DataTable4 ;; pinVbus
\ 00000030 ........ BL PIO_Get
\ 00000034 000050E3 CMP R0,#+0
\ 00000038 0100000A BEQ ??VBus_Configure_1
54
55 // if VBUS present, force the connect
56 USBD_Connect();
\ 0000003C 0050BDE8 POP {R12,LR}
\ 00000040 ........ B USBD_Connect ;; tailcall
57 }
58 else {
59 USBD_Disconnect();
60 }
61 }
\ ??VBus_Configure_1:
\ 00000044 0050BDE8 POP {R12,LR}
\ 00000048 ........ B USBD_Disconnect ;; tailcall
\ ??VBus_Configure_0:
\ 0000004C ........ DC32 `?<Constant "-I- VBus_Configure ">`
\ 00000050 ........ DC32 ISR_Vbus
\ In section .text, align 4, keep-with-next
62 void ReceiveData(unsigned int received)
63 {
64 unsigned int i;
65 for (i = 0;i < received;i++)
\ ReceiveData:
\ 00000000 000050E3 CMP R0,#+0
\ 00000004 1EFF2F01 BXEQ LR
\ 00000008 ........ LDR R1,??DataTable16 ;; usbBuffer
\ 0000000C ........ LDR R2,??DataTable25 ;; temp
\ 00000010 002092E5 LDR R2,[R2, #+0]
\ 00000014 ........ LDR R12,??DataTable14 ;; size
66 {
67 *temp = usbBuffer[i];
\ ??ReceiveData_0:
\ 00000018 0130D1E4 LDRB R3,[R1], #+1
\ 0000001C 0130C2E4 STRB R3,[R2], #+1
68 temp++;
69 size++;
\ 00000020 ........ LDR R3,??DataTable14 ;; size
\ 00000024 003093E5 LDR R3,[R3, #+0]
\ 00000028 013083E2 ADD R3,R3,#+1
\ 0000002C 00308CE5 STR R3,[R12, #+0]
70 }
\ 00000030 010050E2 SUBS R0,R0,#+1
\ 00000034 F7FFFF1A BNE ??ReceiveData_0
\ 00000038 ........ LDR R0,??DataTable25 ;; temp
\ 0000003C 002080E5 STR R2,[R0, #+0]
71 }
\ 00000040 1EFF2FE1 BX LR ;; return
\ In section .text, align 4, keep-with-next
72 static void UsbDataReceived(unsigned int unused,
73 unsigned char status,
74 unsigned int received,
75 unsigned int remaining)
76 {
\ UsbDataReceived:
\ 00000000 31402DE9 PUSH {R0,R4,R5,LR}
\ 00000004 0240A0E1 MOV R4,R2
\ 00000008 0350A0E1 MOV R5,R3
77
78
79 if (status == USBD_STATUS_SUCCESS)
\ 0000000C 000051E3 CMP R1,#+0
\ 00000010 0A00001A BNE ??UsbDataReceived_0
80 {
81
82 TRACE_INFO("UsbDataReceived: %x bytes\n\r",received);
\ 00000014 0410A0E1 MOV R1,R4
\ 00000018 3C009FE5 LDR R0,??UsbDataReceived_1 ;; `?<Constant "-I- UsbDataReceived: ...">`
\ 0000001C ........ BL printf
83 ReceiveData(received);
\ 00000020 0400A0E1 MOV R0,R4
\ 00000024 ........ BL ReceiveData
84 if ((received == DATABUFFERSIZE) && (remaining > 0)) {
\ 00000028 400054E3 CMP R4,#+64
\ 0000002C 0300001A BNE ??UsbDataReceived_0
\ 00000030 000055E3 CMP R5,#+0
85 TRACE_INFO("UsbDataReceived:%x byte\n\r",remaining)
\ 00000034 0510A011 MOVNE R1,R5
\ 00000038 20009F15 LDRNE R0,??UsbDataReceived_1+0x4 ;; `?<Constant "-I- UsbDataReceived:%...">`
\ 0000003C ........ BLNE printf
86 }
87 }
88 USBPrinterDriver_Read(usbBuffer,DATABUFFERSIZE,(TransferCallback) UsbDataReceived,0);
\ ??UsbDataReceived_0:
\ 00000040 0030A0E3 MOV R3,#+0
\ 00000044 ........ LDR R2,??DataTable15 ;; UsbDataReceived
\ 00000048 4010A0E3 MOV R1,#+64
\ 0000004C ........ LDR R0,??DataTable16 ;; usbBuffer
\ 00000050 ........ BL USBPrinterDriver_Read
89 }
\ 00000054 3840BDE8 POP {R3-R5,LR}
\ 00000058 1EFF2FE1 BX LR ;; return
\ ??UsbDataReceived_1:
\ 0000005C ........ DC32 `?<Constant "-I- UsbDataReceived: ...">`
\ 00000060 ........ DC32 `?<Constant "-I- UsbDataReceived:%...">`
90
\ In section .text, align 4, keep-with-next
91 void USBPortInit()
92 {
\ USBPortInit:
\ 00000000 01402DE9 PUSH {R0,LR}
93 PIO_InitializeInterrupts(0);
\ 00000004 0000A0E3 MOV R0,#+0
\ 00000008 ........ BL PIO_InitializeInterrupts
94 VBus_Configure();
\ 0000000C ........ BL VBus_Configure
95 USBPrinterDriver_Initialize();
\ 00000010 ........ BL USBPrinterDriver_Initialize
96 AppBuf = (unsigned char *) AT91C_EBI_SDRAM + 0xA00000;
\ 00000014 ........ LDR R0,??DataTable22 ;; AppBuf
\ 00000018 8015A0E3 MOV R1,#+536870912
\ 0000001C A01881E3 ORR R1,R1,#0xA00000
\ 00000020 001080E5 STR R1,[R0, #+0]
97 temp = AppBuf;
\ 00000024 ........ LDR R0,??DataTable25 ;; temp
\ 00000028 001080E5 STR R1,[R0, #+0]
98 size = 0;
\ 0000002C ........ LDR R0,??DataTable14 ;; size
\ 00000030 0010A0E3 MOV R1,#+0
\ 00000034 001080E5 STR R1,[R0, #+0]
99 }
\ 00000038 0050BDE8 POP {R12,LR}
\ 0000003C 1EFF2FE1 BX LR ;; return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -