ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

参考:Linux之ARM(IMX6U)裸机之I.MX6ULL启动方式详解
作者:一只青木呀
发布时间: 2020-08-09 16:32:07
网址:https://blog.csdn.net/weixin_45309916/article/details/107891591

目录

  • 启动方式的选择
    • ①.串行下载模式
    • ②.内部BOOT模式
  • 启动设备的选择
    • 启动设备的类型
    • 正点开发板启动设备的底板原理图(如何对应核心板)
    • 最终拨码开关选择启动方式

启动方式的选择

在这里插入图片描述

BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式:

  • 一种是改写 eFUSE(熔丝),修改 eFUSE 的方式只能修改一次,后面就不能再修改了,所以我们不使用。
  • 另一种是修改相应的 GPIO 高低电平,我们使用的是通过修改BOOT_MODE[1:0]对应的 GPIO 高低电平来选择启动方式,所有的开发板都使用的这种方式。

I.MX6U 有一个 BOOT_MODE1 引脚和BOOT_MODE0 引脚,这两个引脚对应这 BOOT_MODE[1:0]。 I.MX6U-ALPHA 开发板的这两个引脚原理图如图:
在这里插入图片描述
在这里插入图片描述
其中 BOOT_MODE1 和 BOOT_MODE0 在芯片内部是有 100KΩ下拉电阻的,所以默认是0。 BOOT_MODE1 和 BOOT_MODE0 这两个引脚我们接到了底板的拨码开关上,这样我们就可以通过拨码开关来控制 BOOT_MODE1 和 BOOT_MODE0 的高低电平。

以 BOOT_MODE1为例,当我们把 BOOT_CFG 的第一个开关拨到“ON”的时候,就相当于 BOOT_MODE1 引脚通过 R88 这个 10K 电阻接到了 3.3V 电源,芯片内部的 BOOT_MODE1 又是 100K 下拉电阻接地,因此此时 BOOT_MODE1 的电压就是 100/(10+100)*3.3V= 3V,这是个高电平, 因此BOOT_CFG 的中的 8 个开关拨到“ON”就是高电平,拨到“OFF”就是低电平。

而 I.MX6U 有四个 BOOT 模式,这四个 BOOT 模式由 BOOT_MODE[1:0]来控制,也就是BOOT_MODE1 和 BOOT_MODE0 这两 IO, BOOT 模式配置如表所示:

BOOT_MODE[1:0]BOOT类型
00从 FUSE 启动
01串行下载
10内部 BOOT 模式
11保留(无效)

①.串行下载模式

当 BOOT_MODE1 为 0, BOOT_MODE0 为 1 的时候此模式使能。串行下载的意思就是可以通过 USB 或者 UART 将代码下载到板子上的外置存储设备中,我们可以使用 OTG1 这个 USB口向开发板上的 SD/EMMC、 NAND 等存储设备下载代码。我们需要将 BOOT_MODE1 拨到“OFF”,将 BOOT_MODE0 拨到“ON”。这个下载是需要用到 NXP 提供的一个软件,一般用来最终量产的时候将代码烧写到外置存储设备中的。【自己理解:下面的BOOT方式更加智能,只需选择好启动设备后会执行内部的BOOT ROM代码,帮我们初始化硬件等操作。这里的串行方式要我们自己去写初始化时钟、中断向量表等。后面讲主频和中断向量表的时候就是我们手动去一一实现的】

②.内部BOOT模式

