Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295356
  • 博文数量: 47
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-23 09:10
文章分类

全部博文(47)

文章存档

2009年(3)

2008年(4)

2007年(14)

2006年(26)

我的朋友

分类:

2006-12-20 19:20:03

嵌入式开发中最具挑战,最有别于纯软件开发的一大特点就是解决非逻辑性问题。纯软件的开发一般基于成熟的底层平台(硬件、操作系统、虚拟机、中间平台), 诸如:PC机, JVM。纯软件的开发中出现的问题,一般都是逻辑性的代码错误,总的来说都能靠逻辑思维去解决,绝大多数情况下没人会怀疑PC机或者JVM出问题。并且这 类问题解决途径很简单,顺着逻辑走,难点则在于代码量的大小和复杂程度,代码复杂则问题解决越困难,但总是能符合逻辑。
嵌入式开发中,大多数问题和纯软开发一样属于逻辑性的,但又不能排除非逻辑性。关键是嵌入式开发的底层平台并非那么稳定,比如我们自己的开发板。开发板做 的越小,功能越复杂,它的抗外界条件干扰能力就越差:电流、电压、绝缘体、导体、遗物,再加上开发板本身的设计和制作工艺,都在很大程度上影响着嵌入式平 台的稳定性。因此在嵌入式开发中,常常会碰到一些不能靠debug,review code来解决的问题,有些甚至根本让人模不找头脑。上星期我们就碰到过这样的事情,硬件各个部分存在一定的干扰,导致在LCD打开时触摸屏不稳,使板子 挂住(kernel stuck,无panic)。当时我们是毫无头绪,只能从现象中分析入手点,后来又发现有几个板子上触摸屏在LCD不打开时也会让板子死掉。分析范围一下 从IPU/LCD/AD缩小到了触摸屏上,最后再将触摸屏的操作流程分解,发现用户即使不操作触摸屏,程序去读写AD的寄存器也会死。要不是AD硬件有问 题,就是访问AD寄存器时出错。当然AD硬件有问题,我们是无能为力,所以首先排除这个假设,从访问寄存器下手。最终在修改了访问寄存器的SPI总线波特 率后彻底的解决了这个问题。
不过至今这个问题的根源或者说根本的原因,我们依然不清楚。这大概就是这类问题的无理头特色吧。 
阅读(1817) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-10-28 01:42:02

我觉得有了清晰的体系,自然就会有顺理成章的逻辑。主要是相关因素太多,所以容易出麻烦,但慢慢分析总能解决的。

chinaunix网友2008-02-14 16:46:13

跟X86等PC构架比较,嵌入式开发主要是由于硬件五花八门,没有一个标准,所以导致底下重复开发太多. BSP开发也许就是修改各种各样的寄存器,实现各种各样的功能.