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

devtools/2024/12/23 11:37:15/

在开发板上启动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.ppmy.cn/devtools/144676.html

相关文章

模仿elementui的Table,实现思路

vue2子组件使用render,给子子组件插槽传值 和elementui的Table一样使用render 在 Vue 2 中,子组件使用render函数向子子组件插槽传值可以通过以下步骤实现: 1、创建子组件 首先创建一个子组件,在子组件中使用render函数来渲染内容…

asyncio入门指南

本篇文章可以当作是官方文档的总结和补充,详细的API,还是需要看官方文档。一遍一遍看,每看都会有不同的收获。下面进行真题,发车! 1.为什么需要asyncio asyncio库为我们提供了并发的能力。 当我们执行一个需要大量i…

【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的一个重要任务,其目的是通过分析文本内容,识别出其中的情感极性,如正面、负面或中性。随着技术的不断…

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行,但今天启动时却显示“Error loading operating system”(加载操作系统错误)。我已经仔细检查了硬盘、接线、内存、CPU和电源,确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用,说明不是硬…

【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析

目录 一、前言 二、Spring Boot 简介 三、Spring Boot 核心模块 四、Spring Boot 项目实战:构建一个简单的 RESTful API 1. 创建 Spring Boot 项目 2. 配置数据库 3. 创建实体类 4. 创建 JPA 仓库接口 5. 创建服务层 6. 创建控制器层 7. 测试 API 8. 运…

Qt:QMetaObject::connectSlotsByName实现信号槽自动关联

简介 在Qt中,QMetaObject::connectSlotsByName 是一个便利的方法,它可以根据对象的对象名(objectName)自动将信号和槽连接起来。但是,要使用这个方法,必须确保: 1 控件(如按钮&…

【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7686588.html?templateId1718516 问题现象 数据库在正常或异常情况下,如何实现主备切换 问题的风险及影响 数据库主备切换若没有正确配置,在数据库发生主节点…

sqlite基础

在 SQLite 中,可以使用 CREATE INDEX 语句为表中的字段添加索引,以加速查询操作。 1. 为单个字段添加索引 假设有一个表 users,并且你想为 email 字段创建索引: CREATE INDEX idx_users_email ON users(email);这条语句会为 us…