NXP imx6ull uboot-imx-rel_imx_4.1.15无法从SD卡加载内核

2023-11-16

我imx6ull使用的是正点原子的alpha开发板。我将我的SD卡分成了两个分区,第一个分区格式化为fat,用来存放zImage和dtb;第二个分区格式化为EXT4格式,这个分区作为根文件系统。

遇到的问题是:我编译好kernel后,尝试通过UBoot的fatload或load命令将fat分区中的boot/zImage和boot/my-i6ull.dtb文件载入内存,但是每次载入zImage的时候都无法读取这个文件,再次读取时就报找不到分区表:

U-Boot 2016.03-gc221d3f (Oct 14 2019 - 12:40:04 +0800)

CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 49C
Reset cause: POR
Board: MX6ULL 14x14 EVK
I2C:   ready
DRAM:  256 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
*** Warning - bad CRC, using default environment

Display: ATK-LCD-4.3-480x272 (480x272)
Video: 480x272x24

NAND read: device 0 offset 0x420000, size 0x100000
 1048576 bytes read: OK
Error: no valid bmp image at 88000000
In:    serial
Out:   serial
Err:   serial
Net:   FEC1
Error: FEC1 address not set.

Normal Boot
Hit any key to stop autoboot:  0
=> mmc part

Partition Map for MMC device 0  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     2048            204800          8bb1460b-01     0e Boot
  2     206848          772096          8bb1460b-02     83
=> fatls mmc 0:1 boot
            ./
            ../
  5583352   zimage
    36274   my-i6ull.dtb

2 file(s), 2 dir(s)

=> fatload mmc 0:1 80800000 boot/zImage
reading boot/zImage
Error reading cluster
** Unable to read file boot/zImage **
=>
=> fatload mmc 0:1 80800000 boot/zImage
** Can't read partition table on 0:0 **
** Invalid partition 1 **
=>
=> mmc part

Partition Map for MMC device 0  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
** Can't read partition table on 0:0 **
=>

令我感到神奇的是boot/my-iu6ull.dtb文件虽然大多数时候也是读取失败,但偶尔也能成功读到内存中去。等boot/my-i6ull.dtb读完后仍能通过 mmc part 看到分区表,但这时,如果尝试读zImage,仍然是失败:

U-Boot 2016.03-gc221d3f (Oct 14 2019 - 12:40:04 +0800)

CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 50C
Reset cause: POR
Board: MX6ULL 14x14 EVK
I2C:   ready
DRAM:  256 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
*** Warning - bad CRC, using default environment

Display: ATK-LCD-4.3-480x272 (480x272)
Video: 480x272x24

NAND read: device 0 offset 0x420000, size 0x100000
 1048576 bytes read: OK
Error: no valid bmp image at 88000000
In:    serial
Out:   serial
Err:   serial
Net:   FEC1
Error: FEC1 address not set.

Normal Boot
Hit any key to stop autoboot:  0
=> mmc part

Partition Map for MMC device 0  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     2048            204800          8bb1460b-01     0e Boot
  2     206848          772096          8bb1460b-02     83
=> fatls mmc 0:1 boot
            ./
            ../
  5583352   zimage
    36274   my-i6ull.dtb

2 file(s), 2 dir(s)

=> fatload mmc 0:1 83000000 boot/my-i6ull.dtb
reading boot/my-i6ull.dtb
36274 bytes read in 22 ms (1.6 MiB/s)
=>
=> fatload mmc 0:1 80800000 boot/zImage
reading boot/zImage
Error reading cluster
** Unable to read file boot/zImage **
=>
=> fatload mmc 0:1 80800000 boot/zImage
** Can't read partition table on 0:0 **
** Invalid partition 1 **
=>
=>

后来我重新使用正点原子提供的nand和emmc的配置文件对UBoot进行编译(刚开始我一直用的是nand中的UBoot),然后调整boot到卡启动模式,这个问题仍然存在。我更换过使用的SD卡,仍无法解决。我不得不怀疑是否是厂家在修改UBoot的时候误操作了什么地方,接着我又使用nxp的uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2源码包,使用mx6ull_14x14_evk_defconfig配置文件进行编译。我想大厂的总该没问题了吧!可惜的是,这个问题仍然存在。。。看来官方提供的UBoot可能真的有些bug

