实时嵌入式开发中遇到的几个非典型问题
2016-12-11 22:52
232 查看
使用ucosii近两年,最近遇到几个非技术性问题,被折腾了一个多星期。
在此觉得有必要对这两年遇到的坑作个总结, 也是对后来者的一个有益提醒。
第一次写blog,欢迎大家提出意见。
--背景为stm32f407芯片、工业环境使用、ucosii操作系统、fat操作系统。
1、寄存器操作,while死循环。
这个没什么好说的,特别对板级外扩芯片,如FLASH、外扩SD卡、外部给RTC供电的晶振,这类在硬件有干扰或物理损坏下,导致初始化失败,表现为死机。
最终会造成严重后果或会给人印象很差,这类属于低级错误,刚入行时犯过几次。
2、外设操作时间过长,影响其它任务中外设的初始化,致使初始化失败。
这个是近期犯的错误。 在一个任务里读外扩FLASH时, 部分情况下会多次操作, 导致在另一个低优先级任务for(;;)之前的usb硬件初始化被打断,后续该usb一直无法正常运行,随机上电失效。
即
a、最好不要在新建任务时初始化硬件,硬件要么在start任务,要么在所有任务之前,尽量全部完成; 当前重要硬件操作, 必须加相应保护;
b、板级外设操作,可能时间会较长。 期间尽量作delay让出CPU权限,避免其它低优先级任务个别需较长时间的操作失效;
c、如果可能, 对外设,尽量都用DMA操作,不要使用查询或中断等长期占用CPU行为。 以提高效率和减少对外影响;
d、在多任务设计时,要考虑到任务里操作可能出现的占用时间过长问题。 具本视情况而定。
3、DMA等硬件FIFO操作,非BUF对齐。
在操作SDIO时,出现使用双字FIFO时,对RAM里定义的int8\int16类型,出现因地址对齐,而丢数据情况。
此处需注意。 类型还有结构体变量,禁用指针来操作。
4、操作系统,触发执行任务不完全。
对转存等类型操作, 最后一帧和最初一帧,应作详细检查,防止遗漏 。
在此觉得有必要对这两年遇到的坑作个总结, 也是对后来者的一个有益提醒。
第一次写blog,欢迎大家提出意见。
--背景为stm32f407芯片、工业环境使用、ucosii操作系统、fat操作系统。
1、寄存器操作,while死循环。
这个没什么好说的,特别对板级外扩芯片,如FLASH、外扩SD卡、外部给RTC供电的晶振,这类在硬件有干扰或物理损坏下,导致初始化失败,表现为死机。
最终会造成严重后果或会给人印象很差,这类属于低级错误,刚入行时犯过几次。
2、外设操作时间过长,影响其它任务中外设的初始化,致使初始化失败。
这个是近期犯的错误。 在一个任务里读外扩FLASH时, 部分情况下会多次操作, 导致在另一个低优先级任务for(;;)之前的usb硬件初始化被打断,后续该usb一直无法正常运行,随机上电失效。
即
a、最好不要在新建任务时初始化硬件,硬件要么在start任务,要么在所有任务之前,尽量全部完成; 当前重要硬件操作, 必须加相应保护;
b、板级外设操作,可能时间会较长。 期间尽量作delay让出CPU权限,避免其它低优先级任务个别需较长时间的操作失效;
c、如果可能, 对外设,尽量都用DMA操作,不要使用查询或中断等长期占用CPU行为。 以提高效率和减少对外影响;
d、在多任务设计时,要考虑到任务里操作可能出现的占用时间过长问题。 具本视情况而定。
3、DMA等硬件FIFO操作,非BUF对齐。
在操作SDIO时,出现使用双字FIFO时,对RAM里定义的int8\int16类型,出现因地址对齐,而丢数据情况。
此处需注意。 类型还有结构体变量,禁用指针来操作。
4、操作系统,触发执行任务不完全。
对转存等类型操作, 最后一帧和最初一帧,应作详细检查,防止遗漏 。
相关文章推荐
- 分享嵌入式开发使用过程中遇到的几个问题(MQX4.2,IAR,Kinetis K66)
- 开发通用类时遇到的几个问题
- php开发中遇到的几个不知道原因的问题
- 嵌入式开发的几个基本问题
- Flex 4开发遇到的几个问题
- 开发QQ互联android版Ane扩展 遇到几个典型问题
- SSH网上商店开发过程中遇到的几个问题。
- 嵌入式开发环境搭建中出现的几个问题
- 从代码审核时遇到的有关JUnit的几个问题来看项目开发问题
- 嵌入式面试时遇到的几个常见问题
- 2013年3月7日星期四开发中遇到的几个前端问题
- 开发中遇到的几个问题
- Silverlight开发中遇到的几个小问题
- win7下eclipse搭建android开发开台遇到的几个问题
- JSP开发中遇到的几个小问题
- 嵌入式Linux开发实验中遇到的问题及解决方法
- 贴吧系统开发中遇到的几个问题——数据传输限制
- 嵌入式linux(内核为linux 2.6.30.4)开发中遇到的一些问题解决方法
- 开发QQ互联android版Ane扩展 遇到几个典型问题
- IOS应用内购买(IAP)开发时遇到的几个问题总结