CN104765626A - 一种固件程序烧写方法及装置 - Google Patents
一种固件程序烧写方法及装置 Download PDFInfo
- Publication number
- CN104765626A CN104765626A CN201410008219.6A CN201410008219A CN104765626A CN 104765626 A CN104765626 A CN 104765626A CN 201410008219 A CN201410008219 A CN 201410008219A CN 104765626 A CN104765626 A CN 104765626A
- Authority
- CN
- China
- Prior art keywords
- program
- interface
- firmware program
- firmware
- kernel
- 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
Abstract
本发明适用于计算机领域,提供了一种固件程序和开机图的烧写方法及装置,所述方法包括下述步骤:在内核程序中添加固件程序调用接口;在应用程序的驱动模块中添加调用固件程序接口的读写函数接口;应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。本发明通过在内核程序中添加固件程序调用接口,通过在应用程序中添加读写函数接口,读写函数调用内核程序中的固件程序调用接口直接将固件程序写入到flash芯片中,省去了通过专用烧写工具烧写飞腾平台固件程序的麻烦。
Description
技术领域
本发明属于计算机领域,尤其涉及一种固件程序烧写方法及装置。
背景技术
在计算机硬件中,通常采用flash芯片存储着bios(Basic Input OutputSystem)基本输入输出系统的固件程序,开机时bios程序会检测系统硬件的状态,显示开机图等,flash芯片是计算机引导过程的重要模块,在飞腾计算机平台的bios程序开发过程中,每次更新代码,都需要把flash芯片从计算机主板上卸载下来,然后通过专用的烧写工具,把新的代码写进flash芯片。而拆卸的过程比较麻烦,会大大影响工作效率。
发明内容
本发明实施例的目的在于提供一种固件程序烧写方法及装置,旨在提供一种固件程序烧写方法,在内核程序中添加固件程序调用接口,通过在应用程序中添加读写函数接口,读写函数调用内核程序中的固件程序调用接口直接将固件程序写入到flash芯片中,省去了通过专用烧写工具烧写飞腾平台固件程序的麻烦。
本发明实施例是这样实现的,一种固件程序和开机图的烧写方法,所述方法包括下述步骤:
在内核程序中添加固件程序调用接口;
在应用程序的驱动模块中添加调用固件程序接口的读写函数接口;
应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
进一步的,所述在应用程序的驱动模块中添加调用固件程序接口的读写函数接口的步骤包括:
在应用程序内定义与内核结构相同的结构体;
在应用程序的驱动模块中添加预设函数,所述预设函数用于调用读写函数接口,所述读写函数接口用于调用固件程序接口。
进一步的,所述应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中的步骤包括:
应用程序通过所述调用固件程序接口的读写函数接口调用内核程序;
选择要烧写的固件程序文件的和固件程序文件写入的模式,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
进一步的,所述方法在在应用程序的驱动模块中添加调用固件程序接口的读写函数接口步骤之后还包括:
将固件程序代码进行编译,并编译成预定文件格式的文件
本发明实施例的另一目的在于提供一种固件程序烧写装置,所述装置包括:
调用接口添加单元,用于在内核程序中添加固件程序调用接口;
读写接口添加单元,用于在应用程序的驱动模块中添加调用固件程序接口的读写函数接口;
烧写单元,用于应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
进一步的,所述读写接口添加单元包括:
结构体定义单元,用于在应用程序内定义与内核结构相同的结构体;
函数添加单元,用于在应用程序的驱动模块中添加预设函数,所述预设函数用于调用读写函数接口,所述读写函数接口用于调用固件程序接口。
进一步的,所述烧写单元包括:
内核调用单元,用于应用程序通过所述调用固件程序接口的读写函数接口调用内核程序;
写入单元,用于选择要烧写的固件程序文件的和固件程序文件写入的模式,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
进一步的,所述装置还包括:
编译单元,用于将固件程序代码进行编译,并编译成预定文件格式的文件。
本发明实施例通过一种固件程序烧写方法及装置,通过在内核程序中添加调用接口,在应用程序中添加函数读写接口,通过应用程序的读写接口调用内核的接口,应用程序直接将需要烧写的固件程序烧写到flash芯片中,完成对bios的更新,由于直接通过应用程序调用内核程序可以直接在本机上进行烧写,不必再将飞腾平台的flash芯片卸载下来通过专用的烧写工具进行烧写,提高烧写固件程序的效率。
附图说明
图1是本发明第一实施例提供的一种固件程序烧写方法的实现流程图;
图2是本发明第二实施例提供的一种固件程序烧写方法的实现流程图;
图3是本发明第三实施例提供的一种固件程序烧写装置的结构图;以及
图4是本发明第四实施例提供的一种固件程序烧写装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合具体实施例对本发明的具体实现进行详细描述:
实施例一:
图1示出了本发明第一实施例提供的一种固件程序烧写方法的实现流程,详述如下:
S101,在内核程序中添加固件程序调用接口。
在飞腾平台上,在飞腾平台的内核程序中添加一固件程序接口,其中内核程序为飞腾平台的主板内核程序。
S102,在应用程序的驱动模块中添加调用固件程序接口的读写函数接口。
在应用程序的驱动模块中添加可以调用固件程序接口的函数接口,具体的函数接口为读写函数接口,通过添加的读写函数接口,可以实现调用固件程序接口。
S103,应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
在飞腾平台上运行应用程序,应用程序存储在外接存储设备上,通过在外接存储设备上运行应用程序,应用程序通过调用固件程序接口的读写函数接口直接调用内核程序,通过调用内核程序将固件程序写入到flash的芯片中,完成对flash的升级更新。
本发明实施例通过上述方式,一种固件程序烧写方法,在飞腾平台上,通过对飞腾平台的内核程序添加固件程序调用接口,同时在应用程序的驱动模块中添加调用固件程序接口的读写函数接口,在运行应用程序时,直接通过应用程序中的读写函数接口调用内核程序中的固件程序调用接口完成对内核程序的调用,通过对内核程序的调用,可以直接将需要烧写的固件程序少写入flash芯片中,完成对固件程序的烧写,由于只需要在内核和应用程序中添加对应的接口,可以直接在本机上完成操作,在进行烧写时就不必再将flash卸载下来通过专有的烧写设备进行烧写,提高了更新固件程序时烧写固件程序的效率。
实施例二:
图2示出了本发明第二实施例提供的一种固件程序烧写方法的实现流程,详述如下:
S201,在内核程序中添加固件程序调用接口。
首先对飞腾平台的内核程序进行处理,在飞腾平台的内核中添加固件程序调用接口,添加的固件程序在具体实施时可以通过以下函数进行:
S202,在应用程序内定义与内核结构相同的结构体。
在应用程序内定义与内核结构相同的结构体,定义的结构体约定把固件程序写入到系统中哪个起始的地址,写入的固件程序大小以及在内存中如何通过约定的函数传递到内核中,在具体实施中可以通过ioct()函数。
S203,在应用程序的驱动模块中添加预设函数,所述预设函数用于调用读写函数接口,所述读写函数接口用于调用固件程序接口。
在应用程序的驱动模块中添加预设的预设函数,预设函数也可以通过ioct()函数进行,通过ioct()函数可以调用读写函数接口,读写函数可以调用固件程序接口。
S204,将固件程序代码进行编译,并编译成预定文件格式的文件。
由于固件程序在写入到flash芯片中时,需要以二进制的形式进行写入,因此需要对固件程序进行编译,编译为预定文件格式的文件。
S205,应用程序通过所述调用固件程序接口的读写函数接口调用内核程序。
在启动飞腾平台后,打卡应用程序通过应用程序调用固件程序接口的读写函数接口,读写函数接口直接调用内核程序。
S206,选择要烧写的固件程序文件的和固件程序文件写入的模式,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
在应用程序调用到内核程序以后,用户可以根据需要选择要烧写的固件程序文件,以及固件程序文件烧写入flash时的烧写模式,例如可以选择OBP(OpenBoot PROM)诊断工具模式只烧入部分文件,或者全局烧入模式将固件程序文件烧入到flash芯片中。
本发明实施例通过上述方式,一种固件程序烧写方法,在飞腾平台上,通过对飞腾平台的主板内核程序添加固件程序调用接口,使得其他程序可以通过该固件程序调用接口调用内核程序,再在应用程序的驱动模块中添加一调用固件程序接口的读写函数接口,之后运行应用程序,通过应用程序的读写函数接口调用连接到固件程序调用接口,通过固件程序调用接口调用到内核程序,将需要写入到flash芯片中的固件程序通过内核程序写入到flash芯片中,完成对flash芯片的在线升级更新,由于可以直接通过内核程序进行写入便不需要通过专用的烧写工具进行更新,同时也不需要将飞腾平台上的flash芯片卸载下来,提高了更新flash芯片固件程序的效率。
实施例三:
图3示出了本发明第三实施例提供的一种固件程序烧写装置的结构图,为了便于说明,仅示出了与本发明实施例相关的部分。
调用接口添加单元31,用于在内核程序中添加固件程序调用接口。
调用接口添加单元用于在飞腾平台上,在飞腾平台的内核程序中添加一固件程序接口,其中内核程序为飞腾平台的主板内核程序。
读写接口添加单元32,用于在应用程序的驱动模块中添加调用固件程序接口的读写函数接口。
读写接口添加单元用于在应用程序的驱动模块中添加可以调用固件程序接口的函数接口,具体的函数接口为读写函数接口,通过添加的读写函数接口,可以实现调用固件程序接口。
烧写单元33,用于应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
烧写单元用于在飞腾平台上运行应用程序,应用程序存储在外接存储设备上,通过在外接存储设备上运行应用程序,应用程序通过调用固件程序接口的读写函数接口直接调用内核程序,通过调用内核程序将固件程序写入到flash的芯片中,完成对flash的升级更新。
本发明实施例通过上述方式,一种固件程序烧写装置,在飞腾平台上,通过对飞腾平台的内核程序添加固件程序调用接口,同时在应用程序的驱动模块中添加调用固件程序接口的读写函数接口,在运行应用程序时,直接通过应用程序中的读写函数接口调用内核程序中的固件程序调用接口完成对内核程序的调用,通过对内核程序的调用,可以直接将需要烧写的固件程序少写入flash芯片中,完成对固件程序的烧写,由于只需要在内核和应用程序中添加对应的接口,可以直接在本机上完成操作,在进行烧写时就不必再将flash卸载下来通过专有的烧写设备进行烧写,提高了更新固件程序时烧写固件程序的效率。
实施例四:
图4示出了本发明第四实施例提供的一种固件程序烧写装置的结构图,为了便于说明,仅示出了与本发明实施例相关的部分。
调用接口添加单元41,用于在内核程序中添加固件程序调用接口。
调用接口添加单元用于首先对飞腾平台的内核程序进行处理,在飞腾平台的内核中添加固件程序调用接口,添加的固件程序在具体实施时可以通过以下sun4v_flash_rw()函数进行。
结构体定义单元42,用于在应用程序内定义与内核结构相同的结构体。
结构体定义单元用于在应用程序内定义与内核结构相同的结构体,定义的结构体约定把固件程序写入到系统中哪个起始的地址,写入的固件程序大小以及在内存中如何通过约定的函数传递到内核中,在具体实施中可以通过ioct()函数。
函数添加单元43,用于在应用程序的驱动模块中添加预设函数,所述预设函数用于调用读写函数接口,所述读写函数接口用于调用固件程序接口。
函数添加单元用于在应用程序的驱动模块中添加预设的预设函数,预设函数也可以通过ioct()函数进行,通过ioct()函数可以调用读写函数接口,读写函数可以调用固件程序接口。
编译单元44,用于将固件程序代码进行编译,并编译成预定文件格式的文件。
由于固件程序在写入到flash芯片中时,需要以二进制的形式进行写入,因此需要对固件程序进行编译,编译为预定文件格式的文件,通过编译单元将固件程序代码进行编译,并编译成预定文件格式的文件。
内核调用单元45,用于应用程序通过所述调用固件程序接口的读写函数接口调用内核程序。
内核调用单元用于在启动飞腾平台后,打卡应用程序通过应用程序调用固件程序接口的读写函数接口,读写函数接口直接调用内核程序。
写入单元46,用于选择要烧写的固件程序文件的和固件程序文件写入的模式,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
写入单元用于在应用程序调用到内核程序以后,用户可以根据需要选择要烧写的固件程序文件,以及固件程序文件烧写入flash时的烧写模式,例如可以选择OBP(Open Boot PROM)诊断工具模式只烧入部分文件,或者全局烧入模式将固件程序文件烧入到flash芯片中。
本发明实施例通过上述方式,一种固件程序烧写装置,在飞腾平台上,通过对飞腾平台的主板内核程序添加固件程序调用接口,使得其他程序可以通过该固件程序调用接口调用内核程序,再在应用程序的驱动模块中添加一调用固件程序接口的读写函数接口,之后运行应用程序,通过应用程序的读写函数接口调用连接到固件程序调用接口,通过固件程序调用接口调用到内核程序,将需要写入到flash芯片中的固件程序通过内核程序写入到flash芯片中,完成对flash芯片的在线升级更新,由于可以直接通过内核程序进行写入便不需要通过专用的烧写工具进行更新,同时也不需要将飞腾平台上的flash芯片卸载下来,提高了更新flash芯片固件程序的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种固件程序烧写方法,其特征在于,所述方法包括下述步骤:
在内核程序中添加固件程序调用接口;
在应用程序的驱动模块中添加调用固件程序接口的读写函数接口;
应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
2.如权利要求1所述的方法,其特征在于,所述在应用程序的驱动模块中添加调用固件程序接口的读写函数接口的步骤包括:
在应用程序内定义与内核结构相同的结构体;
在应用程序的驱动模块中添加预设函数,所述预设函数用于调用读写函数接口,所述读写函数接口用于调用固件程序接口。
3.如权利要求1所述的方法,其特征在于,所述应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中的步骤包括:
应用程序通过所述调用固件程序接口的读写函数接口调用内核程序;
选择要烧写的固件程序文件的和固件程序文件写入的模式,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
4.如权利要求1所述的方法,其特征在于,所述方法在在应用程序的驱动模块中添加调用固件程序接口的读写函数接口步骤之后还包括:
将固件程序代码进行编译,并编译成预定文件格式的文件。
5.一种固件程序烧写装置,其特征在于,所述装置包括:
调用接口添加单元,用于在内核程序中添加固件程序调用接口;
读写接口添加单元,用于在应用程序的驱动模块中添加调用固件程序接口的读写函数接口;
烧写单元,用于应用程序通过所述调用固件程序接口的读写函数接口调用内核程序,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
6.如权利要求6所述的装置,其特征在于,所述读写接口添加单元包括:
结构体定义单元,用于在应用程序内定义与内核结构相同的结构体;
函数添加单元,用于在应用程序的驱动模块中添加预设函数,所述预设函数用于调用读写函数接口,所述读写函数接口用于调用固件程序接口。
7.如权利要求6所述的装置,其特征在于,所述烧写单元包括:
内核调用单元,用于应用程序通过所述调用固件程序接口的读写函数接口调用内核程序;
写入单元,用于选择要烧写的固件程序文件的和固件程序文件写入的模式,应用程序通过所述调用的内核程序将固件程序写入到flash芯片中。
8.如权利要求8所述的装置,其特征在于,所述装置还包括:
编译单元,用于将固件程序代码进行编译,并编译成预定文件格式的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410008219.6A CN104765626B (zh) | 2014-01-08 | 2014-01-08 | 一种固件程序烧写方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410008219.6A CN104765626B (zh) | 2014-01-08 | 2014-01-08 | 一种固件程序烧写方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765626A true CN104765626A (zh) | 2015-07-08 |
CN104765626B CN104765626B (zh) | 2018-05-04 |
Family
ID=53647475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410008219.6A Active CN104765626B (zh) | 2014-01-08 | 2014-01-08 | 一种固件程序烧写方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765626B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909426A (zh) * | 2017-03-13 | 2017-06-30 | 合肥极友软件开发有限公司 | 基于FlashMemory的芯片程序升级方法 |
WO2018032460A1 (zh) * | 2016-08-18 | 2018-02-22 | 深圳中兴力维技术有限公司 | 一种设备的远程升级方法、装置及系统 |
CN108932132A (zh) * | 2018-05-23 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种通过bios升级cpld的系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183337A (zh) * | 2007-12-12 | 2008-05-21 | 中兴通讯股份有限公司 | 基于nand flash移动终端存储介质的空间管理方法 |
CN102662883A (zh) * | 2012-03-31 | 2012-09-12 | 中国人民解放军国防科学技术大学 | 用于多硬件平台的飞腾服务器的机器类型识别方法 |
US20130013907A1 (en) * | 2005-02-15 | 2013-01-10 | Gytheion Networks, Llc | Wireless router remote firmware upgrade |
CN103425461A (zh) * | 2012-05-14 | 2013-12-04 | 研祥智能科技股份有限公司 | 一种编程接口技术实现方法及计算机系统 |
-
2014
- 2014-01-08 CN CN201410008219.6A patent/CN104765626B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130013907A1 (en) * | 2005-02-15 | 2013-01-10 | Gytheion Networks, Llc | Wireless router remote firmware upgrade |
CN101183337A (zh) * | 2007-12-12 | 2008-05-21 | 中兴通讯股份有限公司 | 基于nand flash移动终端存储介质的空间管理方法 |
CN102662883A (zh) * | 2012-03-31 | 2012-09-12 | 中国人民解放军国防科学技术大学 | 用于多硬件平台的飞腾服务器的机器类型识别方法 |
CN103425461A (zh) * | 2012-05-14 | 2013-12-04 | 研祥智能科技股份有限公司 | 一种编程接口技术实现方法及计算机系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018032460A1 (zh) * | 2016-08-18 | 2018-02-22 | 深圳中兴力维技术有限公司 | 一种设备的远程升级方法、装置及系统 |
CN106909426A (zh) * | 2017-03-13 | 2017-06-30 | 合肥极友软件开发有限公司 | 基于FlashMemory的芯片程序升级方法 |
CN108932132A (zh) * | 2018-05-23 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种通过bios升级cpld的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104765626B (zh) | 2018-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095620B (zh) | 一种嵌入式Linux存储分区的开发方法 | |
CN103744709B (zh) | 补丁加载方法及装置 | |
CN100375025C (zh) | 计算机系统启动方法 | |
CN102567049A (zh) | 嵌入式操作系统的升级方法 | |
CN102662690A (zh) | 应用程序启动方法和装置 | |
WO2016101503A1 (zh) | 一种热补丁的实现方法和装置 | |
CN101634960A (zh) | 一种修改bios参数及重新生成校验和的方法 | |
CN103577212A (zh) | 系统启动预加载方法及装置 | |
CN102479121A (zh) | 独立磁盘冗余阵列实现及测试方法 | |
CN102841802A (zh) | 移动终端的软件升级方法 | |
CN108829465B (zh) | 一种基于直接读写flash的本地动态加载系统及方法 | |
CN104156234A (zh) | 启动多核处理器、bootloader大小端模式自适应的方法及装置 | |
CN103777978A (zh) | 一种基于Linux内核的用户态自动探测3G-USB网卡方法 | |
CN104765626A (zh) | 一种固件程序烧写方法及装置 | |
CN101334737A (zh) | 一种嵌入式设备的启动或复位方法 | |
CN105573913A (zh) | 一种onu系统中的程序调试方法及系统 | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级系统 | |
CN112905180A (zh) | 指令优化方法及装置 | |
CN103560934A (zh) | 一种电力猫生产测试方法及装置 | |
CN105824750A (zh) | 一种在NorFlash程序空间调试的软断点模拟方法 | |
CN102629212A (zh) | 一种基于j-link间接烧写程序到nandflash的方法 | |
CN110825421B (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN104063329A (zh) | 64位立即数处理方法及装置 | |
CN106951268A (zh) | 一种申威平台支持NVMe硬盘启动的实现方法 | |
CN102750167B (zh) | 应用程序启动方法、装置和计算机系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |