CN110007910A - 系统开发方法、系统引导方法及装置 - Google Patents

系统开发方法、系统引导方法及装置 Download PDF

Info

Publication number
CN110007910A
CN110007910A CN201910250095.5A CN201910250095A CN110007910A CN 110007910 A CN110007910 A CN 110007910A CN 201910250095 A CN201910250095 A CN 201910250095A CN 110007910 A CN110007910 A CN 110007910A
Authority
CN
China
Prior art keywords
file
hardware
guiding device
programmable
chip
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.)
Pending
Application number
CN201910250095.5A
Other languages
English (en)
Inventor
李泓渊
周晨露
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Ren Tong Electronic Technology Co Ltd
Original Assignee
Shanghai Ren Tong Electronic Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Ren Tong Electronic Technology Co Ltd filed Critical Shanghai Ren Tong Electronic Technology Co Ltd
Priority to CN201910250095.5A priority Critical patent/CN110007910A/zh
Publication of CN110007910A publication Critical patent/CN110007910A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了系统开发方法、系统引导方法及装置,在可编程片上系统的开发过程中,将第一阶段引导器和第二阶段引导器打包成一个文件,这个文件将写入非易失性存储器中;将硬件配置文件、Linux内核文件、设备树文件和根文件系统文件分别作为一个单独的文件存储。因为硬件配置文件与第一阶段引导器及第二阶段引导器相互隔离,所以硬件开发人员在硬件开发过程修改硬件后,只需提供修改后的硬件配置文件,使软件系统能够加载修改后的硬件配置文件即可,软件系统加载修改后的硬件配置文件的过程不需要软件开发人员修改相应的软件文件,实现了硬件开发和软件开发并行开发,极大地提高了系统开发效率。

Description

