⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s79

📁 ARM仿真案例
💻 S79
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION   21/Jul/2006  19:33:13 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
// Time limited license: 21 days left                                        /
//                                                                           /
//    Cpu mode        =  interwork                                           /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  E:\Project\ucos-ii\lcd\App\main.c                   /
//    Command line    =  E:\Project\ucos-ii\lcd\App\main.c -lCN              /
//                       E:\Project\ucos-ii\lcd\Debug\List\ -lA              /
//                       E:\Project\ucos-ii\lcd\Debug\List\ -o               /
//                       E:\Project\ucos-ii\lcd\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\lcd\ -I                          /
//                       E:\Project\ucos-ii\lcd\App\ -I                      /
//                       E:\Project\ucos-ii\lcd\ARM\ -I                      /
//                       E:\Project\ucos-ii\lcd\BSP\ -I                      /
//                       E:\Project\ucos-ii\lcd\uCOS-II\ -I "E:\Program      /
//                       Files\IAR Systems\Embedded Workbench 4.0            /
//                       Evaluation\ARM\INC\"                                /
//    List file       =  E:\Project\ucos-ii\lcd\Debug\List\main.s79          /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME main

        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__interwork"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__dlib_file_descriptor", "0"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

        PUBWEAK `?*?DATA_ID`
        MULTWEAK ??BSP_Init??rT
        MULTWEAK ??ChkBusy??rA
??DataTable0 EQU 0
??DataTable1 EQU 0
??DataTable10 EQU 0
??DataTable12 EQU 0
??DataTable2 EQU 0
??DataTable3 EQU 0
??DataTable4 EQU 0
??DataTable5 EQU 0
??DataTable6 EQU 0
??DataTable7 EQU 0
??DataTable8 EQU 0
??DataTable9 EQU 0
        MULTWEAK ??DisplayText??rA
        MULTWEAK ??OSInit??rT
        MULTWEAK ??OSStart??rT
        MULTWEAK ??OSTaskCreate??rT
        MULTWEAK ??TaskStart??rA
        MULTWEAK ??WrDat??rA
        MULTWEAK ??WrOp??rA
        MULTWEAK ??main??rA
        PUBWEAK ?init?tab?DATA_I
        PUBWEAK ?init?tab?DATA_Z
        PUBLIC ChkBusy
        FUNCTION ChkBusy,0201H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC DisplayText
        FUNCTION DisplayText,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC TaskStart
        FUNCTION TaskStart,0603H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC TaskStartStk
        PUBLIC WrDat
        FUNCTION WrDat,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC WrOp
        FUNCTION WrOp,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBWEAK _A_IOCLR
        PUBWEAK _A_IODIR
        PUBWEAK _A_IOPIN
        PUBWEAK _A_IOSET
        PUBWEAK _A_PINSEL0
        PUBLIC main
        FUNCTION main,0a03H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC txt
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 2
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon1
        
BSP_Init            SYMBOL "BSP_Init"
OSInit              SYMBOL "OSInit"
OSStart             SYMBOL "OSStart"
OSTaskCreate        SYMBOL "OSTaskCreate"
??BSP_Init??rT      SYMBOL "??rT", BSP_Init
ChkBusy             SYMBOL "ChkBusy"
??ChkBusy??rA       SYMBOL "??rA", ChkBusy
DisplayText         SYMBOL "DisplayText"
??DisplayText??rA   SYMBOL "??rA", DisplayText
??OSInit??rT        SYMBOL "??rT", OSInit
??OSStart??rT       SYMBOL "??rT", OSStart
??OSTaskCreate??rT  SYMBOL "??rT", OSTaskCreate
TaskStart           SYMBOL "TaskStart"
??TaskStart??rA     SYMBOL "??rA", TaskStart
WrDat               SYMBOL "WrDat"
??WrDat??rA         SYMBOL "??rA", WrDat
WrOp                SYMBOL "WrOp"
??WrOp??rA          SYMBOL "??rA", WrOp
main                SYMBOL "main"
??main??rA          SYMBOL "??rA", main

        EXTERN BSP_Init
        FUNCTION BSP_Init,0202H
        EXTERN OSInit
        FUNCTION OSInit,0202H
        EXTERN OSStart
        FUNCTION OSStart,0202H
        EXTERN OSTaskCreate
        FUNCTION OSTaskCreate,0202H

