1. printf-stdarg.c

在调用标准库函数时,栈空间的用量可能急剧上升,特别是IO与字符串处理函数,比如 sprintf()。

在FreeRTOS下载包中有一个名为printf-stdarg.c 的文件,这个文件可以替代标准C库函数版本。在大多数情况下,可以调用sprintf() 及相关函数时,对栈空间的需求量小的很多。

2. 栈溢出:uxTaskGetStackHighWaterMark() 用来查询指定任务在运行历史中,其栈空间还差多少溢出。

3. 系统运行时,栈侦测的方法:

方法1:栈空间的指向超过了任务栈的有效范围,调用钩子函数。说明:这种方法执行的速度快,但是栈溢出有可能发生两次上下文保存之间,这种情况不会被侦测到。

方法2:在创建任务时,任务空间就设置了一个标记,该方法检查栈的最后20个字节,查看预置在这里的数据是否被覆盖。如果被覆盖,则调用钩子函数。

方法1与方法2的比较:① 方法1比方法2快;② 方法2检测20个字节的速度是很快得到,这种方法可以侦测到任何时候的栈溢出,虽然理论上是有缺陷,但几乎不可能产生。

4. 应用程序在中断函数中崩溃:

1)检查中断是否导致栈溢出。

2)宏和API函数调用是否正确。

3)比较常见的错误:在优先级高于 configMAX_SYSCALL_INTERRUPT_PRIORITY 的中断中,调用了 FreeRTOS API 函数。

最新文章

  1. WPF中如何将ListViewItem双击事件绑定到Command
  2. php常见的面试题目
  3. 设计模式C#实现(七)——生成器模式
  4. Java SE 第二十四讲----static与final使用陷阱关键字
  5. 刀哥多线程之03GCD 常用代码
  6. SQLite学习第03天:环境搭建
  7. 用函数生成select选择框
  8. Delphi使用Windows API函数AnimateWindow实现窗体特效
  9. Hello China操作系统STM32移植指南(一)
  10. 这可能是php世界中最好的日志库——monolog
  11. vimgdb安装以及使用
  12. 用TensorFlow实现文本分析模型,做个聊天机器人
  13. 获取 Let's Encrypt 免费通配符证书实现Https
  14. cbow与skip-gram
  15. each遍历 的原理
  16. 000 Excel获取数据
  17. Please ensure that adb is correctly located at 。。。。。。。。。。。。
  18. CTF中的变量覆盖漏洞
  19. 20155203 2016-2017-4 《Java程序设计》第9周学习总结
  20. Oracle Solaris 11.4 GA 版发布,这将是 Solaris 的绝唱

热门文章

  1. 【小练习06】HTML+CSS--教学大讲堂
  2. javaSE_07Java中类和对象-封装特性--练习
  3. 判断客户端使用的是安卓还是苹果,然后加载对应的css文件
  4. 每天一个JS 小demo之通过事件委托实现菜单展开及选中特效。主要知识点:事件
  5. Linux 开机引导流程
  6. js将格式化的时间转换成时间戳
  7. Iconfont 矢量图标库的应用
  8. Python3.5学习笔记-文件操作
  9. Linux之定时任务补充
  10. Ionic 2+ 安卓环境搭建