Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC
1、第1次将“rootfs”打包
1)、打开第1个终端,准备在“mnt”目录下创建挂载目录“rootfs”;
输入“ls回车”
输入“cd /mnt回车”
输入“ls回车”,查看“mnt”目录下的文件和文件夹
输入“sudo mkdir rootfs回车”,在“mnt”目录下新建一个“rootfs”
输入密码“123456回车”
输入“ls回车”,查看“mnt”目录下的文件和文件夹
2)、打开第2个终端,准备在“/linux/rootfs”目录下创建磁盘“rootfs.ext4”
输入“ls回车”
输入“cd linux回车”,切换到“linux”目录
输入“ls回车”,查看“linux”目录下的文件和文件夹
输入“mkdir rootfs回车”,新建“rootfs”目录
输入“ls回车”,查看“linux”目录下的文件和文件夹
输入“cd rootfs回车”,切换到“rootfs”目录
输入“ls回车”,查看“/home/zgq/linux/rootfs”目录下的文件和文件夹
输入“dd if=/dev/zero of=rootfs.ext4 bs=1M count=1024回车”,分配1G空间给“rootfs.ext4”
输入“mkfs.ext4 -L rootfs rootfs.ext4回车”,将“rootfs”格式化
输入“ls -l回车”,查看“rootfs”目录下的文件和文件夹
“rootfs.ext4”有1073741824个字节=1G字节
3)、挂载磁盘
输入“sudo mount rootfs.ext4 /mnt/rootfs/回车”,将“rootfs.ext4”挂载在“/mnt/rootfs/”目录下
4)、回到第1个打开的终端,查看是否挂载成功;
输入“cd rootfs/回车”,切换到“/mnt/rootfs/”
输入“ls回车”,查看“rootfs”目录下的文件和文件夹
5)、准备打包的文件,将“/home/zgq/linux/nfs/rootfs/”目录下的“所有文件和文件夹”拷贝到“/mnt/rootfs/”的目录中
回到第2个打开的终端,输入“cd /home/zgq/linux/nfs/rootfs/回车”,切换到“/home/zgq/linux/nfs/rootfs/”目录
输入“ls回车”,查看“rootfs”目录下的文件和文件夹
输入“sudo cp * /mnt/rootfs/ -drf 回车”,执行拷贝
6)、回到第1个打开的终端,卸载磁盘
输入“ls回车”,查看“rootfs”目录下的文件和文件夹,发现该文件夹有新文件
输入“cd ..回车”,返回到“mnt”目录
输入“ls回车”,查看“mnt”目录下的文件和文件夹
输入“sudo umount rootfs回车”卸载掉“rootfs”
输入密码“123456回车”
输入“ls回车”,查看“mnt”目录下的文件和文件夹
输入“cd rootfs回车”,切换到“rootfs”目录
输入“ls回车”,查看“rootfs”目录下的文件和文件夹,发现该文件夹为空;
7)、回到第2个打开的终端,查看打包好的文件
输入“cd /home/zgq/linux/rootfs回车”,切换到“/home/zgq/linux/rootfs”目录
输入“ls回车”,查看“rootfs”目录下的文件和文件夹
这个rootfs.ext4就是打包好的文件
8)、使用FileZilla将“rootfs.ext4”下载到“windows”中
9)、将“rootfs.ext4”拷贝到“C:\Program Files\STMicroelectronics\images\my-tfa”目录中
2、将“bootfs”重新打包
1)、准备打包文件:
输入“cd /home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31”
输入“cp arch/arm/boot/uImage /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”,执行文件拷贝;
输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”,执行文件拷贝
查看目录下的“uImage”和“stm32mp157d-atk.dtb”有多少字节:
输入“cd /home/zgq/linux/atk-mp1/linux/bootfs/回车”切换到“/home/zgq/linux/atk-mp1/linux/bootfs/”目录
输入“ls -l回车”,列出“bootfs”目录下的文件和文件夹
输入“dd if=/dev/zero of=bootfs.ext4 bs=1M count=10回车”
使用“dd命令”创建一个名为“bootfs.ext4”的磁盘;
“of”指定磁盘名字为“bootfs.ext4”;
“bs”指定磁盘输入/输出块大小为1MB;
“count”指定磁盘的块数量为 10个;
输入“mkfs.ext4 -L bootfs bootfs.ext4回车”
使用“mkfs.ext4”将“bootfs.ext4磁盘”格式化为“ext4”格式。
输入“sudo mount bootfs.ext4 /mnt/bootfs/回车”,
使用“mount命令”将“bootfs.ext4”磁盘挂载到“/mnt/bootfs”目录下;
输入密码“123456回车”
输入“sudo cp uImage stm32mp157d-atk.dtb /mnt/bootfs/回车”
将“uImage”和“stm32mp157d-atk.dtb”拷贝到“/mnt/bootfs/”目录中;
输入“sudo umount /mnt/bootfs回车”,使用“umount”卸载掉“bootfs”
输入“ls -l回车”,列出“bootfs”目录下的文件和文件夹
2)、使用FileZilla将“bootfs.ext4”下载到“windows”中
3)、将“bootfs.ext4”拷贝到“C:\Program Files\STMicroelectronics\images\my-tfa”目录中
3、使用“Notepad++”修改“tf-a.tsv”
1)、修改后,见下图:
2)、保存“tf-a.tsv”,关闭文件。
4、烧录
1)、关闭虚拟机,防止开发板连接到虚拟机
2)、将开发板上拨码开关拨到“000”位置
3)、将USB导线连接电脑的USB3.0接口,另外一端连接开发板的USB OTG接口;
4)、将USB导线连接电脑的USB3.0接口,另外一端连接到开发板的USB TTL接口;
5)、双击“STM32CubeProgrammer”图标
6)、选择上图中的USB,然后点击“Connect”
7)、点击“刷新”,直到出现USB1,表示连接成功。
8)、点击“Open file”,找到
“C:\Program Files\STMicroelectronics\images\my-tfa”目录下“tf-a.tsv”打开。
9)、点击“Browse”,打开
“C:\Program Files\STMicroelectronics\images\my-tfa”目录。
10)、点击“选择文件夹”
11)、点击“Download”
12)、点击“确定”
13)、将拨码开关设置为“010”
14)、按下开发板的“复位按钮”,重新启动开发板。
5、从EMMC启动测试
1)、在串口查看EMMC是否烧录了“uImage”和“stm32mp157d-atk.dtb”
输入“ext4ls mmc 1:2回车”查看EMMC分区2“内核镜像”有哪些文件和目录
发现“uImage”和“stm32mp157d-atk.dtb”
2)、输入“ext4ls mmc 1:3回车”查看EMMC分区3“根文件系统”有哪些文件和目录
3)、设置“bootcmd和bootargs”这两个环境变量,从EMMC启动linux系统
输入setenv bootcmd 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'
输入setenv bootargs 'console=ttySTM0,115200 root=/dev/mmcblk1p3 rootwait rw'
输入saveenv,保存“bootcmd和bootargs”的值
输入boot,启动 Linux 系统
4)、查看运行结果:
mmcblk0: p1
Waiting for root device /dev/mmcblk1p3...
mmc1: new high speed MMC card at address 0001
mmcblk1: mmc1:0001 8GTF4R 7.28 GiB
mmcblk1boot0: mmc1:0001 8GTF4R partition 1 4.00 MiB
mmcblk1boot1: mmc1:0001 8GTF4R partition 2 4.00 MiB
mmcblk1rpmb: mmc1:0001 8GTF4R partition 3 512 KiB, chardev (242:0)
mmcblk1: p1 p2 p3
EXT4-fs (mmcblk1p3): recovery complete
EXT4-fs (mmcblk1p3): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:19.
devtmpfs: mounted
Freeing unused kernel memory: 1024K
Run /sbin/init as init process
Please press Enter to activate this console.
从MMC启动正确;
6、设置从网络启动
设置“bootcmd和bootargs”这两个环境变量,从网络启动linux系统
输入setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000',设置从网络启动linux系统
输入“setenv bootargs 'console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.2.180:/home/zgq/linux/nfs/rootfs,proto=tcp rw ip=192.168.2.178:192.168.2.180:192.168.2.1:255.255.255.0::eth0:off'
回车”
输入: saveenv,保存bootcmd的值
输入: boot,启动 Linux 系统
7、busybox缺点:
1)、构建的根文件系统不完善。比如基本的 lib 库都是我们自己复制交叉编译器的,需要我们自己做很多其他工作。
2)、busybox本身支持的第三方库,软件很少。比如 tslib 就没有,那么就需要我们自己去下载源码,然后编译,移植。第三方依赖问题严重,很难处理。
3)、busybox,因为太简陋,功能少,不适合做项目开发,只适合于学习。
做项目,不适合使用busybox构建根文件系统。
没办法,还要学习其它构建根文件系统的工具。跟着正点原子,走点弯路,不知道他们为什么这么做。也许有好处,人生哪有那么一帆风顺的!!!
相关文章:

Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC
1、第1次将“rootfs”打包 1)、打开第1个终端,准备在“mnt”目录下创建挂载目录“rootfs”; 输入“ls回车” 输入“cd /mnt回车” 输入“ls回车”,查看“mnt”目录下的文件和文件夹 输入“sudo mkdir rootfs回车”,在“mnt”…...

