嵌入式Linux开发 Day2

4 篇文章 0 订阅
2 篇文章 0 订阅

本章的内容为《嵌入式Linux>【第二期】手把手教你学Linux之ARM(MX6U)裸机篇》中6.5、7.1、7.2、7.3讲的内容。

1.5下载程序

续前一天的内容,烧写Bin文件。
i.Mx6ull支持SD卡、EMMC、NAND、Nor、SPI flash等启动方式,该系列裸机例程选择烧写到SD卡里面。
连接SD卡到Ubuntu上,烧写bin文件到SD卡的绝对地址下,同时需在bin文件前添加头部信息。
在/dev/中查找SD卡,最终生成一个imx文件。
??在视频中的烧录方式为用SD卡烧录程序,并且视频的作者说只能用SD卡烧录程序,但是平常没有见Linux研发的同事们有谁这么烧过程序,此处存疑

2 IMX启动方式

2.1启动方式选择

1、官方文档中对启动方式的说明如下:
The boot ROM supports the following boot devices:
• NOR Flash
• NAND Flash
• OneNAND Flash
• SD/MMC
• Serial (SPI) NOR Flash and EEPROM
• QuadSPI (QSPI) Flash
通过BOOT_MODE的两个引脚设置启动方式:
在这里插入图片描述
即分别为从熔丝下载(一般应用于生产模式)、串行下载、内置Boot启动。
当烧写系统到开发板时可使用串行下载(采用NXP提供的下载工具),裸机程序时选用从内置BOOT中启动,然后下载。

2.2 启动设备选择

The Chip supports the following boot Flash devices:
NOR Flash with External Interface Module (EIM), located on CS0, 16-bit bus width.
OneNAND Flash with EIM interface, located on CS0, 16-bits bus width.
Raw NAND (MLC and SLC), and Toggle-mode NAND flash through GPMI-2 interface. Page sizes of 2 Kbyte, 4 Kbyte and 8 Kbyte. Bus widths of 8-bit with 2 through 40-bit BCH Hardware ECC (Error Correction) are supported.
Quad SPI Flash.
SD/MMC/eSD/SDXC/eMMC4.4 via USDHC interface, supporting high capacity cards
EEPROM boot via SPI (serial flash)
在Boot Devices中有相关说明,配置见下:
在这里插入图片描述
上表中的BOOT_CFG1[7:4]即为配置启动方式最常用得到4个引脚,在正点原子的开发板中有提供24个引脚全部的配置方式,针对不同的启动方式,在参考手册中有相关的配置说明,通过配置相对应的24个IO口的电平高低电平设置。

2.3 启动头部文件

2.3.1 IVT数据

在选好了BOOT设备的启动类型之后,需要对设备进行初始化,例如包括分配对应的内存,设置对应的时钟,中断处理和异常处理等。在《IMX6ULL Reference manual》中8.4 Device initialization有说明,具体内容如下:
This section describes the details of the ROM and provides the initialization details.
This includes details on:
• The ROM memory map
• The RAM memory map
• On-chip blocks that the ROM must use or change the POR register default values
• Clock initialization
• Enabling the MMU/L2 cache
• Exception handling and interrupt handling
1、首先对时钟进行设置:默认为396MHz;
2、使能MMU和caches,使能L1、L2、MMU加速启动
3、从BOOT_CFG设置的外置存储中,读取相对应的镜像。
在8.7 program image中烧写镜像中,配置中断向量表、程序地址映射表(有点类似单片机中的icf文件)、芯片配置数据、用户代码。
在这里插入图片描述
load.imx文件在SD卡中的起始地址为0x400,即偏移了1K,即IVT表的起始地址,同时整个初始化下载区域Data 数据长度为4K,因此IVT实际的最大大小为3K。那么IVT的格式应该怎么写呢,官方的参考手册给出了相应的信息格式如下(u-boot.imx):
在这里插入图片描述
其中Header的格式要求见下,在这当中采用大端模式,其中Length说明了IVT的总长度为32字节,
在这里插入图片描述
Entry表示其入口地址:在本例中设置为0x87800000。
Reversed1保留默认为0;
dcd:此处官方的解释为The DCD is a configuration information contained in the program image (external to the ROM) that the ROM interprets to configure various peripherals on the chip,即DCD是包含在程序映像(ROM外部)中的配置信息,ROM将其解释为配置芯片上的各种外围设备。0x877FF400为.imx的首地址,依次为IVT、BOOT data、DCD,因此,在这里,DCD的地址为0x877FF42C。
boot data:长度为12字节,起始地址为0X877FF420在这里插入图片描述
self:VT复制到 DDR中以后的首地址。设置为0X877FF400
csf:CSF地址、0X00000000
reserve2:保留默认全为0.

2.3.1 BootData数据

BootData的内容如下:在这里插入图片描述

2.3.3 DCD数据

Device configuration data,为寄存器配置默认的数据,最大1768字节。
在这里插入图片描述
将CCGR0——CCGR6的全部写为0xFFFFFFFF,表示打开全部外设时钟
将DDR设置初始化参数0X020E02B4——0X020E0248地址
配置DDR寄存器。
还包括其他内容,例如Check data command、NOP command、 unlock command。
上述文件可以从NXP的官方u_boot.imx中找到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值