- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第131 问:Q:利用lpc2104 开发应用程序时,在Os_call_arm.s,Os_call.c 两个文件中,那几个函数需要在汇编中实现,哪几个需要在.c 文件中实现,为什么 谢谢各位大虾 !A:4 个以上参数用c 实现.因为通过寄存器只能传递4 个参数.31第132 问:Q:如果禁止SmallRTOS51 进行中断嵌套管理(#define EN_OS_INT_ENTER 0),是否还需要设置中断优先级寄存器IP,使得所有中断的优先级都相同(全高或全低)A:受SmallRTOS51 管理的设置为最低优先级,不受SmallRTOS51 管理的设置其它优先级较好.第133 问:Q:在OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下.OSIntCtxSw_1LDR R4, [R6] ;获取新任务堆栈指针;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;这两行代码有何作用呢ADD SP, R4, #68 ;17 寄存器CPSR,OsEnterSum,R0-R12,LR,SPLDR LR, [SP, #-8];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式MOV SP, R4 ;设置堆栈指针LDMFD SP!,{R4, R5} ;CPSR,OsEnterSum;恢复新任务的OsEnterSumLDR R3, =OsEnterSumSTR R4, [R3]MSR SPSR_cxsf, R5 ;恢复CPSRLDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务A:这两条指令是在系统模式下恢复用户模式下的LR;可以参考配套《ARM 微控制器基础与实战》6.4.9 节.第134 问:Q:我将《ARM 微控制器基础与实战》上uC/OS-II 的第一章例2 移植例在ARM2104 开发版上实现例2 中的TEST.C 中的#define TASK_STK_SIZE 512改为...256,程序编译后,数据量低于16K,能正常运行,但运行时Total Stack不是256 全是1024.另UC/OS-II 书上,第一章例2 每一个任务的堆栈都是512,为什么书上11 页Total Stack是624,1024,1024,1024,1024,1024,1024,请老师指点,万分感谢!A:显示的是字节而定义的是字.第135 问:Q:可不可以把所有的任务和相关信号量(二值)在一个任务里面一起创建呢 我现在是这样做的, 不知是不是这方面的原因 而且全部信号量是这样创建的:XX1 = OSSemCreate(0);32XX2 = OSSemCreate(0);XX3 = OSSemCreate(0);一共创建了十个信号量,以前程序代码版本是分开写的执行起来没有问题,不知现在为什么这样写就会出现小问题呢 这样的问题和我的任务和信号里书写位置有关系吗A:必须在使用信号量前创建信号量.第136 问:Q:UCOS 在中断处理完后调用 OSIntExit(),该函数将判断是不是要进行任务切换,如果是则调用 OSIntCtxSw()切换任务, 然后才恢复寄存器,中断返回.这样说来,在中断返回前,已经切换到别的任务去了,在再次回到被中断的任务前,是不是一直没有中断返回A:如果进行任务调度,则不会执行OSIntCtxSw()后的语句,相当于中断已退出.第137 问:Q:最近我在学习使用SMALL RTOS 时发现一个 BUG.任务在调用系统等待函数 OSWait(K_TMO | K_SIG,x) 后,不能在延时 x 个 ticks 后被唤醒.我分析了一下原因如下:在 OS_CORE.C uint8 OSWait(uint8 typ, uint8 ticks) small 中,case (K_TMO | K_SIG): 中执行了函数 OSTaskSuspend(OSTaskID);( OS_CORE.C 第549 行)而此函数将延时值改为了 0!解决办法:将此函数改用另一个函数 OS_TaskSuspend(TaskID);并在其后加入任务切换函数 OSSched();便能工作正常.A:对,这是疏忽,谢谢.您的更改是对的.第138 问:Q:在文件Os_cpu_a.s 中的函数OSIntCtxSw 中有如下语句:……(1) LDR R4, [R6](2) ADD SP,
原创力文档


文档评论(0)