Linux进程间通信(三)-----System V消息队列
消息队列的概念及原理 消息队列实际上就是在系统当中创建了一个队列,队列当中的每个成员都是一个数据块,这些数据块都由类型和信息两部分构成,两个互相通信的进程通过某种方式看到同一个消息队列,这两个进程向对方发数据时&#x…...

Elasticsearch:混合搜索是 GenAI 应用的未来
在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…...
态、势、感、知的偏序、全序与无序
在态势感知中,"态"、"势"、"感"和"知"可以被理解为描述不同层次的概念。而在偏序、全序和无序方面,它们可以有不同的关系,简单地说,偏序关系表示部分的可比较性,全序关系表示…...

【从Python基础到深度学习】 8. VIM两种状态
一、安装 sudo apt install vim 二、VIM两种模式 - 命令状态/编辑状态 1.1 进入/退出VIM 进入VIM vim 退出vim :q <enter> 2.2 根目录下添加配置文件 window下创建vimrc类型文件内容如下: set nu set cursorline set hlsearch set tabstop4 使用Wins…...

java微服务面试篇
目录 目录 SpringCloud Spring Cloud 的5大组件 服务注册 Eureka Nacos Eureka和Nacos的对比 负载均衡 负载均衡流程 Ribbon负载均衡策略 自定义负载均衡策略 熔断、降级 服务雪崩 服务降级 服务熔断 服务监控 为什么需要监控 服务监控的组件 skywalking 业务…...
OpenAI 生成视频模型 Sora 论文翻译
系列文章目录 前言 视频生成模型作为世界模拟器 本技术报告的重点是 (1) 将所有类型的视觉数据转换为统一表示,以便对生成模型进行大规模训练的方法,以及 (2) 对索拉的能力和局限性的定性评估。 该报告不包括模型和实现细节。 许多先前的工作使用各种方…...

