经过以前的学习,我们已经掌握了生成CE的过程及编译的几个阶段,这次我们再来了解一下Platform Builder中为我们提供的组件包的管理方式以及如何管理自己的组件。
    在Platform Builder(以下简称PB)中的右侧有一个"Catalog"窗口,其中列出了所有可供使用的组件,我们可以看到其内容是非常之多的,现在的疑问就产生了,PB是如何管理这些组的呢?如果我有一个新设备的驱动组件要如何才能放到这个组件包窗口中呢?如果我开发了一个设备驱动以供其他人使用那我要如何才能发布我的驱动呢?下面,我们就来解决这些问题。
    在PB中,这些组件的管理都是能过一种组件文件(.cec文件)来实现的。在CE4中,系统自带的CEC文件都位于PB的安装文件夹下的CEC文件夹,我们可以在那里很容易的找到它们,但是在CE5中,它的位置变了,你可以在WINCE500\PUBLIC\COMMON\OAK\CATALOG\CEC下找到他们。
    如果你开发了OAL,设备驱动或其他组件,你就可以能过CEC文件来把它们加入到PB中。通过在PB环境中导入CEC文件,其他的平台开发人员就可以使用这些组件了。CEC文件是用来描述组件信息的文本文件,它包括了一些块的列表,主要包括以下四种信息块:
    --CECInfo块,用来描述此CEC文件的信息,每个CEC文件只能含有一个此信息块,从中你可以看到该CEC的名称、GUID、版本、供应商和简要描述。
    --ComponentType块,它描述了最高级别的组件类型,在一个CEC文件中可以有多个此信息块,它通过Group,RequiredCEModules,ExcludeWhenSet,MaxResolvedImplsAllowed等条目来描述此组件所在的组,需要的CE组件,排除的组件及允许在一个CE平台中存在的数量等信息。
    --Implementation块,用来描述此组件在编译时需要的各种信息,每个CEC文件中也可以有多个此信息块,它是 ComponentType块的一部分,其中的BSPPlatformDir,Children,OptionalChildren,DefaultDrivers,ExcludeWhenSet,FeatureVariable,ImplSize等条目的具体含义可以在PB的帮助文档中找到,在此不一一细述。
    --BuildMethod块,描述了编译的方法,也是ComponentType块的一部分,为了加深对上一次编译阶段的理解,我们详细说一下此块中Step和Action两个条目。
    Step用来说明编译此组件将要在哪一步中进行,对照上一次的内容,它的取值为:CESYSGEN,BSP,BUILDREL,MAKEIMG。所以如果你自己开发了OAL或驱动之类的组件,你就需要自己决定让PB在什么阶段来编译它,就要在CEC中通过Step来描述。其实在具体的编译过程中,上述的每一阶段又有PRE和POST两个子阶段,也就是说对于每个阶段其实都有三步,即PRECESYSGEN,CESYSGEN,POSTCESYSGEN,PREBSP,BSP,POSTBSP……一般不用具体到这样详细的程度。
    Action则描述了组件编译的行为,有效的行为与编译阶段的对应关系如下表所示:

Action CESYSGEN BSP BUILDREL MAKEIMG
#BUILD(DIR,...) No Yes No No
#BUILD(SOURCES) No Yes No No
#BUILD(MAK,...) No Yes No No
#CUSTOM(...,...) No Yes Yes No
#COPY(...,...) Yes No Yes No
#ENV(...,...) No Yes No Yes
#SRCCODE(...) No No No No

这些Action的意义如下:
    --#BUILD():使用DIRS文件或SOURCES文件或MAKE文件来调用build.exe,在完全编译平台的时候被使用;
    --#CUSTOM():在编译的时候运行批处理文件或可执行文件;
    --#COPY():从一个位置复制文件到另一个位置;
    --#ENV():设置环境变量;
    --#SRCCODE():指定了包含源程序文件的文件夹,只在编译所选组件时应用。
    对于以上每个条目的具体用法可以参阅PB的帮助文档。为了获得感性认识,我们最好用记事本打开几个CEC文件来看一下。比如打开serial.cec看看串口驱动组件的实现方法等。
    以上我们了解了CEC文件,我们再来解决后面的问题,即假设我从别的供应商处拿到了一个设备的驱动程序,它带了CEC文件,那么我要如何把这个组件加入到PB的组件包中呢?这个问题其实很简单,只要在PB的File菜单下使用"Manage Catalog Items"命令即可。在这个弹出的对话框中的内容和使用方法就不用我说了吧。
    再来解决下一个问题,我要如何为我开发的组件编写CEC文件呢?这个也好办,在Tools菜单下使用"CEC Editor"命令即可,如果不会写,可以先打开一个现有的CEC文件看看是如何组织的,然后再仿照它来写自己的就可以了,别忘了写完后要保存哦,同时也要注意GUID的问题。
    此次内容的最后,我们再来看一下BSP。什么是BSP呢,其实就是为某一种开发板实现了设备驱动的软件包,它包含了源程序文件,二进制文件等,还有OAL适配层,Bootloader和其他有关的配置文件。比如CE5的评估版就带了x86的BSP,AMD的BSP和Emulator的BSP。
    通常对BSP的操作都在BSP向导中进行,它位于Platform菜单中,利用它可以新建自己的BSP,复制现存的BSP,修改现存的BSP或创建全局的驱动程序。如果你准备好了BSP所需要的那些东西就可以用它来生成你的BSP了,它会选择必须的CE内核组件。
    好了,已经写了不少了,唉,写这东西真是费时啊,不说了,希望我们能一起获得更多的知识。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gooogleman/archive/2008/08/04/2764925.aspx

转载于:https://www.cnblogs.com/jiegekaoyan/archive/2010/07/31/1789583.html

【转】CEC文件详解相关推荐

  1. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  2. Mybatis复习笔记3:映射文件详解

    映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...

  3. Android - Manifest 文件 详解

    Manifest 文件 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20899281 Manifest可以定义应用程序及其 ...

  4. javaweb web.xml文件详解

    web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...

  5. oracle控制文件都一样么,Oracle控制文件详解

    一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...

  6. linux /proc目录文件详解

    Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...

  7. STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解

    一:STM32(Cortex-M3)启动过程(入口地址) ARM7和ARM9启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的. Corte ...

  8. /etc/passwd 文件详解

    /etc/passwd  文件详解 /etc/passwd  保存了系统中每一个用户的信息 /etc/passwd 中每个用户的信息占用了一行,也就是说这个文件有多少行,系统就有多少个用户. 要查看系 ...

  9. Linux中/proc目录下文件详解(二)

    Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...

最新文章

  1. 一张图看懂图像识别算法发展历史
  2. python编程语法大全-Python编程入门——基础语法详解
  3. python快速入门 pdf-零起点PYTHON机器学习快速入门 PDF |网盘链接下载|
  4. DPDK support for vhost-user(十四)
  5. 人工智能是未来发展趋势吗 用Python入门怎么样 赶紧看看
  6. es6 Promise.resolve()方法
  7. pytesseract
  8. 为什么学前端不先学框架?
  9. 修改mysql数据库名称
  10. web前端开发技术现状与发展_2020年,Web前端开发有哪些发展趋势?
  11. TCP/IP与HTTP的区别
  12. 命令行批量修改IP并ping测试
  13. 视频教程-Word从入门到精美排版教程:手把手学习Word2019精美排版-Office/WPS
  14. 获取微信公众号关注页链接
  15. MYSQL 按照身份证筛选年龄和性别
  16. 烧洋芋、苞谷、饵块和昭通酱
  17. 【STL】STL函数总结,助你代码实用高逼格
  18. 搞计算机的真的不配拥有爱情吗。这是她给我留下的最后一段话
  19. 第五代选择器Icarus
  20. 日知录(15):记药盒的串口通信

热门文章

  1. 【转】Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。...
  2. 谈谈varnish、squid、apache、nginx缓存的对比
  3. pku1182(食物链) hdu3047 Zjnu Stadium
  4. 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码
  5. java jsp 文件上传_用JSP编写文件上传
  6. Spring中Map的key为对象引用的注入
  7. OVS openflow(二十四)
  8. js mysql java_Java、mysql、html、css、js 注释大小写
  9. c语言程序段的流程图怎么画,大家帮我看看这个程序的流程图怎么画,谢了
  10. Java synchronized解析