linux启动minicom、u-boot的常用命令、网络命令tftp、nfs/根文件系统、u-boot的bootargs环境变量

linux启动minicom

sudo minicom -con

进入minicom界面:
在这里插入图片描述
打开单片机
在这里插入图片描述
在打开之后,我们通过

printenv

查看环境配置
在这里插入图片描述
在修改配置之前,我们最好先将环境初始化一下,初始化代码为

nand erase.chip

u-boot的常用命令

尽管u-boot是一个裸机程序,但功能却一点也不简单。
u-boot支持的命令可用help命令打印。下面介绍一些常用命令。
内存命令:
内存查看命令md [.b, .w, .l] address [# of objects]
在这里插入图片描述
内存修改命令(地址不自增) nm [.b, .w, .l] address
内存修改命令(地址自增) mm [.b, .w, .l] address
内存拷贝命令 cp [.b, .w, .l] source target count从source拷贝count个单元到target
nand-flash常用命令:
nand-flash信息 nand info
nand-flash坏块信息 nand bad
nand dump[.oob] off - dump page 打印出从off处开始的 dump page 页的数据
nand erase.chip nand-flash整片擦除

u-boot的环境变量相关的命令

之前提到过u-boot的一个功能是能够设置、保存一些参数。这些参数无论是u-boot本身还是引导linux操作系统都是至关重要的。这些参数被称之为环境变量,和linux系统、windows系统所说的环境变量类似。
可以使用printenv命令打印出所有的环境变量,可以看出环境变量都是一些键值对。这里键值全是文本,或者简单认为就是字符串。键值对中的键被称之为变量名,值被称之为变量的值。
我们可以随意添加一个环境变量,设置新的环境变量使用setenv命令如:setenv myarg ‘hello world’
也可以修改一个环境变量,只需对原有的环境变量重新赋值就行。如:setenv myarg ‘hello 2440’
如果要删除一个环境变量只需将值设置为“空”就行。如:setenv myarg
每个环境变量都有
各自不同的作用
,如bootdelay是指u-boot启动后等待的时间,超时后将会自动加载linux内核并尝试启动内核。可需要注意的是修改环境变量之后要保存保存就是把参数写入到nand-flash中去。用saveenv保存对环境变量的修改。
在这里插入图片描述
u-boot提供了常用的网络协议,接下来我们用的最多的就是tftp协议。因为我们需要通过该协议从电脑上下载linux内核程序,但是要使用tftp,就需要我们配置好网络相关的环境变量。他们包括:

  1. netmask子网掩码
  2. ethaddr 以太网mac地址
  3. serverip tftp服务器ip地址
  4. ipaddr mini2440ip地址
    必须按照实际情况配置这些参数,保存后重启开发板,并用ping命令测试。这个ping命令只能开发板ping电脑。

u-boot最常用的网络命令tftp

要使用tftp网络协议,我们首先需要把ipaddr跟自己虚拟机上的地址设置在同一个段上
在这里插入图片描述
在这里插入图片描述
随后我们就可以ping一下,看是否能连通
在这里插入图片描述
alive说明已经连通

u-boot用tftp下载linux内核并启动linux

u-boot是一种引导程序,我们目的是要启动linux系统。既然u-boot可以使用tftp来下载任意文件,那么就可以使用tftp下载编译好的linux内核文件到mini2440中,并让mini2440引导linux系统。

  1. 复制已经编译好的linux内核文件uImage到tftp根目录。
  2. 用tftp命令下载这个文件到开发板:tftp 0x30008000 uImag
  3. 下载完成后使用u-boot命令bootm 0x30008000启动linux操作系统;
    在这里插入图片描述
    启动内核:
    在这里插入图片描述
    此时已经启动成功!
    若启动不成功,则说明缺少根文件系统
    我们创建一个文件:nfs

nfs挂载
NFS(Network File System)是一种用于分布式文件系统的协议,它允许计算机用户或者操作系统通过网络以NFS客户端形式访问远程服务器上的文件。

nfs/根文件系统

linux内核启动以后会自动去挂载根文件系统。
那么什么是根文件系统?注意这里千万不要把根文件系统和fat,fat32,nfs……文件系统混为一谈。这里的根文件系统其实指的是一个文件夹,这个文件夹其实就是linux的系统根目录。
这个就是ubuntu系统根目录,也是根文件系统:
在这里插入图片描述
首先第一个问题是这个根文件系统放哪?按照裸机,ubuntu的根文件系统是保存在硬盘上的,那么自然mini2440的根文件系统就应该在mini2440的硬盘nand-flash上。但是为了之后我从电脑上向mini2440传递文件方便,在开发阶段我们一把都使用nfs网络文件系统
按照一般的方法,根文件系统的制作需要使用专门的工具软件busy-box。其实就是创建一堆文件夹,并编译常用的命令进去。这里我们使用已经编译好的根文件系统rootfs111.tar。我们直接把这个压缩文件在nfs服务器文件夹中解压缩即可。

查看自己是否安装nfs:
在这里插入图片描述
说明nfs服务端正常工作,之后我们还需要配置一个跟nfs相关的一个重要配置:

sudo vi /etc/exports 

在这里插入图片描述
我们需要在nfs里面放置根文件系统
在这里插入图片描述
这段系统就是给2440用的。
如何让mini2440知道我们的根文件系统是在nfs服务器上,并让linux自动去挂载呢?这个需要通过一个u-boot的环境变量来设置。

u-boot的bootargs环境变量

u-boot的bootargs环境变量是一个非常重要的环境变量,该环境变量并不是给u-boot自己用的,这个环境变量在bootm时传递给linux内核,使linux内核清楚应该去哪里找根文件系统
一个设置nfs根文件系统的例子如下:

setenv bootargs `root=/dev/nfs 
nfsroot=192.168.1.100:/home/linux/nfs/rootfs ip=192.168.1.17 
console=ttySAC0,115200 init=/linuxrc`

主要成员
含义如下:

  1. root=/dev/nfs 表示根文件系统是nfs即网络文件系统,如果使用nand-flash作为根文件系统载体,则root=/dev/mtdblockx
  2. nfsroot=192.168.1.100:/home/linux/nfs/rootfs 表示网络文件系统挂载的具体位置
  3. ip=192.168.1.17 linux启动以后的ip地址
  4. console=ttySAC0,115200 linux系统启动以后控制台是串口0,波特率115200
  5. init=/linuxrc linux系统启动后的第一个进程在根文件系统中的位置
    这个过程如果每次都是手动操作的话过于繁琐,我们可以设置bootcmd环境变量来让系统自动执行这个过程。
    如果把上面的过程设置到bootcmd中去的话可以:
setenv bootcmd ‘tftp 0x30008000 uImage;bootm 0x30008000

可以看出bootcmd变量类似一个脚本,里面就放了两个命令,分别就是下载和启动命令。
保存配置后重启开发板,启动后不要输入任何东西,系统在倒计时结束后自动运行bootcmd
如果已经进入u-boot命令行,可以用run bootcmd执行启动命令
这样子就可以进入终端了
在这里插入图片描述

nfs打开不成功

sudo vi /etc/default/nfs-kernel-server

在这里插入图片描述
在最后一行加上:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog" //版本

完后重启即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/630511.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive进阶(1)----HDFS写入数据流程(赋图助君理解)

HDFS写入数据流程 1.理论流程描述 HDFS(Hadoop分布式文件系统)的数据写入流程是一个复杂但高效的过程,可以分为以下8个步骤: 1、client(客户端)发起文件上传请求; 2、通过发送RPC请求与NameNode建立通讯。NameNode…

【Python基础】Redis

文章目录 [toc]进入Redis交互模式Redis服务测试切换仓库字符串Key命令HashListSetZSet数据添加数据查询数据更新数据删除查询存在的所有key 个人主页:丷从心 系列专栏:Python基础 学习指南:Python学习指南 进入Redis交互模式 redis-cliRed…

uniapp中scroll-view初始化的时候 无法横向滚动到某个为止

项目需求 实现日历&#xff08;13天&#xff09;默认高亮第六天 并定位到第六 左边右边各六天&#xff08;可以滑动&#xff09; 直接上代码 <template><scroll-view class"scroll-X":show-scrollbar"true" :scroll-x"scrollable":…

Mac电脑版鼠标连点工具 RapidClick for Mac

RapidClick for Mac是一款方便实用的自动点击工具&#xff0c;可以帮助Mac用户在使用电脑时轻松、快速地进行鼠标操作。它可以模拟人类手指点击的动作&#xff0c;让您的鼠标点击变得更加快捷高效&#xff0c;大大提升了工作和游戏的效率。 RapidClick for Macv1.5.1激活版下载…

LangChain LangServe 学习笔记

LangChain LangServe 学习笔记 0. 引言1. LangServe 概述2. 特性3. 限制4. 安装5. 示例应用程序6. OpenAPI文档7. Python SDK 客户端8. Playground9. 聊天可运行页面 0. 引言 使用 LangServe 可以立即将您的LLM应用程序变成 API 服务器。 LangServe 使用 FastAPI 构建&#x…

微信小程序之点击事件

微信小程序中常用的点击事件主要是 tap&#xff0c;但除此之外还有其他的触摸类事件&#xff0c;用于不同的交互场景。以下是一些常见的点击和触摸相关的事件及其区别&#xff1a; 1、tap——最基本的点击事件&#xff0c;适用于一般的轻触交互&#xff0c;类似于 HTML 中的 c…

使用Python工具库SnowNLP对评论数据标注(二)

这一次用pandas处理csv文件 comments.csv import pandas as pd from snownlp import SnowNLPdf pd.read_csv("C:\\Users\\zhour\\Documents\\comments.csv")#{a: [1, 2, 3], b: [4, 5, 6], c: [7, 8, 9]}是个字典 emotions[] for txt in df[sentence]:s SnowNLP(…

低噪声放大器是如何实现低噪声放大的功能的

灵敏度作为接收机最重要的指标之一,直接决定了接收机能分辨的最小信号。接收机的灵敏度计算公式如下所示。 Psensitivity=-174dBm+NF+10*lg(BW)+SNR 由接收机灵敏度的计算公式可知,影响接收机灵敏度的指标有噪声系数、带宽和信噪比,因此一旦带宽和信噪比确定了,那么能决…

计算机网络 -- 网络编程基础

一 学习准备 1.1 IP地址 在 前文中我们提到过: IP 是全球网络的基础&#xff0c;使用 IP 地址来标识公网环境下主机的唯一性&#xff0c;我们可以根据 目的IP地址 进行跨路由器的远端通信。 但是我们也提到了&#xff0c;通过 IP 地址&#xff0c;只能寻找到目标主机&#xff…

iOS 全平台矢量动画库:体积小巧、功能丰富 | 开源日报 No.227

airbnb/lottie-ios Stars: 24k License: NOASSERTION lottie-ios 是一个用于在 iOS 平台上本地渲染 After Effects 矢量动画的库。 该项目主要功能、关键特性、核心优势包括&#xff1a; 跨平台支持&#xff1a;可在 iOS, macOS, tvOS, visionOS, Android 和 Web 上使用实时渲…

ElasticSearch:基础操作

一、ES的概念及使用场景 ElasticSearch是一个分布式&#xff0c;高性能、高可用、可伸缩、RESTful 风格的搜索和数据分析引擎。通常作为Elastic Stack的核心来使用 我们通过将ES 和 mysql对比来更好的理解 ES&#xff0c;ES和mysql相关的基本概念的对比表格如下&#xff1a; …

查询服务器上所有SQL SERVER数据库中是否包含某个字段,且该字段是否包含某个值

公司有一堆相同类别的客户&#xff0c;每个客户都部署了相同的一套系统&#xff0c;每套系统对应一个相同结构的数据库&#xff0c;昨天老板让查一下手机号码177xxxxx248是属于哪个客户的客户。 我要查的这个号码来自于oa_member表中的phone字段&#xff0c;我需要对所有的数据…