2.13日学习打卡----初学RocketMQ(四)
2.13日学习打卡 目录: 2.13日学习打卡一.RocketMQ之Java ClassDefaultMQProducer类DefaultMQPushConsumer类Message类MessageExt类 二.RocketMQ 消费幂消费过程幂等消费速度慢的处理方式 三.RocketMQ 集群服务集群特点单master模式多master模式多master多Slave模式-…...

ZigBee学习——BDB
✨本博客参考了善学坊的教程,并总结了在实现过程中遇到的问题。 善学坊官网 文章目录 一、BDB简介二、BDB Commissioning Modes2.1 Network Steering2.2 Network Formation2.3 Finding and Binding(F & B)2.4 Touchlink 三、BDB Commissi…...

使用Docker快速部署MySQL
部署MySQL 使用Docker安装,仅仅需要一步即可,在命令行输入下面的命令 docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123456 \mysql MySQL安装完毕!通过任意客户端工具即可连接到MySQL. 当我们执…...
力扣热题100_滑动窗口_3_无重复字符的最长子串
文章目录 题目链接解题思路解题代码 题目链接 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示…...

RM电控工程讲义
HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) 是一个回调函数,通常在STM32的HAL库中用于处理CAN(Controller Area Network)接收FIFO 0中的消息。当CAN接口在FIFO 0中有待处理的消息时,这个函数会被调用。 HAL库C…...

论文阅读:《Deep Learning-Based Human Pose Estimation: A Survey》——Part 1:2D HPE
目录 人体姿态识别概述 论文框架 HPE分类 人体建模模型 二维单人姿态估计 回归方法 目前发展 优化 基于热图的方法 基于CNN的几个网络 利用身体结构信息提供构建HPE网络 视频序列中的人体姿态估计 2D多人姿态识别 方法 自上而下 自下而上 2D HPE 总结 数据集…...
C语言——oj刷题——杨氏矩阵
目录 1. 理解杨氏矩形的特点 2. 实现杨氏矩形查找算法 3. 编写示例代码 当我们谈到杨氏矩形时,我们指的是一种在二维数组中查找目标元素的高效算法。它是由杨氏(Yan Shi)教授提出的,因此得名为杨氏矩形。 杨氏矩形问题的场景是…...
C++ 50道面试题
1. static关键字 1.全局static变量 存储位置:静态存储区,在程序运行期间一直存在 初始化: 未手动初始化的变量自动初始化为0 作用域: 从定义之处开始,到文件结束,仅能在本文件中使用 2.局部static变量…...
寒假学习记录14:JS字符串
目录 查找字符串中的特定元素 String.indexOf() (返回索引值) 截取字符串的一部分 .substring() (不影响原数组)(不允许负值) 截取字符串的一部分 .slice() (不影响原数…...

【数学建模】【2024年】【第40届】【MCM/ICM】【C题 网球运动中的“动量”】【解题思路】
一、题目 (一) 赛题原文 2024 MCM Problem C: Momentum in Tennis In the 2023 Wimbledon Gentlemen’s final, 20-year-old Spanish rising star Carlos Alcaraz defeated 36-year-old Novak Djokovic. The loss was Djokovic’s first at Wimbledon…...

无人驾驶LQR控制算法 c++ 实现
参考博客: (1)LQR的理解与运用 第一期——理解篇 (2)线性二次型调节器(LQR)原理详解 (3)LQR控制基本原理(包括Riccati方程具体推导过程) (4)【基础…...

Karnaugh map (卡诺图)
【Leetcode】 289. Game of Life According to Wikipedia’s article: “The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970.” The board is made up of an m x n grid of cells, wh…...
C# CAD 框选pdf输出
在C#中进行AutoCAD二次开发时,实现框选(窗口选择)实体并输出这些实体到PDF文件通常涉及以下步骤: public ObjectIdCollection GetSelectedEntities() {using (var acTrans HostApplicationServices.WorkingDatabase.Transaction…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...