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

📄 arm_00_os_main.lst

📁 嵌入式系统OS2 在ARM LPC213X 平台上的模板
💻 LST
字号:
ARM COMPILER V2.00d,  ARM_00_OS_main                                                       22/12/07  19:56:45  PAGE 1   


ARM COMPILER V2.00d, COMPILATION OF MODULE ARM_00_OS_main
OBJECT MODULE PLACED IN ARM_00_OS_main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe ARM_00_OS_main.c THUMB DEBUG TABS(4) 

stmt  level    source

    1          /**********************************************************************************************
    2          本程序只供学习使用,不得用于其它任何用途,否则后果自负。
    3          
    4            ARM_OS_main.c file
    5          
    6            LPC213x上的操作系统——ARM_OS
    7          
    8            作者:heciang
    9            联系电话:13811129591
   10            QQ:176780142
   11            Email:heciang@126.com
   12            建立日期:2006-5-1
   13            修改日期:2006-5-15
   14            最后修改时间:2006-08-25
   15            版本:V1.0
   16           
   17            Copyright(C) Computer-lov 2006-2016
   18            All rights reserved
   19          **********************************************************************************************/
   20          
   21          #include "CPU.H"
   22          
   23          #include "My_type.h"
   24          #include "LED.H"
   25          #include "interrupt.h"
   26          #include "ARM_00_OS_TaskSwitch.H"
   27          #include "ARM_00_OS_Core.H"
   28          #include "UART.H"
   29          #include "KEYS.H"
   30          
   31          /*********************************************************************************************/
   32          void SysClkInit(void)
   33          {
   34   1       PLLCON=0x01;     //Enable PLL
   35   1       PLLCFG=0x24;     //set M=4,P=2    so the core clock is about 5*11.0592M
   36   1       PLLFEED=0xAA;
   37   1       PLLFEED=0x55;    //send PLL feed sequence
   38   1      
   39   1       while((PLLSTAT&(1<<10))==0);     //Wait for PLL Locked
   40   1      
   41   1       PLLCON=3;        //Enable and connect PLL
   42   1       PLLFEED=0xAA;
   43   1       PLLFEED=0x55;   //send PLL feed sequence
   44   1      
   45   1       VPBDIV=0x01;   //VPB clock set. 0x01 --- same as the core clock
   46   1              
   47   1       MAMCR=0x00;     
   48   1       MAMTIM=0x03;    //set MAMTIM to 3cclk for core clock >40MHz
   49   1       MAMCR=0x02;     //use MAM
   50   1      }
   51          ///////////////////////////////////////////////////////////////////////////////////////////////
   52          
   53          /**********************************************************************************************
   54          main函数
   55          **********************************************************************************************/
   56          void main(void)
   57          {
   58   1      
   59   1       DisEnableInterrupt(OS_I_Bit | OS_F_Bit);  //关中断
ARM COMPILER V2.00d,  ARM_00_OS_main                                                       22/12/07  19:56:45  PAGE 2   

   60   1       
   61   1       SysClkInit();  //系统时钟初始化
   62   1       
   63   1       UART_init();   //串口初始化
   64   1       
   65   1       DelayXms(100);  //延迟100ms
   66   1       
   67   1       cls();         //清屏
   68   1       
   69   1       prints("SystemStart",1);  //显示开机信息
   70   1      
   71   1       OSInit();   //操作系统初始化
   72   1      
   73   1       DelayXms(2000);   //延时2S。软件仿真时最好去掉该句,否则有得你等^_^
   74   1      
   75   1       OSEnterCritical();  //进入临界段
   76   1       
   77   1       EnableInterrupt(OS_I_Bit | OS_F_Bit);  //开中断
   78   1       
   79   1       OSTickInit();  //系统时钟节拍初始化
   80   1      
   81   1       OSStart((uint32)OSSystemIdle,OS_THUMB_MODE);  //系统开始运行
   82   1       
   83   1      }
   84          //////////////////////////////////End of function//////////////////////////////////////////////
