WinCE底层开发的知识域

    做WinCE开发的人,应该对下面的架构示意图很熟悉:

    arc

    其中蓝色部分(除了Kernel),一般叫做BSP(Board Support Package),也叫OEM 层(微软就喜欢把这些名称改来改去的玩,马上连WinCE也要改名了)就是底层开发需要完成的任务了。当然,我们大部分人不会完整的开发一个BSP出来,这基本上是芯片原厂的工作(从头开发一个BSP是相当困难的一件事情,工作量超过100人月的级别),大部分人的工作只是在原厂提供的BSP基础上修修补补而已,但就是修修补补也是很不容易的,做为一个合格的嵌入式软件开发人员,具备以下知识是必须的条件:

    1.C语言,对于底层开发来说,没有其它语言可选,C就是你吃饭的家伙,必须熟练掌握;C++虽然用的不多,但是有一些驱动(比如微软的显示驱动)使用了这个语言,所以最低要求,要能看懂C++代码,能写简单的类,了解继承的概念。

    2.ARM处理器架构,虽然有的人会用到X86,MIPS甚至SH4架构的芯片,但是目前嵌入式的主流是ARM,所以了解ARM处理器的架构也是需要掌握的基本技能之一。你要知道ARM的7种工作状态,了解它的寄存器,寻址方式,中断方式这些基本知识,当然,还需要了解基本的ARM汇编语言。

   3.LCD,touchpanal这2个是最基本的输入输出设备了,应该熟悉它们的接口,驱动架构,其中LCD的显式驱动可以使用GPE类来构建,也可以使用支持DIRECTDRAW的结构,touchpanal要注意校正问题。

    4. 各种常用接口协议:USB是最常用的,然后IIC,IIS,UART也是很常用的接口,必须熟悉它们的协议,了解它们的驱动架构。

    5. FLASH:现在的嵌入式设备大量使用FLASH做为ROM,来存储操作系统以及用户文件。FLASH分为NOR和NAND两种,现在NOR已经式微,很少使用,但是它有个优点是可以直接运行程序,XIP就是利用了这一特性。NAND FLASH的特点是容量大,价格便宜,而且技术发展的很快,以前广泛使用的SLC正在逐渐被淘汰,MLC成为市场的主力。我们需要了解FLASH的接口,页/块的概念,写/擦除的方法,均衡读写概念,ECC校验概念和方法;另外FLASH和文件系统直接相关,所以需要了解WinCE的文件系统。

   6. 无线通讯:现在蓝牙,WIFI,3G越来越广泛的使用在嵌入式系统上,应该对这些有一定的了解。

   7.音频接口。这也是很基本的,必须熟悉的知识。 

   8.SD/MMC CARD,了解接口定义,熟悉其协议。

   从以上可以看出来,要做一个合格的嵌入式软件工程师,除了基本的语言使用能力,对于各种硬件规范,协议的掌握也是必须的,这很困难,所以需要我们持之以恒的去学习,去实践。

posted @ 2010-05-26 23:49  时永安  阅读(2683)  评论(3编辑  收藏  举报