嵌入式的几种固件烧录方式

嵌入式的几种固件烧录方式

1. 名词说明

1.1 什么是固件

固件,也成为firmware。下面引用百度的定义:

固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。

我的理解为:固件其实就是放在存储介质上的数据,当嵌入式板子启动时,能够从特定的位置找到这些文件,使得板子能够跑起来,这些文件就是固件。那么在嵌入式linux系统中,经常用到的文件如下:

  • uboot:如uboot.bin
  • kernel:如uImage
  • rootfs:如system.yaffs2文件

嵌入式板子上电后,会去特定的位置寻找uboot,uboot初始化内存,初始化串口,设置linux启动参数以后,会将内核从flash中加载到内存。然后内核会去挂载根文件系统并启动init。所以上面所说的三种文件可以理解为固件。

1.2 什么是烧录?

烧录的意思是将一些嵌入式启动所必须的硬件下载到嵌入式的储存设备中,这可能是norflash, 有可能是nandflash,也有可能是SD卡。当这些固件烧录到储存器中,板子下次启动的时候,直接从这些储存器中找到这些文件,嵌入式系统就能够直接跑起来。

2. 烧录哪几个固件

2.1. 开发过程中固件的烧写

2.1.1 只烧录uboot,其他的固件不用烧录?

答案是可以的 。当我们只烧录uboot后,进入uboot模式下,我们可以通过uboot模式下的命令来加载kernel和rootfs。在uboot模式下,我们使用tftp mem_addr kernel_file来加载内核,然后通过nfs来加载rootfs。这样做的前提是你的PC机提供tftp和nfs服务,并且你的开发板需要和PC机在同一网络下。这样做有一个缺点,每次板子上电时都需要去敲命令来加载内核以及nfs。

2.1.2 烧录uboot和内核,rootfs以nfs的形式挂载到PC机上

在开发过程中经常用到的是这种方案。只烧录uboot和kernel,在板子启动时,内核会通过nfs去PC机上寻找文件系统。这种方式有的时候可能会导致系统起来比较慢,可能是因为网络状况不好,这样可能会影响你的体验。

2.1.3 烧录uboot、kernel、rootfs

在常见的烧录方式是将这三个文件全部烧录到板子里,且内核需要支持nfs协议。板子能够从自己的存储器中将系统启动起来而不需要依赖网络。板子启动后,可以利用mount命令,将某一目录挂载到PC机上。当应用程序更新后,只需要将可执行文件拷贝到nfs目录下,板子就可以进行调试了。之前做个某创的FreeRtos项目,调试非常的麻烦,每次程序更新后就需要烧录系统,烧录一次需要5分钟,把脾气都磨没了。linux的调试还是很人性化的。

2.2. 产品发布后的固件升级方式

产品发布后升级固件一般有下面两种方式

  • 对于Nand Flash或者Nor Flash,通过MTD的工具,即mtd-util中的nandwrite等,操作/dev/mtdN将新的固件写入进去

  • 对于SD/MMC,通过操作/dev/mmc设备,将新的固件写入进去

    这个部分等后面会专门讲到mtd升级固件的方法。

3. 将固件烧录到存储介质张得方式

3.1 通过uboot烧录(两步到位)

有这么几种情形可以使用uboot进行烧录

  • 内核损坏

  • 文件系统加载不了

  • 存储介质的uboot损坏

    就一句话:只要你的uboot起来,你就可以用这种方式来烧录系统。uboot起来就可以通过存储器起来,也可以通过SD卡起来。比如你之前的存储在inand里面的uboot被擦除了,那么此时你的系统是铁定跑步起来的,那么怎么办呢?你可以通过制作一张SD 卡,卡里面放油可以运行的uboot,将嵌入式板子的启动方式打到外部的SD卡启动,那么此时只要你的SD里的uboot启动了,你就可以通过uboot下的工具将内核镜像和文件系统烧录到存储器中。比如使用工具fastboot。(当然你也可以只用一步到位的方式进行烧录)

3.2 通过USB烧录(一步到位)

在工厂量产的环境下,使用USB烧录是做有效也是最简洁的方式。将三个镜像文件准备好,使用特定的烧录工具,将三个文件直接烧录到存储器中。如君正的clone工具。

注释:

linux启动和烧录的区别:linux启动是指linux以哪种方式启动,如从norflash中启动,从inand中启动,从SD卡启动等,可以理解为从哪个地方启动表明uboot放在哪个存储器中。这个是启动而已,但是并不代表启动就一定能够成功。有可能启动到uboot阶段,发现kernel被破坏了。系统起不起来。这个时候就需要重现烧录系统。而l烧录是指将这些固件下载到嵌入式的存储器中。这个两个概念。但是在linux启动uboot后,我们可以通过uboot的命令来烧录系统。

  • 20
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: printexp是一种用于打印机和其他电子设备的固件更改工具。固件是设备的操作系统,它包含设备的控制程序和功能。通过更改固件,可以改变设备的行为和性能。 printexp可以通过几种方式来更改固件。首先,它可以通过升级固件版本来实现更改。固件开发商通常会为其产品提供固件更新,以修复漏洞、改进性能或添加新功能。使用printexp,用户可以下载和安装这些更新,从而更改设备的固件。 其次,printexp还可以通过定制固件来实现更改。有些设备制造商允许用户在固件上进行定制,以适应其特定需求。使用printexp,用户可以自定义设备的固件设置、界面和功能,以满足其特定的需求和偏好。 此外,printexp还提供了一种更改固件设置的方法。用户可以使用printexp提供的界面来浏览和修改设备的固件设置,例如打印分辨率、纸张类型和打印速度等。通过更改这些设置,用户可以对设备的打印质量和速度进行优化。 总之,printexp是一种用于打印机和其他电子设备的固件更改工具,可以通过升级固件、定制固件和更改固件设置来实现设备的性能改进和个性化定制。它为用户提供了一种方便和灵活的方式来调整和优化设备的固件。 ### 回答2: Printexp是一款软件,用于管理和控制打印机的固件固件是一种嵌入式软件,安装在打印机芯片上的程序,用于控制打印机的功能和操作。当我们需要更改打印机的功能或添加新的功能时,就需要通过Printexp来更改打印机的固件。 Printexp具有友好的用户界面,可以方便地进行固件更改。首先,我们需要将打印机连接到计算机上,并启动Printexp软件。然后,通过软件的菜单选项,我们可以选择需要更改的固件版本或打印机型号。 接下来,我们可以通过Printexp提供的编辑工具,对固件进行修改。这些修改可以包括添加新的打印功能、更改打印机的设置或优化打印质量等。我们可以根据自己的需求,对固件进行个性化的调整。 当我们完成固件的修改后,可以通过Printexp将修改后的固件重新烧录到打印机芯片上。这个过程需要确保打印机与计算机的连接正常,并遵循Printexp提供的详细指导。 重新烧录后,打印机将使用新的固件进行操作。我们可以在打印机上测试新功能是否正常工作,并根据需要进行进一步的优化和调整。 通过Printexp更改固件,我们可以使得打印机具有更多功能和更好的性能,以满足个性化的打印需求。这也是现代打印技术不断发展的体现,为用户提供了更高效、便捷的打印体验。 ### 回答3: printexp是一个用于打印机固件升级和更改的工具。通过使用printexp,用户可以将打印机的固件版本升级到新的版本或者更改一些固件的设置。 首先,用户需要下载最新的打印机固件文件,并将其保存在计算机上。然后,用户可以打开printexp工具,并连接打印机到计算机中。接下来,用户可以在printexp界面中选择“固件升级”或“固件更改”选项。 如果用户选择固件升级,printexp将会引导用户在计算机上选择保存的最新固件文件。一旦选择完成,printexp将自动开始固件升级过程。在此过程中,用户应该确保打印机保持连接,并保持电源稳定。 如果用户选择固件更改选项,printexp将展示固件设置的菜单。用户可以通过此菜单更改打印机的各种设置,如纸张大小、打印质量等。用户只需在菜单中选择所需设置,然后保存更改。 无论用户选择固件升级还是固件更改,printexp都会在完成后显示一个成功消息。用户可以断开打印机连接,并重新启动打印机以使更改生效。 需要注意的是,在使用printexp进行固件更改前,用户应该确保已经备份了打印机的重要数据。因为更改固件可能会导致数据丢失。 总之,printexp是一个方便的工具,可以帮助用户升级打印机固件或更改打印机的设置,提高打印机的性能和适应性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值