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

📄 port.lst

📁 本代码已经经过修改
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   00000012   0140               AND         R1,R0
   \   00000014   2980               STRH        R1,[R5, #+0]
   \   00000016   FA20               MOV         R0,#+0xFA
   \   00000018   8000               LSL         R0,R0,#+0x2        ;; #+0x3E8
   \   0000001A   ........           _BLF        WDG_PeriodValueConfig,WDG_PeriodValueConfig??rT
   \   0000001E   0120               MOV         R0,#+0x1
   \   00000020   1249               LDR         R1,??xPortStartScheduler_0+0x10  ;; 0xfffff870
   \   00000022   0A68               LDR         R2,[R1, #+0]
   \   00000024   120C               LSR         R2,R2,#+0x10
   \   00000026   1204               LSL         R2,R2,#+0x10
   \   00000028   0243               ORR         R2,R0
   \   0000002A   0A60               STR         R2,[R1, #+0]
   \   0000002C   1049               LDR         R1,??xPortStartScheduler_0+0x14  ;; 0xfffff820
   \   0000002E   0A68               LDR         R2,[R1, #+0]
   \   00000030   1023               MOV         R3,#+0x10
   \   00000032   1343               ORR         R3,R2
   \   00000034   0B60               STR         R3,[R1, #+0]
   \   00000036   0F49               LDR         R1,??xPortStartScheduler_0+0x18  ;; 0xfffff800
   \   00000038   0A68               LDR         R2,[R1, #+0]
   \   0000003A   1043               ORR         R0,R2
   \   0000003C   0860               STR         R0,[R1, #+0]
   \   0000003E   2088               LDRH        R0,[R4, #+0]
   \   00000040   0121               MOV         R1,#+0x1
   \   00000042   0143               ORR         R1,R0
   \   00000044   2180               STRH        R1,[R4, #+0]
   \   00000046   2888               LDRH        R0,[R5, #+0]
   \   00000048   0221               MOV         R1,#+0x2
   \   0000004A   0143               ORR         R1,R0
   \   0000004C   2980               STRH        R1,[R5, #+0]
    149          
    150          	/* Start the first task. */
    151          	vPortStartFirstTask();	
   \   0000004E   ........           _BLF        vPortStartFirstTask,vPortStartFirstTask??rT
    152          
    153          	/* Should not get here! */
    154          	return 0;
   \   00000052   0020               MOV         R0,#+0
   \   00000054   30BC               POP         {R4,R5}
   \   00000056   02BC               POP         {R1}
   \   00000058   0847               BX          R1                 ;; return
   \   0000005A   C046               NOP         
   \                     ??xPortStartScheduler_0:
   \   0000005C   14E000E0           DC32        0xe000e014
   \   00000060   FEFF0000           DC32        0xfffe
   \   00000064   00E000E0           DC32        0xe000e000
   \   00000068   FDFF0000           DC32        0xfffd
   \   0000006C   70F8FFFF           DC32        0xfffff870
   \   00000070   20F8FFFF           DC32        0xfffff820
   \   00000074   00F8FFFF           DC32        0xfffff800
    155          }
    156          /*-----------------------------------------------------------*/
    157          

   \                                 In segment CODE, align 4, keep-with-next
    158          void vPortEndScheduler( void )
    159          {
    160          	/* It is unlikely that the ARM port will require this function as there
    161          	is nothing to return to.  */
    162          }
   \                     vPortEndScheduler:
   \   00000000   7047               BX          LR                 ;; return
    163          /*-----------------------------------------------------------*/
    164          
    165          /* The cooperative scheduler requires a normal IRQ service routine to
    166          simply increment the system tick. */

   \                                 In segment CODE, align 4, keep-with-next
    167          __arm __irq void vPortNonPreemptiveTick( void )
    168          {
   \                     vPortNonPreemptiveTick:
   \   00000000   04E04EE2           SUB         LR,LR,#+0x4
   \   00000004   0F502DE9           STMDB       SP!,{R0-R3,R12,LR}  ;; Push
    169          	/* Increment the tick count - which may wake some tasks but as the
    170          	preemptive scheduler is not being used any woken task is not given
    171          	processor time no matter what its priority. */
    172          	vTaskIncrementTick();
   \   00000008   ........           _BLF        vTaskIncrementTick,vTaskIncrementTick??rA
    173          
    174          	/* Clear the interrupt in the watchdog and EIC. */
    175          	WDG->SR = 0x0000;
   \   0000000C   ........           LDR         R0,??DataTable1    ;; 0xe000e010
   \   00000010   0010A0E3           MOV         R1,#+0
   \   00000014   B010C0E1           STRH        R1,[R0, #+0]
    176          	portCLEAR_EIC();		
   \   00000018   BF00E0E3           MVN         R0,#+0xBF
   \   0000001C   700EC0E3           BIC         R0,R0,#+0x700
   \   00000020   0110A0E3           MOV         R1,#+0x1
   \   00000024   3C2040E2           SUB         R2,R0,#+0x3C
   \   00000028   002092E5           LDR         R2,[R2, #+0]
   \   0000002C   1112A0E1           MOV         R1,R1, LSL R2
   \   00000030   001080E5           STR         R1,[R0, #+0]
    177          }
   \   00000034   0F90FDE8           LDMIA       SP!,{R0-R3,R12,PC}^  ;; return
    178          /*-----------------------------------------------------------*/
    179          
    180          /* This function is called from an asm wrapper, so does not require the __irq
    181          keyword. */

   \                                 In segment CODE, align 4, keep-with-next
    182          void vPortPreemptiveTick( void )
    183          {
   \                     vPortPreemptiveTick:
   \   00000000   00B5               PUSH        {LR}
    184          	/* Increment the tick counter. */
    185          	vTaskIncrementTick();
   \   00000002   ........           _BLF        vTaskIncrementTick,vTaskIncrementTick??rT
    186          
    187          	/* The new tick value might unblock a task.  Ensure the highest task that
    188          	is ready to execute is the task that will execute when the tick ISR 
    189          	exits. */
    190          	vTaskSwitchContext();
   \   00000006   ........           _BLF        vTaskSwitchContext,vTaskSwitchContext??rT
    191          
    192          	/* Clear the interrupt in the watchdog and EIC. */
    193          	WDG->SR = 0x0000;
   \   0000000A   ....               LDR         R0,??DataTable1    ;; 0xe000e010
   \   0000000C   0021               MOV         R1,#+0
   \   0000000E   0180               STRH        R1,[R0, #+0]
    194          	portCLEAR_EIC();			
   \   00000010   0348               LDR         R0,??vPortPreemptiveTick_0  ;; 0xfffff840
   \   00000012   0121               MOV         R1,#+0x1
   \   00000014   034A               LDR         R2,??vPortPreemptiveTick_0+0x4  ;; 0xfffff804
   \   00000016   1268               LDR         R2,[R2, #+0]
   \   00000018   9140               LSL         R1,R2
   \   0000001A   0160               STR         R1,[R0, #+0]
    195          }
   \   0000001C   01BC               POP         {R0}
   \   0000001E   0047               BX          R0                 ;; return
   \                     ??vPortPreemptiveTick_0:
   \   00000020   40F8FFFF           DC32        0xfffff840
   \   00000024   04F8FFFF           DC32        0xfffff804
    196          /*-----------------------------------------------------------*/
    197          
    198          static void prvSetupTimerInterrupt( void )
    199          {
    200          	/* Set the watchdog up to generate a periodic tick. */
    201          	WDG_ECITConfig( DISABLE );
    202          	WDG_CntOnOffConfig( DISABLE );
    203          	WDG_PeriodValueConfig( configTICK_RATE_HZ );
    204          
    205          	/* Setup the tick interrupt in the EIC. */
    206          	EIC_IRQChannelPriorityConfig( WDG_IRQChannel, 1 );
    207          	EIC_IRQChannelConfig( WDG_IRQChannel, ENABLE );
    208          	EIC_IRQConfig( ENABLE );
    209          	WDG_ECITConfig( ENABLE );
    210          
    211          	/* Start the timer - interrupts are actually disabled at this point so
    212          	it is safe to do this here. */
    213          	WDG_CntOnOffConfig( ENABLE );
    214          }
    215          /*-----------------------------------------------------------*/
    216          

   \                                 In segment CODE, align 4, keep-with-next
    217          __arm __interwork void vPortEnterCritical( void )
    218          {
   \                     vPortEnterCritical:
   \   00000000   04E02DE5           STR         LR,[SP, #-4]!      ;; Push
    219          	/* Disable interrupts first! */
    220          	__disable_interrupt();
   \   00000004   ........           _BLF        ??DiI_a,??rA??DiI_a
    221          
    222          	/* Now interrupts are disabled ulCriticalNesting can be accessed
    223          	directly.  Increment ulCriticalNesting to keep a count of how many times
    224          	portENTER_CRITICAL() has been called. */
    225          	ulCriticalNesting++;
   \   00000008   ........           LDR         R0,??DataTable3    ;; ulCriticalNesting
   \   0000000C   001090E5           LDR         R1,[R0, #+0]
   \   00000010   011081E2           ADD         R1,R1,#+0x1
   \   00000014   001080E5           STR         R1,[R0, #+0]
    226          }
   \   00000018   ........           LDR         LR,[SP], #+0x4     ;; Pop
   \   0000001C   1EFF2FE1           BX          LR                 ;; return
    227          /*-----------------------------------------------------------*/
    228          

   \                                 In segment CODE, align 4, keep-with-next
    229          __arm __interwork void vPortExitCritical( void )
    230          {
   \                     vPortExitCritical:
   \   00000000   04E02DE5           STR         LR,[SP, #-4]!      ;; Push
    231          	if( ulCriticalNesting > portNO_CRITICAL_NESTING )
   \   00000004   ........           LDR         R0,??DataTable3    ;; ulCriticalNesting
   \   00000008   001090E5           LDR         R1,[R0, #+0]
   \   0000000C   000051E3           CMP         R1,#+0
   \   00000010   0200000A           BEQ         ??vPortExitCritical_0
    232          	{
    233          		/* Decrement the nesting count as we are leaving a critical section. */
    234          		ulCriticalNesting--;
   \   00000014   011051E2           SUBS        R1,R1,#+0x1
   \   00000018   001080E5           STR         R1,[R0, #+0]
    235          
    236          		/* If the nesting level has reached zero then interrupts should be
    237          		re-enabled. */
    238          		if( ulCriticalNesting == portNO_CRITICAL_NESTING )
    239          		{
    240          			__enable_interrupt();
   \   0000001C   ........           _BLFEQ      ??EnI_a,??rA??EnI_a
    241          		}
    242          	}
    243          }
   \                     ??vPortExitCritical_0:
   \   00000020   ........           LDR         LR,[SP], #+0x4     ;; Pop
   \   00000024   1EFF2FE1           BX          LR                 ;; return

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable1:
   \   00000000   10E000E0           DC32        0xe000e010

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable3:
   \   00000000   ........           DC32        ulCriticalNesting

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable5:
   \   00000000   ........           DC32        vTaskIncrementTick

   \                                 In segment DATA_ID, align 4, align-sorted
   \                     `?<Initializer for ulCriticalNesting>`:
   \   00000000   0F270000           DC32 9999
    244          /*-----------------------------------------------------------*/
    245          
    246          
    247          
    248          
    249          
    250          

   Maximum stack usage in bytes:

     Function               CSTACK
     --------               ------
     pxPortInitialiseStack      0
     vPortEndScheduler          0
     vPortEnterCritical         4
     vPortExitCritical          4
     vPortNonPreemptiveTick    24
     vPortPreemptiveTick        4
     xPortStartScheduler       12


   Segment part sizes:

     Function/Label                 Bytes
     --------------                 -----
     ulCriticalNesting                 4
     pxPortInitialiseStack           156
     xPortStartScheduler             120
     vPortEndScheduler                 2
     vPortNonPreemptiveTick           56
     vPortPreemptiveTick              40
     vPortEnterCritical               32
     vPortExitCritical                40
     ??DataTable1                      4
     ??DataTable3                      4
     ??DataTable5                      4
     ?<Initializer for ulCriticalNesting>
                                       4
      Others                         112

 
 558 bytes in segment CODE
   4 bytes in segment DATA_I
   4 bytes in segment DATA_ID
  12 bytes in segment INITTAB
 
 458 bytes of CODE  memory (+ 112 bytes shared)
   4 bytes of CONST memory
   4 bytes of DATA  memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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