imx6ull - 制作烧录SD卡

1、参考NXP官方的手册《i.MX_Linux_Users_Guide.pdf》的这一章节:

1、SD卡分区

提示:我们常用的SD卡一个扇区的大小是512字节。

先说一下i.MX6ULL使用SD卡启动时的分区情况,NXP官方给的镜像布局结构如下所示:

可以看到,上图将一张SD卡分成了三部分:

第一部分:扇区起始地址ox400bytes(2),大小为20478个扇区,分区格式为原始格式,用于存放uboot;(0x400 bytes转为10进制是1024 bytes, 刚好等于2个扇区大小;这两个扇区是为了保存分区表的信息。所以从0x400地址开始存放U-boot,括号中的2可以理解为从第2个扇区的起始地址开始,扇区编号从0开始数起)
第二部分:扇区起始地址oxa0000 bytes(20480个扇区),大小为500M(1024000个扇区),分区格式为FAT,用于存放内核和设备树;
第三部分:扇区起始地址ox25800000(1228800个扇区),大小为SD卡剩余的空间,分区格式为Ext3或Ext4,用于存放rootfs,也就是文件系统。

由于第一部分用于存放UBOOT,无文件系统格式的要求,所以我们对分区的创建从第二部分(第20480扇区所在的地址)开始就可以。

拿到一张SD卡,首先将SD卡在windows下格式化成FAT32格式:

插入ubuntu系统之前,先使用以下命令查看一下所有的磁盘:

fdisk -l

将SD卡插入ubuntu,再次输入以上命令查看一下所有磁盘,会发现多出来一个/dev/sdb和/dev/sdb1:

其中,/dev/sdb代表的就是SD卡本身,/dev/sdb1代表的是SD卡上的分区一,且格式为FAT32。

注意:SD卡插入ubuntu后,会出现/dev/sdX,具体是/dev/sdb还是/dev/sdc又或者是/dev/sdd要视个人插入ubuntu的USB口设备情况而定。

接下来对SD卡重新分区:

fdisk /dev/sdb

d         ---> 删除分区
n         ---> 创建分区 
p         ---> 选择为主分区
1         ---> 分区编号为1
20480     ---> 分区1起始扇区
+500M     ---> 分区大小:500MB
p         ---> 显示当前分区
n         ---> 创建分区
p         ---> 选择为主分区
2         ---> 分区编号为2
1228800   ---> 分区起始地址
<enter>   ---> 敲回车,表示将剩下的所有空间都分给分区2
p         ---> 显示当前分区
w         ---> 保存

设置sdb1分区格式为FAT:

sudo mkfs.vfat /dev/sdb1

设置sdb2分区格式为Ext3或Ext4都可以

sudo mkfs.ext3 /dev/sdb2
或者
sudo mkfs.ext4 /dev/sdb2

此时SD卡的分布如下图所示:

2、拷贝uboot到SD卡

拷贝uboot到SD卡,输入以下命令:

sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync

从上面我们对SD卡分区的时候知道,第一分区的起始地址是从扇区地址2开始的,SD卡的一个扇区是512字节,也就是说第一分区的起始地址是SD卡的1K字节处,上面这条命令中,bs设置dd命令的读写块为1K大小(这个数据可以任意设置,设置大一点读写就快),并且设置seek=1(单位为KB),表示从SD卡/dev/sdb开头偏移1K字节处开始写u-boot.imx,正好就是写到了u-boot在SD卡中分区所在位置处,前面预留1K字节刚好2个扇区大小。

问:为什么从SD卡1K位置处存放uboot而不是从SD卡头部开始?
答:这是NXP官方手册上写前面1K字节是保存分区表的信息。

3、拷贝kernel和dtbs到SD卡
创建挂载点:

mkdir /mountpoint

挂载分区一:

mount /dev/sdb1 /mountpoint  (注意根据上面的分区这是sdb1,存放kernal image和dtbs)

使用cp命令将zImage和*.dtb文件拷贝进/mountpoint目录,然后取消挂载:

umount mountpoint

4、拷贝文件系统到SD卡
挂载分区二:

