main.lst
来自「ARM仿真案例」· LST 代码 · 共 222 行
LST
222 行
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION 21/Jul/2006 16:27:56 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# Time limited license: 22 days left #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\Project\ucos-ii\spi\App\main.C #
# Command line = E:\Project\ucos-ii\spi\App\main.C -lCN #
# E:\Project\ucos-ii\spi\Debug\List\ -lA #
# E:\Project\ucos-ii\spi\Debug\List\ -o #
# E:\Project\ucos-ii\spi\Debug\Obj\ -s9 --no_cse #
# --no_unroll --no_inline --no_code_motion --no_tbaa #
# --no_clustering --no_scheduling --debug --cpu_mode #
# thumb --endian little --cpu ARM7TDMI-S #
# --stack_align 4 --interwork -e --fpu None #
# --dlib_config "e:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\ARM\LIB\dl4tptinl8n.h" -I #
# E:\Project\ucos-ii\spi\ -I #
# E:\Project\ucos-ii\spi\App\ -I #
# E:\Project\ucos-ii\spi\ARM\ -I #
# E:\Project\ucos-ii\spi\BSP\ -I #
# E:\Project\ucos-ii\spi\uCOS-II\ -I "e:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Evaluation\ARM\INC\" #
# List file = E:\Project\ucos-ii\spi\Debug\List\main.lst #
# Object file = E:\Project\ucos-ii\spi\Debug\Obj\main.r79 #
# #
# #
##############################################################################
E:\Project\ucos-ii\spi\App\main.C
1
2 /********************************************************************************************************/
3 #include "config.h"
\ In segment DATA_AN, at 0xe002c000
\ union <unnamed> volatile __data _A_PINSEL0
\ _A_PINSEL0:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe0028004
\ union <unnamed> volatile __data _A_IOSET
\ _A_IOSET:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe0028008
\ union <unnamed> volatile __data _A_IODIR
\ _A_IODIR:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe002800c
\ union <unnamed> volatile __data _A_IOCLR
\ _A_IOCLR:
\ 00000000 DS8 4
4 #define HC595_CS 0x00000100 /* P0.8口为74HC595的片选 */
5 #define TASK_STK_SIZE 64
\ In segment DATA_Z, align 4, align-sorted
6 OS_STK TaskStartStk[TASK_STK_SIZE];
\ TaskStartStk:
\ 00000000 DS8 256
7
8 void TaskStart(void *data);
9
10 /*********************************************************************************************************
11 ** 函数名称: main
12 ** 功能描述: c语言的主函数,由它启动多任务环境
13 ********************************************************************************************************/
\ In segment CODE, align 4, keep-with-next
14 int main (void)
15 {
\ main:
\ 00000000 00B5 PUSH {LR}
16 OSInit();
\ 00000002 ........ _BLF OSInit,??OSInit??rT
17 OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
\ 00000006 0023 MOVS R3,#+0
\ 00000008 044A LDR R2,??main_0 ;; TaskStartStk + 252
\ 0000000A 0021 MOVS R1,#+0
\ 0000000C 0448 LDR R0,??main_0+0x4 ;; TaskStart
\ 0000000E ........ _BLF OSTaskCreate,??OSTaskCreate??rT
18 OSStart();
\ 00000012 ........ _BLF OSStart,??OSStart??rT
19 return 0;
\ 00000016 0020 MOVS R0,#+0
\ 00000018 02BC POP {R1}
\ 0000001A 0847 BX R1 ;; return
\ ??main_0:
\ 0000001C ........ DC32 TaskStartStk + 252
\ 00000020 ........ DC32 TaskStart
20 }
21
22 /*********************************************************************************************************
23 ** 函数名称: TaskStart
24 ** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务
25 ********************************************************************************************************/
\ In segment DATA_C, align 4, align-sorted
26 INT8U const ShowTable[11] = {
\ ShowTable:
\ 00000000 3F065B4F666D DC8 63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 0, 0
\ 7D077F6F0000
27 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00};
\ In segment CODE, align 4, keep-with-next
28 void TaskStart(void *pdata)
29 {
\ TaskStart:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 81B0 SUB SP,SP,#+4
30 INT8U temp,i;
31
32 pdata = pdata; /* 避免编译警告 */
33
34 BSP_Init(); /* 目标板初始化 */
\ 00000004 ........ _BLF BSP_Init,??BSP_Init??rT
35 PINSEL0 = (PINSEL0 & 0xfffcfff0);
\ 00000008 1248 LDR R0,??TaskStart_0 ;; 0xe002c000
\ 0000000A 0168 LDR R1,[R0, #+0]
\ 0000000C 124A LDR R2,??TaskStart_0+0x4 ;; 0xfffcfff0
\ 0000000E 0A40 ANDS R2,R2,R1
\ 00000010 0260 STR R2,[R0, #+0]
36 IODIR = HC595_CS;
\ 00000012 1248 LDR R0,??TaskStart_0+0x8 ;; 0xe0028008
\ 00000014 8021 MOVS R1,#+128
\ 00000016 4900 LSLS R1,R1,#+1 ;; #+256
\ 00000018 0160 STR R1,[R0, #+0]
37
38 for (;;)
39 {
40 for (i = 0; i < 10; i++)
\ ??TaskStart_1:
\ 0000001A 114C LDR R4,??TaskStart_0+0xC ;; ShowTable
\ 0000001C 0A25 MOVS R5,#+10
41 {
42 SPIStart();
\ ??TaskStart_2:
\ 0000001E ........ _BLF SPIStart,??SPIStart??rT
43 IOCLR = HC595_CS;
\ 00000022 1048 LDR R0,??TaskStart_0+0x10 ;; 0xe002800c
\ 00000024 8021 MOVS R1,#+128
\ 00000026 4900 LSLS R1,R1,#+1 ;; #+256
\ 00000028 0160 STR R1,[R0, #+0]
44 SPIRW(&temp, ~ShowTable[i]);
\ 0000002A 2078 LDRB R0,[R4, #+0]
\ 0000002C C143 MVNS R1,R0
\ 0000002E 0906 LSLS R1,R1,#+24
\ 00000030 090E LSRS R1,R1,#+24
\ 00000032 6846 MOV R0,SP
\ 00000034 ........ _BLF SPIRW,??SPIRW??rT
45 IOSET = HC595_CS;
\ 00000038 0B48 LDR R0,??TaskStart_0+0x14 ;; 0xe0028004
\ 0000003A 8021 MOVS R1,#+128
\ 0000003C 4900 LSLS R1,R1,#+1 ;; #+256
\ 0000003E 0160 STR R1,[R0, #+0]
46 SPIEnd();
\ 00000040 ........ _BLF SPIEnd,??SPIEnd??rT
47 OSTimeDly(OS_TICKS_PER_SEC / 5);
\ 00000044 1420 MOVS R0,#+20
\ 00000046 ........ _BLF OSTimeDly,??OSTimeDly??rT
48
49 }
\ 0000004A 641C ADDS R4,R4,#+1
\ 0000004C 6D1E SUBS R5,R5,#+1
\ 0000004E E4D0 BEQ ??TaskStart_1
\ 00000050 E5E7 B ??TaskStart_2
\ 00000052 C046 Nop
\ ??TaskStart_0:
\ 00000054 00C002E0 DC32 0xe002c000
\ 00000058 F0FFFCFF DC32 0xfffcfff0
\ 0000005C 088002E0 DC32 0xe0028008
\ 00000060 ........ DC32 ShowTable
\ 00000064 0C8002E0 DC32 0xe002800c
\ 00000068 048002E0 DC32 0xe0028004
50 }
51 }
52
53 /*********************************************************************************************************
54 ** End Of File
55 ********************************************************************************************************/
Maximum stack usage in bytes:
Function CSTACK
-------- ------
TaskStart 16
main 4
Segment part sizes:
Function/Label Bytes
-------------- -----
_A_PINSEL0 4
_A_IOSET 4
_A_IODIR 4
_A_IOCLR 4
TaskStartStk 256
main 36
ShowTable 12
TaskStart 108
Others 100
232 bytes in segment CODE
16 bytes in segment DATA_AN
12 bytes in segment DATA_C
256 bytes in segment DATA_Z
12 bytes in segment INITTAB
144 bytes of CODE memory (+ 100 bytes shared)
12 bytes of CONST memory
256 bytes of DATA memory (+ 16 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?