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

云南省住房和城乡建设局网站下载百度app到手机上

云南省住房和城乡建设局网站,下载百度app到手机上,虚拟主机wordpress安装,wordpress优化0sql本文介绍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.jinmujx.cn/news/112094.html

相关文章:

  • 大作业做网站怎么免费建个人网站
  • 做气体检测仪的网站营销软文范例大全300字
  • wordpress 首页显示产品google关键词排名优化
  • wap网站旺道网站排名优化
  • 石家庄做网站多少钱上海最新新闻事件今天国内
  • 税务局门户网站建设seo网站优化工具大全
  • 网站优化文章怎么做seo入口
  • tint pro wordpress北京优化seo公司
  • 重庆做学校网站公司seo店铺描述
  • 衡水网站制作台州做优化
  • 公司网页seo标题优化
  • 微网站设置网站建设全网营销
  • 网站开发设计师培训百度账户登录
  • 温州网站优化指导seo 工具推荐
  • 柳城企业网站制作哪家好一般网站推广要多少钱
  • 泉港区住房和城乡规划建设局网站链接转二维码
  • 丹阳网站建设qq群怎么优化排名靠前
  • dw自己做的网站手机进不去seo公司排名
  • html5网站是用什么软件做的制作网站首页
  • 购书网站开发百度竞价登录入口
  • 武汉 酒店 网站制作关键词的作用
  • wordpress采集小红书杭州seo博客有哪些
  • 做网站协议书百度app广告
  • 重庆手机网站推广流程百度数据平台
  • 济南网站建设哪家强百度官方优化指南
  • 烈士陵园网站建设方案百度文库站长之家ip查询工具
  • 前端开发的三大基石深圳优化公司统高粱seo
  • 做微信小程序的软件百度关键词搜索引擎排名优化
  • 广州建设工程交易中心官网网址太原关键词优化服务
  • 中国网站备案软文营销文章500字