当前位置: 首页 > news >正文

企业信息港网站建没西安今日头条新闻

企业信息港网站建没,西安今日头条新闻,阿里云网站建设合作,泉州做网站seo现在说明几个重要的点, OSStartHighRdy 的作用就是把任务栈复制到系统栈上面,再利用RET的时候会从系统栈上到一个地址放到PC寄存器上来实现任务运行。OSCtxSw是任务切换,把系统栈全部备份到当前任务栈映射上,然后改OSTCBCur,调用…

现在说明几个重要的点,

  1. OSStartHighRdy 的作用就是把任务栈复制到系统栈上面,再利用RET的时候会从系统栈上到一个地址放到PC寄存器上来实现任务运行。
  2. OSCtxSw是任务切换,把系统栈全部备份到当前任务栈映射上,然后改OSTCBCur,调用OSStartHighRdy跳到新任务上来。
  3. OSIntCtxSw是在中断函数中来任务切换的
  4. 需要明确知道系统栈SP的初始值,也可以自己定义,参考C51定义SP初值
  5. OSIntCtxSw要明确清晰的知道系统栈中哪些内容需要丢弃。
  6. 要明确知道系统栈是如何工作的,像51单片机的栈是增长式的,压栈时是先加1,再存内容。出栈时是先取内容,再减1。
  7. 要明确知道51单片机call时,会先将下个执行的地址的低8位先压栈,高8位后压栈。

; void OSStartHighRdy(void)RSEG  ?PR?OSStartHighRdy?OS_CPU_A
OSStartHighRdy: clr EAmov DPTR, #OSTCBCur	; DPTR = &OSTCBCur;;  DPTR = OSTCBCurmovx A,@DPTR	    mov R0,AINC DPTRmovx A,@DPTRmov R1,AINC DPTRmovx A, @DPTRmov R2,Amov DPH, R1mov DPL, R2;;  OSTCBCur->OSTCBStkPtrmovx A,@DPTRmov R0,AINC DPTRmovx A, @DPTRmov R1,AINC DPTRmovx A, @DPTRmov R2,A;;  DPTR = OSTCBCur->OSTCBStkPtrmov DPH,R1mov DPL,R2 ;;  在这里任务栈第一个数据是栈长度movx A,@DPTRmov R7,A    ;  R7 = DPTR[0] = lenINC DPTR
taskstk_copyto_sysstk:    ; DPTR:taskptr,  R7:len	movx A,@DPTRpush ACCINC DPTRDJNZ R7, taskstk_copyto_sysstk; #if OS_TASK_SW_HOOK_EN > 0u
; 	OSTaskSwHook();  
; #endif;; 	OSRunning = OS_TRUE;MOV  	DPTR,#OSRunningMOV  	A,#01HMOVX 	@DPTR,A?C0003:popallSETB EARETI  	
; END OF OSStartHighRdy

; void OSIntCtxSw(void)RSEG  ?PR?OSIntCtxSw?OS_CPU_A
OSIntCtxSw:mov A,SPclr Csubb A,#17mov SP,ALJMP 	OSCtxSw
; END OF OSIntCtxSw

这里丢弃了栈后面的17个数据,其中栈顶两是调用OSIntCtxSw产生,再前面两个是调用OSIntExit产生,
再前面13个是进入tmr0_func时pushall保护现场产生。


; void OSCtxSw(void)RSEG  ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:pushallmov A, #SysStackStartmov R6,Amov A,SPclr Csubb A,R6mov R7,A ;  R7 = SP - SysStackStart  ; system stack length at nowmov DPTR,#OSTCBCur   ; DPTR = &OSTCBCur;; 	*(&OSTCBCur)movx A, @DPTR        ; A = OSTCBCurmov R0, AINC DPTRmovx A, @DPTRmov R1, AINC DPTRmovx A, @DPTRmov R2, A;; DPTR = OSTCBCurmov DPH,R1mov DPL,R2;; 	 OSTCBCur->OSTCBStkPtrmovx A, @DPTRmov R0, AINC DPTRmovx A, @DPTRmov R1, AINC DPTRmovx A, @DPTRmov R2, A;;  DPTR = OSTCBCur->OSTCBStkPtrmov DPH,R1mov DPL,R2;; DPTR[0] = len = R7	mov A,R7movx @DPTR,Ainc DPTRmov R0,#SysStackStart    ;  这里是自己定义的栈初始位置
save_sysstack_to_taskstack:inc R0    ; 在这里51单片机的系统栈是先+1再存内容的mov	A,@R0movx @DPTR,Ainc DPTRDJNZ R7,save_sysstack_to_taskstack;; OSPrioCur = OSPrioHighRdymov DPTR,#OSPrioHighRdymovx A,@DPTRmov DPTR,#OSPrioCurmovx @DPTR,A
;; 	OSTCBCur = OSTCBHighRdy;MOV  	DPTR,#OSTCBHighRdyMOVX 	A,@DPTRMOV  	R1,AINC  	DPTRMOVX 	A,@DPTRMOV  	R2,AINC  	DPTRMOVX 	A,@DPTRMOV  	DPTR,#OSTCBCurXCH  	A,R1MOVX 	@DPTR,AINC  	DPTRMOV  	A,R2MOVX 	@DPTR,AINC  	DPTRMOV  	A,R1MOVX 	@DPTR,A;; SP = SysStackStartmov A,#SysStackStartmov SP,A
; 	OSStartHighRdy();LJMP 	OSStartHighRdy
; END OF OSCtxSw

http://www.zhongyajixie.com/news/11281.html

相关文章:

  • 常宁网站建设网上怎么注册公司免费的
  • 濮阳网络培训基地推广关键词优化公司
  • 政府门户网站建设情况汇报百度seo关键词优化推荐
  • 如何做非绿色视频网站的主播百度有人工客服吗
  • 网站设计素材网站推荐百度做广告怎么收费
  • 图书馆网站建设的项目报告seo专业课程
  • 景安香港主机可以做几个网站sem是什么意思?
  • 网站建设包括的内容有什么北京有限公司
  • 科技尽头长沙优化科技
  • 网络商城网站怎样做关键词优化网站推广专家
  • 专业网站建设开发南京网页搜索排名提升
  • 做网站老板嫌弃太丑谁的锅驻马店百度seo
  • 汕头模版网站建设产品推广词
  • 温州企业网站建设写一篇软文推广自己的学校
  • 做网站是什么工作seo指的是什么
  • 泰安做网站网络公司冯宗耀seo教程
  • 手机h5建网站哪里有永久免费建站
  • asp net做网站列举常见的网络营销工具
  • 为企业规划一个网站长沙seo工作室
  • 营销网站开发哪家强百度在线识图查图片
  • 河南省城乡和住房建设厅网站首页百度搜索引擎的网址
  • 网站做优化的操作图片网络营销的未来6个发展趋势
  • 山东济南网站建设企业seo培训
  • 注册公司需要的网站建设海淀区seo搜索引擎
  • 网站做seo收录整站seo外包
  • wordpress文章归档页面优化seo可以从以下几个方面进行
  • 荣耀手机全部型号网站结构优化的内容和方法
  • 中国制造网国际站官网优化推广公司哪家好
  • 论坛类的网站怎样做佛山网站营销推广
  • 网站制作岗位职责百度云搜索引擎官方入口