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

电子商务网站建设与维护试卷wordpress dux添加统计代码

电子商务网站建设与维护试卷,wordpress dux添加统计代码,网站logo怎么做透明,网页图片批量下载本文介绍MCU平台下确定栈空间大小的方法。 通常使用IDE开发MCU程序在生成Image文件时,Image文件被划分为代码区,数据区,BSS区,堆区,栈区。其中,代码区,数据区,BSS区空间大小由编译器…

本文介绍MCU平台下确定栈空间大小的方法。

通常使用IDE开发MCU程序在生成Image文件时,Image文件被划分为代码区,数据区,BSS区,堆区,栈区。其中,代码区,数据区,BSS区空间大小由编译器最终决定,对于MCU,堆区一般设置为0,唯一不好确定的就是栈区空间的大小了。栈空间大小由非常关键,弄不好会导致栈溢出,后果非常严重。本文基于实测的方式,确定栈区空间的大小。

1.基本概念

栈空间分为静态栈空间和动态栈空间。

1)静态栈空间

静态栈空间大小一般可由编译器分析函数调用关系及调用深度来确定,顾名思义,它只能分析固定的函数调用关系,而我们的MCU程序运行过程中可能会有中断,造成函数的调用关系及深度是无法预料的,如果仅按静态栈大小来设置栈空间大小,很有可能是不够的。查看静态栈空间大小有助于我们确定最小的栈空间大小。

如Keil中可以在Link中增加“--callgraph”来生成静态调用图,其中也包括栈的使用,也可以用“--info=stack”或“--info=summarystack”列出所有全局符号的栈的使用情况。

2)动态栈空间

动态栈空间大小就是我们的程序在运行过程中(包含中断)的栈空间大小。实际使用的栈空间大小是动态变化的(随中断及函数调用而变化),确定栈空间的大小就是要确定动态栈空间最大能有多大,再预留一定的裕量,就是我们在编写程序时需要设置的栈空间大小。也是本文后续要介绍的。

2.方法&步骤

1)预先分配一个足够大的栈空间大小,这个空间在确定栈空间大小后会修改。这个在Keil中通过“startup.s”文件进行设置,在gcc编译器中可通过“.ld”文件确定。同时我们也知道栈顶的位置(通常在RAM空间的最后)。

2)编写一小段程序初始化这段栈空间大小为一个确定的数字,如“0xDEADDEAD”。代码如下:

InitStack(0x20003ffb, 0x400);void InitStack(uint32_t Address, uint32_t nLength)
{while ((int32_t)nLength > 0){*(volatile uint32_t *)Address = 0xDEADDEAD;Address -= 4;nLength -= 4;}
}

3)运行我们的程序,我们可以进行一系列的测试,包括外部中断及各种输入以确保程序执行中函数调用关系处于最深的情况。

4)当程序执行完毕后,我们检查2)中特定数值被修改的位置,这个位置和栈顶的偏移就是我们实际需要的栈空间大小。如我们使用JLink-Commander的“Mem32”指令可在程序运行过程中读取指定地址及长度的数据。指令如下(连接过程略):

Mem32 20003ffb  0x100

5)获得栈空间大小后,为了以防万一(步骤3)测试不充分),可以再保留一定的裕量(如50%),将此值作为最终的栈空间大小的设定值。

总结,本文介绍了MCU平台下确定栈空间大小的方法。

http://www.laogonggong.com/news/96242.html

相关文章:

  • 软件开发项目管理制度小红书seo排名帝搜软件
  • 广州网站建设 骏域建设网站公司 昆山
  • 网站建设与维护试卷 一什么查看WordPress的用户名及密码
  • 万网网站到期后续费一年多少钱wordpress 如果存在则
  • 企业网站的设计原则弹幕视频网站开发
  • 广州移动 网站设计网站设计好网站
  • 证明做二维码打款网站链接网站开发 英语词汇
  • 建一个购物网站多少钱建设积分网站
  • 怎么做网站寄生虫男人都懂的填空题2023
  • e特快做单子的网站网站工程师培训价格
  • wordpress转换tpecho南通南通网站优化
  • 玉山建设局网站wordpress 模板 导航
  • 外贸营销网站建设介绍深圳最好的app开发公司
  • 调用wordpress数据西宁网站seo公司
  • 长春平原网站建设网站空间上传软件
  • html留言簿网站基本框架搭建跟京东类似的网站
  • 网站如何建立品牌形象内容管理网站
  • 找客户软件seo排名优化培训
  • 代做寄生虫网站网站模板html 汽车膜
  • 曹县有没有做网站wordpress自定义内容管理
  • 集美区建设局网站宝安中心区范围
  • 网站翻页搜索引擎大全排行榜
  • 网站开发可行性分析番禺怎么读
  • 网站开发建设合同山东建设工会网站
  • 邢台邯郸做网站wordpress调用列表文章
  • 网站后台管理 ftp医院网站做品牌推广需要哪些
  • 建设一个返利网站可以查企业备案的网站吗
  • 泛华建设集团有限公司网站平面设计网站大全有哪些
  • 保险网站查询福建省建设执业注册中心网站
  • 京东联盟推广网站怎么做网站链接广告