系统开发方法、系统引导方法及装置
技术领域
本发明属于软件开发技术领域,尤其涉及系统开发方法、系统引导方法及装置。
背景技术
可编程片上系统集成有微处理器和现场可编程门阵列(Field-ProgrammableGate Array,FPGA),广泛应用于车载系统的开发中。在可编程片上系统这样的平台上,系统(如Linux系统)开发过程通常涉及硬件开发和软件开发两部分。硬件开发主要针对FPGA部分,开发的成果是生成硬件配置文件和设备描述信息,其中,硬件配置文件中存储有FPGA的配置信息,设备描述信息用于描述可编程片上系统的硬件信息。软件开发是根据硬件开发得到的硬件系统,开发、剪裁或修改对应的系统软件和应用软件,具体的,根据硬件描述信息生成设备树文件,得到第一阶段引导器、第二阶段引导器、Linux内核文件和根文件系统文件。其中,第一阶段引导器、硬件配置文件和第二阶段引导器被打包成一个可执行文件,且该可执行文件需要存储到非易失性存储器中;设备树文件、Linux内核文件和根文件系统文件打包成另一个可执行文件。
硬件系统的迭代开发过程中,设计好基本的硬件系统框架后,需要根据硬件系统功能需求完善硬件系统,这个过程中硬件配置文件会持续修改。由于硬件配置文件嵌入在第一个可执行文件中,所以一旦硬件配置文件更新,软件开发人员就需要同步更新硬件配置文件所在的可执行文件。而第一阶段引导器和第二阶段引导器是系统启动的关键文件,因此,只有在该可执行文件更新后,硬件开发人员才能看到其硬件开发成果。即,硬件开发与软件开发相耦合,不能并行独立,导致开发效率低。
发明内容
有鉴于此,本发明的目的在于提供系统开发方法、系统引导方法及装置,以解决现有的可编程片上系统开发方式中硬件开发部分和软件开发部分相互耦合,导致开发效率低的技术问题,其具体的技术方案如下:
第一方面,本发明提供了一种系统开发方法,应用于可编程片上系统,包括:
生成用于存储所述可编程片上系统的内置可编程逻辑器件的配置信息的硬件配置文件,以及,获取所述内置可编程逻辑器件的硬件描述信息;
依据所述硬件描述信息生成设备树文件,所述设备树文件用于表征所述内置可编程逻辑器件的硬件属性;
生成第一阶段引导器文件、第二阶段引导器文件,并将所述第一阶段引导器文件和所述第二阶段引导器文件作为一个引导器可执行文件写入非易失性存储器中;
生成Linux内核文件并存储所述Linux内核文件;
生成根文件系统文件并存储所述根文件系统文件。
第二方面,本发明提供了一种系统引导方法,应用于利用权利要求1所述的方法开发得到的可编程片上系统中,所述方法包括:
将非易失性存储器中的引导器可执行文件加载至所述可编程片上系统的内存中,所述引导器可执行文件包括第一阶段引导器文件和第二阶段引导器文件;
执行所述引导器可执行文件中的第一阶段引导器文件,对所述可编程片上系统的基础硬件进行初始化;
执行所述引导器可执行文件中的第二阶段引导器文件完成对所述可编程片上系统的其它硬件的初始化,以及完成以下步骤:
读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件;读取Linux内核文件并加载至所述内存中;读取设备树文件并加载至所述内存中;读取根文件系统文件并加载至所述内存中;
执行加载至所述内存中的所述Linux内核文件、所述根文件系统文件和所述设备树文件,以使所述可编程片上系统进入操作系统并运行。
可选地,所述读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件,包括:
获取所述硬件配置文件的存储位置;
依据所述存储位置读取所述硬件配置文件;
对所述硬件配置文件进行校验,若校验正确,则判断所述硬件配置文件是否需要解压;
若所述硬件配置文件需要解压,则对所述硬件配置文件进行解压;
依据解压后的硬件配置文件配置所述内置可编程逻辑器件;
若所述硬件配置文件不需要解压,则直接依据所述硬件配置文件配置所述内置可编程逻辑器件。
可选地,所述读取Linux内核文件并加载至所述内存中,包括:
获取所述Linux内核文件的存储位置;
依据所述Linux内核文件的存储位置读取所述Linux内核文件;
对所述Linux内核文件进行校验,若校验正确,则将所述Linux内核文件加载至所述内存中。
可选地,所述读取设备树文件并加载至所述内存中,包括:
获取所述设备树文件的存储位置;
依据所述设备树文件的存储位置读取设备树文件;
对所述设备树文件进行校验,若校验正确,则将所述设备树文件加载至所述内存中。
可选地,所述读取根文件系统文件并加载至所述内存中,包括:
获取所述根文件系统文件的存储位置;
依据所述存储位置读取所述根文件系统文件;
对所述根文件系统文件进行校验,若校验正确,则将所述根文件系统文件加载至所述内存中。
第三方面,本发明还提供了一种系统开发装置,应用于可编程片上系统,包括:
配置文件生成模块,用于生成用于存储所述可编程片上系统的内置可编程逻辑器件的配置信息的硬件配置文件,以及,获取所述内置可编程逻辑器件的硬件描述信息;
设备树生成模块,用于依据所述硬件描述信息生成设备树文件,所述设备树文件用于表征所述内置可编程逻辑器件的硬件属性;
引导器文件生成模块,用于生成第一阶段引导器文件、第二阶段引导器文件,并将所述第一阶段引导器文件和所述第二阶段引导器文件作为一个引导器可执行文件写入非易失性存储器中;
内核文件生成模块,用于生成Linux内核文件并存储所述Linux内核文件;
根文件系统生成模块,用于生成根文件系统文件并存储所述根文件系统文件。
第四方面,本发明还提供了一种系统引导装置,应用于利用第三方面所述的装置开发得到的可编程片上系统中,所述装置包括:
引导器文件加载模块,用于将非易失性存储器中的引导器可执行文件加载至所述可编程片上系统的内存中,所述引导器可执行文件包括第一阶段引导器文件和第二阶段引导器文件;
第一执行模块,用于执行所述引导器可执行文件中的第一阶段引导器文件,对所述可编程片上系统的基础硬件进行初始化;
第二执行模块,用于执行所述引导器可执行文件中的第二阶段引导器文件完成对所述可编程片上系统的其它硬件的初始化,以及完成以下步骤:
读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件;读取Linux内核文件并加载至所述内存中;读取设备树文件并加载至所述内存中;读取根文件系统文件并加载至所述内存中;
第三执行模块,用于执行加载至所述内存中的所述Linux内核文件、所述根文件系统文件和所述设备树文件,以使所述可编程片上系统进入操作系统并运行。
可选地,所述第二执行模块用于读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件时,包括:
第一获取子模块,用于获取所述硬件配置文件的存储位置;
第一读取子模块,用于依据所述存储位置读取所述硬件配置文件;
第一校验子模块,用于对所述硬件配置文件进行校验;
第一判断子模块,用于当对所述硬件配置文件校验正确时,判断所述硬件配置文件是否需要解压;
解压子模块,用于当判定所述硬件配置文件需要解压时,对所述硬件配置文件进行解压;
配置子模块,用于依据解压后的硬件配置文件配置所述内置可编程逻辑器件,或者,当所述硬件配置文件不需要解压时,直接依据所述硬件配置文件配置所述内置可编程逻辑器件。
可选地,所述第二执行模块用于读取Linux内核文件并加载至所述内存中时,包括:
第二获取子模块,用于获取所述Linux内核文件的存储位置;
第二读取子模块,用于依据所述Linux内核文件的存储位置读取所述Linux内核文件;
第二校验子模块,用于对所述Linux内核文件进行校验;
第一加载子模块,用于当对所述Linux内核文件校验正确时,将所述Linux内核文件加载至所述内存中。
本发明提供的系统开发方法、系统引导方法及装置,将第一阶段引导器和第二阶段引导器打包成一个文件,这个文件将写入非易失性存储器中;将硬件配置文件、Linux内核文件、设备树文件和根文件系统文件分别作为一个单独的文件存储。最终得到五个可执行文件,实现了硬件配置文件、设备树文件分别与其它文件之间的隔离,这样,硬件开发人员在硬件开发过程中修改硬件后,对应修改硬件配置文件,就能在原有软件系统上直接看到硬件开发成果。因为硬件配置文件与第一阶段引导器及第二阶段引导器相互隔离,所以只需提供修改后的硬件配置文件,使软件系统能够加载修改后的硬件配置文件即可,软件系统加载修改后的硬件配置文件的过程不需要软件开发人员修改相应的软件文件,实现了硬件开发和软件开发并行开发,极大地提高了系统开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种系统开发方法的流程图;
图2是本发明实施例提供的一种系统引导方法的流程图;
图3是本发明实施例提供的一种系统开发装置的结构示意图;
图4是本发明实施例提供的一种系统引导装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,示出了本发明实施例提供的一种系统开发方法的流程图,该方法应用于可编程片上系统的系统开发中,如图1所示,该方法包括以下步骤:
S110,生成用于存储可编程片上系统中内置可编程逻辑器件的配置信息的硬件配置文件,以及,获取内置可编程逻辑器件的硬件描述信息。
硬件开发人员利用相应的硬件开发工具设计可编程片上系统的内置可编程逻辑器件(如FPGA部分),得到硬件配置文件及硬件描述信息。
其中,硬件配置文件用于存储内置FPGA的配置信息;硬件描述信息用于描述硬件部分的接口定义、属性等。
而且,将硬件配置文件打包为一个可执行文件,如二进制文件,以便软件系统可以直接读取该文件中内置可编程逻辑器件的配置信息,并依据该配置信息配置可编程片上系统的内置可编程逻辑器件。
此外,该硬件配置文件可以存储在可编程片上系统上的存储空间中,或者,存储到网络存储空间中,本文对此不做限制。
S120,依据硬件描述信息生成设备树文件并存储。
软件开发人员利用软件开发工具,依据硬件描述信息生成相应的设备树文件;设备树是一套用来描述硬件属性的规则,是从操作系统使用的角度来描述硬件。
生成的设备树文件作为一个独立的可执行文件进行存储,其中,可以存储于可编程片上系统上的存储空间中,或者,存储到网络存储空间中,本文对此不做限制。
S130,生成第一阶段引导器文件、第二阶段引导器文件,并将第一阶段引导器文件和第二阶段引导器文件作为一个引导器可执行文件写入非易失性存储器中。
第一阶段引导器和第二阶段引导器属于系统引导器,是操作系统内核运行之前运行的一段程序,通过系统引导器可以初始化硬件设备、建立内容空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
其中,第一阶段引导器用于对可编程片上系统中的重要硬件、总线、时钟等进行初始化。第二阶段引导器用于进一步完成可编程片上系统上的其它硬件的初始化。
在本发明的一个实施例中,将第一阶段引导器和第二阶段引导器打包为一个可执行文件,例如,二进制文件。
S140,生成Linux内核文件并存储。
操作系统是管理计算机软硬件资源并向计算机程序提供服务的系统软件。在Linux系统中,一个可运行的系统至少包括Linux内核和根文件系统。本方案将Linux内核和根文件系统分别作为一个独立的可执行文件进行存储。可以根据可编程片上系统的业务需求及硬件系统对开源Linux内核文件进行定制开发。
S150,生成根文件系统文件并存储。
根文件系统是操作系统启动时需要加载的第一个文件系统,该根文件系统也作为一个独立的可执行文件进行存储。
其中,Linux内核文件和根文件系统文件均可以存储于可编程片上系统的存储空间中,或者,存储到网络存储空间中,本文对此不做限制。
本实施例提供的系统开发方法,将第一阶段引导器和第二阶段引导器打包成一个文件写入非易失性存储器中;将硬件配置文件、Linux内核文件、设备树文件和根文件系统文件分别作为一个单独的文件存储。最终得到五个可执行文件,实现了硬件配置文件、设备树文件分别与其它文件之间的隔离,这样,硬件开发人员在硬件开发过程中修改硬件后,对应修改硬件配置文件,就能在原有软件系统上直接看到硬件开发成果。因为硬件配置文件与第一阶段引导器及第二阶段引导器相互隔离,所以只需提供修改后的硬件配置文件,使软件系统能够加载修改后的硬件配置文件即可,软件系统加载修改后的硬件配置文件的过程不需要软件开发人员修改相应的软件文件。因此,实现了硬件开发和软件开发并行开发,极大地提高了系统开发效率。
请参见图2,示出了本发明实施例提供的一种系统引导方法的流程图,该方法应用于可编程片上系统中,如图2所示,该方法包括以下步骤:
S210,将非易失性存储器中的引导器可执行文件加载至可编程片上系统的内存中。
引导器可执行文件中包含第一阶段引导器和第二阶段引导器,从非易失性存储器中读取该引导器可执行文件并写入可编程片上系统的内存中。
S220,执行引导器可执行文件中的第一阶段引导器文件,对可编程片上系统的基础硬件进行初始化。
执行第一阶段引导器文件,完成对可编程片上系统的部分初始化工作,例如,对可编程片上系统中微处理器部分的重要设备的初始化,如时钟、内存控件器等。
然后,执行第二阶段引导器文件完成对可编程片上系统的其它硬件的初始化,并完成以下步骤S230~S260:
S230,读取硬件配置文件,并依据该硬件配置文件配置内置可编程逻辑器件。
执行第二阶段引导器文件,第二阶段引导器获取硬件配置文件的存储位置,并依据硬件配置文件的存储位置读取相应的硬件配置文件,其中,硬件配置文件的存储位置可以是可编程片上系统的磁盘中,或者,可以是云存储系统中的存储空间中,本文对此不做限制。
然后,对该硬件配置文件进行校验,若校验正确,则进一步判断该硬件配置文件是否需要解压;如果需要解压,则对硬件配置文件进行解压,并依据解压后的硬件配置文件配置内置可编程逻辑器件(即,FPGA)。
此外,对硬件配置文件的校验方法可以采用安全散列算法1(Secure HashAlgorithm 1,SHA1)、安全散列算法256(Secure Hash Algorithm 256,SHA256)、信息-摘要算法5(Message-Digest Algorithm 5,MD5)等校验算法,本文对此不做限制。对硬件配置文件校验正确表明该硬件配置文件准确无误。
S240,读取Linux内核文件并加载至可编程片上系统的内存中。
第二阶段引导器获取Linux内核文件的存储位置,并依据该Linux内核文件的存储位置读取该Linux内核文件,并将其加载至可编程片上系统的内存中。
其中,第二阶段引导器在将Linux内核文件加载至内存之前,需要对Linux内核文件进行校验,若校验正确则将其加载至内存中;若校验不正确,则不加载;并显示Linux内核文件校验不正确的提示信息。对Linux内核文件校验正确表明该Linux内核文件准确无误。
其中,校验算法可以采用SHA1、SHA256、MD5等,本文对此不做限制。
S250,读取设备树文件并加载至可编程片上系统的内存中。
第二阶段引导器获取设备树文件的存储位置,该存储位置可以是可编程片上系统本地磁盘中的存储地址,或者,也可以是云存储系统的网络链接地址,本文对此不做限制。
然后,对读取的设备树文件进行校验,若校验正确,表明该设备树文件准确无误并将该设备树文件加载至内存中;若校验不正确,表明该设备树文件不正确不加载,并报错。例如,显示设备树文件校验不正确的提示信息。其中,校验算法可以采用SHA1、SHA256、MD5等,本文对此不做限制。
S260,读取根文件系统文件并加载至可编程片上系统的内存中。
第二阶段引导器获取该根文件系统文件的存储位置,并依据该存储位置读取根文件系统文件,并对该根文件系统文件进行校验,若校验正确,表明该根文件系统文件准确无误,并将该根文件系统文件加载至内存中。若校验不正确,表明该根文件系统文件不正确,不加载该根文件系统文件;可选地,可以显示根文件系统文件校验不正确的提示信息。
其中,校验算法可以采用SHA1、SHA256、MD5等,本文对此不做限制。
S270,执行加载至内存中的各个文件,以使可编程片上系统启动进入操作系统并运行。
第二阶段引导器跳转至存储Linux内核文件的内存的入口地址,从该入口地址开始执行内存中的各个文件引导操作系统启动,即引导可编程片上系统进入操作系统并运行。
本实施例提供的系统引导方法,加载第一阶段引导器后对可编程片上系统进行部分初始化工作,然后,执行第二阶段引导器完成后续的硬件配置文件、Linux内核文件、设备树文件和根文件系统文件的加载工作,从而实现对内置可编程逻辑器件的配置,以及对软件系统的引导。因为硬件配置文件与第一阶段引导器及第二阶段引导器相互隔离,所以只需提供修改后的硬件配置文件,使软件系统能够加载修改后的硬件配置文件即可,软件系统加载修改后的硬件配置文件的过程不需要软件开发人员修改相应的软件文件,实现了硬件开发和软件开发并行开发,极大地提高了系统开发效率。而且,该系统引导方法,将硬件配置文件与第一阶段引导器隔离,使得硬件配置文件在更通用的、且与硬件架构相对独立的第二阶段引导器中加载,从而不必针对具有不同内置可编程逻辑器件的可编程片上系统重新开发第一阶段引导器,提高了软件开发效率。
相应于上述的系统开发方法实施例,本发明还提供了系统开发装置实施例。请参见图3,示出了本发明实施例提供的一种系统开发装置的结构示意图,该装置应用于可编程片上系统的开发。
如图3所示,该装置可以包括:配置文件生成模块110、设备树生成模块120、引导器文件生成模块130、内核文件生成模块140和根文件系统生成模块150。
配置文件生成模块110,用于生成用于存储可编程片上系统的内置可编程逻辑器件的配置信息的硬件配置文件,以及,获取内置可编程逻辑器件的硬件描述信息。
其中,硬件配置文件用于存储内置FPGA的配置信息;硬件描述信息用于描述硬件部分的接口定义、属性等。
将硬件配置文件打包为一个可执行文件,如二进制文件,以便软件系统可以直接读取该文件中内置可编程逻辑器件的配置信息,并依据该配置信息配置可编程片上系统的内置可编程逻辑器件。
此外,硬件配置文件可以存储在可编程片上系统上的存储空间中,或者,存储到网络存储空间中,本文对此不做限制。
设备树生成模块120,用于依据硬件描述信息生成设备树文件。
设备树是一套用来描述硬件属性的规则,是从操作系统使用的角度来描述硬件。
生成的设备树文件作为一个独立的可执行文件进行存储,其中,可以存储于可编程片上系统上的存储空间中,或者,存储到网络存储空间中,本文对此不做限制。
引导器文件生成模块130,用于生成第一阶段引导器文件、第二阶段引导器文件,并将第一阶段引导器文件和第二阶段引导器文件作为一个引导器可执行文件写入非易失性存储器中。
第一阶段引导器用于对可编程片上系统中的重要硬件、总线、时钟等进行初始化。第二阶段引导器用于进一步完成可编程片上系统上的其它硬件的初始化。
在本发明的一个实施例中,将第一阶段引导器和第二阶段引导器打包为一个可执行文件,例如,二进制文件。
内核文件生成模块140,用于生成Linux内核文件并存储Linux内核文件。
在Linux系统中,一个可运行的系统至少包括Linux内核和根文件系统,根文件系统是操作系统启动时需要加载的第一个文件系统。
本方案将Linux内核和根文件系统分别作为一个独立的可执行文件进行存储。可以根据可编程片上系统的业务需求及硬件系统对开源Linux内核文件进行定制开发。
根文件系统生成模块150,用于生成根文件系统文件并存储所述根文件系统文件。
Linux内核文件和根文件系统文件均可以存储于可编程片上系统的存储空间中,或者,存储到网络存储空间中,本文对此不做限制。
本实施例提供的系统开发装置,将第一阶段引导器和第二阶段引导器打包成一个文件写入非易失性存储器中;将硬件配置文件、Linux内核文件、设备树文件和根文件系统文件分别作为一个单独的文件存储。最终得到五个可执行文件,实现了硬件配置文件、设备树文件分别与其它文件之间的隔离,这样,硬件开发人员在硬件开发过程中修改硬件后,对应修改硬件配置文件,就能在原有软件系统上直接看到硬件开发成果。因为硬件配置文件与第一阶段引导器及第二阶段引导器相互隔离,所以只需提供修改后的硬件配置文件,使软件系统能够加载修改后的硬件配置文件即可,软件系统加载修改后的硬件配置文件的过程不需要软件开发人员修改相应的软件文件。因此,实现了硬件开发和软件开发并行开发,极大地提高了系统开发效率。
请参见图4,示出了本发明实施例提供的一种系统引导装置的框图,该装置应用于可编程片上系统中,如图4所示,该装置包括:引导器文件加载模块210、第一执行模块220、第二执行模块230和第三执行模块240。
引导器文件加载模块210,用于将非易失性存储器中的引导器可执行文件加载至可编程片上系统的内存中。其中,引导器可执行文件包括第一阶段引导器文件和第二阶段引导器文件。
第一执行模块220,用于执行引导器可执行文件中的第一阶段引导器文件,对可编程片上系统的基础硬件进行初始化。
第二执行模块230,用于执行所述引导器可执行文件中的第二阶段引导器文件完成对所述可编程片上系统的其它硬件的初始化,以及完成以下步骤:
读取硬件配置文件并依据硬件配置文件配置可编程片上系统的内置可编程逻辑器件;读取Linux内核文件并加载至内存中;读取设备树文件并加载至内存中;读取根文件系统文件并加载至内存中。
在本发明的一个实施例中,第二执行模块230用于读取硬件配置文件,并依据硬件配置文件配置可编程片上系统的内置可编程逻辑器件时,包括:
第一获取子模块,用于获取硬件配置文件的存储位置。
硬件配置文件的存储位置可以是可编程片上系统的磁盘中,或者,可以是云存储系统中的存储空间中,本文对此不做限制。
第一读取子模块,用于依据存储位置读取硬件配置文件。
第一校验子模块,用于对硬件配置文件进行校验。
对硬件配置文件的校验方法可以采用SHA1、SHA256、MD5等校验算法,本文对此不做限制。对硬件配置文件校验正确表明该硬件配置文件准确无误,如果校验不正确,表明该硬件配置文件错误。
第一判断子模块,用于当对硬件配置文件校验正确时,判断硬件配置文件是否需要解压。
解压子模块,用于当判定硬件配置文件需要解压时,对硬件配置文件进行解压。
配置子模块,用于依据解压后的硬件配置文件配置内置可编程逻辑器件,或者,当硬件配置文件不需要解压时,直接依据硬件配置文件配置内置可编程逻辑器件。
在本发明的一个实施例中,第二执行模块230用于读取Linux内核文件并加载至所述内存中时,包括:
第二获取子模块,用于获取Linux内核文件的存储位置。
第二阶段引导器利用该第二获取子模块获取Linux内核文件的存储位置,并依据该Linux内核文件的存储位置读取该Linux内核文件,并将其加载至可编程片上系统的内存中。
第二读取子模块,用于依据Linux内核文件的存储位置读取Linux内核文件。
第二校验子模块,用于对Linux内核文件进行校验。
在将Linux内核文件加载至内存之前,需要对Linux内核文件进行校验,若校验正确则将其加载至内存中;若校验不正确,则不加载。校验算法可以采用SHA1、SHA256、MD5等,本文对此不做限制。
第一加载子模块,用于当对Linux内核文件校验正确时,将Linux内核文件加载至所述内存中。
在本发明的一个实施例中,第二执行模块230用于读取设备树文件并加载至所述内存中时,包括:
第三获取子模块,用于获取设备树文件的存储位置。
设备树文件的存储位置可以是可编程片上系统本地磁盘中的存储地址,或者,也可以是云存储系统的网络链接地址,本文对此不做限制。
第三读取子模块,用于依据设备树文件的存储位置读取设备树文件。
第三校验子模块,用于对设备树文件进行校验。
校验算法可以采用SHA1、SHA256、MD5等,本文对此不做限制。
第二加载子模块,用于当对设备树文件校验正确时,将设备树文件加载至可编程片上系统的内存中。
校验正确表明该设备树文件准确无误并将该设备树文件加载至内存中;若校验不正确,表明该设备树文件不正确不加载。
在本发明的一个实施例中,第二执行模块230用于读取根文件系统文件并加载至内存中时,包括:
第四获取子模块,用于获取根文件系统文件的存储位置。
根文件系统文件的存储位置可以是可编程片上系统本地磁盘中的存储地址,或者,也可以是云存储系统的网络链接地址,本文对此不做限制。
第四读取子模块,用于依据存储位置读取根文件系统文件。
第四校验子模块,用于对根文件系统文件进行校验。
校验算法可以采用SHA1、SHA256、MD5等,本文对此不做限制。
第三加载子模块,用于当对根文件系统文件校验正确时,将根文件系统文件加载至可编程片上系统的内存中。
第三执行模块240,用于执行加载至内存中的所述Linux内核文件、根文件系统文件和设备树文件,以使可编程片上系统进入操作系统并运行。
第二阶段引导器跳转至存储Linux内核文件的内存的入口地址,从该入口地址开始执行内存中的各个文件引导操作系统启动,即引导可编程片上系统进入操作系统并运行。
本实施例提供的系统引导装置,加载第一阶段引导器后对可编程片上系统进行部分初始化工作,然后,执行第二阶段引导器完成后续的硬件配置文件、Linux内核文件、设备树文件和根文件系统文件的加载工作,从而实现对内置可编程逻辑器件的配置,以及对软件系统的引导。因为硬件配置文件与第一阶段引导器及第二阶段引导器相互隔离,所以只需提供修改后的硬件配置文件,使软件系统能够加载修改后的硬件配置文件即可,软件系统加载修改后的硬件配置文件的过程不需要软件开发人员修改相应的软件文件,实现了硬件开发和软件开发并行开发,极大地提高了系统开发效率。而且,该系统引导装置,将硬件配置文件与第一阶段引导器隔离,使得硬件配置文件在更通用的、且与硬件架构相对独立的第二阶段引导器中加载,从而不必针对具有不同内置可编程逻辑器件的可编程片上系统重新开发第一阶段引导器,提高了软件开发效率。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种系统开发方法,应用于可编程片上系统,其特征在于,包括:
生成用于存储所述可编程片上系统的内置可编程逻辑器件的配置信息的硬件配置文件,以及,获取所述内置可编程逻辑器件的硬件描述信息;
依据所述硬件描述信息生成设备树文件,所述设备树文件用于表征所述内置可编程逻辑器件的硬件属性;
生成第一阶段引导器文件、第二阶段引导器文件,并将所述第一阶段引导器文件和所述第二阶段引导器文件作为一个引导器可执行文件写入非易失性存储器中;
生成Linux内核文件并存储所述Linux内核文件;
生成根文件系统文件并存储所述根文件系统文件。
2.一种系统引导方法,其特征在于,应用于利用权利要求1所述的方法开发得到的可编程片上系统中,所述方法包括:
将非易失性存储器中的引导器可执行文件加载至所述可编程片上系统的内存中,所述引导器可执行文件包括第一阶段引导器文件和第二阶段引导器文件;
执行所述引导器可执行文件中的第一阶段引导器文件,对所述可编程片上系统的基础硬件进行初始化;
执行所述引导器可执行文件中的第二阶段引导器文件完成对所述可编程片上系统的其它硬件的初始化,以及完成以下步骤:
读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件;读取Linux内核文件并加载至所述内存中;读取设备树文件并加载至所述内存中;读取根文件系统文件并加载至所述内存中;
执行加载至所述内存中的所述Linux内核文件、所述根文件系统文件和所述设备树文件,以使所述可编程片上系统进入操作系统并运行。
3.根据权利要求2所述的方法,其特征在于,所述读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件,包括:
获取所述硬件配置文件的存储位置;
依据所述存储位置读取所述硬件配置文件;
对所述硬件配置文件进行校验,若校验正确,则判断所述硬件配置文件是否需要解压;
若所述硬件配置文件需要解压,则对所述硬件配置文件进行解压;
依据解压后的硬件配置文件配置所述内置可编程逻辑器件;
若所述硬件配置文件不需要解压,则直接依据所述硬件配置文件配置所述内置可编程逻辑器件。
4.根据权利要求2所述的方法,其特征在于,所述读取Linux内核文件并加载至所述内存中,包括:
获取所述Linux内核文件的存储位置;
依据所述Linux内核文件的存储位置读取所述Linux内核文件;
对所述Linux内核文件进行校验,若校验正确,则将所述Linux内核文件加载至所述内存中。
5.根据权利要求2所述的方法,其特征在于,所述读取设备树文件并加载至所述内存中,包括:
获取所述设备树文件的存储位置;
依据所述设备树文件的存储位置读取设备树文件;
对所述设备树文件进行校验,若校验正确,则将所述设备树文件加载至所述内存中。
6.根据权利要求2所述的方法,其特征在于,所述读取根文件系统文件并加载至所述内存中,包括:
获取所述根文件系统文件的存储位置;
依据所述存储位置读取所述根文件系统文件;
对所述根文件系统文件进行校验,若校验正确,则将所述根文件系统文件加载至所述内存中。
7.一种系统开发装置,应用于可编程片上系统,其特征在于,包括:
配置文件生成模块,用于生成用于存储所述可编程片上系统的内置可编程逻辑器件的配置信息的硬件配置文件,以及,获取所述内置可编程逻辑器件的硬件描述信息;
设备树生成模块,用于依据所述硬件描述信息生成设备树文件,所述设备树文件用于表征所述内置可编程逻辑器件的硬件属性;
引导器文件生成模块,用于生成第一阶段引导器文件、第二阶段引导器文件,并将所述第一阶段引导器文件和所述第二阶段引导器文件作为一个引导器可执行文件写入非易失性存储器中;
内核文件生成模块,用于生成Linux内核文件并存储所述Linux内核文件;
根文件系统生成模块,用于生成根文件系统文件并存储所述根文件系统文件。
8.一种系统引导装置,其特征在于,应用于利用权利要求7所述的装置开发得到的可编程片上系统中,所述装置包括:
引导器文件加载模块,用于将非易失性存储器中的引导器可执行文件加载至所述可编程片上系统的内存中,所述引导器可执行文件包括第一阶段引导器文件和第二阶段引导器文件;
第一执行模块,用于执行所述引导器可执行文件中的第一阶段引导器文件,对所述可编程片上系统的基础硬件进行初始化;
第二执行模块,用于执行所述引导器可执行文件中的第二阶段引导器文件完成对所述可编程片上系统的其它硬件的初始化,以及完成以下步骤:
读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件;读取Linux内核文件并加载至所述内存中;读取设备树文件并加载至所述内存中;读取根文件系统文件并加载至所述内存中;
第三执行模块,用于执行加载至所述内存中的所述Linux内核文件、所述根文件系统文件和所述设备树文件,以使所述可编程片上系统进入操作系统并运行。
9.根据权利要求8所述的装置,其特征在于,所述第二执行模块用于读取硬件配置文件,并依据所述硬件配置文件配置所述可编程片上系统的内置可编程逻辑器件时,包括:
第一获取子模块,用于获取所述硬件配置文件的存储位置;
第一读取子模块,用于依据所述存储位置读取所述硬件配置文件;
第一校验子模块,用于对所述硬件配置文件进行校验;
第一判断子模块,用于当对所述硬件配置文件校验正确时,判断所述硬件配置文件是否需要解压;
解压子模块,用于当判定所述硬件配置文件需要解压时,对所述硬件配置文件进行解压;
配置子模块,用于依据解压后的硬件配置文件配置所述内置可编程逻辑器件,或者,当所述硬件配置文件不需要解压时,直接依据所述硬件配置文件配置所述内置可编程逻辑器件。
10.根据权利要求8所述的装置,其特征在于,所述第二执行模块用于读取Linux内核文件并加载至所述内存中时,包括:
第二获取子模块,用于获取所述Linux内核文件的存储位置;
第二读取子模块,用于依据所述Linux内核文件的存储位置读取所述Linux内核文件;
第二校验子模块,用于对所述Linux内核文件进行校验;
第一加载子模块,用于当对所述Linux内核文件校验正确时,将所述Linux内核文件加载至所述内存中。
CN201910250095.5A 2019-03-29 2019-03-29 系统开发方法、系统引导方法及装置 Pending CN110007910A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910250095.5A CN110007910A (zh) 2019-03-29 2019-03-29 系统开发方法、系统引导方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910250095.5A CN110007910A (zh) 2019-03-29 2019-03-29 系统开发方法、系统引导方法及装置

Publications (1)

Publication Number Publication Date
CN110007910A true CN110007910A (zh) 2019-07-12

Family

ID=67168939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910250095.5A Pending CN110007910A (zh) 2019-03-29 2019-03-29 系统开发方法、系统引导方法及装置

Country Status (1)

Country Link
CN (1) CN110007910A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103135997A (zh) * 2011-11-24 2013-06-05 中兴通讯股份有限公司 实现嵌入式设备引导程序通用性的方法及装置
CN104392152A (zh) * 2014-12-10 2015-03-04 深圳市捷顺科技实业股份有限公司 一种嵌入式设备的启动方法、嵌入式设备、服务器及系统
US20150134945A1 (en) * 2013-11-08 2015-05-14 Fujitsu Limited Information processing device, information processing method, and recording medium storing control program
CN105607941A (zh) * 2015-11-25 2016-05-25 上海斐讯数据通信技术有限公司 一种安卓项目中配置编译的装置和方法
CN109343854A (zh) * 2018-09-18 2019-02-15 武汉精立电子技术有限公司 基于zynq系统的智能自动化编译方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103135997A (zh) * 2011-11-24 2013-06-05 中兴通讯股份有限公司 实现嵌入式设备引导程序通用性的方法及装置
US20150134945A1 (en) * 2013-11-08 2015-05-14 Fujitsu Limited Information processing device, information processing method, and recording medium storing control program
CN104392152A (zh) * 2014-12-10 2015-03-04 深圳市捷顺科技实业股份有限公司 一种嵌入式设备的启动方法、嵌入式设备、服务器及系统
CN105607941A (zh) * 2015-11-25 2016-05-25 上海斐讯数据通信技术有限公司 一种安卓项目中配置编译的装置和方法
CN109343854A (zh) * 2018-09-18 2019-02-15 武汉精立电子技术有限公司 基于zynq系统的智能自动化编译方法及系统

Similar Documents

Publication Publication Date Title
CN112100954B (zh) 验证芯片的方法、装置和计算机存储介质
US11294660B2 (en) Apparatus and method for configuring or updating programmable logic device
CN112256558B (zh) 一种测试用例的生成方法、装置、计算机设备及存储介质
US6425109B1 (en) High level automatic core configuration
US20080295064A1 (en) Rapid development of distributed web service
CN107193593B (zh) 一种可升级文件的升级方法、机顶盒和存储介质
US20150350806A1 (en) High-Speed Application for Installation on Mobile Devices for Permitting Remote Configuration of Such Mobile Devices
US12032902B2 (en) Text generation for patent applications using natural language modeling and programmable templating language
US8209648B1 (en) Verifying multiple constraints for circuit designs
CN108182078B (zh) 一种优化的弹载设备不拆弹软件在线升级方法
CN111179086A (zh) 一种基于WebAssembly的智能合约虚拟机
US20100146254A1 (en) Method for binarizing initial script on operating system and operating method of binary script
US9575730B2 (en) Template generating method and template generating apparatus
US9294094B1 (en) Method and apparatus for fast low skew phase generation for multiplexing signals on a multi-FPGA prototyping system
CN114548006A (zh) 集成电路的验证方法、装置、电子设备、存储介质
CN105677409B (zh) 一种系统升级方法及装置
CN114443039A (zh) 输入参数校验方法、装置、电子设备及存储介质
CN114117977A (zh) 一种用于自动验证处理器系统场景的方法
CN115827568A (zh) 获取逻辑系统设计的数据的方法、电子设备和存储介质
CN110007910A (zh) 系统开发方法、系统引导方法及装置
CN112860587A (zh) Ui自动测试方法和装置
CN115544968B (zh) 一种兼容多项目设备树的方法、系统、设备和存储介质
CN110413468A (zh) 基于代码突变的fpga在线故障注入方法
US10599802B2 (en) Methods for automatic engineering change order (ECO) bug fixing in integrated circuit design
CN115629815A (zh) 可验证emmc用户接口的fpga原型验证平台

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190712