PC端(基于Linux系统)通过串并网线口连接ARM开发板,烧写Bootloader并启用Bootp和Tftp等服务刷写Linux系统。

2023-05-16

写这篇博客之前有几个问题需要解决,如下。
问题:
1.Bootloader的作用是什么?
2.串并网线口的用处是什么?
3.TFTP和BOOTP服务的作用是什么?
4.整个流程是什么?

引言:
以电脑的BIOS(Basic Input Output System)作为敲门砖来展开这个话题。
如果有人会装系统大概都会利用键盘F2等按键在没有进入系统之间登陆烧写在ROM的BIOS固件。我们可以看到,这个固件起到了引导作用,同时也能开启和关闭某些电脑的服务。
那么如何在ARM等开发板上烧写比较简易的引导呢?现在本人脑袋里想到的就是Bootloader,当然还有其他的引导啦!

好的,现在解决开篇提出的第一个问题。
“Bootloader的作用是什么?“
嵌入式Linux系统粗略可以分为四层(如下图)
这里写图片描述
我们可以这样认为,Bootloader就是一个简易的将PC端Linux系统和“毫无生机”的嵌入式ARM开发板连接起来的一个软件。
还有另外一种叫做Monitor的固件,当然啦,Monitor的功能更完善。具体的差异在此不做讨论。因此,严格来讲,Bootloader仅仅是引导设备并执行主程序的固件。
再来,我们介绍一下Bootloader的两种操作模式。
其一,“启动加载”模式
简单来说,就是啥也不干,直接加载系统就好。但是对于嵌入式ARM开发板来说,直接这样做是行不通的。道理你们都懂。。。
其二,“调试”模式
这下好办了,有了调试功能就好比有了Debug工具。你能想象的基本功能,它都有。具体的,请见Bootloader的相关资料。

介绍了Bootloader,那么我们就着手烧写ARM开发板吧!(想象都有点小激动呐)
具体的步骤如下:
1)用串口通过minicom测试电脑是否与开发板相连。一般来说,先打开minicom,然后打开开发板就可以看到出现一组关于开发板的数据。

2)因为本人是利用虚拟机中的Linux系统操作开发板的,所以建立了一个方便从windows传输文件到linux的一个共享目录。然后把所有相关的文件都放进去(比如:bootloader,Jflash-XSBase,Boot-XSBase,还有就是简易功能化的Linux系统)

3)做好了准备工作,那就开始烧写Bootloader。解压完了Jflash和Boot文件之后,就把Bootloader中的可执行文件boot放在jflashmm的目录下。这样执行的时候方便快捷。
那么直接执行命令 ./jflashmm boot 就可以刷入bootloader了。刷写成功会出现”Verification successful!”的字样。

4)接下来,我们看看bootloader里面的“调试”功能吧。因为我们还没有把Linux系统写入开发板,那就只能调试咯!这个时候我们需要记录一下开发板的IP地址,用bootloader的命令“bdinfo”就可以显示出来了。当然,IP地址我们待会能用到,而且很关键。

5)然后就是开启刷写Linux系统的基本服务咯。先在主机上开启Bootp服务,通过BOOTP/TFTP协议引导image,Bootp通过网络启动,需要提前设置好硬件地址。
接下来来我们需要实行这个BOOTP/TFTP的协议,当然我们需要写一写关于Linux的配置文件。
在/etc/目录下创建bootptab文件,它能存储IP地址等信息,可以参照下图标准。
这里写图片描述
当然一个配置文件还不够,因为需要用到bootp/tftp协议。
那就要创建一个bootp文件启动bootp服务。可以参照如下图。
这里写图片描述
最后需要安装tftp服务。
然后在/etc/xinetd.d/目录下创建一个tftp文件。(默认情况下TFTP服务是禁止的,因此需要写这个文件开启。)可以参照下图。
这里写图片描述

6)至此,就完成了基本的配置工作。我们也能注意到,J-tag和串口网孔的作用了。(J-tag作为烧写Bootloader的作用,串口可以通过BOOTP/TFTP协议传输Linux系统文件,网口嘛,因为你要用网线才能获得来自bootloader发送来的来自ARM开发板关于IP地址的数据啊)

7)最后就要写入Linux系统到开发板了,当然需要将功能模块化的Linux的Img印象放入到一个合适的文件目录里面,不如我们就命名为tftpboot吧。 那就把相应的img文件放进去,到时候直接调用安装就可以咯。最后我们重启一下服务守护进程,这样才能实例化bootp和tftp服务。

8)好咯,在安装linux之前所有的工作都完成了,剩下的只需要重新利用minicom打开Bootloader的“自动加载”功能了。本人的开发板需要重启才能再次读取到Bootloader,所以这一点可能有点坑。
然后就可以看到Bootloader的菜单了:是不是和最初写C语言程序的时候差不多呢?
这里写图片描述
接下来可以利用我们准备已久的IP地址,然后与主机的设置成一样。在Bootloader里面利用“ set destipaddr ”命令就好了。
然后就可以选择Bootloader的第5个菜单项下载准备好的Linux文件就好了。最后再使用菜单项3下载内核镜像文件。如果不成功那就是网线没弄好咯。
当你下载完镜像文件之后,那么立即进入菜单项6将文件系统写入到ARM开发板的flash中去吧!

9)重启下开发板,你再通过Minicom可以关注到你的Linux系统已经安装成功啦!
至此,所有的步骤都已经完成。起先提出的几个问题是否迎刃而解了呢?
本人能力有限,如果出现错误和不足之处,还希望读者海涵!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PC端(基于Linux系统)通过串并网线口连接ARM开发板,烧写Bootloader并启用Bootp和Tftp等服务刷写Linux系统。 的相关文章

  • Redis对不起是我肤浅了(基础和应用篇):位图(Bitmaps)的妙用和深入分析每个命令的用法

    一 前言 在Redis 4 0 版本之前 xff0c Redis是单线程程序 xff0c 主要是指Redis的网络I O线程 Redis的持久化 集群同步等操作 xff0c 则是由另外的线程来执行的 但在Redis 4 0 版本之后 xff
  • 如何保障缓存和数据库的一致性(超详细案例)【转载自 程序员囧辉】

    如何保障缓存和数据库的一致性 xff08 超详细案例 xff09 转载自 程序员囧辉 一 前言二 正文方案1 xff1a 同步删除1 1 核心流程1 2 存在的问题 方案2 xff1a 延迟双删2 1 核心流程2 2 存在的问题 方案3 x
  • 最新 MySQL 8.0.32 在Win10安装部署(详细)

    一 前言 MySQL官方Windows版下载地址 xff1a https dev mysql com downloads installer 本教程详细指导如何在Win10系统下安装部署最新版MySQL 8 0 32 MySQL系列安装部署
  • 写最好的Nacos Server稳定版(nacos-server-2.1.1)在Centos、Docker和Windows上安装部署(单机、集群)教程

    写最好的Nacos Server稳定版 xff08 nacos server 2 1 1 xff09 在Centos Docker和Windows上安装部署 xff08 单机 集群 xff09 教程 一 前言二 Nacos Server在
  • Cordova热更新(一、流程与原理篇)

    最近需要上线app xff0c 所以需要对cordova热更新的整个流程整理下 xff0c 防止出现问题 xff0c 项目的结构大致如下 xff1a 一个是vue开发的工程叫Vue mobile xff0c 一个是cordova打包app的
  • 对Socket CAN的理解(1)——【CAN总线原理】

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 由于Socket CAN涉及到CAN总线协议 套接字 Linux网络设备驱动等 因此 xff0c 为了能够全面地了解Socket CAN的
  • 无人机+卫星通信

    卫星通信的必要性 xff0c 对于人类来说 xff0c 那就是发生了自然灾害 xff0c 地面通信中断的情况下 xff0c 卫星通信是唯一有效且及时的通信手段 xff0c 卫星通信技术还多用于军事领域 xff0c 因为军队作战的地方多没有地
  • 数字孪生智慧运维系统方案

    作者 朱金灿 来源 clever101的专栏 为什么大多数人学不会人工智能编程 gt gt gt 1 前言 注意 该解决方案都有具体的软硬件实现代码 有需要者请加我的wx explorer101
  • NDK篇 - 手动编译 SQLite

    今天来写 NDK 的最后一篇 SQLite xff0c 下一篇文章将进入 Framework 的世界 SQLite xff0c 是一款轻型的数据库 xff0c 是遵守 ACID 的关系型数据库 xff0c 它包含在一个相对小的 C 库中 它
  • LeetCode上做题之体会(一)

    今天做到一道题是这样的 xff1a Ugly Number Write a program to check whether a given number is an ugly number Ugly numbers are positiv
  • simulink bus总线创建方法

    在simulink中创建bus总线 xff0c 主要包含2种方法 xff1a 基于模块创建总线对象 使用模块 xff0c 根据输入信号创建总线 基于 MATLAB 数据创建总线对象 可以使用 Simulink Bus cellToObjec
  • 2020-09-17

    在上篇推文中simulink bus总线创建方法详细介绍了基于matlab数据创建总线对象的方法 xff0c 这里介绍使用bus editor与data dictionary进行总线的创建管理 简单来说 xff0c data diction
  • 2021做时间的朋友

    第一次完整地听完罗胖的 做时间的朋友 跨年演讲 xff0c 今年是他该系列的第6年 xff0c 请了6个核桃做广告赞助 在保持好奇心地驱动下 xff0c 听完了全程 xff0c 也听完了全程的广告 xff0c 不去论演讲如何 xff0c 从
  • PIXHAWK位置控制整体框架及期望推力向量转化成目标姿态旋转矩阵算法的深度解析

    万事开头难 xff0c 这是我的第一篇博客 谨以此将所学所悟记录下来 xff0c 以防遗失 xff0c 同时欢迎与大家进行技术交流 xff0c 共同学习 xff0c 共同进步 xff0c 玩的开心 xff01 这里的位置控制主要看PX4的m
  • 通过mavlink实现自主航线的过程笔记

    首先是mavlink的协议理解和移植过程 xff08 关于移植参考网址 xff1a https www cnblogs com lovechen p 6064802 html 和http www cnblogs com lovechen p
  • 李群,李代数的几何学心得总结

    大家好 xff0c 我是飞鸽 上了研究生后听到师兄讲到李群 李代数 xff0c 一脸的懵逼 xff0c 他说 我面试搞无人机的如果不知道这个肯定不要 于是乎 xff0c 我在图书馆查询了相关书籍 xff0c 可只有一些英文的书籍 xff0c
  • Hex HERE+ RTK GPS用于自创地面站的过程记录

    教研室本着便宜的原则买了一套hex HERE 43 RTK GPS 5000人民币 xff0c 水平定位精度5cm 垂直定位精度也还可以 xff0c 忘了当时测的是多少了 xff08 以前万级的RTK xff0c 定位精度厘米级 xff09
  • u-center配置GPS的使用说明

    承接上篇 HERE 43 RTK GPS用于自创地面站的过程记录 xff0c 本文主要讲解u center如何配置HERE 43 RTK GPS xff08 一般的gps同此方法一样 xff09 基本配置可先查看网址 xff1a http
  • 对云台、IMU、鲁棒性和硬件时间同步的理解

    作者 xff1a 朱金灿 来源 xff1a clever101的专栏 为什么大多数人学不会人工智能编程 xff1f gt gt gt slam是一门集硬件和软件的多科学技术 xff0c 涉及到很多技术术语 概念以及数学公式等等 下面我将结合
  • QT无人机地面站设计与制作随笔总结

    自己不是专职地面站设计 xff0c 这里简单将经验叙述下 xff08 另外把自己一直空缺着的QT分类补一篇文章 xff09 无论是处于地面站学习的过程还是做项目进行重新整体设计 xff0c 对于这种写代码的过程最好先在MindMaster中

随机推荐