一种同一固件兼容不同设备的方法及装置
技术领域
[0001] 本发明涉及电子设备技术领域,尤其涉及一种同一固件兼容不同设备的方法及装 置。
背景技术
[0002] 在电子产品的开发过程中,特别是嵌入式系统电子产品,越来越多地出现硬件差 异不大、软件定制不同的情况,即同一类型的产品有多种衍生版本,产生了不同的设备。硬 件差异如有LCD、TP不同,键盘不同(多语言键盘),C0DEC、WIFI模块不同等。软件差异有第三 方定制的差异、GMS包差异等。在这种情况下,如果每种衍生版本都对应一版本软件,特别是 出口不同国家的产品,这样从产品研发、生产到维护上均需要维护不同的固件,这样工作量 较大,造成维护成本比较大。
[0003] 为了解决上述的不同设备造成软件版本过多的问题,现有的具有以下两个方案。 [0004] 现有方案一:同一款硬件设备烧写相同的system固件,专门做一个分区烧写定制 化固件,销售往不同的国家。方案一的优点:system固件在系统起来后不会发生变化,不影 响0TA升级(系统升级),且有个独立分区,软件实现了模块化,便于管理;缺点:N个国家需要 N个定制化固件、不支持多款硬件不同的设备。
[W)05] 现有方案二:不同硬件的设备(如LCD的尺寸不同)烧写相同的system固件,系统运 行后根据BID号执行不同的操作,达到不同的效果,销售往不同的国家。BID (Board ID的缩 写)号可以由硬件(如GPI0,外部EEPR0M)指定,也可以由工具烧写到芯片内部FLASH中。方案 二的优点:真正实现了一个固件兼容多个产品,销往不同的国家唯一要做的是烧写不同的 BID号;缺点:系统运行后会修改系统分区,因此不支持0TA升级,同时根据BID号修改了较多 framework层代码,兼容性不好。
发明内容
[0006]本发明要解决的技术问题,在于提供一种同一固件兼容不同设备的方法及装置, 解决现有不同设备间固件过多或者是固件无法0TA升级、兼容性不好的问题。
[0007]本发明是这样实现的:
[0008] 一种同一固件兼容不同设备的方法,包括如下步骤:
[0009]读取硬件识别标识并执行与硬件识别标识对应的操作,生成所执行的操作的逆操 作的记录,在系统升级功能被激活时执行所述的逆操作。
[0010] 进一步地,所述读取硬件识别标识为从存储模块中读取或从硬件设备中读取。
[0011] 进一步地,所述的与硬件识别标识对应的操作包括复制与硬件识别标识对应的数 据到系统区。
[0012] 进一步地,所述的与硬件识别标识对应的数据所在的区与所述的系统区为不同分 区。
[0013] 进一步地,所述的与硬件识别标识对应的操作包括设置与硬件识别标识对应的属 性。
[0014] 以及本发明在上述一种同一固件兼容不同设备的方法的基础上还提供一种同一 固件兼容不同设备的装置,包括如下模块:
[0015] 硬件识别标识记录模块:用于记录硬件识别标识;
[0016] 硬件识别执行模块:用于读取硬件识别标识并执行与硬件识别标识对应的操作;
[0017] 逆操作生成模块:用于生成所执行的操作的逆操作的记录;
[0018] 以及恢复模块:用于在系统升级功能被激活时执行所述的逆操作。
[0019] 进一步地,所述的硬件识别标识记录模块为存储模块或硬件设备。
[0020] 进一步地,还包括系统区和差异化数据区,所述的差异化数据区用于存储所述与 硬件识别标识对应的数据,所述的与硬件识别标识对应的操作包括从差异化数据区复制与 硬件识别标识对应的数据到系统区。
[0021] 进一步地,系统区和差异化数据区为不同分区。
[0022] 进一步地,硬件识别执行模块包括属性设置单元,所述的属性设置单元用于设置 与硬件识别标识对应的属性。
[0023] 本发明具有如下优点:采用本发明后不同设备在研发时使用一套代码一套固件, 软件管理比较方便;在生产时烧写相同固件,硬件不相同或出口不同的国家时,只需要烧写 不同的硬件识别标识即可,所有的软件定制会在程序起来时自动完成,很大程度上增强了 生产时的一致性;后期产品维护时,解决所有产品共性问题,只需一个0TA包即可,能很大程 度上能降低维护成本。
附图说明
[0024]图1为本发明的方法的流程图;
[0025]图2为本发明装置的优选实施例的结构示意图。
具体实施方式
[0026] 为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式 并配合附图详予说明。
[0027] 请参阅图1以及图2,本发明提供了 一种同一固件兼容不同设备的方法,本方法用 于差异不大的设备上,如硬件或软件上有所差异。包括如下步骤:步骤S101读取硬件识别标 识。通过读取硬件识别标识可以区分不同的硬件。在本实施例中,硬件识别标识存储在存储 模块中,如ROM或SD卡,此时的硬件识别标识可以通过烧录工具烧录到存储模块中;在某些 实施例中,硬件识别标识可以从硬件设备中读取,如从GPI0、WIFI模块、蓝牙模块、显示屏或 触摸屏模块中读取这些硬件设备的ID作为硬件识别标识。硬件识别标识的形式可以是任意 的,在便于直观识别的情况下可以采用版本号。
[0028] 而后在步骤S102执行与硬件识别标识对应的操作。可以通过存储各个硬件识别标 识与之对应的操作的记录集,通过在记录集中检索读取到的硬件识别标识,而后执行对应 的操作。此记录集的记录形式可以是任意的,如脚本或表格等。具体应用时,为了在硬件识 别标志增加更多更复杂的内容,如区域、语言等,在执行与硬件识别标识对应的操作还要对 硬件识别标识进行解析后再执行。在某些实施例中,这些操作包括设置与硬件识别标识对 应的属性。如根据不同的硬件识别标识设置系统的语言、系统的时区以及时间等。在某些实 施例中,这些操作包括复制与硬件识别标识对应的数据到系统区,如复制开机图片、铃声、 驱动或默认软件到系统区(如安卓系统中,系统区为system分区)。
[0029] 通过步骤S101和步骤S102,不同的设备可以在同一固件下根据不同的硬件识别标 识进行系统的初始化,并且初始化成与设备运行所需要的状态,满足不同设备的系统需求。 同时为了使得系统可以更新和升级,本发明还包括步骤S103生成所执行的操作的逆操作的 记录,并且在步骤S104在系统升级功能被激活时执行所述的逆操作。通过步骤S103和步骤 S104,设备再次恢复到原始状态(即在本方法应用之前状态),则可以进行升级或更新。
[0030] 在某些实施例中,步骤S102中所有与各个硬件识别标识对应的数据(即不同硬件 所需的不同的数据)是存放在某一个文件夹下或者某个存储区中,为了避免与系统区的数 据混淆,优选地,与硬件识别标识对应的数据所在的区与所述的系统区为不同分区。同时可 以设定上述的与硬件识别标识对应的数据所在的区为隐藏的模式,避免用户的误操作。
[0031] 在某些实施例中,逆操作的记录的形式可以是脚本、文本或表格,如TXT文本或者 XML 表。
[0032]同时本发明在上述一种同一固件兼容不同设备的方法的基础上还提供一种同一 固件兼容不同设备的装置,包括如下模块:
[0033] 硬件识别标识记录模块:用于记录硬件识别标识;硬件识别标识记录模块为存储 模块(如:ROM或SD卡等)或硬件设备(如:GPIO、WIFI模块、蓝牙模块、显示屏或触摸屏等)。 [0034] 硬件识别执行模块:用于从硬件识别标识记录模块中读取硬件识别标识并执行与 硬件识别标识对应的操作;逆操作生成模块:用于生成所执行的操作的逆操作的记录;以及 恢复模块:用于在系统升级功能被激活时执行所述的逆操作。本装置在针对不同设备会进 行不同的设备初始化(即执行与引荐设别标识对应的操作),使得设备满足系统正常运行时 (即初始化后)的软硬件要求,同时在系统升级时恢复最原始的状态,则设备可完成升级与 更新。
[0035] 在本优选实施例中,本发明的装置还包括系统区和差异化数据区,所述的差异化 数据区用于存储所述与硬件识别标识对应的数据,所述的与硬件识别标识对应的操作包括 从差异化数据区复制与硬件识别标识对应的数据到系统区。同时,在本实施例中,系统区和 差异化数据区为不同分区。
[0036] 进一步地,硬件识别执行模块包括属性设置单元,所述的属性设置单元用于设置 与硬件识别标识对应的属性。
[0037]综上,使用本发明的使用者在开发针对不同设备的系统时,可以只采用一套固件 或代码,而后不同设备在系统初始化时会根据硬件识别标识自动进行系统初始化,完成对 软件的定制,解决了不同设备需要多套固件的问题。同时在后期升级维护时,系统可还原到 可升级状态,解决了不可升级的问题。同时维护时只需一个升级包即可,升级包可放置所有 的不同设备的更新内容,更新后在系统初始化时同样根据硬件识别标识自动进行对应的升 级,大大减少了维护的复杂性,降低了维护的成本。
[0038] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发 明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技 术领域,均同理包括在本发明的专利保护范围内。