CN1731354A - Pc架构嵌入式系统中上电自检的设计方法 - Google Patents
Pc架构嵌入式系统中上电自检的设计方法 Download PDFInfo
- Publication number
- CN1731354A CN1731354A CN 200510019296 CN200510019296A CN1731354A CN 1731354 A CN1731354 A CN 1731354A CN 200510019296 CN200510019296 CN 200510019296 CN 200510019296 A CN200510019296 A CN 200510019296A CN 1731354 A CN1731354 A CN 1731354A
- Authority
- CN
- China
- Prior art keywords
- initialization
- data
- post
- initial
- address
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种PC架构嵌入式系统中上电自检的设计方法,其特征在于:由以下步骤组成,(1)按照Chipset和SuperI/O初始化信息的数据类型和操作类型定义数据结构,按定义将初始化信息格式化为初始化数据;(2)将初始化数据存放在初始化数据表格区;(3)初始化数据表格区中的每组数据表格起始地址采用动态分配,设置初始化数据向量表顺序存放每组数据表格的入口地址;(4)按初始化信息的数据结构设置相应的初始化子程序。采用本发明将POST流程的检测和初始化代码与初始化数据分离后,系统化结构化的设计能够简化BIOS配置过程对核心代码的修改和维护,提高配置速度,缩短开发周期,从而使配置工作更加简单高效,并且也有利于降低配置修改可能带来的风险。
Description
技术领域
本发明涉及计算机开发领域,尤其是一种PC架构嵌入式系统中上电自检的设计方法。
背景技术
嵌入式计算机系统随着其应用方式不同,可有不同的体系结构形式。PC架构的嵌入式计算机,因其采用与标准PC相同的硬件结构、软件操作系统和软件开发平台,开发方便,应用程序设计资源丰富,因此在嵌入式系统中占据越来越大的份额,尤其在工业控制和军事领域得到了广泛的应用。
不同于没有操作系统、功能单一的消费类电子产品,PC架构的嵌入式计算机的结构由PC(个人用计算机)而来,其功能复杂,初始化硬件和引导操作系统仍然由BIOS(基本输入输出系统)来完成。但一个嵌入式系统的BIOS并不需要像通用PC BIOS那样具有那么多的灵活性,因为通常它仅需处理某种特定的硬件配置方案。因此,嵌入式BIOS是在传统BIOS的基础上,移除了许多嵌入式平台非必要的功能,为PC架构的嵌入式计算机系统所定制的基本输入输出系统。
在这一类嵌入式计算机的开发过程中,BIOS的配置是一个非常重要的环节,决定着整个嵌入式产品的开发周期长短和上市时间。嵌入式BIOS与传统BIOS一样,其工作可以由两部分来概括:POST(Post On Self Test上电自检)流程和软件中断服务例程。软件中断服务例程是为操作系统或应用系统提供服务的程序,这是一类通用的程序,对于任何PC架构的系统来说,它们具有相同的程序、接口和功能。POST流程通常称为上电自检,它负责上电后对系统所有硬件和寄存器的检测和初始化工作,最后调用INT 19H装入引导设备的主引导扇区,然后将控制权交给主引导程序,引导操作系统。因此,BIOS的配置过程实际上就是修改POST流程的过程。参见图1,本发明提供了详细的POST流程以供参考:POST入口;Chipset初始化;低64KB内存检测;建立堆栈;CPU参数设置;SuperI/O初始化;8254(定时器)、DMA(直接内存访问控制器)测试;键盘控制器测试及初始化;定时器、DMA和8259(中断控制器)初始化;基本内存测试;中断向量表初始化;即插即用设备初始化;VGA(视频图形适配器)BIOS初始化;扩展内存检测;RTC(实时时钟)检测和标准接口初始化;扫描扩展ROM;串、并口检测和标准接口初始化;软盘、硬盘检测和标准接口初始化;时钟测试;调用INT 19H引导操作系统。
在采用PC架构的计算机系统中,造成BIOS差异的原因,除了CPU规格和系统配置不同外,构成系统的Chipset(芯片组)和SuperI/O(超级输入输出)是最关键的因素,主板的不同功能是通过设置Chipset和SuperI/O中的寄存器来实现的,这类寄存器至少有几十个。具体的说,Chipset初始化部分的工作则包括Cache寄存器初始化、Shadow寄存器初始化、内存类型检测及内存寄存器初始化、ISA检测及ISA配置寄存器初始化、PCI配置寄存器初始化等;SuperI/O初始化部分的工作包括软驱I/O初始化、键盘I/O初始化、RTCI/O初始化、串口I/O初始化、并口I/O初始化等等。因此Chipset和SuperI/O部分的POST配置任务非常繁重。即使是为同一代CPU系列所开发的BIOS,由于Chipset和SuperI/O没有统一的国际标准,因此各厂家在设计时即使对同一功能的寄存器其设置也各不相同。现在的BIOS POST流程均是针对某一具体的硬件配置设计的,如果需要为不同嵌入式系统配置BIOS时,需要大量地修改POST流程中Chipset和SuperI/O有关的源程序,甚至可能对整个程序的结构要进行调整,这样不仅使得BIOS的开发与配置工作量相当大、耗费的时间非常长,而且容易出错。
如何根据嵌入式系统的特点,修改POST流程结构,使BIOS的配置更加快速、安全,缩短开发周期,尽量减少人力,成为目前有待解决的重要课题。
发明内容
本发明的目的是提供一种令嵌入式BIOS易于配置的PC架构嵌入式系统中上电自检的设计方法。
为达到上述目的,本发明设计了以下步骤:(1)按照Chipset和SuperI/O初始化信息的数据类型和操作类型定义数据结构,按定义将初始化信息格式化为初始化数据;(2)将初始化数据存放在初始化数据表格区;(3)初始化数据表格区中的每组数据表格起始地址采用动态分配,设置初始化数据向量表顺序存放每组数据表格的入口地址;(4)按初始化信息的数据结构设置相应的初始化子程序。
而且,设置实现初始化数据和初始化子程序之间映射的初始化子程序向量表。
而且,所述数据结构包括类型编码、地址、数据,类型编码由数据类型代码和操作类型代码组合形成。
而且,初始化数据表格区中的初始化数据按POST执行顺序相应存放。
本发明抛弃传统BIOS的POST流程设计方法,将POST流程的检测和初始化代码与初始化数据分离,以简化配置过程对核心代码的维护,有效地提高嵌入式BIOS的配置速度,缩短了BIOS的开发周期,从而使配置工作更加简单高效,有助于降低配置修改风险,提高嵌入式系统的系统运行安全性。
附图说明
图1POST流程图;
图2本发明实施例示意图;
图3本发明实施例类型编码定义原理图;
图4本发明实施例数据类型定义原理图;
图5本发明实施例操作类型定义原理图;
图6本发明实施例初始化程序流程图。
具体实施方式
参见图2~6,本发明提供了一种PC架构嵌入式系统中POST的结构化设计方法,由以下步骤组成:(1)按照Chipset和SuperI/O初始化信息的数据类型和操作类型定义数据结构,按定义将初始化信息格式化为初始化数据;(2)将初始化数据存放在初始化数据表格区;(3)初始化数据表格区中的每组数据表格起始地址采用动态分配,设置初始化数据向量表顺序存放每组数据表格的入口地址;(4)按初始化信息的数据结构设置相应的初始化子程序。POST流程实际上是由一系列的检测工作和一些把特定的数据写入指定硬件寄存器的指令序列来组成的。除了Chipset和SuperI/O的初始化,以及少量有关CPU的参数设置外,其它过程都是对PC标准部件的操作,在对不同平台的BIOS进行配置时,对标准部件的初始化是不必修改的,配置过程实际上就是针对Chipset和SuperI/O初始化部份的重新设计。
本发明首先通过对BIOS核心代码的分析,将初始化信息进行抽象处理,以便系统化标准化的存放处理Chipset和SuperI/O初始化信息,简化PC架构的嵌入式系统BIOS配置中的程序修改工作。由此,本发明根据Chipset和SuperI/O初始化信息的数据类型和操作类型设计出数据结构。具体实施时按照数据和操作进行分类设计,其中,数据可以分为三种类型(8位、16位、32位),操作可以分为六种类型(I/O直接地址全设置、I/O直接地址按位设置、通过I/O索引地址全设置、通过I/O索引地址按位设置、存储器直接地址全设置、存储器直接地址按位设置)。然后按数据结构将初始化信息格式化成初始化数据,数据类型和操作类型的组合共有18种可能,因此,系统BIOS代码段要提供18种相应的初始化子程序,对每段初始化数据进行处理。格式化后将初始化数据存放在初始化数据表格区,为了节约存储空间,初始化数据表格区中的每组数据表格起始地址采用动态分配,通过初始化数据向量表来得到这组数据表格在内存中的绝对地址。最后,在系统开始运行时,POST流程代码操作,由初始化子程序处理通过初始化数据向量表映射的初始化数据。
为了准确进行初始化处理,本发明设置实现初始化数据和初始化子程序之间映射的初始化子程序向量表。初始化子程序的序号必须与类型编码一致,通过初始化子程序向量表,POST流程调用初始化子程序对不同操作类型和数据类型的初始化数据进行处理。通过初始化数据向量表和初始化子程序向量表,实现了POST流程的程序代码和数据的完全分离,检测和初始化代码在程序代码区,初始化数据在数据区,这样对于不同的配置,只需修改初始化数据向量表和初始化数据表格区,不必再对初始化代码进行修改。具体实施时初始化子程序向量表可以预留一些单元,一方面是为了简化向量表的查询,另一方面也是留待以后扩充新的子程序。
为了提供能够完整表达信息类型的数据结构,所述数据结构包括类型编码、地址、数据,类型编码由数据类型代码和操作类型代码组合形成。在具体实施中,为便于处理,可将数据类型和操作类型组合为一个字节,形成类型编码,而随后定义的所有数据结构都是由类型编码加上地址和数据组成。本发明实施例的类型编码定义第0~3位为操作类型(0000表示I/O直接地址全设置、0001表示I/O直接地址按位设置、0010表示通过I/O索引地址全设置、0011表示通过I/O索引地址按位设置、0100表示存储器直接地址全设置、0101表示存储器直接地址按位设置),第4、5位为数据类型(00表示8位、01表示16位、10表示32位)。
为了高效条理地进行POST流程设计,初始化数据表格区中的初始化数据按POST执行顺序相应存放。每个不同应用的系统虽然其配置不同,采用不同的Chipset和Super I/O,由于采用的PC架构系统的存储器及标准I/O的定义示相同的,所以POST的执行顺序是一致的,在设计中将执行顺序固定,按定义将初始化数据格式化后,根据POST的顺序存放在初始化数据表格区,有助于建立易懂、易用、修改方便、执行稳定的设计标准。由此,初始化数据向量表中顺序存放的是按POST执行顺序进行初始化的数据表格的入口地址,例如本发明实施例:初始化数据向量表中存放的各表格入口地址是固定存放的,如第一次初始化表格入口地址固定存放在0FA00:0H处,第二次初始化表格入口地址固定存放在0FA00:2H处,第N次初始化表格入口地址类推存放在0FA00:2nH处。初始化数据向量表位于0FA00H段开始处。
按照本发明的POST流程结构化设计方法,本发明实施例的嵌入式计算机系统BIOS包括有系统BIOS代码部分、初始化数据表格区(存放SuperI/O_datal_table、Chipset_datal_table、Chipset_datal_table等以表格形式存放的数据)、初始化数据向量表(存放分别指向初始化数据表格区所存数据的各项入口地址)等。系统BIOS代码部分包括软件中断服务例程、POST流程的各项标准部件检测和初始化工作,以及对Chipset和SuperI/O的各项检测和调用初始化程序工作(初始化子程序向量表也在其中)。在BIOS的POST流程代码进行了如图2的结构化设计之后,为不同的平台配置嵌入式BIOS时,设计人员只需按本发明定义的数据结构,将该平台的Chipset和SuperI/O数据进行处理存入初始化数据表格区,并修改对应的初始化数据向量表。当系统上电后,BIOS按POST流程进行各部件的检测和初始化,当进行到Chipset和SupurI/O部件时,程序根据初始化顺序,由初始化程序调用相应的初始化子程序对初始化数据进行处理,完成对Chipset和SupurI/O部件的初始化,接着继续进行各标准部件的检测和初始化,直至引导操作系统,完成BIOS的前台工作。这样,就实现了不修改POST代码,只修改数据,快速、安全配置BIOS的目的。
本发明提供了初始化程序流程以便实施:如图6中所示,进入初始化程序入口后,开始读初始化数据第一项——类型编码(AL),判断是否为OFFH,这是表格结束标志,结果为是则返回,结果为否则根据类型编码调用相应的初始化子程序,该子程序执行完后返回继续进行下一项初始化。本发明实施例的初始化子程序为所定义的数据结构而设计,然后根据Chipset硬件的具体初始化要求进行处理:对Chipset的寄存器寻址,读出Chipset的寄存器存储数据,屏蔽不需修改的数据位,对需要修改的数据位修改操作并由此对Chipset的寄存器进行初始化设置,然后返回初始化程序。
Claims (5)
1.一种PC架构嵌入式系统中上电自检的设计方法,其特征在于:包括以下步骤,
(1)按照Chipset和SuperI/O初始化信息的数据类型和操作类型定义数据结构,按定义将初始化信息格式化为初始化数据;
(2)将初始化数据存放在初始化数据表格区;
(3)初始化数据表格区中的每组数据表格起始地址采用动态分配,设置初始化数据向量表顺序存放每组数据表格的入口地址;
(4)按初始化信息的数据结构设置相应的初始化子程序。
2.如权利要求1所述的设计方法,其特征在于:设置实现初始化数据和初始化子程序之间映射的初始化子程序向量表。
3.如权利要求1或2所述的设计方法,其特征在于:所述数据结构包括类型编码、地址、数据,类型编码由数据类型代码和操作类型代码组合形成。
4.如权利要求1或2所述的设计方法,其特征在于:初始化数据表格区中的初始化数据按POST执行顺序相应存放。
5.如权利要求3所述的结构化设计方法,其特征在于:初始化数据表格区中的初始化数据按POST执行顺序相应存放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100192962A CN100392591C (zh) | 2005-08-16 | 2005-08-16 | Pc架构嵌入式系统中上电自检的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100192962A CN100392591C (zh) | 2005-08-16 | 2005-08-16 | Pc架构嵌入式系统中上电自检的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1731354A true CN1731354A (zh) | 2006-02-08 |
CN100392591C CN100392591C (zh) | 2008-06-04 |
Family
ID=35963715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100192962A Expired - Fee Related CN100392591C (zh) | 2005-08-16 | 2005-08-16 | Pc架构嵌入式系统中上电自检的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100392591C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435107C (zh) * | 2006-02-11 | 2008-11-19 | 深圳市顶星数码网络技术有限公司 | 上电时序测试装置及方法 |
CN103176875A (zh) * | 2013-03-19 | 2013-06-26 | 卡斯柯信号有限公司 | 一种嵌入式系统上电自检方法 |
CN106445570A (zh) * | 2015-08-08 | 2017-02-22 | 昆达电脑科技(昆山)有限公司 | 超级输入输出芯片的设置类型辨识方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5379342A (en) * | 1993-01-07 | 1995-01-03 | International Business Machines Corp. | Method and apparatus for providing enhanced data verification in a computer system |
US6457069B1 (en) * | 1998-07-23 | 2002-09-24 | Compaq Information Technologies Group, L.P. | Method and apparatus for providing support for dynamic resource assignment and configuration of peripheral devices when enabling or disabling plug-and-play aware operating systems |
JP3474139B2 (ja) * | 2000-01-17 | 2003-12-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータの電源制御方法、電源制御装置及びコンピュータ |
CN1220942C (zh) * | 2002-09-20 | 2005-09-28 | 联想(北京)有限公司 | 计算机检测卡 |
-
2005
- 2005-08-16 CN CNB2005100192962A patent/CN100392591C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435107C (zh) * | 2006-02-11 | 2008-11-19 | 深圳市顶星数码网络技术有限公司 | 上电时序测试装置及方法 |
CN103176875A (zh) * | 2013-03-19 | 2013-06-26 | 卡斯柯信号有限公司 | 一种嵌入式系统上电自检方法 |
CN106445570A (zh) * | 2015-08-08 | 2017-02-22 | 昆达电脑科技(昆山)有限公司 | 超级输入输出芯片的设置类型辨识方法 |
CN106445570B (zh) * | 2015-08-08 | 2019-12-03 | 昆达电脑科技(昆山)有限公司 | 超级输入输出芯片的设置类型辨识方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100392591C (zh) | 2008-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6067641A (en) | Demand-based generation of symbolic information | |
US5325533A (en) | Engineering system for modeling computer programs | |
EP0693193B1 (en) | Incremental linker system | |
US9405653B1 (en) | Filtering data frames using program instrumentation | |
US20040255267A1 (en) | Systems and methods for employing tagged types in a dynamic runtime environment | |
US20090083271A1 (en) | Automatically Adding Bytecode to a Software Application to Determine Database Access Information | |
CN104156234A (zh) | 启动多核处理器、bootloader大小端模式自适应的方法及装置 | |
CN106909399A (zh) | 一种基于服务器计算机的uefi固件实现方法 | |
CN101826017B (zh) | 一种面向粒的编程集成开发系统 | |
CN100392591C (zh) | Pc架构嵌入式系统中上电自检的设计方法 | |
US10275154B2 (en) | Building memory layouts in software programs | |
Dasgupta | Computer design and description languages | |
CN103218250B (zh) | 一种处理器模拟方法 | |
US20030229740A1 (en) | Accessing resources in a microprocessor having resources of varying scope | |
US9552192B2 (en) | Context-based generation of memory layouts in software programs | |
US8661425B1 (en) | Method, apparatus, and computer-readable medium for storing data associated with a firmware program | |
CN106909347A (zh) | 一种便携式计算机的uefi固件实现方法 | |
CN102508697B (zh) | 一种Java实现8位嵌入式CPU仿真运行环境的方法 | |
CN100498716C (zh) | 一种用于处理器仿真模型中的系统调用转换直通通道方法 | |
US8135943B1 (en) | Method, apparatus, and computer-readable medium for generating a dispatching function | |
CN114647451A (zh) | 测试设备驱动器及驱动方法 | |
CN1219254C (zh) | 一种用于51核ic卡的硬件仿真系统 | |
CN106909345A (zh) | 一种基于台式计算机的uefi固件实现方法 | |
CN1900911A (zh) | 双内核半实物仿真系统 | |
Parson et al. | A framework for simulating heterogeneous virtual processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080604 Termination date: 20140816 |
|
EXPY | Termination of patent right or utility model |