一种自动烧写嵌入式设备固件的方法及其系统的制作方法

文档序号:6498873阅读:619来源:国知局
一种自动烧写嵌入式设备固件的方法及其系统的制作方法
【专利摘要】本发明公开了一种自动烧写嵌入式设备固件的方法及其系统,用于烧写包含BootLoader的串口嵌入式设备的固件,方法包括:根据各型号的固件编写配置文件,所述配置文件的内容包括,各固件通过串口输出的配置提示信息和根据所述配置提示信息应该输入的命令或配置信息;将嵌入式设备通过串口连接到计算机上并上电,顺次从所述串口获取所述嵌入式设备的配置提示信息;从所述配置文件中,查找与所述嵌入式设备的配置提示信息相匹配的配置提示信息,通过所述串口将所述配置文件中,根据所述配置提示信息应该输入的命令或配置信息写入到所述嵌入式设备固件,直到烧写全部完成。本发明能够减少大量的重复劳动同时减少出错的可能性。
【专利说明】一种自动烧写嵌入式设备固件的方法及其系统
【技术领域】
[0001]本发明涉及嵌入式【技术领域】,尤其涉及一种自动烧写嵌入式设备固件的方法及其系统。
【背景技术】
[0002]随着信息化技术的发展,嵌入式系统因其高效、低成本、高可靠性、丰富的代码以及应用程序可扩展性、可移植性等一系列优点,目前已越来越成为工业系统和民用系统的主力军,尤其在信息化产品中,越来越多地应用到嵌入式系统。嵌入式系统可应用于人类工作与生活的各个领域,具有极其广阔的应用前景。嵌入式系统在传统的工业控制和商业管理领域已经具有广泛的应用空间,如智能工控设备、P0S/ATM机、IC卡等;在家庭领域更具有广泛的应用潜力,如机顶盒、数字电视、WebTV、网络冰箱、网络空调等众多消费类和医疗保健类电子设备等;此外还有在多媒体手机、袖珍电脑、掌上电脑、车载导航器等方面应用,将极大地推动嵌入式技术深入到生活和工作的方方面面。
[0003]目前在嵌入式系统的开发和使用过程中,经常要实现将对应的固件烧写到嵌入式系统中。所谓固件(firmware),就是文件,固化在存储介质上的文件。而文件,其实就是数据。所谓烧写,就是写数据,把文件,如固件或数据,写到存储介质上。存储介质,主要是指嵌入式系统中存放固件(firmware)的地方,如Nor Flash> Nand Flash、SD/MMC卡等方式。
[0004]在嵌入式系统中需要烧写的固件通常包括BootLoader、操作系统内核(Kernel)、文件系统(rootfs)。目前嵌入式系统的通常烧写方式是,将系统通过串口接到PC上,启动串口通讯程序(如超级终端),然后给嵌入式系统上电,等待BootLoader启动,然后在串口通讯程序中根据BootLoader启动后的提示信息输入各种命令,例如擦除存储介质、下载内核或文件系统、烧写内核或文件系统等,完成系统的烧写。由于目前有多个厂家的BootLoader可供使用,如常见的U-boot、RedBoot等,这些厂家的BootLoader的操作命令各不相同,而且命令本身的格式也很复杂,需要设置各种参数,手动输入很容易出错。特别是在调试或生产过程中烧写多台设备时,需要进行大量的重复劳动。而且有些系统的设置不能重复,如MAC地址的设置,每台设备必须有唯一的MAC地址,这就更增加了手动输入的劳动量,同时增大了出错的可能性。

【发明内容】

[0005]本发明的目的在于提出一种自动烧写嵌入式设备固件的方法及其系统,能够减少大量的重复劳动同时减少出错的可能性。
[0006]为达此目的,本发明采用以下技术方案:
[0007]一种自动烧写嵌入式设备固件的方法,用于烧写包含BootLoader的串口嵌入式设备的固件,包括:
[0008]根据各型号的固件编写配置文件,所述配置文件的内容包括,各固件通过串口输出的配置提示信息和根据所述配置提示信息应该输入的命令或配置信息;[0009]将嵌入式设备通过串口连接到计算机上并上电,顺次从所述串口获取所述嵌入式设备的配置提示信息;
[0010]从所述配置文件中,查找与所述嵌入式设备的配置提示信息相匹配的配置提示信息;
[0011]通过所述串口将所述配置文件中根据所述配置提示信息应该输入的命令或配置信息写入到所述嵌入式设备固件,直到烧写全部完成。
[0012]进一步地,所述嵌入式设备固件为BootLoader、BootLoader加操作系统内核,BootLoader加文件系统,或BootLoader加操作系统内核加文件系统。
[0013]进一步地,所述配置信息包括:启动参数、IP地址和/或MAC地址。
[0014]进一步地,所述配置文件为文本文件、XML文件或其他私有格式文件。
[0015]进一步地,所述嵌入式设备包含的BootLoader包括U-boot或RedBoot。
[0016]根据本发明的同一构思,本发明还提供了一种自动烧写嵌入式设备固件的系统,用于烧写包含BootLoader的串口嵌入式设备的固件,包括:
[0017]配置文件编写模块,用于根据各型号的固件编写配置文件,所述配置文件的内容包括,各固件通过串口输出的配置提示信息和根据所述配置提示信息应该输入的命令或配
置信息;
[0018]提示信息读取模块,用于将嵌入式设备通过串口连接到计算机上并上电,从所述串口获取所述嵌入式设备的配置提示信息;
[0019]匹配写入模块,用于从所述配置文件编写模块编写的配置文件中,查找与所述提示信息读取模块所读取的配置提示信息相匹配的配置提示信息,通过所述串口将所述配置文件中,根据所述配置提示信息应该输入的命令或配置信息写入到所述嵌入式设备固件。
[0020]进一步地,所述嵌入式设备固件包括BootLoader、BootLoader加操作系统内核,BootLoader加文件系统,或BootLoader加操作系统内核加文件系统。
[0021]进一步地,所述配置信息包括:启动参数、IP地址和/或MAC地址。
[0022]进一步地,所述配置文件编写模块编写的所述配置文件为文本文件、XML文件或其他私有格式文件。
[0023]进一步地,所述嵌入式设备包含的BootLoader为U-boot或RedBoot。
[0024]本发明通过串口自动获取BootLoader的输出信息,并根据不同的信息自动输入相应的命令来完成嵌入式系统的烧写和配置,如启动参数、IP地址、MAC地址等。该方法可以兼容不同厂家的BootLoader,免除了手动输入的复杂性和易出错性,同时具有很强的灵活性,如IP/MAC地址自动递增,避免重复等问题。
【专利附图】

【附图说明】
[0025]图1是本发明具体实施例一所述的自动烧写嵌入式设备固件的方法流程图;
[0026]图2是本发明具体实施例二所述的自动烧写嵌入式设备固件的系统结构框图。
【具体实施方式】
[0027]下面结合附图并通过【具体实施方式】来进一步说明本发明的技术方案。
[0028]实施例一[0029]图1是本实施例所述的自动烧写嵌入式设备固件的方法流程图,如图1所示,本实施例所述的自动烧写嵌入式设备固件的方法包括:
[0030]S101、根据各型号的固件编写配置文件。
[0031]在嵌入式系统中需要烧写的固件通常包括BootLoader、操作系统内核(Kernel)、文件系统(rootfs)。
[0032]BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
[0033]操作系统内核(Kernel)是指操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。
[0034]文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。嵌入式系统的应用程序和所需的数据都存储在文件系统中。
[0035]由于固件烧写必须保证BootLoader已配置好并能良好运行,所以,所述嵌入式设备固件为BootLoader、BootLoader加操作系统内核,BootLoader加文件系统,或BootLoader加操作系统内核加文件系统。
[0036]不同的类型的固件操作命令各不相同,而且命令本身的格式也不同,例如,目前有多个厂家的BootLoader可供使用,如常见的U_boot、RedBoot等,这些厂家的BootLoader的操作命令各不相同,而且命令本身的格式也不同,因此需要根据各型号的固件的不同的配置提示信息和根据所述配置提示信息应该输入的命令或配置信息,以使本方法可以兼容不同厂家的BootLoader,免除了手动输入的复杂性和易出错性,同时具有很强的灵活性,如IP/MAC地址自动递增,避免重复等问题。
[0037]配置文件可以是文本文件、XML或任何其他私有格式。配置文件的内容为该BootLoader通过串口输出的显示信息和根据该显示信息应该输入的命令或配置信息。以下以常用的BootLoader — U-Boot,配置文件以文本文件为例加以说明:
[0038]U-Boot启动时会通过配置提示信息(串口输出信息):Hit any key to stopautoboot,此时应按任意键停止继续启动,以便输入配置信息和其他命令(如烧写命令)。因此配置文件可以写为:
[0039]DisplayMsgl=Hit any key to stop autoboot
[0040]InputCmdl=\n
[0041]DisplayMsgl=Hit any key to stop autoboot 表不从串 口输出的显不信息,InputCmdl=\n表示根据该显示信息应该输入的命令,\n为C/C++语言中的回车命令。
[0042]输入回车命令后,串口会输出显示信息:BBG U-Boot>,此时就可以根据需要输入配置信息或其他命令了。如配置MAC地址的命令为:setenv ethaddr xx:xx:xx:xx:xx:xx,因此配置文件可以写为:
[0043]DisplayMsgl=Hit any key to stop autoboot
[0044]InputCmdl=\n[0045]DisplayMsg2=BBG U_Boot>
[0046]InputCmd2=setenv ethaddr xx:xx:xx:xx:xx:xx
[0047]再如擦除命令为:erase start end (擦除Flash从地址start到地址end),贝丨J配置文件为:
[0048]DisplayMsgl=Hit any key to stop autoboot
[0049]InputCmdl=\n
[0050]DisplayMsg2=BBG U_Boot>
[0051]InputCmd2=setenv ethaddr xx:xx:xx:xx:xx:xx
[0052]DisplayMsg3=BBG U_Boot>
[0053]InputCmd3=erase start end
[0054]因此配置文件就是由配置提示信息(串口输出信息)和配置/命令对组成的。
[0055]S102、将嵌入式设备通过串口连接到计算机上并上电。
[0056]S103、从串口顺次获取固件的配置提示信息。
[0057]该步骤的作用是获取嵌入式设备从串口输出的信息,将该信息与配置文件预设的信息进行比对,如果对比失败,则继续读取下一条信息。如果对比成功,则读取配置文件中的相应命令,再通过串口将该命令输入到BootLoader,从而实现嵌入式系统的自动烧写和配置。比如,嵌入式系统的烧写和配置过程通常包括:根据串口信息输入命令进入BootLoader配置模式、输入配置命令(如配置IP和MAC地址等)、输入擦除Flash的命令、输入烧写内核和文件系统的命令,这些信息都要预先输入配置文件,软件运行时会根据串口信息自动选取相应的命令进行配置和烧写。
[0058]另外该步骤还可以批量设置IP或MAC地址,如设置IP或MAC的地址范围,每烧写或配置一个设备后,地址自动加一,或根据配置文件中的预设规则进行递增,从而保证了 IP或MAC地址的唯一性,降低了人工手动操作的易错性。
[0059]S104、从配置文件中查找与该配置提示信息相匹配的配置提示信息。
[0060]S105、从配置文件中读取对应的命令或配置信息。
[0061]S106、将命令或配置信息写入固件。
[0062]嵌入式系统中存放固件的地方有多种,如Nor Flash、Nand Flash、SD/MMC卡等方式。
[0063]S107、判断烧写是否全部完成,若是则烧写完毕,结束,否则返回步骤S103。
[0064]实施例二
[0065]图2是本实施例所述的自动烧写嵌入式设备固件的系统结构框图,如图2所示,本实施例所述的自动烧写嵌入式设备固件的系统包括:
[0066]配置文件编写模块201,用于根据各型号的固件编写配置文件,所述配置文件的内容包括,各固件通过串口输出的配置提示信息和根据所述配置提示信息应该输入的命令或
配置信息。
[0067]在嵌入式系统中需要烧写的固件通常包括BootLoader、操作系统内核(Kernel)、文件系统(rootfs)。
[0068]BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
[0069]操作系统内核(Kernel)是指操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。
[0070]文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。嵌入式系统的应用程序和所需的数据都存储在文件系统中。
[0071]由于固件烧写必须保证BootLoader已配置好并能良好运行,所以,所述嵌入式设备固件为BootLoader、BootLoader加操作系统内核,BootLoader加文件系统,或BootLoader加操作系统内核加文件系统。
[0072]不同的类型的固件操作命令各不相同,而且命令本身的格式也不同,例如,目前有多个厂家的BootLoader可供使用,如常见的U-boot、RedBoot等,这些厂家的BootLoader的操作命令各不相同,而且命令本身的格式也不同,因此需要根据各型号的固件的不同的配置提示信息和根据所述配置提示信息应该输入的命令或配置信息,以使本方法可以兼容不同厂家的BootLoader,免除了手动输入的复杂性和易出错性,同时具有很强的灵活性,如IP/MAC地址自动递增,避免重复等问题。
[0073]配置文件可以是文本文件、XML或任何其他私有格式。配置文件的内容为该BootLoader通过串口输出的显示信息和根据该显示信息应该输入的命令或配置信息。以下以常用的BootLoader — U-Boot,配置文件以文本文件为例加以说明:
[0074]U-Boot启动时会通过配置提示信息(串口输出信息):Hit any key to stopautoboot,此时应按任意键停止继续启动,以便输入配置信息和其他命令(如烧写命令)。因此配置文件可以写为:
[0075]DisplayMsgl=Hit any key to stop autoboot
[0076]InputCmdl=\n
[0077]DisplayMsgl=Hit any key to stop autoboot 表不从串口输出的显不信息,InputCmdl=\n表示根据该显示信息应该输入的命令,\n为C/C++语言中的回车命令。
[0078]输入回车命令后,串口会输出显示信息:BBG U-Boot>,此时就可以根据需要输入配置信息或其他命令了。如配置MAC地址的命令为:setenv ethaddr xx:xx:xx:xx:xx:xx,
因此配置文件可以写为:
[0079]
【权利要求】
1.一种自动烧写嵌入式设备固件的方法,用于烧写包含BootLoader的串口嵌入式设备的固件,其特征在于,包括: 根据各型号的固件编写配置文件,所述配置文件的内容包括,各固件通过串口输出的配置提示信息和根据所述配置提示信息应该输入的命令或配置信息; 将嵌入式设备通过串口连接到计算机上并上电,顺次从所述串口获取所述嵌入式设备的配置提示信息; 从所述配置文件中,查找与所述嵌入式设备的配置提示信息相匹配的配置提示信息; 通过所述串口将所述配置文件中根据所述配置提示信息应该输入的命令或配置信息写入到所述嵌入式设备固件,直到烧写全部完成。
2.如权利要求1所述的自动烧写嵌入式设备固件的方法,其特征在于,所述嵌入式设备固件包括BootLoader、BootLoader加操作系统内核,BootLoader加文件系统,或BootLoader加操作系统内核加文件系统。
3.如权利要求1或2所述的自动烧写嵌入式设备固件的方法,其特征在于,所述配置信息包括:启动参数、IP地址和/或MAC地址。
4.如权利要求3所述的自动烧写嵌入式设备固件的方法,其特征在于,所述配置文件为文本文件、XML文件或其他私有格式文件。
5.如权利要求3所述的自动烧写嵌入式设备固件的方法,其特征在于,所述嵌入式设备包含的 BootLoader 为 U-boot 或 RedBoot。
6.一种自动烧写嵌入式设备固件的系统,用于烧写包含BootLoader的串口嵌入式设备的固件,其特征在于,包括: 配置文件编写模块,用于根据各型号的固件编写配置文件,所述配置文件的内容包括,各固件通过串口输出的配置提示信息和根据所述配置提示信息应该输入的命令或配置信息; 提示信息读取模块,用于将嵌入式设备通过串口连接到计算机上并上电,顺次从所述串口获取所述嵌入式设备的配置提示信息; 匹配写入模块,用于从所述配置文件编写模块编写的配置文件中,查找与所述提示信息读取模块所读取的配置提示信息相匹配的配置提示信息,通过所述串口将所述配置文件中,根据所述配置提示信息应该输入的命令或配置信息写入到所述嵌入式设备固件。
7.如权利要求6所述的自动烧写嵌入式设备固件的系统,其特征在于,所述嵌入式设备固件包括BootLoader、BootLoader加操作系统内核,BootLoader加文件系统,或BootLoader加操作系统内核加文件系统。
8.如权利要求6或7所述的自动烧写嵌入式设备固件的系统,其特征在于,所述配置信息包括:启动参数、IP地址和/或MAC地址。
9.如权利要求8所述的自动烧写嵌入式设备固件的系统,其特征在于,所述配置文件编写模块编写的所述配置文件为文本文件、XML文件或其他私有格式文件。
10.如权利要求8所述的自动烧写嵌入式设备固件的系统,其特征在于,所述嵌入式设备包含的 BootLoader 为 U-boot 或 RedBoot。
【文档编号】G06F9/445GK103914324SQ201310005610
【公开日】2014年7月9日 申请日期:2013年1月8日 优先权日:2013年1月8日
【发明者】苗琦龙 申请人:海尔集团公司, 青岛海尔智能家电科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1