当 BOOT_MODE1 为 1, BOOT_MODE0 为 0 的时候此模式使能。在此模式下,芯片会执行内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设备(就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。

启动设备的选择

前提是设置MODE1和MODE0是从内部BOOT启动的,也就是MODE1=1,MODE0=0时才要选择启动设备。
在这里插入图片描述

启动设备的类型

当 BOOT_MODE 设置为内部 BOOT 模式以后,可以从以下设备中启动:

  • ①、接到 EIM 接口的 CS0 (片选0)上的 16 位 NOR Flash。
  • ②、接到 EIM 接口的 CS0 (片选0)上的 OneNAND Flash。
  • ③、接到 GPMI 接口上的 MLC/SLC NAND Flash, NAND Flash 页大小支持 2KByte、 4KByte和 8KByte, 8 位宽。
  • ④、 Quad SPI Flash
  • ⑤、接到 USDHC 接口上的 SD/MMC/eSD/SDXC/EMMC 等设备。
  • ⑥、 SPI 接口的 EEPROM。

正点开发板启动设备的底板原理图(如何对应核心板)

这些启动设备如何选择呢?通过BOOT_CFG选择

I.MX6U 同样提供了 eFUSE 和 GPIO 配置两种, eFUSE 就不讲解了。我们重点看如何通过 GPIO 来选择启动设备,因为所有的 I.MX6U 开发板都是通过 GPIO来配置启动设备的。

正如启动模式由BOOT_MODE[1:0]来选择一样,启动设备是通过 BOOT_CFG1[7:0]、 BOOT_CFG2[7:0]和 BOOT_CFG4[7:0] (每个8位)这 24 个配置 IO,这 24 个配置 IO 刚好对应着 LCD 的 24 根数据线 LCD_DATA0~LCDDATA23,当启动完成以后这 24 个 IO 就可以作为 LCD 的数据线使用。这 24 根线和 BOOT_MODE1、 BOOT_MODE0 共同组成了 I.MX6U的启动选择引脚,如图:
在这里插入图片描述
虽然有 24 个 IO,但是实际需要调整的只有那几个 IO,其它的 IO 全部下拉接地即可,也就是设置为 0。打开 I.MX6U-ALPHA 开发板的核心板原理图,这 24 个 IO 的默认设置如图:
在这里插入图片描述

大部分的 IO 都接地了,只有几个 IO 接高,尤其是 BOOT_CFG4[7:0]这 8 个 IO 都 10K 电阻下拉接地,所以我们压根就不需要去关注 BOOT_CFG4[7:0]。我们需要重点关注的就只剩下了 BOOT_CFG2[7:0]和 BOOT_CFG1[7:0]这 16 个 IO。这 16 个配置 IO 含义在原理图的左侧已经贴出来了,如图:
在这里插入图片描述

BOOT_CFG2全部接地,除了BOOT_CFG[3],此位用来选择SD卡启动接口(6ull不止插一个SD卡)。

打开正点原子 I.MX6U-ALPHA 开发板的底板原理图,底板上启动设备选择拨码开关原理图如图:
在这里插入图片描述

除 了 BOOT_MODE1 和 BOOT_MODE0 必 须 引 出 来 ,LCD_DATA3~LCDDATA7、 LCD_DATA11 这 6 个 IO 也被引出来了,可以通过拨码开关来设置其对应的高低电平,拨码开关拨到“ON”就是 1,拨到“OFF”就是 0。其中 LCD_DATA11 就是 BOOT_CFG2[3]LCD_DATA3~LCD_DATA7 就是 BOOT_CFG1[3]~BOOT_CFG1[7],这 6 个IO 的配置含义如表

BOOT_CFG1[0] ~ BOOT_CFG1[2]都是定死的,BOOT_CFG1[3] ~ BOOT_CFG1[7]是可以设置的。

在这里插入图片描述

最终拨码开关选择启动方式

BOOT IO 含义, I.MX6U-ALPHA 开发板从 SD 卡、 EMMC、 NAND 启动的时候拨码开关各个位设置方式如表
在这里插入图片描述

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

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

相关文章

python 操作mongo

1.  导包: import pymongo 2.  建立连接 client pymongo.MongoClient("127.0.0.1",27017) 3.  获取数据库 db client["test1"] 4.  获取集合 col db["t2"] 5.  插入数据: col.insert_one({ name:aa , age:2 …

ARM(IMX6U)裸机之I.MX6ULL启动头文件详解(内部BOOT ROM、IVT + Boot data + DCD + led.bin)

参考:Linux之ARM(IMX6U)裸机之I.MX6ULL镜像烧写以及启动头文件的详解 作者:一只青木呀 发布时间: 2020-08-09 17:10:00 网址:https://blog.csdn.net/weixin_45309916/article/details/107895975 目录BOOT R…

(转)git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”...

对于git的提交一直很小心翼翼,感觉一不小心就会踩到莫名的坑。 这不, 某天commit 就遇到了On branch master nothing to commit (working directory clean) 一查意思。你的分支很干净? 干净?excuse me? 然后git push …

ARM(IMX6U)裸机C语言版本LED驱动实验(汇编进入处理器SVC模式、SP堆内存、跳转main函数、链接起始地址)

参考:Linux之ARM(IMX6U)裸机C语言LED驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-11 11:20:17 网址:https://blog.csdn.net/weixin_45309916/article/details/107930284 目录0.简介①、汇编…

IBM TS3200 Drive故障处理方案

一、故障定位1.1.故障信息截图摘要1.2.故障定位通过网线连接带库,进入Web管理模式从右边告警得到信息:Drive Broken Code :F3 02 SCD:5 ; Exception F3 52 –Error 经第二张图片定位,确认Drive 2故障需要更换一块Drive 模块此部件支持热插拔&…

链接脚本的编写( 起始地址、text、data、__bss_start、__bss_end、dis反汇编验证)

目录链接脚本的简介以及简单编写编写本试验的链接脚本链接脚本的简介以及简单编写 链接脚本描述了要链接的文件,以及链接顺序、链接首地址。 在博文ARM(IMX6U)裸机C语言版本LED驱动实验中,我们在编译过程中使用Makefile 来链接代…

java 无法加载资源,JavaScript:无法加载资源:服务器响应状态为404(未找到)

我处理 JavaScript 应用程序,该应用程序在 https://localhost:63342/WalletClient/index.html_ijtk4ock08pqsve8hb7b2b34ou3h5 的localhost地址中打开 . 看起来像这样,单击余额按钮时,它应执行以下 Ajax GET 请求并尝试打开新页面 balance.ht…

ARM(IMX6U)裸机模仿STM32驱动开发实验(定义外设结构体)

参考:Linux之ARM(IMX6U)裸机模仿STM32驱动开发格式 作者:一只青木呀 发布时间: 2020-08-15 12:11:56 网址:https://blog.csdn.net/weixin_45309916/article/details/108019447 目录0.外设结构体抽象思路1.模…

ARM(IMX6U)裸机官方SDK包使用

参考:Linux之ARM(IMX6U)裸机C语言LED驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-11 11:20:17 网址:https://blog.csdn.net/weixin_45309916/article/details/107930284 目录1、I.MX6ULL 官…

Leaflet中添加的不同图层样式图标

如上图,具体问题请查看对应html页引用的basemaps的css样式。 如下图是本项目引用的css样式: .basemap img { width: 48px; border: 2px solid #FFF; margin: 0 2px; /*border-radius: 40px;*/ box-shadow: 0 1px 5px rgba(0,0,0,0.65)} 当css样式中的bor…

ARM(IMX6U)BSP工程文件管理(分文件编程)

参考:Linux之ARM(IMX6U)BSP工程管理实验 作者:一只青木呀 发布时间: 2020-08-15 23:41:37 网址:https://blog.csdn.net/weixin_45309916/article/details/108028093 目录1、工程管理简介1.1、创建bsp、imx6…

php图片视频,PHP中使用php5-ffmpeg撷取视频图片实例

前几天在玩 FFmpeg 的时后,突然发现 Ubuntu 上多了 php5-ffmpeg 这个扩充套件,就想来玩玩看,看好不好用,有两个结论:读取影片取决于 FFmpeg 的支援性,如果想要什么格式都支援的话,建议自己重新编…

ARM(IMX6U)裸机C语言蜂鸣器驱动实验(BSP+SDK)

参考:Linux之ARM(IMX6U)裸机C语言蜂鸣器驱动实验–驱动编写,编译 作者:一只青木呀 发布时间: 2020-08-16 14:47:23 网址:https://blog.csdn.net/weixin_45309916/article/details/108032168 目录1、有源蜂鸣…

java金字塔的流程图,R中的金字塔图

Plotrix可能更容易,但可以反汇编ggplot图表,并将它们排列为金字塔图 . 使用 eipi10的数据(谢谢),并调整drawing-pyramid-plot-using-r-and-ggplot2中的代码,我为"males","females"和"country…

ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

参考:Linux之ARM(IMX6U)裸机按键输入实验(GPIO的输出与输入) 作者:一只青木呀 发布时间: 2020-08-17 21:43:37 网址:https://blog.csdn.net/weixin_45309916/article/details/108057…

php 提取正文算法,PHP生成文章摘要算法_栈

之前网上复制了一个摘要算法,一直使用正常。最近写的一篇前500字里含有超链接,就导致摘要生成有误,从而影响了前端样式。所以后面打算自己写,想起大学编译原理匹配表达式的大致思想,就决定采用栈的思想试试。实现目标&…

设计模式 之 《组合模式》

GOOD&#xff1a;整体和部分可以被一致对待&#xff08;如WORD中复制一个文字、一段文字、一篇文章都是一样的操作&#xff09; #ifndef __COMPOSITE_MODEL__ #define __COMPOSITE_MODEL__ #include <iostream> #include <string> #include <vector> using n…

ARM(IMX6U)裸机主频和时钟

参考&#xff1a;Linux之ARM&#xff08;IMX6U&#xff09;裸机主频和时钟配置 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-08-28 10:39:17 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/108237599 目录1、I.MX6U 时钟系统详解系统时钟…

关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现

灰色系统理论由我国著名学者邓聚龙教授于1982提出。灰色关联分析是灰色系统理论的一个分支&#xff0c;应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法。一、灰色关联分析法的建模过程灰色关联分析法的基本思想是根据各比…

C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

参考&#xff1a;C语言五大排序&#xff08;桶排序&#xff0c;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;快速排序&#xff09;动态演示 作者&#xff1a;一只青木呀 发布时间&#xff1a; 2020-09-09 20:18:43 网址&#xff1a;https://blog.csdn.net/we…