📄 dbgu.lst
字号:
###############################################################################
# #
# 08/Mar/2009 18:05:08 #
# IAR ANSI C/C++ Compiler V5.20.2.21007/W32 EVALUATION for ARM #
# Copyright 1999-2008 IAR Systems AB. #
# #
# Cpu mode = arm #
# Endian = little #
# Source file = E:\IAR\at91lib\peripherals\dbgu\dbgu.c #
# Command line = E:\IAR\at91lib\peripherals\dbgu\dbgu.c -D at91sam9260 #
# -D sdram -lC E:\IAR\at91sam9260-ek\basic-twi-eeprom-proj #
# ect\ewp\at91sam9260_sdram\List\ --remarks #
# --diag_suppress Pe826,Pe1375 -o #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\Obj\ --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --endian=little #
# --cpu=ARM926EJ-S -e --fpu=None --dlib_config #
# "D:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\DLib_Config_Full.h" -I #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
# \..\at91lib\ -I E:\IAR\at91sam9260-ek\basic-twi-eeprom-p #
# roject\ewp\..\..\..\at91lib\boards\at91sam9260-ek\ -I #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
# \..\at91lib\peripherals\ -I #
# E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\..\.. #
# \..\at91lib\components\ -I E:\IAR\at91sam9260-ek\basic-t #
# wi-eeprom-project\ewp\..\..\..\at91lib\usb\ -I #
# "D:\Program Files\IAR Systems\Embedded Workbench 5.0 #
# Evaluation\ARM\INC\" --interwork --cpu_mode arm -On #
# List file = E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\List\dbgu.lst #
# Object file = E:\IAR\at91sam9260-ek\basic-twi-eeprom-project\ewp\at91s #
# am9260_sdram\Obj\dbgu.o #
# #
# #
###############################################################################
E:\IAR\at91lib\peripherals\dbgu\dbgu.c
1 /* ----------------------------------------------------------------------------
2 * ATMEL Microcontroller Software Support
3 * ----------------------------------------------------------------------------
4 * Copyright (c) 2008, Atmel Corporation
5 *
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * - Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the disclaimer below.
13 *
14 * Atmel's name may not be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 * ----------------------------------------------------------------------------
28 */
29
30 //------------------------------------------------------------------------------
31 // Headers
32 //------------------------------------------------------------------------------
33
34 #include "dbgu.h"
35 //#include <stdarg.h>
36 #include <board.h>
37
38 //*-----------------------------------------------------------------------------
39 //* Exported functions
40 //*-----------------------------------------------------------------------------
41 //*-----------------------------------------------------------------------------
42 //* 函数名称: DBGU_Configure
43 //* 函数功能: 配制调试串口
44 //* 入口参数: 1. mode : 串口模式
45 //* 2. baudrate : 波特率
46 //* 3. mck : 系统主频
47 //* 返回值 : 无
48 //*-----------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
49 void DBGU_Configure(unsigned int mode,
50 unsigned int baudrate,
51 unsigned int mck)
52 {
\ DBGU_Configure:
\ 00000000 70402DE9 PUSH {R4-R6,LR}
\ 00000004 0040B0E1 MOVS R4,R0
\ 00000008 0150B0E1 MOVS R5,R1
\ 0000000C 0260B0E1 MOVS R6,R2
53 //* Reset & disable receiver and transmitter, disable interrupts
54 //* 复位并禁止调试串口接收与发送,禁止中断
55 AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RSTTX;
\ 00000010 FF00E0E3 MVN R0,#+255
\ 00000014 D00EC0E3 BIC R0,R0,#0xD00
\ 00000018 0C10A0E3 MOV R1,#+12
\ 0000001C 001080E5 STR R1,[R0, #+0]
56 AT91C_BASE_DBGU->DBGU_IDR = 0xFFFFFFFF;
\ 00000020 F300E0E3 MVN R0,#+243
\ 00000024 D00EC0E3 BIC R0,R0,#0xD00
\ 00000028 0010E0E3 MVN R1,#+0
\ 0000002C 001080E5 STR R1,[R0, #+0]
57
58 //* Configure baud rate
59 //* 配制串口波特率
60 AT91C_BASE_DBGU->DBGU_BRGR = mck / (baudrate * 16);
\ 00000030 0600B0E1 MOVS R0,R6
\ 00000034 1020A0E3 MOV R2,#+16
\ 00000038 920511E0 MULS R1,R2,R5
\ 0000003C ........ BL __aeabi_uidivmod
\ 00000040 DF10E0E3 MVN R1,#+223
\ 00000044 D01EC1E3 BIC R1,R1,#0xD00
\ 00000048 000081E5 STR R0,[R1, #+0]
61
62 //* Configure mode register
63 //* 配制串口模式
64 AT91C_BASE_DBGU->DBGU_MR = mode;
\ 0000004C FB00E0E3 MVN R0,#+251
\ 00000050 D00EC0E3 BIC R0,R0,#0xD00
\ 00000054 004080E5 STR R4,[R0, #+0]
65
66 //* Disable DMA channel
67 //* 禁止 DMA
68 AT91C_BASE_DBGU->DBGU_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
\ 00000058 DF00E0E3 MVN R0,#+223
\ 0000005C C00EC0E3 BIC R0,R0,#0xC00
\ 00000060 0210A0E3 MOV R1,#+2
\ 00000064 801F81E3 ORR R1,R1,#0x200
\ 00000068 001080E5 STR R1,[R0, #+0]
69
70 //* Enable receiver and transmitter
71 //* 使能串口接收与发送
72 AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN;
\ 0000006C FF00E0E3 MVN R0,#+255
\ 00000070 D00EC0E3 BIC R0,R0,#0xD00
\ 00000074 5010A0E3 MOV R1,#+80
\ 00000078 001080E5 STR R1,[R0, #+0]
73 }
\ 0000007C 7080BDE8 POP {R4-R6,PC} ;; return
74
75
76 //*----------------------------------------------------------------------------
77 //* \fn AT91F_US_TxReady
78 //* \brief Return 1 if a character can be written in US_THR
79 //*----------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
80 unsigned int AT91F_US_TxReady (AT91PS_USART pUSART) // \arg pointer to a USART controller
81 {
82 return (pUSART->US_CSR & AT91C_US_TXRDY);
\ AT91F_US_TxReady:
\ 00000000 140090E5 LDR R0,[R0, #+20]
\ 00000004 020010E2 ANDS R0,R0,#0x2
\ 00000008 1EFF2FE1 BX LR ;; return
83 }
84
85
86 //*----------------------------------------------------------------------------
87 //* \fn AT91F_US_PutChar
88 //* \brief Send a character,does not check if ready to send
89 //*----------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
90 void AT91F_US_PutChar (AT91PS_USART pUSART, int character )
91 {
92 pUSART->US_THR = (character & 0x1FF);
\ AT91F_US_PutChar:
\ 00000000 812BB0E1 LSLS R2,R1,#+23
\ 00000004 A22BB0E1 LSRS R2,R2,#+23
\ 00000008 1C2080E5 STR R2,[R0, #+28]
93 }
\ 0000000C 1EFF2FE1 BX LR ;; return
94
95
96 //**********************************************************************
97 //*函数名称 : DBGU_Printk
98 //*函数功能 : 向串口输出字符串
99 //*入口参数 : *buffer: 要输出的字符串起始地址
100 //*返回值 : 无
101 //**********************************************************************
\ In section .text, align 4, keep-with-next
102 void DBGU_Printk(char *buffer) // \arg pointer to a string ending by \0
103 {
\ DBGU_Printk:
\ 00000000 10402DE9 PUSH {R4,LR}
\ 00000004 0040B0E1 MOVS R4,R0
104 while(*buffer != '\0')
\ ??DBGU_Printk_0:
\ 00000008 0000D4E5 LDRB R0,[R4, #+0]
\ 0000000C 000050E3 CMP R0,#+0
\ 00000010 0A00000A BEQ ??DBGU_Printk_1
105 {
106 while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
\ ??DBGU_Printk_2:
\ 00000014 FF00E0E3 MVN R0,#+255
\ 00000018 D00EC0E3 BIC R0,R0,#0xD00
\ 0000001C ........ BL AT91F_US_TxReady
\ 00000020 000050E3 CMP R0,#+0
\ 00000024 FAFFFF0A BEQ ??DBGU_Printk_2
107 AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, *buffer++);
\ 00000028 0010D4E5 LDRB R1,[R4, #+0]
\ 0000002C FF00E0E3 MVN R0,#+255
\ 00000030 D00EC0E3 BIC R0,R0,#0xD00
\ 00000034 ........ BL AT91F_US_PutChar
\ 00000038 014094E2 ADDS R4,R4,#+1
\ 0000003C F1FFFFEA B ??DBGU_Printk_0
108 }
109 }
\ ??DBGU_Printk_1:
\ 00000040 1080BDE8 POP {R4,PC} ;; return
110
111
112 //*-----------------------------------------------------------------------------
113 //* 函数名称: DBGU_PutChar
114 //* 函数功能: 从串口输出一个字符
115 //* 入口参数: c: 待输出的字符
116 //* 返回值 : 无
117 //*-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -