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

o2o电子商务网站开发与运营郑州比较厉害的男科中医

o2o电子商务网站开发与运营,郑州比较厉害的男科中医,免费的公文写作网站,美萍会员管理系统一前言 ARM的堆栈采用向下增长栈,就是栈顶地址初始值最大,压栈时越来越小: 比如定义一个任务栈为Task2Stack[N],那么任务栈的在ARM内存中的排列如下图示所,数组Task2Stack代表的地址是任务栈的最低地址,当…

一前言

ARM的堆栈采用向下增长栈,就是栈顶地址初始值最大,压栈时越来越小:

比如定义一个任务栈为Task2Stack[N],那么任务栈的在ARM内存中的排列如下图示所,数组Task2Stack代表的地址是任务栈的最低地址,当栈为空时,就是栈内不存任何内容时,栈顶指针地址SP=Task2Stack+N-1,Task2Stack 为定义的任务栈的起始地址,也就是定义的任务栈数组的地址,N为定义的任务栈的总大小(长度)。

二 任务栈初始化过程

freeRTOS的任务栈初始化使用的是pxPortInitialiseStack函数,函数实体如下:

pxTopOfStack 为栈顶指针,在进入这个函数之前freeRTOS已经将栈顶指针进行过初始化,即将栈顶指针移动到栈内存为空时的位置,函数语句如下

/* 获取栈顶地址 */
pxTopOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 );

pxNewTCB->pxStack为任务栈数组地址, ulStackDepth为任务栈的长度,根据前言部分所述,此时栈顶pxTopOfStack正好为空栈时的栈顶位置,

知道了栈顶指针的具体位置之后,再来看上述任务栈初始化函数具体过程,这个函数的具体实现就是将xPSR,PC,LR,R0~R12  按照一定的顺序存入任务栈内部。

69~70行,将栈顶指针减1,存入xRSP,(这里的地址减1代表一个字,4个字节,下同)

71~72行,将栈顶指针再减1,存入PC

73~74行,栈顶指针减1,存入LR,

75~76行,栈顶指针减5,存入R0

最后经过函数初始化之后的的任务栈内容如下图所示,可以看出ARM的堆栈压栈过程,是栈顶指针先自减,再存放,随着栈内容越来越多,栈顶指针越来越小,所以叫向下增长栈。

三 任务切换时的压栈出栈过程分析

freeRTOS的任务栈的切换使用的是xPortPendSVHandler函数,函数实体如下:

这个函数的具体实现功能就是进行任务切换,就是将当前任务的运行环境,压入当前的任务栈进行保护,然后将下一个任务的任务栈里面的内容进行出栈,之后系统就可以切换到下一个任务的程序进行运行。

第172行,获取当前的任务栈指针到R0

第175~176行,获取任务控制块地址到R2

第178~179行,将寄存器r4~R11的值存入堆栈,这几个寄存器存放的通常是局部变量,同时栈顶指针自减,这几个寄存器中保存的通常是任务的局部变量,

第182行,将当前R3,R14的值压栈,进行函数调用,因为调用新函数,R14(LR)是肯定要用到的,而R14目前存放的是当前层的上一层的返回地址(状态),一会中断退出时要用,而关于R3目前存放的是pxcurrentTCB指针(注意是指针不是指针指向的内容,这个指针指向的内容调用函数中给与了新的地址),这个指针关系到新任务的栈顶指针地址,函数调用出来后也要用,在不确定R3是否会被调用函数使用的情况,最好保存起来,

第192行,出栈恢复R3,R14

第194行,获取pxcurrentTCB指针指向的内容到R1,这时R1存的是当前任务块的地址,注意此时R3存放的还是pxcurrentTCB这个指针,但是指针指向的内容已经变成新任务的控制块地址了,切换任务的时候对其进行了改变

195行,获取当前任务(新任务)的堆栈栈顶指针到R0,

196行,将站内内容出栈到R4~R11,

197行,新的栈顶指针赋值给PSP,

199行,R14寄存器也就是LR寄存器,异常发生时跟函数调用时LR的作用不一样,LR此时只保存相关的状态,决定是返回什么模式执行,

剩余的寄存器内容xPSR, PC, R0~R3( 存放形参),R12,以及剩余的堆栈内容硬件会在转向具体的新任务时自动操作进行出栈

四 题外话,当任务的局部变量大于R4~R11时,

任务的局部变量通常会存放于堆栈中,下图是用反汇编验证的图示

http://www.dtcms.com/wzjs/836960.html

相关文章:

  • 建网站做seo东莞建筑设计院排名
  • 品牌高端网站制作公司个人求职网站源代码
  • 前端网站开发流程图如何在网站做广告
  • 河北视频网站建设长沙优化科技有限公司地址
  • 营销型网站建设怎么做html5网站的优点
  • 自己建设网站需要具备哪些条件怎样推广自己的店铺啊
  • 网站英文版是怎么做的模板中心
  • 安全的集团网站建设网站播放mp3代码
  • 长春电商网站建设哪家好郑州市公共资源交易中心
  • 婚纱网站策划书模板下载wordpress 显示文章标签
  • 长春专业网站制作公司wordpress 微信导航站
  • 网站核心推广思路iis 编辑网站绑定
  • 网站集约化建设会议请示电子商务网站的建设与运营
  • 合肥做网站域名的公司盐城网页优化公司
  • 门户网站流量网站备份
  • 网站2级目录怎么做的深圳网站制作服务公
  • 电商详情做的最好看的网站衡水wap网站建设价格
  • 先网站开发后软件开发好商丘做网站公司
  • 内链好的网站公司网站开发可行性报告
  • 网站群系统破解版百度seo优化方法
  • 企业网站开发外包公司网站建设的来源
  • 淄博网站建设hidddseo如何挖掘关键词
  • 做网站和做网页企业定制网站开发维护合同
  • 湛江低价网站建设外贸需要网站做生产车间展示
  • 公司网站门户建设技术参数表网页设计 网站建设 哪个好
  • 免费创建企业网站如何做网站关键词词霸
  • 响应式网站用什么工具一站传媒seo优化
  • 中小型企业网站优化价格wordpress默认图像不显示
  • wordpress评论表情不显示唐山做网站优化公司
  • 永久免费ppt下载网站电子商务网站设计说明