当前位置: 首页 > news >正文

【系统移植】制作SD卡启动——将uboot烧写到SD卡

在开发板上启动Linux内核,一般有两种方法,一种是从EMMC启动,还有一种就是从SD卡启动,不断哪种启动方法,当开发板上电之后,首先运行的是uboot。

制作SD卡启动,首先要将uboot烧写到SD卡,我们既可以在Linux环境下完成烧写,也可以在Windows环境下完成烧写。

在Linux环境下将uboot烧写到SD卡

一、将SD卡接入到虚拟机上的Linux系统

通过读卡器将SD插入到主机上,虚拟机上一般会弹出下面的窗口,选择连接到虚拟机,点击确定。

在虚拟机选卡中选择:可移动设备->USB Storage->连接 (断开与主机的连接)

在终端输入下面命令(按Tab键补齐),得到的结果中有sdb,则说明连接成功:

$ ls /dev/sd

也可以通过linux的图形界面,在Disks中查看:

二、将准备好的文件拷贝到Linux环境下,并解压

存放文件的目录因人而异,按自己选择的来就可以。

将u-boot-fs4412.bin文件也拷贝到sdfuse_q/目录下:

三、给sh脚本文件加上可执行权限

此时,sdfuse目录下的mkuboot.sh和sd_fusing_exynos4x12.sh文件没有执行权限,需要通过chmod命令为其加上执行权限:

sudo chmod +x *.sh

四、执行mkuboot.sh文件,烧写

最后,用sudo权限执行mkuboot.sh烧写,显示如下信息,则说明烧写成功:

 至此,已成功将uboot烧写到了SD卡上面。

考虑到有些虚拟机无法识别SD卡,所以我们有必要学习下如何在Windows环境下将uboot烧写到SD卡。

在Windows环境下将uboot烧写到SD卡 

如果之前SD卡是连接到虚拟机,在进行Windows环境下的SD卡烧写之前,要将SD卡与虚拟机断开,让其连接到主机

一、将准备好的u-boot-fs4412.bin文件拷贝到家目录下(当然也可以是其他目录)

二、制作一个512字节的空镜像文件

做这一步的原因是,在windows环境下,我们要使用Win32DiskImager工具来烧写,而这个工具是从0扇区开始烧写,为了在uboot前面留下1个空扇区,我们先要烧写512个字节到SD卡。

输入下面命令,生成一个512字节的空镜像:

sudo dd if=/dev/zero of=zero.bin count=1

显示如下信息,则说明zero.bin文件制作成功: 

三、将uboot追加到zero.bin之后,生成win-u-boot-fs4412.bin

 用cat命令将u-boot-fs4412.bin追加到zero.bin之后,生成win-u-boot-fs4412.bin。

$ cat zero.bin u-boot-fs4412.bin > win-u-boot-fs4412.bin

四、制作1M空镜像擦除SD卡中原有数据

这一步并非一定要做,但为了保险起见,可以做一下,通过dd命令制作一个1M的空镜像clear.bin,用来擦除SD卡中原有数据 

五、将制作好的win-u-boot-fs4412.bin和clear.bin拷贝到Windows环境下

通过cp命令将win-u-boot-fs4412.bin和clear.bin拷贝共享目录share下,也就到了Windows环境下。

 六、将SD卡通过读卡器插入主机,查看状态(如Windows下无法识别,可能是因为连接到了虚拟机,断开即可)

七、使用Win32DiskImager工具烧写

 先烧写clear.bin文件到SD,擦除原有的数据:

确认选择的文件是clear.bin和烧写到的SD卡盘符,点击“Write” 

在弹出的对话框中点击“Yes” 

弹出烧写成功的对话框,表明已经烧写完成 

用同样的方法,将win-u-boot-fs4412.bin烧写到SD卡 

至此,成功将win-u-boot-fs4412.bin烧写到了SD。

将开发板连接到主机,SD卡插入开发板,将开发板的启动方式调至SD卡,查看启动状态 

http://www.lryc.cn/news/507959.html

相关文章:

  • sql server 数据库还原,和数据检查
  • 工业大数据分析算法实战-day12
  • Hive其一,简介、体系结构和内嵌模式、本地模式的安装
  • LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测
  • MacPorts 中安装高/低版本软件方式,以 RabbitMQ 为例
  • CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
  • 建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
  • 群晖利用acme.sh自动申请证书并且自动重载证书的问题解决
  • 质量小议51 - 茧房
  • 【C++图论】2359. 找到离给定两个节点最近的节点|1714
  • 重拾设计模式-外观模式和适配器模式的异同
  • 51c自动驾驶~合集42
  • 34 Opencv 自定义角点检测
  • 信创技术栈发展现状与展望:机遇与挑战并存
  • 跟我学c++中级篇——C++中的缓存利用
  • 二叉树_堆
  • word文档中有大量空白行删除不掉,怎么办?
  • python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
  • 构建高性能异步任务引擎:FastAPI + Celery + Redis
  • 永磁同步电机无速度算法--全阶滑模观测器
  • 部署开源大模型的硬件配置全面指南
  • 三、使用langchain搭建RAG:金融问答机器人--检索增强生成
  • Day13 用Excel表体验梯度下降法
  • 计算机组成原理的学习笔记(5)--数据的表示与运算·其四 浮点数的储存和加减/内存对齐/大端小端
  • 华为IPD流程6大阶段370个流程活动详解_第二阶段:计划阶段 — 86个活动
  • 如何使用 Flask 框架创建简单的 Web 应用?
  • 将Minio设置为Django的默认Storage(django-storages)
  • sed | 一些关于 sed 的笔记
  • wtforms+flask_sqlalchemy在flask-admin视图下实现日期的修改与更新
  • AI的进阶之路:从机器学习到深度学习的演变(三)