?? physical.lst
字號(hào):
216:physical.c **** *參數(shù)說(shuō)明:無(wú)
217:physical.c **** *返回值: 無(wú)
218:physical.c **** **************************************************************************/
219:physical.c **** result_t PhysicalStartSymDetected(void)
220:physical.c **** {
513 .LM68:
514 /* prologue: frame size=0 */
515 /* prologue end (size=0) */
221:physical.c **** // 物理層處于空閑狀態(tài)時(shí)
222:physical.c **** if (state == IDLE && recvBufState == FREE) {
517 .LM69:
518 0226 8091 0000 lds r24,state
519 022a 8823 tst r24
520 022c 91F4 brne .L36
522 .LM70:
523 022e 9091 0000 lds r25,recvBufState
524 0232 9923 tst r25
525 0234 71F4 brne .L36
223:physical.c **** state = RECEIVING;
527 .LM71:
528 0236 81E0 ldi r24,lo8(1)
529 0238 8093 0000 sts state,r24
224:physical.c **** recvCount = 0;
531 .LM72:
532 023c 9093 0000 sts recvCount,r25
225:physical.c **** // MAC層可通過(guò)此調(diào)用對(duì)接收緩存中的字段打時(shí)間戳
226:physical.c **** MACStartSymDetected(recvPtr);
534 .LM73:
535 0240 8091 0000 lds r24,recvPtr
536 0244 9091 0000 lds r25,(recvPtr)+1
537 0248 0E94 0000 call MACStartSymDetected
227:physical.c **** return SUCCESS;
539 .LM74:
540 024c 81E0 ldi r24,lo8(1)
541 024e 90E0 ldi r25,hi8(1)
542 0250 0895 ret
543 .L36:
228:physical.c **** } else if(recvBufState == BUSY){
545 .LM75:
546 0252 8091 0000 lds r24,recvBufState
547 0256 8130 cpi r24,lo8(1)
548 0258 11F4 brne .L37
229:physical.c **** packet_received();
550 .LM76:
551 025a 0E94 0000 call packet_received
552 .L37:
230:physical.c **** }
231:physical.c **** return FAIL;
554 .LM77:
555 025e 80E0 ldi r24,lo8(0)
556 0260 90E0 ldi r25,hi8(0)
232:physical.c **** }
558 .LM78:
559 0262 0895 ret
560 /* epilogue: frame size=0 */
561 0264 0895 ret
562 /* epilogue end (size=1) */
563 /* function PhysicalStartSymDetected size 32 (31) */
567 .global PhysicalRxByteDone
569 PhysicalRxByteDone:
233:physical.c ****
234:physical.c **** /*************************************************************************
235:physical.c **** *功能描述:將收到的字節(jié)打包成數(shù)據(jù)包,并發(fā)出包處理任務(wù)
236:physical.c **** *參數(shù)說(shuō)明:收到的字節(jié)
237:physical.c **** *返回值: 執(zhí)行結(jié)果
238:physical.c **** **************************************************************************/
239:physical.c **** result_t PhysicalRxByteDone(char data)
240:physical.c **** {
571 .LM79:
572 /* prologue: frame size=0 */
573 0266 1F93 push r17
574 0268 CF93 push r28
575 /* prologue end (size=2) */
576 026a A82F mov r26,r24
241:physical.c **** if (state != RECEIVING)
578 .LM80:
579 026c 1091 0000 lds r17,state
580 0270 1130 cpi r17,lo8(1)
581 0272 81F4 brne .L48
242:physical.c **** return FAIL;
243:physical.c ****
244:physical.c **** if (recvCount == 0) { // 第一個(gè)字節(jié)為包長(zhǎng)度
583 .LM81:
584 0274 C091 0000 lds r28,recvCount
585 0278 CC23 tst r28
586 027a A9F4 brne .L41
245:physical.c **** if ((uint8_t)data > MAX_PKT_LEN
588 .LM82:
589 027c 8750 subi r24,lo8(-(-7))
590 027e 8633 cpi r24,lo8(54)
591 0280 60F0 brlo .L42
246:physical.c **** || (uint8_t)data < MIN_PKT_LEN) { // 包太長(zhǎng)或太短,不能正確接收
247:physical.c **** RadiocontrolIdle();
593 .LM83:
594 0282 0E94 0000 call RadiocontrolIdle
248:physical.c **** state = IDLE;
596 .LM84:
597 0286 C093 0000 sts state,r28
249:physical.c **** // 通知上層接收包出錯(cuò)
250:physical.c **** MACPhysicalRxPktDone((void *) 0, 1);
599 .LM85:
600 028a 612F mov r22,r17
601 028c 80E0 ldi r24,lo8(0)
602 028e 90E0 ldi r25,hi8(0)
603 0290 0E94 0000 call MACPhysicalRxPktDone
604 .L48:
251:physical.c **** return FAIL;
606 .LM86:
607 0294 80E0 ldi r24,lo8(0)
608 0296 90E0 ldi r25,hi8(0)
609 0298 50C0 rjmp .L39
610 .L42:
252:physical.c **** }
253:physical.c **** pktLength = (uint8_t)data; // 得到包長(zhǎng)度
612 .LM87:
613 029a A093 0000 sts pktLength,r26
254:physical.c **** crcRx = 0;
615 .LM88:
616 029e 1092 0000 sts (crcRx)+1,__zero_reg__
617 02a2 1092 0000 sts crcRx,__zero_reg__
618 .L41:
255:physical.c **** }
256:physical.c **** recvPtr[recvCount] = data;
620 .LM89:
621 02a6 E091 0000 lds r30,recvPtr
622 02aa F091 0000 lds r31,(recvPtr)+1
623 02ae EC0F add r30,r28
624 02b0 F11D adc r31,__zero_reg__
625 02b2 A083 st Z,r26
257:physical.c **** recvCount++;
627 .LM90:
628 02b4 4091 0000 lds r20,recvCount
629 02b8 4F5F subi r20,lo8(-(1))
630 02ba 4093 0000 sts recvCount,r20
258:physical.c ****
259:physical.c **** if (recvCount < pktLength - 1) {
632 .LM91:
633 02be 242F mov r18,r20
634 02c0 3327 clr r19
635 02c2 5091 0000 lds r21,pktLength
636 02c6 852F mov r24,r21
637 02c8 9927 clr r25
638 02ca 0197 sbiw r24,1
639 02cc 2817 cp r18,r24
640 02ce 3907 cpc r19,r25
641 02d0 64F4 brge .L43
260:physical.c **** crcRx=update_crc(data, crcRx);
643 .LM92:
644 02d2 6091 0000 lds r22,crcRx
645 02d6 7091 0000 lds r23,(crcRx)+1
646 02da 8A2F mov r24,r26
647 02dc 0E94 0000 call update_crc
648 02e0 9093 0000 sts (crcRx)+1,r25
649 02e4 8093 0000 sts crcRx,r24
650 02e8 26C0 rjmp .L44
651 .L43:
261:physical.c **** } else if (recvCount == pktLength) { // 接收完成
653 .LM93:
654 02ea 4517 cp r20,r21
655 02ec 21F5 brne .L44
262:physical.c **** RadiocontrolIdle(); // 轉(zhuǎn)入空閑狀態(tài)
657 .LM94:
658 02ee 0E94 0000 call RadiocontrolIdle
263:physical.c **** state = IDLE;
660 .LM95:
661 02f2 1092 0000 sts state,__zero_reg__
264:physical.c **** if (procBufState == FREE) { // 處理緩存區(qū)可用
663 .LM96:
664 02f6 4091 0000 lds r20,procBufState
665 02fa 4423 tst r20
666 02fc C9F4 brne .L46
265:physical.c **** procPtr = recvPtr; // 數(shù)據(jù)包存入處理緩存區(qū)
668 .LM97:
669 02fe 2091 0000 lds r18,recvPtr
670 0302 3091 0000 lds r19,(recvPtr)+1
671 0306 3093 0000 sts (procPtr)+1,r19
672 030a 2093 0000 sts procPtr,r18
266:physical.c **** recvPtr = procBufPtr; // 接收緩存與處理緩存交換地址
674 .LM98:
675 030e 8091 0000 lds r24,procBufPtr
676 0312 9091 0000 lds r25,(procBufPtr)+1
677 0316 9093 0000 sts (recvPtr)+1,r25
678 031a 8093 0000 sts recvPtr,r24
267:physical.c **** procBufPtr = procPtr;
680 .LM99:
681 031e 3093 0000 sts (procBufPtr)+1,r19
682 0322 2093 0000 sts procBufPtr,r18
268:physical.c **** recvBufState = FREE;
684 .LM100:
685 0326 4093 0000 sts recvBufState,r20
269:physical.c **** packet_received(); // 接收緩存可用
687 .LM101:
688 032a 0E94 0000 call packet_received
689 032e 03C0 rjmp .L44
690 .L46:
270:physical.c ****
271:physical.c **** } else { // 處理緩存不可用時(shí)不能再接收數(shù)據(jù)
272:physical.c **** recvBufState = BUSY;
692 .LM102:
693 0330 81E0 ldi r24,lo8(1)
694 0332 8093 0000 sts recvBufState,r24
695 .L44:
273:physical.c ****
274:physical.c **** }
275:physical.c ****
276:physical.c **** }
277:physical.c **** return SUCCESS;
697 .LM103:
698 0336 81E0 ldi r24,lo8(1)
699 0338 90E0 ldi r25,hi8(1)
700 .L39:
701 /* epilogue: frame size=0 */
702 033a CF91 pop r28
703 033c 1F91 pop r17
704 033e 0895 ret
705 /* epilogue end (size=3) */
706 /* function PhysicalRxByteDone size 109 (104) */
708 .comm RecordPassed,30,1
709 .lcomm state,1
710 .lcomm pktLength,1
711 .lcomm buffer1,60
712 .lcomm buffer2,60
713 .lcomm recvBufState,1
714 .lcomm procBufState,1
715 .lcomm procBufPtr,2
716 .lcomm sendPtr,2
717 .lcomm recvPtr,2
718 .lcomm procPtr,2
719 .lcomm txCount,1
720 .lcomm recvCount,1
721 .lcomm crcRx,2
722 .lcomm crcTx,2
738 .text
740 Letext:
741 /* File "physical.c": code 416 = 0x01a0 ( 396), prologues 6, epilogues 14 */
DEFINED SYMBOLS
*ABS*:00000000 physical.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:89 .text:00000000 update_crc
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:145 .text:0000002e packet_received
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:717 .bss:00000082 procPtr
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:720 .bss:00000086 crcRx
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:712 .bss:0000007a recvBufState
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:716 .bss:00000080 recvPtr
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:714 .bss:0000007c procBufPtr
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:713 .bss:0000007b procBufState
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:246 .text:000000ba packet_sent
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:715 .bss:0000007e sendPtr
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:264 .text:000000c8 PhysicalInit
.bss:00000000 state
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:710 .bss:00000002 buffer1
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:711 .bss:0000003e buffer2
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:311 .text:000000fe PhysicalTxPkt
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:709 .bss:00000001 pktLength
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:718 .bss:00000084 txCount
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:721 .bss:00000088 crcTx
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:386 .text:00000162 PhysicalTxByteReady
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:511 .text:00000226 PhysicalStartSymDetected
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:719 .bss:00000085 recvCount
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:569 .text:00000266 PhysicalRxByteDone
*COM*:0000001e RecordPassed
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cca0aaaa.s:740 .text:00000340 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
MACPhysicalRxPktDone
MACPhysicalTxPktDone
RadiocontrolInit
RadiocontrolStartTx
RadiocontrolTxNextByte
RadiocontrolIdle
MACStartSymDetected
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -