热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用kermit通过串口升级uboot

在开发板的启动选项中看到如下两行:7:LoadBootLoadercodethenwritetoFlashviaSerial.9:LoadBootLoadercodethenwri

在开发板的启动选项中看到如下两行:

7: Load Boot Loader code then write to Flash via Serial. 

9: Load Boot Loader code then write to Flash via TFTP.

可以通过串口升级uboot。之前都是通过TFTP升级的,现在既然可以通过串口升级,就试着升一下吧,不然心里总觉得少了点什么。

在板子启动的时候,输入“7”来选择通过串口升级uboot,然后看到下面的输出:

## Ready for binary (kermit) download to 0x80100000 at 57600 bps...

那么问题来了,kermit是什么?

通过搜索资料知道,kermit是一种简单的文件传输协议,可用于PC之间交换文件,以及从大型计算机下载文件到微机。该协议是由哥伦比亚大学的kermit项目组成员开发和维护的,是一个半双工的通信协议。有关kermit的详细资料请查看其官网:http://www.columbia.edu/kermit/ck80.html

ckermit串口工具

在Linux环境下使用较多的两款串口软件分别是minicom和ckermit,其中minicom用得最多,不少Linux发行版已经自带。但不少人反映minicom有时会有问题,u-boot开发者也都推荐使用ckermit,下面我们就来认识一下ckermit串口工具。

c-kermit是基于kermit文件传输协议的串口工具,其配置和使用较为简单,如下所示:

【功能】

1、支持kermit文件传输协议

2、自定义了一种脚本语言,可用于自动化工作

3、无论是网络通信还是串口通信,其操作是一致的,并支持多种硬件、软件平台

4、有安全认证、加密功能

5、内建FTP、HTTP客户端功能以及SSH接口

6、支持字符集转换

【安装】

$ sudo apt-get install ckermit

【配置】

c-kermit启动时,会从当前用户目录下查找.kermrc配置文件,因此我们先在$HOME目录下创建一个.kermrc文件,然后编辑文件内容如下:

set line /dev/ttyUSB0  # 根据实际情况填写

set speed 57600    # 根据实际情况填写

set carrier-watch off 

set handshake none 

set flow-control none 

robust 

set file type bin 

set file name lit 

set rec  pack 1000 

set send pack 1000  # 这里可以改大一点,方便下载内核

set window 5 

【使用】

kermit有两种工作模式:命令模式和连接模式,默认情况为命令模式。所谓连接模式,即可以从开发板中读取数据。

$ sudo kermit

这里使用root权限,直接进入命令模式。在该模式下输入"connect"或"c"则进入连接模式。

$ sudo kermit -c

使用这种方式启动ckermit,直接进入连接模式。从连接模式退回到命令模式先输入"[Ctrl]\",接着再输入"c"即可。

在命令模式下可以输入shell命令来进行相应的操作,如cd、ls、pwd等。

传输文件可以使用命令:send filename

退出ckermit可以使用命令:exit

保存log命令:log session

该命令则会在当前目录下生成一个session.log文件,该文件保存了本次会话的串口信息。

【举例】

步骤1:

$ sudo kermit -c

与开发板的串口建立连接。

步骤2:

上电,板子启动,输入"7",进入通过串口升级uboot等待状态。

步骤3:

输入"[Ctrl]\",在输入"c",进行ckermit命令模式。

步骤4:

输入发送文件命令:send uboot.bin

开始传送文件……

步骤5:

文件传送完毕,此时仍处于命令模式,输入"c",再次进入连接模式,通过串口与开发板通信。

至此,举例完毕!

使用kermit通过串口升级uboot


推荐阅读
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • 本文介绍了如何使用JavaScript和jQuery实现页面元素随着滚动条的移动而相应变化位置的功能,提供了一段简洁的代码示例。 ... [详细]
  • 本文介绍了如何利用Java中的URLConnection类来实现基本的网络爬虫功能,包括向目标网站发送请求、接收HTML响应、解析HTML以提取所需信息,并处理可能存在的递归爬取需求。 ... [详细]
  • 优化Input Checkbox与Label文本对齐的方法
    本文探讨了在网页设计中,如何有效解决input checkbox与label文字不对齐的问题。通过具体的代码实例和解决方案,帮助开发者实现更加美观的用户界面。 ... [详细]
  • Java与JSON互转:实现JSON到Java对象及Java对象到JSON的转换
    本文详细介绍了如何在Java中实现JSON数据与Java对象之间的相互转换,包括代码示例和常见问题解决方法。 ... [详细]
  • 题目 CF1245F: 清理春天的数学挑战 描述了一个数学问题:给定一个区间 [L, R](0 ≤ L, R ≤ 10^9),求该区间内满足 x + y = x ∧ y 的数对 (x, y) 的总数。 ... [详细]
  • 本文详细介绍了在使用Socket进行网络编程时,遇到链接器错误`undefined reference to WSAStartup@8`的解决方案,适用于多种开发环境。 ... [详细]
  • python开发mysql:单表查询&多表查询
    一单表查询,以下是表内容二多表查询,一下是表内容三总结&表创建过程单 ... [详细]
  • MacOS 重装指南
    本文详细介绍了如何通过U盘启动并重新安装MacOS,包括遇到安装问题时的解决方案。 ... [详细]
  • 如何恢复CAD中意外丢失的图纸数据
    当使用CAD进行绘图时,因突然断电或其他原因导致计算机关闭可能会造成工作数据的丢失。然而,通过利用CAD软件的自动保存功能,用户通常能够恢复至最近一次自动保存的数据状态。 ... [详细]
  • 本文深入探讨 PHPCMS 平台中的字符串截取函数 str_cut 的使用方法,该函数常用于控制输出的标题或内容摘要长度,有效避免因过长的文本导致的页面布局问题。通过本文,读者将掌握如何灵活运用此函数,包括处理 HTML 标签等高级技巧。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • 本文探讨了为何需要进行详尽的需求分析,以及在软件开发过程中常见的需求类型。同时,介绍了几种有效的方法来确保能够准确地捕捉到用户的实际需求。 ... [详细]
  • 深入理解Python编程
    本文探讨了作者在学习Python过程中遇到的挑战和转折点,以及如何通过找到合适的资源和方法来提升编程技能。对于初学者来说,这不仅是一个学习的过程,也是一个自我发现和调整学习策略的过程。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
author-avatar
男人要走火_293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有