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

📄 artx_config.txt

📁 射频芯片nRF905例程
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;471       /* new context is written in assembly (module: Swi_ARTX.s)               */
;;;472    
;;;473    #if (OS_STKCHECK == 1)
;;;474       if (tstclrb (&os_del_flag) == __FALSE) {
00022a  482d              LDR      r0,|L1.736|
00022c  300c              ADDS     r0,r0,#0xc
00022e  f7ff fffe         BL       tstclrb
000232  2800              CMP      r0,#0
000234  d110              BNE      |L1.600|
;;;475          /* Do not check if task has deleted itself. */
;;;476          if ((os_runtask->tsk_stack < (U32)os_runtask->stack) || 
000236  4829              LDR      r0,|L1.732|
000238  6800              LDR      r0,[r0,#0]  ; os_runtask
00023a  6a40              LDR      r0,[r0,#0x24]
00023c  4927              LDR      r1,|L1.732|
00023e  6809              LDR      r1,[r1,#0]  ; os_runtask
000240  6a89              LDR      r1,[r1,#0x28]
000242  4288              CMP      r0,r1
000244  d306              BCC      |L1.596|
;;;477              (os_runtask->stack[0] != MAGIC_WORD )) {
000246  4825              LDR      r0,|L1.732|
000248  6800              LDR      r0,[r0,#0]  ; os_runtask
00024a  6a80              LDR      r0,[r0,#0x28]
00024c  6800              LDR      r0,[r0,#0]
00024e  4932              LDR      r1,|L1.792|
000250  4288              CMP      r0,r1
000252  d001              BEQ      |L1.600|
;;;478             os_stk_overflow ();
                  |L1.596|
000254  f7ff fffe         BL       os_stk_overflow
;;;479          }
;;;480       }
;;;481    #endif
;;;482       os_runtask->full_ctx = __FALSE;
                  |L1.600|
000258  2100              MOVS     r1,#0
00025a  4820              LDR      r0,|L1.732|
00025c  6800              LDR      r0,[r0,#0]  ; os_runtask
00025e  3020              ADDS     r0,r0,#0x20
000260  7041              STRB     r1,[r0,#1]
;;;483       os_runtask = p_new;
000262  481e              LDR      r0,|L1.732|
000264  6004              STR      r4,[r0,#0]  ; os_runtask
;;;484       p_new->state = RUNNING;
000266  2002              MOVS     r0,#2
000268  7060              STRB     r0,[r4,#1]
;;;485    #if (OS_ROBIN == 1)
;;;486       if (p_new->full_ctx == __TRUE) {
00026a  2021              MOVS     r0,#0x21
00026c  5d00              LDRB     r0,[r0,r4]
00026e  2801              CMP      r0,#1
000270  d102              BNE      |L1.632|
;;;487          os_tsk_robin = p_new;
000272  481b              LDR      r0,|L1.736|
000274  3008              ADDS     r0,r0,#8
000276  6004              STR      r4,[r0,#0]  ; os_tsk_robin
;;;488       }
;;;489    #endif
;;;490       /* Tsk_Unlock */
;;;491       OS_UNLOCK();
                  |L1.632|
000278  481a              LDR      r0,|L1.740|
00027a  6900              LDR      r0,[r0,#0x10]
00027c  2120              MOVS     r1,#0x20
00027e  4308              ORRS     r0,r0,r1
000280  4918              LDR      r1,|L1.740|
000282  6108              STR      r0,[r1,#0x10]
;;;492    } /* end of os_switch_tasks */
000284  bc10              POP      {r4}
000286  bc08              POP      {r3}
000288  4718              BX       r3
                          ENDP

                  os_chk_robin PROC
;;;496    
;;;497    void os_chk_robin (void) {
00028a  b510              PUSH     {r4,lr}
;;;498       /* Check if Round Robin timeout expired and switch to the next ready task.*/
;;;499       /* This function is called from the "os_clock_demon()" task scheduler.    */
;;;500    #if (OS_ROBIN == 1)
;;;501       P_TCB p_new;
;;;502    
;;;503       if (os_rdy.p_lnk != os_tsk_robin) {
00028c  4823              LDR      r0,|L1.796|
00028e  6840              LDR      r0,[r0,#4]  ; os_rdy
000290  4913              LDR      r1,|L1.736|
000292  3108              ADDS     r1,r1,#8
000294  6809              LDR      r1,[r1,#0]  ; os_tsk_robin
000296  4288              CMP      r0,r1
000298  d008              BEQ      |L1.684|
;;;504          os_robin_time = os_time + OS_ROBINTOUT;
00029a  4821              LDR      r0,|L1.800|
00029c  8800              LDRH     r0,[r0,#0]  ; os_time
00029e  1d40              ADDS     r0,r0,#5
0002a0  490f              LDR      r1,|L1.736|
0002a2  1d09              ADDS     r1,r1,#4
0002a4  8008              STRH     r0,[r1,#0]  ; os_robin_time
;;;505          return;
;;;506          }
;;;507       if (os_robin_time == os_time) {
;;;508          /* Round Robin timeout has expired. */
;;;509          os_robin_time += OS_ROBINTOUT;
;;;510          p_new = os_get_first (&os_rdy);
;;;511          os_put_prio ((P_XCB)&os_rdy, p_new);
;;;512          }
;;;513    #endif
;;;514    } /* end of os_chk_robin */
                  |L1.678|
0002a6  bc10              POP      {r4}
0002a8  bc08              POP      {r3}
0002aa  4718              BX       r3
                  |L1.684|
0002ac  480c              LDR      r0,|L1.736|           ;507
0002ae  1d00              ADDS     r0,r0,#4              ;507
0002b0  8800              LDRH     r0,[r0,#0]            ;507  ; os_robin_time
0002b2  491b              LDR      r1,|L1.800|           ;507
0002b4  8809              LDRH     r1,[r1,#0]            ;507  ; os_time
0002b6  4288              CMP      r0,r1                 ;507
0002b8  d10e              BNE      |L1.728|              ;507
0002ba  4809              LDR      r0,|L1.736|           ;509
0002bc  1d00              ADDS     r0,r0,#4              ;509
0002be  8800              LDRH     r0,[r0,#0]            ;509  ; os_robin_time
0002c0  1d40              ADDS     r0,r0,#5              ;509
0002c2  4907              LDR      r1,|L1.736|           ;509
0002c4  1d09              ADDS     r1,r1,#4              ;509
0002c6  8008              STRH     r0,[r1,#0]            ;509  ; os_robin_time
0002c8  4814              LDR      r0,|L1.796|           ;510
0002ca  f7ff fffe         BL       os_get_first          ;510
0002ce  0004              MOVS     r4,r0                 ;510
0002d0  0021              MOVS     r1,r4                 ;511
0002d2  4812              LDR      r0,|L1.796|           ;511
0002d4  f7ff fffe         BL       os_put_prio           ;511
                  |L1.728|
0002d8  e7e5              B        |L1.678|
0002da  0000              DCW      0000
                  |L1.732|
0002dc  00000000          DCD      os_runtask
                  |L1.736|
0002e0  00000000          DCD      ||.data$0||
                  |L1.740|
0002e4  fffff000          DCD      0xfffff000
                  |L1.744|
0002e8  e0008000          DCD      0xe0008000
                  |L1.748|
0002ec  00000000          DCD      os_clock_TCB
                  |L1.752|
0002f0  000249ef          DCD      0x000249ef
                  |L1.756|
0002f4  00000000          DCD      os_def_interrupt
                  |L1.760|
0002f8  00000000          DCD      os_clock_interrupt
                  |L1.764|
0002fc  fffff100          DCD      0xfffff100
                  |L1.768|
000300  fffff200          DCD      0xfffff200
                  |L1.772|
000304  00000000          DCD      os_active_TCB
                  |L1.776|
000308  00000000          DCD      ||.bss$5||
                  |L1.780|
00030c  00000130          DCD      ||.bss$5|| + 304
                  |L1.784|
000310  00000798          DCD      ||.bss$5|| + 1944
                  |L1.788|
000314  40000010          DCD      0x40000010
                  |L1.792|
000318  e25a2ea5          DCD      0xe25a2ea5
                  |L1.796|
00031c  00000000          DCD      os_rdy
                  |L1.800|
000320  00000000          DCD      os_time
                          ENDP



                          AREA |area_number.1|, CODE, READONLY, ALIGN=2
                          EXPORTAS |area_number.1|, ||.text||
                          ARM
                  os_def_interrupt PROC
;;;280    
;;;281    void os_def_interrupt (void) __irq  {
000000  e92d0003          PUSH     {r0,r1}
;;;282       /* Default Interrupt Function: may be called when timer ISR is disabled */
;;;283       OS_IACK();
000004  e3a00000          MOV      r0,#0
000008  e3a01000          MOV      r1,#0
00000c  e5010fd0          STR      r0,[r1,#-0xfd0]
;;;284    }
000010  e8bd0003          POP      {r0,r1}
000014  e25ef004          SUBS     pc,lr,#4
                          ENDP



                          AREA ||.data||, DATA, ALIGN=2

                  ||.data$0||
                  ||task_id@os_stk_overflow_0||
                          DCD      0x00000000
                  os_robin_time
                          DCB      0x00,0x00
                          DCB      0x00,0x00
                  os_tsk_robin
                          DCD      0x00000000
                  os_del_flag
                          DCB      0x00


                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

                  ||.constdata$1||
                  VIC
                          DCD      0xfffff000
                  PINSEL
                          DCD      0xe002c000
                  MAM
                          DCD      0xe01fc000
                  PLL
                          DCD      0xe01fc080
                  ||P0||
                          DCD      0xe0028000
                  ||P1||
                          DCD      0xe0028010
                  ||U0||
                          DCD      0xe000c000
                  ||U1||
                          DCD      0xe0010000
                  ||T0||
                          DCD      0xe0004000
                  ||T1||
                          DCD      0xe0008000
                  PWM
                          DCD      0xe0014000
                  I2C0
                          DCD      0xe001c000
                  I2C1
                          DCD      0xe005c000
                  ||SPI||
                          DCD      0xe0020000
                  ||SSP||
                          DCD      0xe0068000
                  ||RTC||
                          DCD      0xe0024000
                  WDT
                          DCD      0xe0000000
                  ADC0
                          DCD      0xe0034000
                  ADC1
                          DCD      0xe0060000
                  os_maxtaskrun
                          DCW      0x0006
                          DCB      0x00,0x00
                  os_stackinfo
                          DCD      0x010000c8
                  os_clockrate
                          DCD      0x00002710
                  os_timernum
                          DCD      0x00010001
                  os_rrobin
                          DCD      0x00010005


                          AREA ||.bss||, NOINIT, ALIGN=3

                  ||.bss$5||
                  m_tcb
                          % 304
                  m_stk
                          % 1616
                  os_active_TCB
                          % 24
                  m_tmr
                          % 24

⌨️ 快捷键说明

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