mount /dev/sdb2 /mountpoint (注意根据上面的分区这是sdb2,存放根文件系统)

解包你的文件系统,假设文件系统包为:rootfs.tar.bz2

tar -jxvf rootfs.tar.bz2

进入文件系统目录:

cd rootfs

拷贝所有文件到/mountpoint目录:

cp -a * /mountpoint

然后取消挂载:

umount mountpoint
sync

到此,SD启动卡就已经制作完成!

1. 官方资料和工具获取

1.1 官方源码资料

Embedded Linux for i.MX Applications Processors是NXP专门针对i.MX系列维护的uboot和linux等源码,有不同的版本和分支。截至文章发布官方最新版本Linux 5.15.52_2.1.0,为了和之前的iMX6ULL维护一份代码我这里选择Linux 5.15.32_2.0.0​这个版本。下载文档资料和官方demo板的镜像包,可以参考使用。

更加详细资料获取方法请参考:iMX8MM uboot2021.04 linux5.15.32移植_arm_Sonboy(^_^)-华为云开发者联盟

参考:i.MXU6LL - 制作烧录SD卡详细步骤_imx6ullsd卡烧录程序-CSDN博客

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

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

相关文章

机器人控制系列教程之D-H参数建模法

机器人运动学的研究依赖于机器人的模型的建立&#xff0c;目前较为多见的两种方法分别是Denavit-Hartenberg建模法&#xff08;简称&#xff1a;D-H建模法&#xff09;。该方法时由Denavit和Hartenberg于19955年提出的一种为关节链中的每一个杆件建立一个坐标系的矩阵方法&…

LeetCode-131 分割回文串

LeetCode-131 分割回文串 题目描述解题思路C 代码 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”],…

HTML跳动的爱心

目录 写在前面 HTML简介 跳动的爱心 代码分析 运行结果

AI大模型简史:萌芽、沉淀、爆发!

近一年来&#xff0c;随着ChatGPT爆火&#xff0c;大模型热潮席卷全球并持续升温&#xff0c;国内越来越多的知名高校、科研院所和创新型企业加大研究力度&#xff0c;大模型技术不断迭代升级&#xff0c;模型能力不断加强&#xff0c;逐渐形成从底层算力、模型开发到行业应用的…

蓝桥杯--LCA1

树上前缀和LCA 暴力做法&#xff1a; 我们先把不删的sum维护出来&#xff0c;然后遍历跳过的点&#xff0c;假如a1,a2,a3&#xff0c;跳过2&#xff0c;那么答案就是sum-cost(a1,a2)-cost(a2,a3)cost(a1,a3). DFS暴力&#xff0c;下面是代码&#xff1a; #include<bits/s…

【Unity脚本】使用脚本操作游戏对象的组件

【知识链】Unity -> Unity脚本 -> 游戏对象 -> 组件 【知识链】Unity -> Unity界面 -> Inspector【摘要】本文介绍如何使用脚本添加、删除组件&#xff0c;以及如何访问组件 文章目录 引言第一章 游戏对象与组件1.1什么是组件&#xff1f;1.2 场景、游戏对象与组…

php使用openssl返回false报错0308010C

本地php使用openssl返回false, 但是在服务器上测试正常openssl_encrypt($jsonStr, DES-ECB, $key, OPENSSL_RAW_DATA, ); 查看错误 openssl_error_string(); error:0308010C:digital envelope routines::unsupported 原因是: 服务器上的openssl是1.1版本, 本地是3.0版本 通…

C++回调函数

#include <iostream> #include <functional> // 为了使用 std::function // 声明一个回调函数类型 typedef std::function<void()> Callback11;// 调用函数&#xff0c;它接受一个回调函数作为参数 void process(Callback11 callback123) {// 在这里执…

直播领域新宠—第三代大模型无人直播系统:提升销售业绩的秘密武器

随着科技的飞速发展和人们对智能化生活的追求&#xff0c;直播领域也迎来了革新性的突破。第三代大模型无人直播系统&#xff0c;作为直播领域的新宠&#xff0c;正以其独特的魅力和优势&#xff0c;成为提升销售业绩的秘密武器。 首先&#xff0c;第三代大模型无人直播系统具…

2024山软创新实训:软件系统架构

软件架构 本文着重介绍本应用&#xff1a;基于开源LLM的易学大模型软件系统的架构。在经过2个月的探索、选型、实验、开发后&#xff0c;我们团队终于把整个系统的各块拼图搭建了起来&#xff0c;现在剩下的是集成、评测、优化和部署的工作。 1. Distributed System 整个项目…

【Android】

hint在text显示提示内容 设置主键&#xff0c;在mainactivity // 获取SharedPreferences对象存放的用户名和密码&#xff0c;并设为相应组件的值 //指定key的值&#xff0c;及获取不到值时使用的默认值 String sName sp.getString("name", "unknown")…

媲美苹果、三星uwb芯片,飞睿智能UWB SIP芯片方案,创新无线传输、测距、精准定位新纪元

超宽带&#xff08;UWB&#xff09;技术作为一种新兴的无线通信技术&#xff0c;以其高精度定位、低功耗、高安全性和强抗干扰能力等优势&#xff0c;在全球范围内得到了广泛关注和快速应用。 2019 年&#xff0c;苹果iPhone11搭载UWB芯片&#xff0c;火极一时的AirDrop隔空投…

MODIS L1B数据规格介绍

1.MODIS 仪器概述 MODIS是EOS AM-1系列卫星的主要探测仪器&#xff0c;也是EOS Terra平台上唯一进行直接广播的对地观测仪器。MODIS是当前世界上新一代“图谱合一”的光学遥感仪器&#xff0c;具有36个光谱通道&#xff0c;分布在0.4-14um的电磁波谱范围内&#xff0c;波段范围…

Docker Hub 国内镜像源配置

Docker Hub 国内镜像源配置 Docker Hub 国内镜像源是指在国内境内提供 Docker 镜像服务的镜像源。由于国际网络带宽等问题&#xff0c;国内用户下载 Docker 镜像通常速度较慢。因此&#xff0c;为了解决这个问题&#xff0c;一些国内的公司和组织提供了 Docker 镜像的国内镜像…

MySQL--MHA高可用及读写分离

一、什么是高可用 1.企业级高可用标准&#xff1a;全年无故障时间 全年无故障时间全年故障时间具体时间99.9%0.1%525.6 minkeeplive双主 &#xff08;切换需要人为干预&#xff09;99.99%0.01%52.56 minMHA &#xff08;半自动化&#xff09;99.999%0.001%5.256 minPXC、MGR、…

解决3D模型变黑及贴图不显示的问题---模大狮模型网

在3D建模和渲染过程中&#xff0c;模型变黑或贴图不显示是常见的挑战之一。这不仅影响了模型的视觉效果&#xff0c;还可能导致后续的工作流程受阻。本文将针对这两个问题&#xff0c;提供详细的解决方法和步骤&#xff0c;帮助读者快速有效地解决问题。 一、检查并调整光照设置…

Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串&#xff0c;请返回 true &#xff0c;否则请返回 false 。 截取每个长度为 k 的字符串&#xff0c;加入 Set 中&#x…

根据状态转移图实现时序电路 (三段式状态机)

看图编程 * ** 代码 module seq_circuit(input C ,input clk ,input rst_n,output wire Y ); reg [1:0] current_stage ; reg [1:0] next_stage ; reg Y_reg; //输出//第一段 &#xff1a; 初始化当前状态和…

汇总区间,合并区间

题目一&#xff1a; 代码如下&#xff1a; vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;if (nums.size() 0)return ret;int n nums.size();int i 0;while (i < n){int prev i;i;while (i < n && nums[i] n…

烧脑的逻辑图又来了,精力绝对不是花费在做图上。

逻辑图设计之所以比较耗费精力&#xff0c;主要是因为它需要进行深入的思考和分析&#xff0c;以确保设计的逻辑正确、完整和可行。以下是一些可能导致逻辑图设计耗费精力的原因&#xff1a; 复杂性&#xff1a;逻辑图设计通常涉及到复杂的业务流程和系统架构。设计师需要理解各…