📄 port.lst
字号:
\ 00001A 3C50FEFF ADD.W #0xfffe, R12
105 *pxTopOfStack = ( portSTACK_TYPE ) 0x5555;
\ 00001E BC4055550000 MOV.W #0x5555, 0(R12)
106 pxTopOfStack--;
\ 000024 3C50FEFF ADD.W #0xfffe, R12
107 *pxTopOfStack = ( portSTACK_TYPE ) 0x6666;
\ 000028 BC4066660000 MOV.W #0x6666, 0(R12)
108 pxTopOfStack--;
\ 00002E 3C50FEFF ADD.W #0xfffe, R12
109 *pxTopOfStack = ( portSTACK_TYPE ) 0x7777;
\ 000032 BC4077770000 MOV.W #0x7777, 0(R12)
110 pxTopOfStack--;
\ 000038 3C50FEFF ADD.W #0xfffe, R12
111 *pxTopOfStack = ( portSTACK_TYPE ) 0x8888;
\ 00003C BC4088880000 MOV.W #0x8888, 0(R12)
112 pxTopOfStack--;
\ 000042 3C50FEFF ADD.W #0xfffe, R12
113 *pxTopOfStack = ( portSTACK_TYPE ) 0x9999;
\ 000046 BC4099990000 MOV.W #0x9999, 0(R12)
114 pxTopOfStack--;
\ 00004C 3C50FEFF ADD.W #0xfffe, R12
115 *pxTopOfStack = ( portSTACK_TYPE ) 0xaaaa;
\ 000050 BC40AAAA0000 MOV.W #0xaaaa, 0(R12)
116 pxTopOfStack--;
\ 000056 3C50FEFF ADD.W #0xfffe, R12
117 // *pxTopOfStack = ( portSTACK_TYPE ) pvParameters;
118 // pxTopOfStack--;
119 *pxTopOfStack = ( portSTACK_TYPE ) 0xbbbb;
\ 00005A BC40BBBB0000 MOV.W #0xbbbb, 0(R12)
120 pxTopOfStack--;
\ 000060 3C50FEFF ADD.W #0xfffe, R12
121 // XXX - ok - something strange going on here...
122
123 // *pxTopOfStack = ( portSTACK_TYPE ) 0xcccc;
124 // pxTopOfStack--;
125
126 // pvParameters has been moved from R15 to R12. The IAR compiler will
127 // move R12 into R10 upon task (function) entry. Note this may not
128 // work on all data types...Data types may need to be known apriori
129 // to make this work in all cases.
130
131 // Pass in R12...
132 *pxTopOfStack = ( portSTACK_TYPE ) pvParameters;
\ 000064 8C4F0000 MOV.W R15, 0(R12)
133 pxTopOfStack--;
\ 000068 3C50FEFF ADD.W #0xfffe, R12
134 *pxTopOfStack = ( portSTACK_TYPE ) 0xdddd;
\ 00006C BC40DDDD0000 MOV.W #0xdddd, 0(R12)
135 pxTopOfStack--;
\ 000072 3C50FEFF ADD.W #0xfffe, R12
136 *pxTopOfStack = ( portSTACK_TYPE ) 0xeeee;
\ 000076 BC40EEEE0000 MOV.W #0xeeee, 0(R12)
137 pxTopOfStack--;
\ 00007C 3C50FEFF ADD.W #0xfffe, R12
138
139 /* When the task starts is will expect to find the function parameter in
140 R15. */
141 *pxTopOfStack = ( portSTACK_TYPE ) 0xffff;
\ 000080 BC430000 MOV.W #0xffff, 0(R12)
142 pxTopOfStack--;
\ 000084 3C50FEFF ADD.W #0xfffe, R12
143 // *pxTopOfStack = ( portSTACK_TYPE ) pvParameters;
144 // pxTopOfStack--;
145
146 /* A variable is used to keep track of the critical section nesting.
147 This variable has to be stored as part of the task context and is
148 initially set to zero. */
149 *pxTopOfStack = ( portSTACK_TYPE ) portNO_CRITICAL_SECTION_NESTING;
\ 000088 8C430000 MOV.W #0x0, 0(R12)
150
151 /* Return a pointer to the top of the stack we have generated so this can
152 be stored in the task control block for the task. */
153 return pxTopOfStack;
\ 00008C 3041 RET
154 }
155 /*-----------------------------------------------------------*/
156
\ In segment CODE, align 2
157 void vPortEndScheduler( void )
\ vPortEndScheduler:
158 {
159 /* It is unlikely that the MSP430 port will get stopped. If required simply
160 disable the tick interrupt here. */
161 }
\ 000000 3041 RET
162 /*-----------------------------------------------------------*/
163
164 /*
165 * Hardware initialisation to generate the RTOS tick. This uses timer 0
166 * but could alternatively use the watchdog timer or timer 1.
167 */
168
\ In segment CODE, align 2
169 void prvSetupTimerInterrupt( void )
\ prvSetupTimerInterrupt:
170 {
171 /* Ensure the timer is stopped. */
172 TACTL = 0;
\ 000000 82436001 MOV.W #0x0, &0x160
173
174 /* Run the timer of the ACLK. */
175 TACTL = TASSEL_1|CNTL_0|ID_0; // use ACLK as 32768;
\ 000004 B24000016001 MOV.W #0x100, &0x160
176
177 /* Clear everything to start with. */
178 TACTL |= TACLR;
\ 00000A A2D26001 BIS.W #0x4, &0x160
179
180 /* Set the compare match value according to the tick rate we want. */
181 TACCR0 = ( portACLK_FREQUENCY_HZ / configTICK_RATE_HZ ) - 1;
\ 00000E B2401F007201 MOV.W #0x1f, &0x172
182
183 /* Enable the interrupts. */
184 TACCTL0 = CCIE;
\ 000014 B24010006201 MOV.W #0x10, &0x162
185
186 /* Start up clean. */
187 TACTL |= TACLR;
\ 00001A A2D26001 BIS.W #0x4, &0x160
188
189 /* Up mode. */
190 TACTL |= TASSEL_1 | MC_1 | CNTL_0 | ID_0;
\ 00001E B2D010016001 BIS.W #0x110, &0x160
191 }
\ 000024 3041 RET
\ In segment DATA16_ID, align 2, align-sorted
\ `?<Initializer for usCriticalNesting>`:
\ 000000 0A00 DC16 10
192 /*-----------------------------------------------------------*/
193
194
195
Maximum stack usage in bytes:
Function CSTACK
-------- ------
prvSetupTimerInterrupt 2
pxPortInitialiseStack 2
vPortEndScheduler 2
Segment part sizes:
Function/Label Bytes
-------------- -----
_A_TACTL 2
_A_TACCTL0 2
TACCR0 2
usCriticalNesting 2
pxPortInitialiseStack 142
vPortEndScheduler 2
prvSetupTimerInterrupt 38
?<Initializer for usCriticalNesting>
2
182 bytes in segment CODE
6 bytes in segment DATA16_AN
2 bytes in segment DATA16_I
2 bytes in segment DATA16_ID
182 bytes of CODE memory
2 bytes of CONST memory
2 bytes of DATA memory (+ 6 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -