专利名称:WinCE映像文件自修改方法
WinCE映像文件自修改方法
技术领域:
本发明提供一种WinCE映像文件修改方法,尤指一种WinCE映像文件自修改方法。背景技术:
目前嵌入式设备多使用的是WinCE系统, 一般来讲,WinCE的映像(image)是分区 域的,image生成工具会根据配置文件把各个模块以某种方式放在相应的区域里,其中操作 系统(OS)核心部分划分到ROM区。还有一部分是按需加载的,可以存放在Nand Flash等 介质的Binfs (Bin文件系统驱动)分区里,在需要时加载器通过Binfs加载这部分里的模 块到RAM上,以达到节省RAM縮短OS启动时间的目的,该部分往往占整个image的相当大 一部分。 当前的WinCE底层开发者在调试自己的驱动时经常需要重新建立image,然后用 专门的image更新工具把整个image固化到设备中这是一个繁琐耗时的过程,使开发者花 很多的时间在无关的事情上,降低开发效率;同时,采用WinCE的OEM在需要对已经进入市 场的设备做image更新时往往需要把整个image都更新,这并不是一个灵活的方式在很多 时候会带来不便,间接的带来维护成本的增加。 有鉴于此,实有必要提供一种WinCE映像文件自修改方法,利用该方法,WinCE底 层开发者可以在系统里直接用单个的文件替换映像里原来的文件,然后冷启动后即可,替 换文件可以是开发者单独建立出来的,开发者不用重新建立整个映像,然后再更新整个映 像以使自己的更改生效;代工厂商在更新客户的驱动或某些其它组件时只用单独发布该文 件即可。
发明内容
为达上述的目的,本发明提供一种WinCE映像文件自修改方法,利用该方法, WinCE底层开发者可以在系统里直接用单个的文件替换映像里原来的文件,然后冷启动后 即可,替换文件可以是开发者单独建立出来的,开发者不用重新建立整个映像,然后再更新 整个映像以使自己的更改生效;代工厂商在更新客户的驱动或某些其它组件时只用单独发 布该文件即可。 本发明的WinCE映像文件自修改方法,该方法用于一嵌入式系统,该嵌入式系统 包括一含有Binfs分区的存储设备,该方法包含下列步骤 在Binfs分区里保留一段空余区域作为保留区域,用以作为映像欲修改的模块或 文件的存储区域,并对该保留区域做几个控制函数用于对该保留区域做读写操作
对该保留区域采用记录的模式管理,把欲修改的模块或文件放在数据区,而在记 录区记录该欲修改的模块或文件的相关信息; Binfs文件系统驱动加载后检查该Binfs分区里的映像,将所有模块和文件以链 表的形式记录下来; Binfs文件系统驱动在Binfs创建了该链表后对上述保留区域进行访问处理访问上述保留区域的上述记录,对于该链表有与上述记录中同名文件或模块的节点,以该保 留区域内的该文件或模块替换原来映像里的文件或模块;对于上述记录中具备而该链表中 没有的而欲增加的文件或模块的节点,在该链表中追加该节点,也即将该保留区域内该欲 增加的文件或模块添加进去。 相较于现有技术,本发明的WinCE映像文件自修改方法,利用该方法,WinCE底层 开发者可以在系统里直接用单个的文件替换映像里原来的文件,然后冷启动后即可,替换 文件可以是开发者单独建立出来的,开发者不用重新建立整个映像,然后再更新整个映像 以使自己的更改生效;代工厂商在更新客户的驱动或某些其它组件时只用单独发布该文件 即可。 为对本发明的目的、构造特征及其功能有进一步的了解,兹配合附图详细说明如 下
图1绘示为本发明的WinCE映像文件自修改方法一较佳实施例的方法流程图。
具体实施方式
请参阅图1 ,图1绘示为本发明的WinCE映像文件自修改方法一较佳实施例的方法 流程图。 于本实施例的WinCE映像文件自修改方法,该方法用于一嵌入式系统,该嵌入式 系统包括一含有Binfs分区的存储设备,该方法包含下列步骤 在Binfs分区里保留一段空余区域作为保留区域,用以作为映像欲修改的模块或 文件的存储区域,并对该保留区域做几个控制函数用于对该保留区域做读写操作(步骤
100); 对该保留区域采用记录的模式管理,把欲修改的模块或文件放在数据区,而在记 录区记录该欲修改的模块或文件的相关信息(步骤101); Binfs文件系统驱动加载后检查该Binfs分区里的映像,将所有模块和文件以链 表的形式记录下来(步骤102); Binfs文件系统驱动在Binfs创建了该链表后对上述保留区域进行访问处理访 问上述保留区域的上述记录,对于该链表有与上述记录中同名文件或模块的节点,以该保 留区域内的该文件或模块替换原来映像里的文件或模块;对于上述记录中具备而该链表中 没有的而欲增加的文件或模块的节点,在该链表中追加该节点,也即将该保留区域内该欲 增加的文件或模块添加进去(步骤103)。 其中,对于上述步骤之后还可包括步骤通过一更新机制并借由上述已经实现的 控制函数来访问该Binfs分区里的上述保留区域。该更新机制包括把欲修改的模块或文件 放到特定位置,并通过一应用程序将该特定位置的内容写入上述保留区域,当然,此处还可 以加上限制条件,例如为对写入内容大小的限制、对写入内容格式的限制、以及对写入内 容为特殊目的的限制。 其中,上述步骤100中的该控制函数可以为KernelLibIoControl(为系统内核提 供一种通用的操作的函数)。
其中,上述步骤103中对上述保留区域进行访问处理的过程,还包括步骤将该节 点在该Binfs分区里的偏移地址更改为保留区域的文件实际的偏移地址,而上述步骤101 中的该相关信息包括偏移地址。 其中,上述步骤103中对上述保留区域进行访问处理的过程,还包括步骤把上述 欲修改的文件或模块的FILE_ATTRIBUTE_ROMMODULE属性去掉,使加载器采用解析方式加 载。 其中,上述链表记录有上述文件或模块的真实大小。 相较于现有技术,本发明的WinCE映像文件自修改方法,利用该方法,WinCE底层 开发者可以在系统里直接用单个的文件替换映像里原来的文件,然后冷启动后即可,替换 文件可以是开发者单独建立出来的,开发者不用重新建立整个映像,然后再更新整个映像 以使自己的更改生效;代工厂商在更新客户的驱动或某些其它组件时只用单独发布该文件 即可。
权利要求
一种WinCE映像文件自修改方法,该方法用于一嵌入式系统,该嵌入式系统包括一含有Binfs分区的存储设备,其特征在于,该方法包含下列步骤在Binfs分区里保留一段空余区域作为保留区域,用以作为映像欲修改的模块或文件的存储区域,并对该保留区域做几个控制函数用于对该保留区域做读写操作;对该保留区域采用记录的模式管理,把欲修改的模块或文件放在数据区,而在记录区记录该欲修改的模块或文件的相关信息;Binfs文件系统驱动加载后检查该Binfs分区里的映像,将所有模块和文件以链表的形式记录下来;Binfs文件系统驱动在Binfs创建了该链表后对上述保留区域进行访问处理访问上述保留区域的上述记录,对于该链表有与上述记录中同名文件或模块的节点,以该保留区域内的该文件或模块替换原来映像里的文件或模块;对于上述记录中具备而该链表中没有的而欲增加的文件或模块的节点,在该链表中追加该节点,也即将该保留区域内该欲增加的文件或模块添加进去。
2. 如权利要求1所述的WinCE映像文件自修改方法,其特征在于,对于上述步骤之后还 包括步骤通过一更新机制并借由上述已经实现的控制函数来访问该Binfs分区里的上述 保留区域。
3. 如权利要求2所述的WinCE映像文件自修改方法,其特征在于,该更新机制包括把欲 修改的模块或文件放到特定位置,并通过一应用程序将该特定位置的内容写入上述保留区 域。
4. 如权利要求3所述的WinCE映像文件自修改方法,其特征在于,该通过一应用程序将 该特定位置的内容写入上述保留区域的过程还具备限制条件,该限制条件为对写入内容大 小的限制或对写入内容格式的限制或对写入内容为特殊目的的限制。
5. 如权利要求1、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述控制函 数为KernelLibIoControl。
6. 如权利要求1、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述步骤 Binfs文件系统驱动在Binfs创建了该链表后对上述保留区域进行访问处理访问上述保 留区域的上述记录,对于该链表有与上述记录中同名文件或模块的节点,以该保留区域内 的该文件或模块替换原来映像里的文件或模块;对于上述记录中具备而该链表中没有的而 欲增加的文件或模块的节点,在该链表中追加该节点,也即将该保留区域内该欲增加的文 件或模块添加进去;其中,对上述保留区域进行访问处理的过程,还包括步骤将该节点在 该Binfs分区里的偏移地址更改为保留区域的文件实际的偏移地址,而上述步骤对该保 留区域采用记录的模式管理,把欲修改的模块或文件放在数据区,而在记录区记录该欲修 改的模块或文件的相关信息,其中的该相关信息包括偏移地址。
7. 如权利要求1、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述步骤 Binfs文件系统驱动在Binfs创建了该链表后对上述保留区域进行访问处理访问上述保 留区域的上述记录,对于该链表有与上述记录中同名文件或模块的节点,以该保留区域内 的该文件或模块替换原来映像里的文件或模块;对于上述记录中具备而该链表中没有的而 欲增加的文件或模块的节点,在该链表中追加该节点,也即将该保留区域内该欲增加的文 件或模块添加进去;上述步骤中对上述保留区域进行访问处理的过程,还包括步骤把上述欲修改的文件或模块的FILE_ATTRIBUTE_ROMMODULE属性去掉,使加载器采用解析方式 加载。
8.如权利要求1 、2、3或4所述的WinCE映像文件自修改方法,其特征在于,上述链表记 录有上述文件或模块的真实大小。
全文摘要
本发明揭示一种WinCE映像文件自修改方法,该方法用于一嵌入式系统,该嵌入式系统包括一含有Binfs分区的存储设备,该方法包含在Binfs分区里保留一段空余区域作为保留区域,用以作为映像欲修改的模块或文件的存储区域,并对该保留区域做几个控制函数用于对该保留区域做读写操作;对该保留区域采用记录的模式管理,把欲修改的模块或文件放在数据区,而在记录区记录该欲修改的模块或文件的相关信息;Binfs文件系统驱动加载后检查该Binfs分区里的映像,将所有模块和文件以链表的形式记录下来;Binfs文件系统驱动在Binfs创建了该链表后对上述保留区域进行访问处理。WinCE底层开发者可以在系统里直接用单个的文件替换映像里原来的文件,不用重新建立整个映像。
文档编号G06F17/30GK101770468SQ20081020508
公开日2010年7月7日 申请日期2008年12月30日 优先权日2008年12月30日
发明者程国凡 申请人:环达电脑(上海)有限公司