各种抓狂之下去UBoot的分ftp站点重新下载了一个版本,第一次下的是u-boot-2016.03.tar.bz2,结果却发现该版本只合并到mx6ul,重新下了u-boot-2017.03.tar.bz2,发现支持到了mx6ull,编译的时候提示我:Your dtc is too old, please upgrade to dtc 1.4 or newer ,执行:apt-get install device-tree-compiler 后再次使用mx6ull_14x14_evk_defconfig配置进行编译:

  ... 省略 ...
  DTC     arch/arm/dts/imx6dl-icore.dtb
  DTC     arch/arm/dts/imx6dl-icore-rqs.dtb
  DTC     arch/arm/dts/imx6q-icore.dtb
  DTC     arch/arm/dts/imx6q-icore-rqs.dtb
  DTC     arch/arm/dts/imx6sx-sabreauto.dtb
  DTC     arch/arm/dts/imx6ul-geam-kit.dtb
  SHIPPED dts/dt.dtb
  CAT     u-boot-dtb.bin
  CFGS    board/freescale/mx6ullevk/imximage.cfg.cfgtmp
  MKIMAGE u-boot-dtb.imx
  OBJCOPY u-boot.srec
  COPY    u-boot.bin
  SYM     u-boot.sym
  COPY    u-boot.dtb
  CFGCHK  u-boot.cfg
cat: u-boot.cfg: No such file or directory
root@hope-VirtualBox:/home/hope/work/uboot/u-boot-2017.03# ls u-boot*
u-boot              u-boot.dtb      u-boot-dtb.imx.log  u-boot-nodtb.bin
u-boot.bin          u-boot-dtb.bin  u-boot.lds          u-boot.srec
u-boot.cfg.configs  u-boot-dtb.imx  u-boot.map          u-boot.sym

烧写测试:

U-Boot 2017.03 (Aug 13 2020 - 10:05:02 +0800)

CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 45C
Reset cause: WDOG
Model: Freescale i.MX6 ULL 14x14 EVK Board
Board: MX6ULL 14x14 EVK
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   CPU Net Initialization Failed
No ethernet found.
Hit any key to stop autoboot:  0
=> fatload mmc 0:1 80800000 boot/zImage
reading boot/zImage
5583352 bytes read in 346 ms (15.4 MiB/s)
=> fatload mmc 0:1 83000000 boot/my-i6ull.dtb
reading boot/my-i6ull.dtb
36274 bytes read in 23 ms (1.5 MiB/s)
=>

这下终于美滋滋了~~~~~~~load命令和fatload命令屡试不爽!kernel也能正常启动

