• 二.I.MX6U的启动方式


    在上一章我们通过点亮LED实现了第一个小程序。在烧录程序完成插入SD卡后有个选择启动拨码开关的步骤,那么这个启动方式是如何实现的,今天我们就来大致了解下I.MX6U的启动方式

    一.启动模式选择

    按照I.MX6UL的开发手册上所说,整个BOOT的处理过程就是芯片上电后,芯片首先会根据BOOT_MODE[]1:0]的设置来选择启动方式

    00为通过可编程熔断丝启动,这种方式只能修改一次,后面就不能修改了,我们不会使用

    01为串行下载器模式,就是通过USB或者UART将代码下载到板子的外置存储设备中。针对阿尔法开发板,可以使用支持OTG的USB接口向板子上的SD/EMMC、NAND等设备下载代码。这个下载需要NXP(恩智浦)提供的一个软件,在量产的时候使用。

    10为内部BOOT模式,在此模式下芯片会执行bootROM代码,这段代码会进行硬件初始化,然后从boot设备中将代码拷贝出来复制到指定的RAM中,一般就是DDR。

    结合硬件原理图来看(下面拨码开关9那里标注不对,应该是LCD_DATA7)

     拨码开关1、2位就是启动方式的选择,我们常用的就是01(USB)或10(内部).

    二.启动设备选择

    如果要选择启动设备,前提是MODE1=1和MODE0=0,即内部BOOT模式。开发手册上说明了这个模式下支持的设备

     我们最常用的就是NANDflash,SD,EMMC,QSPIFlash(轻量级,便宜)

    设备的选择是通过BOOT_CFG1,2,4几个寄存器,每个8为,通过LCD1_DATA00-23y一共24个值决定的。

     而在开发板上,大部分都是通过47K的下拉电阻接地(BT_CFG4全接地,CFG2上面两个上拉是DNP也就是未焊接,也是全部接地的)

    往前翻一下那个拨码开关,就是对应了LCD_DATA3/4/5/6/11,对应的BOOT_CFG1[3:7]和BOOT_CFG2[3]

    下面的表是讲到BOOT_CFG2的定义

     3和4一同决定了板子首冲SDHC1还是SDHC2启动。6ULL支持两个SD卡接口,是通过拨码开关3选择,为1的时候是从SDHC2启动

    重要的是BOOT_CFG1,还是结合图表来看

     首先,0,1,2都是定死的,3-7被引到了拨码开关。

    由于前三种设备我们都未使用,3同2一同决定了是选择SD或MMC/eMMC的速度(能选的只有3,一般都是0),对于NANDFlash是定义了设备的数量

    剩下的就直接看SD,eMMC和NAND的设置就行了

    对于SD来说,[7:5]是订好的010,[4]是快速启动,我们一般都是0

    eMMC时和SD一样,[7:4]是0110

    NAND模式时,[7]固定为1,而[6:4]查手册可以发现

     [6]是NAND的协议模式,一般我们都用0

    [5:4]决定了块的页大小,这个要看NANDFlash的手册了。

  • 相关阅读:
    oracle数据库同步
    软件设计过程中常用的几种图(一)
    面向对象建模为基础的开发模式
    常用正则表达式
    js 创建一个浮动div
    DATALIST 绑定数据分页
    ASP.NET 3.5 Extensions CTP Preview Released
    重构是一种意识流
    重构随笔: 封装集合(Encapsulate Collection)
    乱笔.................table控件,带一列合并
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/15732154.html
Copyright © 2020-2023  润新知