ARM COMPILER V2.00d,  ARM_00_OS_main                                                       22/12/07  19:56:45  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (DisEnableInterrupt?T)
 EXTERN CODE16 (EnableInterrupt?T)
 EXTERN CODE16 (OSStart?T)
 EXTERN CODE16 (OSInit?T)
 EXTERN CODE16 (OSTickInit?T)
 EXTERN CODE16 (OSSystemIdle?T)
 EXTERN CODE16 (OSEnterCritical?T)
 EXTERN CODE16 (UART_init?T)
 EXTERN CODE16 (prints?T)
 EXTERN CODE16 (cls?T)
 EXTERN CODE16 (DelayXms?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         SysClkInit?T
 PUBLIC         main



*** DATA SEGMENT '?CON?ARM_00_OS_main':
 00000000          ??S_1:
 00000000            DB          'SystemStart',0x00

*** CODE SEGMENT '?PR?SysClkInit?T?ARM_00_OS_main':
   34:  PLLCON=0x01;     //Enable PLL
 00000000  2101      MOV         R1,#0x1
 00000002  4800      LDR         R0,=0xE01FC080
 00000004  7001      STRB        R1,[R0,#0x0]
   35:  PLLCFG=0x24;     //set M=4,P=2    so the core clock is about 5*11.0592M
 00000006  2124      MOV         R1,#0x24
 00000008  4800      LDR         R0,=0xE01FC084
 0000000A  7001      STRB        R1,[R0,#0x0]
   36:  PLLFEED=0xAA;
 0000000C  21AA      MOV         R1,#0xAA
 0000000E  4800      LDR         R0,=0xE01FC08C
 00000010  7001      STRB        R1,[R0,#0x0]
   37:  PLLFEED=0x55;    //send PLL feed sequence
 00000012  2155      MOV         R1,#0x55
 00000014  4800      LDR         R0,=0xE01FC08C
 00000016  7001      STRB        R1,[R0,#0x0]
   39:  while((PLLSTAT&(1<<10))==0);     //Wait for PLL Locked
 00000018          L_1:
 00000018  4800      LDR         R0,=0xE01FC088
 0000001A  8800      LDRH        R0,[R0,#0x0]
 0000001C  4800      LDR         R1,=0x400
 0000001E  4208      TST         R0,R1
 00000020  D0FA      BEQ         L_1  ; T=0x00000018
   41:  PLLCON=3;        //Enable and connect PLL
 00000022  2103      MOV         R1,#0x3
 00000024  4800      LDR         R0,=0xE01FC080
 00000026  7001      STRB        R1,[R0,#0x0]
   42:  PLLFEED=0xAA;
 00000028  21AA      MOV         R1,#0xAA
 0000002A  4800      LDR         R0,=0xE01FC08C
 0000002C  7001      STRB        R1,[R0,#0x0]
   43:  PLLFEED=0x55;   //send PLL feed sequence
 0000002E  2155      MOV         R1,#0x55
 00000030  4800      LDR         R0,=0xE01FC08C
 00000032  7001      STRB        R1,[R0,#0x0]
   45:  VPBDIV=0x01;   //VPB clock set. 0x01 --- same as the core clock
 00000034  2101      MOV         R1,#0x1
 00000036  4800      LDR         R0,=0xE01FC100
 00000038  7001      STRB        R1,[R0,#0x0]
   47:  MAMCR=0x00;     
 0000003A  2100      MOV         R1,#0x0
ARM COMPILER V2.00d,  ARM_00_OS_main                                                       22/12/07  19:56:45  PAGE 4   

 0000003C  4800      LDR         R0,=0xE01FC000
 0000003E  7001      STRB        R1,[R0,#0x0]
   48:  MAMTIM=0x03;    //set MAMTIM to 3cclk for core clock >40MHz
 00000040  2103      MOV         R1,#0x3
 00000042  4800      LDR         R0,=0xE01FC004
 00000044  7001      STRB        R1,[R0,#0x0]
   49:  MAMCR=0x02;     //use MAM
 00000046  2102      MOV         R1,#0x2
 00000048  4800      LDR         R0,=0xE01FC000
 0000004A  7001      STRB        R1,[R0,#0x0]
   50: }
 0000004C  4770      BX          R14
 0000004E          ENDP ; 'SysClkInit?T'


*** CODE SEGMENT '?PR?main?ARM_00_OS_main':
   56: void main(void)
 00000000  B500      PUSH        {LR}
   59:  DisEnableInterrupt(OS_I_Bit | OS_F_Bit);  //关中断
 00000002  20C0      MOV         R0,#0xC0
 00000004  DF00      SWI         0x0 ; DisEnableInterrupt?T
   61:  SysClkInit();  //系统时钟初始化
 00000006  F7FF      BL          SysClkInit?T  ; T=0x0001  (1)
 00000008  FFFB      BL          SysClkInit?T  ; T=0x0001  (2)
   63:  UART_init();   //串口初始化
 0000000C  F7FF      BL          UART_init?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          UART_init?T  ; T=0x0001  (2)
   65:  DelayXms(100);  //延迟100ms
 00000012  2064      MOV         R0,#0x64
 00000014  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 00000016  FFF4      BL          DelayXms?T  ; T=0x0001  (2)
   67:  cls();         //清屏
 0000001A  F7FF      BL          cls?T  ; T=0x0001  (1)
 0000001C  FFF1      BL          cls?T  ; T=0x0001  (2)
   69:  prints("SystemStart",1);  //显示开机信息
 00000020  4800      LDR         R0,=??S_1 ; ??S_1
 00000022  2101      MOV         R1,#0x1
 00000024  F7FF      BL          prints?T  ; T=0x0001  (1)
 00000026  FFEC      BL          prints?T  ; T=0x0001  (2)
   71:  OSInit();   //操作系统初始化
 0000002A  F7FF      BL          OSInit?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          OSInit?T  ; T=0x0001  (2)
   73:  DelayXms(2000);   //延时2S。软件仿真时最好去掉该句,否则有得你等^_^
 00000030  4800      LDR         R0,=0x7D0
 00000032  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 00000034  FFE5      BL          DelayXms?T  ; T=0x0001  (2)
   75:  OSEnterCritical();  //进入临界段
 00000038  F7FF      BL          OSEnterCritical?T  ; T=0x0001  (1)
 0000003A  FFE2      BL          OSEnterCritical?T  ; T=0x0001  (2)
   77:  EnableInterrupt(OS_I_Bit | OS_F_Bit);  //开中断
 0000003E  20C0      MOV         R0,#0xC0
 00000040  DF01      SWI         0x1 ; EnableInterrupt?T
   79:  OSTickInit();  //系统时钟节拍初始化
 00000042  F7FF      BL          OSTickInit?T  ; T=0x0001  (1)
 00000044  FFDD      BL          OSTickInit?T  ; T=0x0001  (2)
   81:  OSStart((uint32)OSSystemIdle,OS_THUMB_MODE);  //系统开始运行
 00000048  4800      LDR         R0,=OSSystemIdle?T ; OSSystemIdle?T
 0000004A  2120      MOV         R1,#0x20
 0000004C  DF02      SWI         0x2 ; OSStart?T
   83: }
 0000004E  BC08      POP         {R3}
 00000050  4718      BX          R3
 00000052          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
ARM COMPILER V2.00d,  ARM_00_OS_main                                                       22/12/07  19:56:45  PAGE 5   

  const size           =        12
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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