老实说,起初我怀疑是mmc驱动有问题,但一看UBoot是能正确识别到sd卡的并且fatls命令输出的结果也正确,这意味着不太可能是驱动的问题。难不成是文件系统有bug???具体原因我还没来得及去细究,今天先记录下这个问题,等有时间的时候再去看看这令我抓狂的虫子到底在哪!有知道的朋友还望赐教~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NXP imx6ull uboot-imx-rel_imx_4.1.15无法从SD卡加载内核 的相关文章

  • 使用MicroPython开发ESP32(02):库介绍

    文章目录 目的 库基础说明 库列表 Python基础库 嵌入式设备相关库 ESP32特有库 总结 目的 对于Python来说丰富的库是其使用快速简易的关键 这点对于MicroPython也一样 这篇文章就对MicroPython的库做个罗列
  • 嵌入式杂谈之中断向量表

    虽说接触了好久的单片机或者说嵌入式开发 不过对于有些概念还是比较模糊 因此此系列将会从一些零碎的小知识点出发 慢慢的遍历整张嵌入式开发的地图 这次先来看一下中断向量表 至于为什么会提到中断向量表 主要是因为我自己在学习嵌入式Linux开发的
  • stm32USB之模拟U盘

    STMF0 W25Q32模拟U盘 1 第一次写博客 如有错误 请及时指正 如有表达不通顺的地方 敬请谅解 2 本篇文章主要描述如何使用STM32cube配置USB 使用的主控为STM32F072 Flash为W25Q32 使用的主控RAM只
  • STM32F4之ADC1【库函数操作】

    折腾了两天ADC多通道采样 采样的结果都很乱 完全不是预期值 在amobbs求助也没有找到结果 于是决定从简单开始 一步步折腾着破ADC ADC试验1实验说明 1 这个实验仅仅是初始化一个ADC 对其输入进行采样 2 使用STM32F4的A
  • 计算机毕业设计项目大全

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • 嵌入式 ARM 汇编编程例题

    文章目录 用汇编语言实现 128 位数的减法 已知 32 位变量 X Y 存放在存储器的地址 0x90010 0x90014 中 要求实现 Z X Y 其中 Z 的值存放在 0x90018 中 已知 32 位有符号数 X 存放在存储器的地址
  • HMI智能串口屏——在STM32开发板上的实战应用及其详解

    HMI智能串口屏 在STM32开发板上的实战应用及其详解 一 HMI智能串口屏使用步骤 二 附录 一 HMI智能串口屏使用步骤 安装USART HMI软件 一般买的串口屏里面 商家送的资料里面都有改该软件 打开软件 并点击左上角的 新建 选
  • U-Boot启动过程完全分析

    1 1 U Boot工作过程 U Boot启动内核的过程可以分为两个阶段 两个阶段的功能如下 1 第一阶段的功能 硬件设备初始化 加载U Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2 第二阶段的功能 初始化本阶段使
  • 通过External Tools在STM32CubeIDE下使用DAP-LINK

    目录 一 文章背景 二 准备工作 2 1 Stm32CubeIDE 2 2 DAP LINK 2 3 STM32目标板 三 配置过程 3 1 连接目标板 3 2 配置仿真器 3 3 更改调试设置为远程调试 3 4 新建OpenOcd扩展工具
  • 在vmware里面看不到已经设置的共享文件夹

    查看你是否设置了共享文件夹 vmware hgfsclient 在上图的虚拟机点击安装vmware tools 之后会在vmware tools文件里面有一个压缩的文件 把它复制到自己创的文件夹并解压 自己创建文件夹使用mkdir p mo
  • STM32 FLASH操作

    STM32 的闪存模块由 主存储器 信息块和闪存存储器接口寄存器等 3 部分组成 主存储器 该部分用来存放代码和数据常数 如 const 类型的数据 对于大容量产品 其被划分为 256 页 每页 2K 字节 注意 小容量和中容量产品则每页只
  • 内存管理实验

    内存管理 1 介绍 内存管理 是指软件运行时对计算机内存资源的分配和使用的技术 其最主要的目的是如何高效 快速的分配 并且在适当的时候释放和回收内存资源 内存管理的实现方法有很多种 他们其实最终都是要实现 2 个函数 malloc 和 fr
  • 毕业设计 STM32人体红外测温枪温度采集系统 - 单片机

    文章目录 1 前言 2 主要器件 3 实现效果 4 设计原理 MLX90614 红外温度传感器 5 部分实现代码 6 最后 1 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求
  • 为何在新建STM工程中全局声明两个宏

    在uVision中新建STM32工程后 需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中 此时需要在工程设置 gt C C 选项卡下的Define文本框中键入这两个全局宏定义 STM32F40 41xxx USE STDPERIP
  • STM32CubeMX HAL库串口+DMA+IDLE空闲中断不定长度数据接收和发送

    本文开发环境 MCU型号 STM32F103ZET6 IDE环境 MDK 5 29 代码生成工具 STM32CubeMx 5 3 0 HAL库版本 STM32Cube FW F1 V1 8 0 STM32Cube MCU Package f
  • 如何从u-boot启动Linux内核?

    我的 Linux 内核镜像uImage在我的U盘里 我想从 U Boot 启动它 还有设备树文件am335x evm dtb在我的U盘里 我所做的如下 U Boot usb start Re start USB USB0 scanning
  • lv12 uboot移植深化 9

    u boot 2013 0 1移植 实验目的 了解 u boot 的代码结构及移植 的基本 方法 实验环境 u buntu 14 04
  • Linux值得学习吗?打工人利用业务时间学习Linux需要多长时间?

    nbsp Linux值得学习吗 打工人利用业务时间学习Linux需要多长时间 在开始前我有一些资料 是我根据自己从业十年经验 熬夜搞了几个通宵 精心整理了一份 Linux的资料从专业入门到高级教程 工具包 点个关注 全部无偿共享给大家 在评
  • 锂电池管理系统(BMS)

    引言 在现代科技的推动下 锂电池已经成为各种电动设备和能源存储系统的首选能源媒介 然而 锂电池在充电和放电过程中存在一系列潜在的安全隐患 同时其性能和寿命也受到一些限制 为了解决这些问题 锂电池管理系统 BMS 应运而生 BMS不仅仅是一个
  • Yocto 添加自定义 UBoot 环境变量

    我正在尝试通过 Yocto 构建过程添加两个新的 u boot 环境变量 My file u boot imx 2021 04 bbappend包含 FILESEXTRAPATHS prepend THISDIR PN SRC URI fi

随机推荐

  • kube-apiserver 报错 Unable to authenticate the request“ err=“[x509: certificate signed by unknown ...

    问题描述 采用ansible 二进制方式部署kubernetes 部署完成后kubectl get node 节点状态 NotReady kubectl get pod n kube system 发现 calico 处于 Pending
  • linux ssh Unused,安装openssh-portable时遇到的问题及解决办法

    问题1 configure error Your OpenSSL headers do not match your library Check config log for details If you are sure your ins
  • [pytorch]关于cross_entropy函数

    loss F cross entropy output labels output 网络的全连接层的输出 值可能是有正有负的 例如 1 56 2 43 等 labels 正常标签 例如一共5个类别 值就是0 4
  • style-components使用

    目录 安装 创建全局样式文件 以js为后缀 组件中使用 为什么使用 style components style components最基础的用法就是以组件的形式编写样式 安装 npm install styled components 创
  • Qt 信号和槽函数

    信号和槽是一种高级接口 应用于对象之间的通信 它是 QT 的核心特性 当某个信号被发射 就需要调用与之相绑定的槽函数 这与Windows下的消息机制类似 消息机制是基于回调函数 一个回调即是一个函数的指针 因此如果希望一个处理函数通知一些事
  • QT day1

    一 QT基本框架 1 QT注意事项 QT文件路径必须要纯英文 2 QT类类型 QMainWindow 带有菜单栏目 Qwidget 常用 3 文件系统 main函数分析 include mainwindow h include
  • 记一次老版本perforce的迁移历程

    当前现状 项目组的代码与资源是用perforce管理 已经有7年历史了 用的是perforce2015版本 仓库有2 4T perforce所在物理机只有3T空间 journal文件当前470G 每天增长3 4G 最大的问题 7年前的旧机器
  • 微信小程序npm安装,保姆级图文教程,步骤齐全

    一 配置nodejs Download Node js 下载node js 点击 msi程序安装 随便安装路径 尽量避免中文 只要安装的是电脑上就行 记住安装路径 这个环境变量是自动配置的 zip需要手动配置环境变量 zip包 随便解压路径
  • visual studio 代码格式化的若干方法(含快捷键)

    Microsoft Visual Studio Community 2019 16 11 19 方法一 快捷键 选中内容 gt ctrl k ctrl f 方法二 工具栏 选中内容 gt 编辑 gt 高级 gt 设置选定内容的格式
  • 玩10次ChatGPT就要消耗1升水|加州大学河滨分校研究结果

    西风 发自 凹非寺量子位 公众号 QbitAI 用5次ChatGPT 最高可消耗500毫升水 这是研究人员对OpenAI训模型耗水量调查后给出的结果 此外 据微软最新环境报告 2021年到2022年其全球用水量飙升34 也就是近17亿加仑
  • 计算Shell脚本执行时间

    startTime date Y m d H M S startTime s date s 执行程序 endTime date Y m d H M S endTime s date s 计算时长 sumTime endTime s star
  • HyperLedger Fabric - 超级账本(4)链码的概念与使用

    概念 Chaincode 链上代码 简称链码 一般是指用户编写的应用代码 链码被部署在Fabric网络节点上 Peer 节点 背书节点 commit节点 Leader节点 锚节点 运行在隔离沙盒 当前为Docker容器 中 并通过gRPC协
  • QT--连续发送数据包

    提示 本文为学习记录 若有错误 请联系作者 谦虚受教 文章目录 前言 一 数据包 二 相关实现代码 三 Char转QByteArray 总结 前言 萤火虫在灯光下为什么不会亮呢 一 数据包 定义 包 Packet 是TCP IP协议通信传输
  • django vue前后台传对象及数据highcharts图表显示

    总体思路 Vue对象中定义data数据对象 axios get方法通知后台产生数据 后台用JsonResponse返回数据 注意写上safe False 前台用response data取回数据 存入Vue对象的data对象中 在js中通过
  • 剑指 Offer 53 - I. 在排序数组中查找数字 I

    剑指 Offer 53 I 在排序数组中查找数字 I 题目 题目链接 具体代码 题目 题目链接 https leetcode cn com problems zai pai xu shu zu zhong cha zhao shu zi l
  • 使用Cartool工具包分析EEG源成像

    使用Cartool工具包分析EEG源成像 1 基本要求 1 1 EEG预处理 EEG Pre processing 1 2 时间过滤 Temporal Filtering 1 3 下采样 降低采样率 Down Sampling 1 4 电极
  • MAC OS更新系统后IDEA中的SVN报错无法使用

    IntelliJ IDEA无法正常使用SVN 报Cannot run program svn in directory XXXX XXXX XXXX XXX error 2错误 使用Mac的小伙伴 在更新Mac系统的之后 通过idea操作s
  • 充电灯 低电灯共用一个 LED

    充电灯 低电灯共用一个 LED 电路 产品经理提出一个需求 因为结构只有一个灯孔 需要实现充电 低电指示灯共用一个LED 考虑到电源开关关闭时充电要亮 所以用电池正极作为 LED阳极 LED 阴极由两条线路控制 一个是充电IC的充电指示脚
  • 玩转 SpringBoot 监控统计(SQL监控、慢SQL记录、Spring监控、去广告)

    关注后回复 进群 拉你进程序员交流群 作者 架构师的小跟班 来源 blog csdn net weixin 44730681 article details 107944048 基本概念 Druid 是Java语言中最好的数据库连接池 虽然
  • NXP imx6ull uboot-imx-rel_imx_4.1.15无法从SD卡加载内核

    我imx6ull使用的是正点原子的alpha开发板 我将我的SD卡分成了两个分区 第一个分区格式化为fat 用来存放zImage和dtb 第二个分区格式化为EXT4格式 这个分区作为根文件系统 遇到的问题是 我编译好kernel后 尝试通过