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/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卡分区的时候知道,uboot需要从第0分区的扇区地址2开始的,SD卡中一个扇区占512字节,SD卡偏移1K字节处开始保存uboot。上面这条命令中,bs设置dd命令的读写块为1K大小(这个数据可以任意设置,设置大一点读写就快),并且设置seek=1(单位为KB),表示从SD卡/dev/sdb开头偏移1K字节处开始写u-boot.imx,正好就是写到了u-boot在SD卡中0区所在位置处,前面预留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
mkdir rootfs
tar -jxvf rootfs.tar.bz2 -C rootfs/
进入文件系统目录:
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博客
相关文章:

imx6ull - 制作烧录SD卡
1、参考NXP官方的手册《i.MX_Linux_Users_Guide.pdf》的这一章节: 1、SD卡分区 提示:我们常用的SD卡一个扇区的大小是512字节。 先说一下i.MX6ULL使用SD卡启动时的分区情况,NXP官方给的镜像布局结构如下所示: 可以看到,…...
使用chatgpt api快速分析pdf
需求背景 搞材料的兄弟经常要分析pdf,然后看到国外有产品是专门调用chatpdf来分析pdf的,所以就来问我能不能帮他也做一个出来。正好我有chatgpt的api,所以就研究了一下这玩意怎么弄。 需求分析 由于chatgpt是按字符算钱的,所以…...
Vue:状态管理pinia
安装 npm install pinia在 main.js 中注册 // main.jsimport { createApp } from vue import { createPinia } from "pinia"; import App from ./app.vueconst app createApp(App) const pinia createPinia(); app.use(pinia).mount(#app)创建 store // stores/…...

【Android Studio】导入import android.support.v7.app.AppcompatActivity;时报错
一、问题描述 在进行安卓项目开发时使用import android.support.v7.app.AppcompatActivity;报错: 运行后会有乱码出现: 二、解决办法 将import android.support.v7.app.AppcompatActivity;改为import androidx.appcompat.app.AppCompatActivity;基本上…...
汽车区域控制器技术分析
汽车区域控制器的起源与发展 随着汽车技术的不断发展,汽车电子电气架构也在经历着深刻的变革。汽车区域控制器作为一种新兴的技术,正逐渐成为汽车电子电气架构的重要组成部分。 在早期,汽车电子电气架构主要采用分布式架构。这种架构下,各个电子控制单元(ECU)分别负责不…...
myEclipse新手使用教程
myEclipse新手使用教程 一、引言 myEclipse是一款流行的Java集成开发环境(IDE),它集成了众多的开发工具,为Java开发者提供了一个强大的开发平台。本文将详细介绍如何下载、安装和配置myEclipse,以及如何创建一个简单…...
【WPF编程宝典】第6讲:资源
研究了 WPF 资源系统使得在应用不同部分可以重用相同对象的原理,介绍了如何在代 码和标记中声明资源,如何提取系统资源,以及如何使用类库程序集在应用程序之间共享资源。 1.资源基础 1.1静态资源和动态资源 区别:静态资源只从资…...

容器化部署Pig微服务快速开发框架
系统说明 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台, 同时支持微服务架构和单体架构 提供对 Spring Authorization Server 生产级实践,支持多种安全授权模式 提供对常见容器化方案支持 Kubernetes、Rancher2 、Kubesphere、E…...

Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图
承接前文: win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列win32-鼠标消息、键盘消息、计时器消息、菜单资源 本文目录 图标资源光标资源WM_SETCURSOR 消息 字符串资源加速键资源WM_PAINT 消息绘图绘图编程绘图基础基…...
【2024 短剧0元轻资产创业风口】做自己的老板,做新媒体的领路人
好省短剧邀请码2Urux1ZoQm(长按复制粘贴即可)大多数好省短剧推广活动都会通过官方渠道发布邀请码。您可以通过关注官方社交媒体账号、订阅电子邮件通知或参与官方网站上的活动,获得邀请码的机会。官方渠道通常会提前公布邀请码的获取方式和条件,您只需按照要求执行即可。好省…...
Docker安装Bitbucket
centos7版本 [rootlocalhost ~]# cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31"…...

FlyMcu串口下载STLINK Utility
一、FlyMcu程序烧录软件 1、可以通过串口给STM32下载程序,如果没有STLINK,就可以用这个软件通过串口下载程序,和STC的51单片机的烧录软件STC-ISP一样,通过串口给单片机下载程序 2、创建串口下载所需要的HEX文件 3、选择串口和波…...

CSS(盒子模型,定位,浮动,扩展)
CSS 盒子模型:外边距:内边距:水平居中: 定位:相对定位:绝对定位:固定定位: 浮动:扩展: 盒子模型: 盒子模型(Box Model) 规定了元素框处理元素内容…...
AIGC如何改变人类生活20240529
AIGC如何改变人类生活 随着人工智能技术的不断发展,人类生活正经历着前所未有的变革。在这个过程中,AIGC(人工智能生成内容)的概念应运而生,它已经在很多领域产生了深远的影响。本文将探讨AIGC如何改变人类生活&#…...

【python】成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南
成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南 一、引言 在Python编程中,TypeError: method object is not subscriptable错误是一个常见的陷阱,特别是对于初学者来说。这个错误通常意味着你尝试像访问列表、元组、字典…...
若依 Spring Security 短信,扫码登录
1. 修改 LoginBody,添加登录类型字段 Data public class LoginBody {/*** 用户名*/private String username;/*** 用户密码*/private String password;/*** 验证码*/private String code;/*** 唯一标识*/private String uuid;/*** 登录类型*/private String logi…...

Web 网页性能优化
Web 网页性能及性能优化 一、Web 性能 Web 性能是 Web 开发的一个重要方面,侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能,可以在为用户提供更好的体验 网页性能既广泛又非常深入 1. 为什么性能这么重要? 1. 性能…...

JDBC-MySQL
JDBC-MySQL 1.JDBC 操作步骤1.1 DriverManager1.2.Connection对象1.3 Statement1.4 PreparedStatement 1.JDBC 操作步骤 public void quickStart() throws ClassNotFoundException, SQLException {//1、注册驱动 (确认要使用哪个数据库)Class.forName(&…...

MySQL经典练习50题(上)(解析版)
所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验(无广告且清爽),请访问本篇笔记 MySQL经典练习50题(上) 创建数据库和表 -- 建 表 -- 学 生 表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(2…...

每日一题33:数据统计之广告效果
一、每日一题 返回结果示例如下: 示例 1: 输入: Ads 表: ------------------------- | ad_id | user_id | action | ------------------------- | 1 | 1 | Clicked | | 2 | 2 | Clicked | | 3 | 3 | Viewed…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...