// E:\Project\ucos-ii\lcd\App\main.c
//    1 
//    2 
//    3 #include <includes.h>

        ASEGN DATA_AN:DATA:NOROOT,0e002c000H
// union <unnamed> volatile __data _A_PINSEL0
_A_PINSEL0:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0028000H
// union <unnamed> const volatile __data _A_IOPIN
_A_IOPIN:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0028004H
// union <unnamed> volatile __data _A_IOSET
_A_IOSET:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e0028008H
// union <unnamed> volatile __data _A_IODIR
_A_IODIR:
        DS8 4

        ASEGN DATA_AN:DATA:NOROOT,0e002800cH
// union <unnamed> volatile __data _A_IOCLR
_A_IOCLR:
        DS8 4
//    4 #define rs (1<<8)
//    5 #define rw (1<<9)
//    6 #define en (1<<10)
//    7 #define busy (1<<7)
//    8 
//    9 #define  TASK_STK_SIZE                  64

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   10 OS_STK        TaskStartStk[TASK_STK_SIZE];
TaskStartStk:
        DS8 256
//   11 
//   12 void  TaskStart(void *data);

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//   13 INT8U txt[]={"helloworld"};
txt:
        DS8 12
        REQUIRE `?<Initializer for txt>`

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI NoFunction
        ARM
??ChkBusy??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock0
        REQUIRE ChkBusy
//   14 /****************************************************************************
//   15 * 名称:ChkBusy()
//   16 * 功能:检查总线是否忙
//   17 ****************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function ChkBusy
        THUMB
//   18 void ChkBusy()
//   19 {
ChkBusy:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//   20 	PINSEL0=0xffc00000;
        LDR      R0,??ChkBusy_0   ;; 0xe002c000
        LDR      R1,??ChkBusy_0+0x4  ;; 0xffc00000
        STR      R1,[R0, #+0]
//   21 	IODIR=0x700;
        LDR      R0,??DataTable13  ;; 0xe0028008
        LSRS     R1,R0,#+21
        B.N      ??ChkBusy_1
//   22 	while(1)
//   23 	{
//   24 		IOCLR=rs;
//   25 		IOSET=rw;
//   26 		IOSET=en;
//   27 		if(!(IOPIN & busy))break;
//   28 		IOCLR=en;
??ChkBusy_2:
        LDR      R0,??DataTable15  ;; 0xe002800c
??ChkBusy_1:
        STR      R1,[R0, #+0]
        LDR      R0,??DataTable15  ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+1        ;; #+256
        STR      R1,[R0, #+0]
        LDR      R0,??DataTable11  ;; 0xe0028004
        LSLS     R1,R1,#+1
        STR      R1,[R0, #+0]
        LSLS     R1,R1,#+1
        STR      R1,[R0, #+0]
        LDR      R0,??ChkBusy_0+0x8  ;; 0xe0028000
        LDR      R0,[R0, #+0]
        LSLS     R0,R0,#+24
        BMI      ??ChkBusy_2
//   29 	}
//   30 	IODIR=0x7ff;
        LDR      R0,??DataTable13  ;; 0xe0028008
        LDR      R1,??DataTable14  ;; 0x7ff
        STR      R1,[R0, #+0]
//   31 }
        POP      {R0}
        BX       R0               ;; return
        Nop      
        DATA
??ChkBusy_0:
        DC32     0xe002c000
        DC32     0xffc00000
        DC32     0xe0028000
        CFI EndBlock cfiBlock1

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        ARM
??WrOp??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock2
        REQUIRE WrOp
//   32 /****************************************************************************
//   33 * 名称:WrOp()
//   34 * 功能:写函数
//   35 ****************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function WrOp
        THUMB
//   36 void WrOp(INT8U dat)
//   37 {
WrOp:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        MOVS     R4,R0
//   38 	
//   39 	ChkBusy();
        BL       ChkBusy
//   40 	IOCLR=rs;		//全部清零

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -