ARM经典300问(131~180) 免费下载.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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_1 LDR R4, [R6] ;获取新任务堆栈指针 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;这两行代码有何作用呢 ADD SP, R4, #68 ;17 寄存器CPSR,OsEnterSum,R0-R12,LR,SP LDR LR, [SP, #-8] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式 MOV SP, R4 ;设置堆栈指针 LDMFD SP!,{R4, R5} ;CPSR,OsEnterSum ;恢复新任务的OsEnterSum LDR R3, =OsEnterSum STR R4, [R3] MSR SPSR_cxsf, R5 ;恢复CPSR LDMFD 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); 32 XX2 = 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)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档