CN108664276B - 一种通过文本配置硬件信息的方法 - Google Patents
一种通过文本配置硬件信息的方法 Download PDFInfo
- Publication number
- CN108664276B CN108664276B CN201810461466.XA CN201810461466A CN108664276B CN 108664276 B CN108664276 B CN 108664276B CN 201810461466 A CN201810461466 A CN 201810461466A CN 108664276 B CN108664276 B CN 108664276B
- Authority
- CN
- China
- Prior art keywords
- hardware
- ini file
- product
- information
- stage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种通过文本配置硬件信息的方法,包括如下步骤:步骤1、在产品开发阶段,根据产品的硬件配置情况编辑硬件信息,所述硬件信息采用INI格式的文本文件编辑并存储;步骤2、在产品发布阶段,将存有硬件信息的INI文件作为硬件设计文件的一个组成部分进行发布;步骤3、在生产测试阶段,先导入INI文件,再进行后续测试,并确保仅在生产测试阶段才能导入INI文件;步骤4、在软件运行阶段,通过对INI文件进行解析得到硬件配置信息,根据硬件配置信息加载不同硬件驱动或进入不同的分支处理流程。本发明从产品的高度来建立一整套解决方案,优化整个产品周期,简洁直观、可配置丰富的信息,且实现软硬件分离。
Description
技术领域
本发明涉及一种通过文本配置硬件信息的方法。
背景技术
在嵌入式领域,一个产品型号可能存在多种硬件配置。以产品搭载的通讯模块为例,可能是有线或无线,有线分LAN,MODERM等,无线分蓝牙,WLAN,2G等,2G又分GSM和CDMA两种制式,GSM模块的提供商可能是华为,移远等。不同的客户会有不同的需求,产品还会正常迭代版本,这样就会产生大量的硬件组合方式,每种组合方式在生产上需要对应不同的料号,在软件上需要维护不同的版本去适配他们。大量的软件版本不仅给软件开发维护带来压力,也给生产售后带来麻烦。
解决这个问题的思路一般是在产品中标识硬件差异。软件通过获取差异信息,自动适配不同的处理,例如加载不同的驱动,进入不同的分支流程等。常见的方案有:
1)在产品中附加一个硬件特征来标识产品之间的硬件配置差异。例如附加一个电压信号,用不同的电压区间标识不同的产品硬件配置。假定电压信号范围为0V~3V,约定每0.1V区间标识一种硬件配置,则0~0.1V标识了硬件配置1,0.1~0.2V标识了硬件配置2,依此类推。
2)软件对外提供配置硬件信息的接口。例如底层提供一个硬件配置的位图,位图中的每个比特位对应一个硬件,且每个比特位的内容为对应的硬件是否进行使用,由应用层来配置需要使用哪些硬件。
常见处理方案的缺点:
1)附加硬件特征方式最大的缺点是增加了产品成本。
2)软件对外提供配置硬件信息接口的方式,以所述的硬件配置位图为例。一是能够记录的信息太有限,只能记录对应硬件有或无。二是不够直接,查询时要先把位图转换成硬件信息的内容,配置时要先把硬件信息转换成位图。三是牵涉太多方,底层要约定好位图与硬件的关系,应用层要了解硬件信息才能准确进行配置。
上述解决方案仅仅从硬件或软件的角度来思考,所能达到的效果比较有限。
发明内容
本发明要解决的技术问题,在于提供一种通过文本配置硬件信息的方法,从产品的高度来建立一整套解决方案,优化整个产品周期,简洁直观、可配置丰富的信息,且实现软硬件分离。
本发明是这样实现的:一种通过文本配置硬件信息的方法,包括如下步骤:
步骤1、在产品开发阶段,根据产品的硬件配置情况编辑硬件信息,所述硬件信息采用INI格式的文本文件编辑并存储;
步骤2、在产品发布阶段,将存有硬件信息的INI文件作为硬件设计文件的一个组成部分进行发布,一个产品料号对应一个INI文件;
步骤3、在生产测试阶段,先导入INI文件,再进行后续测试,并确保仅在生产测试阶段才能导入INI文件;
步骤4、在软件运行阶段,通过对INI文件进行解析得到硬件配置信息,根据硬件配置信息加载不同硬件驱动或进入不同的分支处理流程。
进一步的,还包括步骤5、在产品售后维护阶段,直接从产品内导出INI文件查看硬件配置信息进行产品维护。
进一步的,所述INI文件格式包括:
采用section作为节,用于记录配置项的类别;
采用name作为键,用于记录配置项的名称;
采用value作为值,用于记录配置项的值,value支持十进制或十六进制的数值或字符串;
采用分号进行注解,分号后的文字直至该行结尾都为注解。
进一步的,所述的INI文件存储在产品的非易失性存储器内预先规划的一个独立分区。
进一步的,所述步骤3中INI文件的导入方式具体为:所述INI文件在嵌入式系统中bootloader阶段导入,由bootloader负责从外部获取INI文件,并将其烧录到预先规划的独立分区内,设置进入烧录流程的时机包括:规划独立分区内的INI文件不存在或INI文件损坏或有外部信号通知。
进一步的,所述外部信号通知仅在厂内生产阶段生成。
进一步的,所述步骤4中“对INI文件进行解析得到硬件配置信息”具体如下:在bootloader阶段进行解析操作,将INI文件解析成一定的数据结构的硬件信息,在bootloader运行完后,将此数据结构作为参数传递给system,system在启动阶段获取到硬件信息,利用硬件信息的数据结构封装出接口,提供给对应的软件使用。
进一步的,一个产品料号对应一个INI文件。
本发明具有如下优点:
1、简洁直观,产品内规划的独立分区直接存储了INI文本原文,配置产品的硬件信息只要修改对应的INI文件即可,阅读硬件信息也只要直接导出INI文本原文。不管是编辑导入还是获取阅读硬件信息,都不需要经过程序或工具的一层转换。这种人机交互方式,简洁直观,需要的额外负担又最小。
2、能够配置的信息更丰富,除了能够配置某个配件的有无,还能够用不同的数值指代不同的配件型号。比如可用十六进制配置版本号,用字符串记录产品BOM编号等。
3、软硬件分离,硬件负责硬件信息的编辑和发布,生产负责硬件信息的导入,软件负责硬件信息的解析和使用,从逻辑上看,硬件信息就相当于产品硬件的一个组成部分,软硬件有效隔离,有利于研发管理。
4、简化产品周期内的工作,软件方面:节省了软件开发及维护的资源投入,例如,省去了产品间同步代码的工作;节省了软件发布的成本,例如,新软件发布后,所有同类产品(即同种采用此软件进行生产的产品)的软件也自动更新;生产售后方面:可以促进不同产品生产测试方案的一致性,降低工人的学习成本,提高生产效率,售后人员不用担心因为误操作引起硬件信息错误或者丢失,可以很直观的获取到产品详细的硬件配置信息。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
具体实施方式
如图1所示,本发明是这样实现的:一种通过文本配置硬件信息的方法,包括如下步骤:
步骤1、在产品开发阶段,根据产品的硬件配置情况编辑硬件信息,所述硬件信息采用INI格式的文本文件编辑并存储;
步骤2、在产品发布阶段,将存有硬件信息的INI文件作为硬件设计文件的一个组成部分进行发布,一个产品料号对应一个INI文件;
步骤3、在生产测试阶段,先导入INI文件,再进行后续测试,并确保仅在生产测试阶段才能导入INI文件,其中,确保仅在生产测试阶段才能导入INI文件可采用OTP的存储区,在生产阶段导入一次后就再也无法更新,或采用软硬件结合的方案,软件能够识别当前在生产状态,则允许更新INI文件,非生产状态不允许更新,或者采用纯软件方案,即通过一种管控工具,只提供给生产使用;
步骤4、在软件运行阶段,通过对INI文件进行解析得到硬件配置信息,根据硬件配置信息加载不同硬件驱动或进入不同的分支处理流程。
较佳的,还包括步骤5、在产品售后维护阶段,直接从产品内导出INI文件查看硬件配置信息进行产品维护。
较佳的,所述INI文件格式包括:
采用section作为节,用于记录配置项的类别;
采用name作为键,用于记录配置项的名称;
采用value作为值,用于记录配置项的值,value支持十进制或十六进制的数值或字符串;
采用分号进行注解,分号后的文字直至该行结尾都为注解。
较佳的,所述步骤3中INI文件的导入方式具体为:所述INI文件在嵌入式系统中bootloader阶段导入,由bootloader负责从外部获取INI文件,并将其烧录到预先规划的独立分区内,设置进入烧录流程的时机包括:规划独立分区内的INI文件不存在或INI文件损坏或有外部信号通知。
较佳的,所述外部信号通知仅在厂内生产阶段生成。
较佳的,所述步骤4中“对INI文件进行解析得到硬件配置信息”具体如下:在bootloader阶段进行解析操作,将INI文件解析成一定的数据结构的硬件信息,在bootloader运行完后,将此数据结构作为参数传递给system,system在启动阶段获取到硬件信息,利用硬件信息的数据结构封装出接口,提供给对应的软件使用;
其中,数据结构的实现采用一结构体(如CHardInfo)对应INI文件中一参数项,结合数组或链表将这些参数项进行管理,并提供一个用于获取配置项的值的函数。
下面结合一具体实施例对本发明做进一步说明:
单维度从硬件或软件的角度来思考得到的解决方案所能达到的效果比较有限,本发明从整个产品周期出发,使得方案的效果最优化。
本发明的一种通过文本配置硬件信息的方法,包括如下步骤:
步骤1、在产品开发阶段,由硬件部门负责根据产品的硬件配置情况编辑硬件信息,所述硬件信息采用INI格式的文本文件编辑并存储,所述INI文件格式包括:采用section作为节,用于记录配置项的类别;采用name作为键,用于记录配置项的名称;采用value作为值,用于记录配置项的值,value支持十进制或十六进制的数值或字符串;采用分号进行注解,分号后的文字直至该行结尾都为注解,一个INI文件由节、键、值组成,可表示成:
节
[section]
参数(键=值)
name=value;
对于稍复杂些的产品,其可配置项可能会超过百项,简单的逐项罗列看起来很混乱,通过section可以对配置项进行有效分类,方便阅读和查找编辑,比如可用“[COMMUNICATION]”指示此节存放的是通讯模块类;比如name为“lcd”,一看这个名称都知道指代液晶屏,value支持十进制或十六进制的数值(数字前有“0x”前缀则是十六进制,无此前缀则是十进制数),或者字符串,一般情况下使用十进制,有的信息用十六进制更直观,比如版本号“version=0x10”代表V1.0版本,支持字符串的话,还可以用配置文件记录一些简短但很有用的信息,如“BOM=55915--11--”,代表此产品的BOM编号。除特殊情况外,当value是数值的时候,0值代表无对应硬件,比如“lcd=0”,即代表此设备不带液晶屏。非0值代表有对应硬件,且不同值指代不同的硬件型号。例如,可以用“lcd=1”指示当前设备配置的是ST7789液晶屏,“lcd=2”指示当前设备配置的是HX8347液晶屏。想要知道值与lcd型号的对应关系可根据ini文件的注解获得,在注解文件中说明用到的数值与配件型号的对应关系。
在产品的非易失性存储器内规划一个独立分区,用于存储所述的INI文本,即,通过分区设计,使其在逻辑上与软件实现隔离。相当于,从软件角度看,硬件信息就是产品硬件的一个部分,软件仅需要通过从分区中读取INI文本来获取硬件信息。
步骤2、在产品发布阶段,将存有硬件信息的INI文件作为硬件设计文件的一个组成部分进行发布,一般的,一个产品料号对应一个INI文件;
步骤3、在生产测试阶段,先导入INI文件,再进行后续的板卡及整机等测试,并确保仅在生产测试阶段才能导入INI文件,使得产品在出厂后不存在硬件信息被误改的情况;例如,在嵌入式系统中,产品程序一般是分层设计的,至下而上设有bootloader,system,app三层,即产品开机的时候先运行bootloader,bootloader引导system,system再启动app。所述INI文件导入时,由bootloader负责从外部获取INI文件,并将其烧录到预先规划的独立分区内,进入烧录流程的时机可能是:规划独立分区内的INI文件不存在或INI文件损坏或有外部信号通知,所述外部信号通知仅在厂内生产阶段生成,以确保烧录操作控制仅在厂内进行;
步骤4、在软件运行阶段,通过对INI文件进行解析得到硬件配置信息,根据硬件配置信息加载不同硬件驱动或进入不同的分支处理流程,软件将不同产品的代码整合在一起管理,使得不同产品可以共用一套软件,对不同的产品,生产备货可使用统一的生产软件,配置上不同的INI文件,若涉及产品硬件整改,只需要在厂内更新产品的INI文件即可;具体的在bootloader阶段进行解析操作,将INI文件解析成一定的数据结构的硬件信息,在bootloader运行完后,将此数据结构作为参数传递给system,system在启动阶段获取到硬件信息,利用硬件信息的数据结构封装出接口,提供给对应的软件使用;其中,数据结构的实现采用一结构体CHardInfo对应INI文件中一参数项,结合数组或链表将这些参数项进行管理,并提供一个用于获取配置项的值的函数;
由于规划的独立分区中存储的是INI文件原文,使用前就要先解析成程序可以直接识别的数据结构。解析操作在bootloader阶段进行,并且最好只在这个阶段进行。bootloader在运行前期就将INI文件解析好,以尽早获取到硬件信息的数据结构。bootloader运行完,将此数据结构作为参数传递给system,这样,system在启动阶段就能获取到硬件信息。System利用硬件信息的数据结构封装出接口,提供给app使用。App则从底层提供的接口获取硬件信息。这样,INI文件就只需要解析一次,使程序的每一层都能够尽早的获取到硬件信息。通过这样的设计,程序可做成一套。将INI文件中的所有参数解析成方便程序进行访问的数据结构,如:
每个CHardInfo结构体对应INI文件中的一个参数项,再结合数组或链表将这些项连接管理起来。然后提供一个函数用于获取配置项的值,接口可以定义成这样:
unsigned int get_hardinfo_item(const char*param_name)
比如要查询lcd的配置值,则调用方式为get_hardinfo_item(“lcd”)。
步骤5、在产品售后维护阶段,直接从产品内导出INI文件查看硬件配置信息查看硬件配置信息并进行产品维护。
本发明方法所采用的编辑和存储的文本简洁直观,在产品内规划的独立分区直接存储了INI文本原文,配置产品的硬件信息只要修改对应的INI文件即可,阅读硬件信息也只要直接导出INI文本原文。不管是编辑导入还是获取阅读硬件信息,都不需要经过程序或工具的一层转换。这种人机交互方式,简洁直观,需要的额外负担又最小。本发明的文件可用于存储配置丰富的硬件信息,除了能够配置某个配件的有无,还能够用不同的数值指代不同的配件型号。比如可用十六进制配置版本号,用字符串记录产品BOM编号等。本发明采用软硬件分离管理,硬件负责硬件信息的编辑和发布,生产负责硬件信息的导入,软件负责硬件信息的解析和使用,从逻辑上看,硬件信息就相当于产品硬件的一个组成部分,软硬件有效隔离,有利于研发管理。另外本发明的方法整体简化了产品周期内的工作,从产品层面去解决问题,效果最优化,软件方面:节省了软件开发及维护的资源投入,例如,省去了产品间同步代码的工作;节省了软件发布的成本,例如,新软件发布后,所有同类产品(即同种采用此软件进行生产的产品)的软件也自动更新;生产售后方面:可以促进不同产品生产测试方案的一致性,降低工人的学习成本,提高生产效率,售后人员不用担心因为误操作引起硬件信息错误或者丢失,可以很直观的获取到产品详细的硬件配置信息。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (6)
1.一种通过文本配置硬件信息的方法,其特征在于:包括如下步骤:
步骤1、在产品开发阶段,根据产品的硬件配置情况编辑硬件信息,所述硬件信息采用INI格式的文本文件编辑并存储,一个产品料号对应一个INI文件;
步骤2、在产品发布阶段,将存有硬件信息的INI文件作为硬件设计文件的一个组成部分进行发布;
步骤3、在生产测试阶段,先导入INI文件,再进行后续测试,并确保仅在生产测试阶段才能导入INI文件;
步骤4、在软件运行阶段,通过对INI文件进行解析得到硬件配置信息,根据硬件配置信息加载不同硬件驱动或进入不同的分支处理流程;
所述步骤4中“对INI文件进行解析得到硬件配置信息”具体如下:在bootloader阶段进行解析操作,将INI文件解析成一定的数据结构的硬件信息,在bootloader运行完后,将此数据结构作为参数传递给system,system在启动阶段获取到硬件信息,利用硬件信息的数据结构封装出接口,提供给对应的软件使用。
2.根据权利要求1所述的一种通过文本配置硬件信息的方法,其特征在于:还包括步骤5、在产品售后维护阶段,直接从产品内导出INI文件查看硬件配置信息进行产品维护。
3.根据权利要求1所述的一种通过文本配置硬件信息的方法,其特征在于:所述INI文件格式包括:
采用section作为节,用于记录配置项的类别;
采用name作为键,用于记录配置项的名称;
采用value作为值,用于记录配置项的值,value支持十进制或十六进制的数值或字符串;
采用分号进行注解,分号后的文字直至行结尾都为注解。
4.根据权利要求1所述的一种通过文本配置硬件信息的方法,其特征在于:所述的INI文件存储在产品的非易失性存储器内预先规划的一个独立分区。
5.根据权利要求4所述的一种通过文本配置硬件信息的方法,其特征在于:所述步骤3中INI文件的导入方式具体为:所述INI文件在嵌入式系统中bootloader阶段导入,由bootloader负责从外部获取INI文件,并将其烧录到预先规划的独立分区内,设置进入烧录流程的时机包括:规划独立分区内的INI文件不存在或INI文件损坏或有外部信号通知。
6.根据权利要求5所述的一种通过文本配置硬件信息的方法,其特征在于:所述外部信号通知仅在厂内生产阶段生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810461466.XA CN108664276B (zh) | 2018-05-15 | 2018-05-15 | 一种通过文本配置硬件信息的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810461466.XA CN108664276B (zh) | 2018-05-15 | 2018-05-15 | 一种通过文本配置硬件信息的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664276A CN108664276A (zh) | 2018-10-16 |
CN108664276B true CN108664276B (zh) | 2021-11-09 |
Family
ID=63779567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810461466.XA Active CN108664276B (zh) | 2018-05-15 | 2018-05-15 | 一种通过文本配置硬件信息的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664276B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111722880B (zh) * | 2020-05-11 | 2024-02-09 | 深圳市共进电子股份有限公司 | 一种设备生产方法、装置、终端设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314364B (zh) * | 2011-08-08 | 2014-08-20 | 北京登合科技有限公司 | 一种自动适配移动终端的方法 |
CN104198868A (zh) * | 2014-09-23 | 2014-12-10 | 厦门雅迅网络股份有限公司 | 一种可灵活扩展和动态配置的智能工装 |
CN104378694A (zh) * | 2014-11-13 | 2015-02-25 | 康佳集团股份有限公司 | 一种智能电视的参数配置方法及系统 |
CN104602121A (zh) * | 2014-12-09 | 2015-05-06 | 四川长虹电器股份有限公司 | 一种智能电视软硬件分离的方法 |
CN105357289B (zh) * | 2015-10-23 | 2019-10-22 | 上海斐讯数据通信技术有限公司 | 路由器的配置方法、软件镜像文件的生成方法及系统 |
-
2018
- 2018-05-15 CN CN201810461466.XA patent/CN108664276B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108664276A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210405629A1 (en) | System and method for interoperable communication of an automation system component with multiple information sources | |
CN104317843B (zh) | 一种数据同步etl系统 | |
CN104133772B (zh) | 一种自动生成测试数据的方法 | |
CN102968306B (zh) | 一种基于数据模型驱动的代码自动生成方法和系统 | |
WO2019140978A1 (zh) | 一种屏幕参数配置系统 | |
CN103617047A (zh) | 一种业务流程开发方法、装置及处理器 | |
EP2293203A1 (en) | Methods and apparatus for querying process control data | |
US7257626B2 (en) | Network device management method, network device management system, and process program for managing network device | |
CN111078702B (zh) | 一种sql语句分类管理及统一查询方法和装置 | |
CN102867010A (zh) | 取出、存储以及供给设备定义文件信息的系统和方法 | |
US9098497B1 (en) | Methods and systems for building a search service application | |
CN108536435B (zh) | 一种自动生成can通信代码的方法 | |
CN103227779A (zh) | 一种楼宇设备的通信控制方法、系统及装置 | |
CN105740723A (zh) | 一种安全基线的管理方法与系统 | |
CN112884413A (zh) | 一种物料清单生成方法、系统、设备及存储介质 | |
CN108664276B (zh) | 一种通过文本配置硬件信息的方法 | |
WO2021012909A1 (zh) | 数据导出方法、装置、计算机设备和存储介质 | |
CN103544298A (zh) | 组件的日志分析方法和分析装置 | |
WO2006135607A2 (en) | Method and system for rapid deployment and development of application and test software and documentation | |
CN101686264B (zh) | 匹配电子邮箱地址的方法和装置 | |
CN104679740B (zh) | 数据处理系统 | |
CN104573101A (zh) | 一种基于规则路由的数据流实时分类方法及系统 | |
CN113282284A (zh) | 一种适配多定制化项目的打包方法及打包系统 | |
CN111880787A (zh) | 燃机控制软件分布式io部件的组态化开发方法 | |
CN102310950B (zh) | 试验智判系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |