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" //版本

完后重启即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Torch 模型 感受野可视化

前言:感受野是卷积神经网络 (CNN) 中一个重要的概念,它表示 CNN 每一层输出的特征图上的像素点在输入图像上映射的区域。感受野的大小和形状直接影响到网络对输入图像的感知范围和精度,进而调整网络结构、卷积核大小和步长等参数,…

后端-MySQL-week11 多表查询

tips: distinct————紧跟“select”之后,用于去重 多表查询 概述 一对多(多对一) 多对多 一对一 多表查询概述 分类 连接查询 内连接 外连接 自连接 必须起别名! 联合查询-union,union all 子查询 概念 分类 …

OpenMesh 极小曲面(局部迭代法)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 我们的目标是想得到一个曲率处处为0的曲面,具体操作如下所述: 二、实现代码 #define _USE_MATH_DEFINES #include

量子时代加密安全与区块链应用的未来

量子时代加密安全与区块链应用的未来 现代密码学仍然是一门相对年轻的学科,但其历史却显示了一种重要的模式。大多数的发展都是基于几年甚至几十年前的研究。而这种缓慢的发展速度也是有原因的,就像药物和疫苗在进入市场之前需要经过多年的严格测试一样&…

【Web】2022DASCTF X SU 三月春季挑战赛 题解(全)

目录 ezpop calc upgdstore ezpop 瞪眼看链子 fin#__destruct -> what#__toString -> fin.run() -> crow#__invoke -> fin#__call -> mix.get_flag() exp <?php class crow {public $v1;public $v2;}class fin {public $f1; }class what {public $a; }…

MATLAB中gurobi 运行报错与调试

问题背景如下&#xff1a;刚拿到一份MATLAB的代码&#xff0c;但是电脑第一次安装gurobi&#xff0c;在运行过程中发生了报错&#xff0c;使用断点进行调试和步进调试方法&#xff0c;最终发现&#xff0c;这个问题出在了哪一步&#xff0c;然后向了人工智能和CSDN、百度寻求答…

VScode远程连接虚拟机提示: 无法建立连接:XHR failed.问题解决方案

一问题描述 在vscode下载插件Remote-SSH远程连接虚拟机时提示无法建立连接 二.最大嫌疑原因&#xff1a; 我也是在网上找了许久&#xff0c;发现就是网络原因&#xff0c;具体不知&#xff0c;明明访问别的网页没问题&#xff0c;就是连不上&#xff0c;然后发现下载vscode的…

数据赋能(61)——要求:数据管理部门职责

“要求&#xff1a;数据管理部门职责”是作为标准的参考内容编写的。 数据管理部门职责在于以数据资源为核心&#xff0c;将原始数据转化为可被业务部门与数据服务部门有效利用的数据资源&#xff0c;以支持业务赋能的实现。 数据管理要确保数据的完整性、准确性与一致性&…

Debian12 中重新安装MSSQL 并指定服务器、数据库、数据表字段的字符排序规则和默认语言等参数

在 Linux 上配置 SQL Server 设置 - SQL Server | Microsoft Learn 零、查看sql server 服务器支持的字符排序规则 SELECT Name from sys.fn_helpcollations() where name Like Chinese% go------ Chinese_PRC_CI_AI Chinese_PRC_CI_AI_WS Chinese_PRC_CI_AI_KS Chinese_PRC_…

【工具使用】CSDN中如何给文章添加目录跳转

这里写需要添加的目录名称 一级标题二级标题三级标题 一级标题 二级标题 三级标题 文章添加标题示例&#xff1a;

YoloV8改进策略:注意力改进、Neck层改进|自研全新的Mamba注意力|即插即用,简单易懂|附结构图|检测、分割、关键点均适用(独家原创,全世界首发)

摘要 无Mamba不狂欢,本文打造基于Mamba的注意力机制。全世界首发基于Mamba的注意力啊!对Mamba感兴趣的朋友一定不要错过啊! 基于Mamba的高效注意力代码和结构图 import torch import torch.nn as nn # 导入自定义的Mamba模块 from mamba_ssm import Mamba class Eff…

MySql安装(Linux)

一、清除原来的mysql环境 在前期建议使用root用户来进行操作&#xff0c;使用 su -来切换成root用户&#xff0c;但是如果老是提示认证失败&#xff0c;那么有可能我们的root密码并没有被设置&#xff0c; 我们可以先设置root的密码 sudo passwd root 然后就可以切换了。 …

爬虫 | 基于 Python 实现有道翻译工具

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务&#xff0c;能够实现多种语言的互译&#xff0c;提供高质量的翻译结果。 目录 一、项目功能 二、注意事项 三、代码解析 1. 导入…

【Linux】socket编程3

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【Linux】socket套接字 前言 下面的编程代码中&#xff0c;一些socket接口需要参考【Linux】socket套接字 目录…

【C语言】冒泡排序算法详解

目录 一、算法原理二、算法分析时间复杂度空间复杂度稳定性 三、C语言实现四、Python实现 冒泡排序&#xff08;Bubble Sort&#xff09;是一种基础的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。遍历数列…

IDEA 使用备忘录(不断更新)

IDEA 项目结构&#xff08;注意层级结构&#xff0c;新建相应结构时&#xff0c;按照以下顺序新建&#xff09;&#xff1a; project&#xff08;项目&#xff09; module&#xff08;模块&#xff09; package&#xff08;包&#xff09; class&#xff08;类&#xff09; 项…

Matlab|【免费】【sci】考虑不同充电需求的电动汽车有序充电调度方法

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现sci文献《A coordinated charging scheduling method for electric vehicles considering different charging demands》&#xff0c;主要实现电动汽车协调充电调度方法&#xff0c;该方法主要有以…

【JAVA进阶篇教学】第三篇:JDK8中Stream API使用

博主打算从0-1讲解下java进阶篇教学&#xff0c;今天教学第三篇&#xff1a;JDK8中Stream API使用。 Java 8 中的 Stream API 提供了一种便捷、高效的方式来处理集合数据&#xff0c;它支持函数式编程风格的操作&#xff0c;包括过滤、映射、归约等。Stream API 可以大大简化集…

Ubuntu 22最新dockers部署redis哨兵模式,并整合spring boot的详细记录(含spring boot项目包)

dockers部署redis哨兵模式&#xff0c;并整合spring boot 环境说明相关学习博客一、在docker中安装redis1、下载dockers镜像包和redis配置文件&#xff08;主从一样&#xff09;2、编辑配置文件&#xff08;主从一样&#xff09;3、启动redis&#xff08;主从一样&#xff09;4…

4-Java方法详解

目录 Java方法详解 1、什么是方法 2、方法的定义及调用 3、方法重载 4、命令行传参 5、可变参数 6、递归 例题&#xff1a;代码实现一个计算机 Java方法详解 1、什么是方法 2、方法的定义及调用 形参&#xff1a;用来定义作用的 实参&#xff1a;实际调用传递给他的参数…