I.MAX6ULL与STM32启动方式对比

目录

前言

一、STM32启动方式

1、启动方式

2、ISP下载和IAP下载的不同

二、I.MAX6ULL启动方式

1、启动方式选择

2、支持的启动设备

3、启动设备选择


前言

I.MAX6U是一款NXP出品的,528~900MHz的Cortex-A7内核的MPU

一、STM32启动方式

1、启动方式

使用过STM32芯片的人肯定都知道,STM32的启动方式可以通过BOOT0和BOOT1两个引脚来设置,这两引脚是可以外接电路来控制高低电平的,这样就可以控制STM32单片机上电的启动方式了。如下表,启动方式的选择。

BOOT0

BOOT1

启动模式

说明

0

X

用户闪存存储器启动

也就是FLASH启动

1

0

系统存储器启动

用于串口下载

1

1

SRAM启动

用于在SRAM中调试代码

使用最多的启动模式就是第一种闪存启动,因为在STM32中,程序一般也就几百K不会太大,而单片机内部都会集成有几百K甚至上M的FLASH,所以一般就直接从内部FLASH启动了。单片机上电后直接从主存储器的0x8000000地址开始启动。如下图(STM32大容量产品闪存模块组织)I.MAX6ULL与STM32启动方式对比_第1张图片

2、ISP下载和IAP下载的不同

对于第二种从系统存储器启动,这里小伙伴可能会有疑问了,为什么说是用于串口下载呢?又是怎么实现串口下载的呢?其实原因就是STM32出厂的时候已经在系统存储器中固化了一段引导程序(Bootloader),当选择从系统存储器启动的时候,这段引导程序会从指定串行外设(不同的芯片支持的外设不同,参考链接)接收程序下载到主存储器,然后跳转到主存储区去执行,这就是ISP(In System Programing)在系统编程的原理。ISP中的引导程序是固化在System Flash中的,我们是没法改变的。可以使用FlyMcu软件来下载程序。

I.MAX6ULL与STM32启动方式对比_第2张图片

说到串口下载,其实除了系统自带的ISP下载方式外,还可以通过IAP(In Application Programing)在应用编程的原理来下载。IAP 就是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。要想实现串口升级也是需要一段引导程序(Bootloader)的,不过这段引导程序是我们自己编写的存储在User Flash的。这段引导程序的作用就是用户闪存存储器模式启动下,在开始执行应用程序之前,先判断是否需要通过指定的外设(这个可以自行设计了)接收程序,如果是则会接收并写入到应用程序区域,最后再跳转到应用程序去执行,从而实现串口升级的功能。比如可以使用ymodem协议,上位机作为ymodem主机使用超级终端下发固件,boot作为ymodem从机接收固件。 如下图,ISP引导程序、IAP引导程序、应用写程序在Flash中的分布示意图:I.MAX6ULL与STM32启动方式对比_第3张图片

 

二、I.MAX6ULL启动方式

1、启动方式选择

I.MAX6ULL支持多种启动方式,不同的启动方式其启动要求也不一样。跟STM32单片机的启动方式选择类似,I.MAX6ULL的启动方式是通过BOOT_MODE0、BOOT_MODE1两个引脚来选择的。

BOOT_MODE1

BOOT_MODE0

启动模式

说明

0

0

FUSE启动模式

也就是FLASH启动

0

1

串行下载

可以通过USB或UART将程序下载到外置存储设备中

1

0

内部BOOT启动模式

用于在SRAM中调试代码

1

1

保留

 

2、支持的启动设备

I.MAX6ULL还支持多种启动设备,比如可以从 SD/EMMC、 NAND Flash、 QSPI Flash等启动。在STM32中,启动设备就是内部FLASH,就没有选择启动设备这一步了。但是在I.MAX6ULL中就不一样了,程序上M是常事,要在芯片内集成几百兆的FLASH成本是很高的,所以一般会选择将程序放置到外部的存储设备中,启动的时候再将程序拷贝到链接地址(运行地址)去运行,这样不仅降低了成本和制造工艺的难度,灵活性也大大增高,用户可以按需选择存储设备节省成本。那么I.MAX6ULL具体支持从哪些设备中启动呢?启动设备是怎么选择的呢?

① 、接到 EIM接口的 CS0上的 16位 NOR Flash。

② 、接到 EIM接口的 CS0上的 OneNAND Flash。

③ 、接到 GPMI接口上的 MLC/SLC NAND Flash NAND Flash页大小支持 2KByte、4KByte和 8KByte 8位宽。

④ 、 Quad SPI Flash。

⑤ 、接到 USDHC接口上的 SD/MMC/eSD/SDXC/eMMC等设备。

⑥ 、 SPI接口的 EEPROM

3、启动设备选择

跟启动方法选择类似,也是可以通过引脚来控制的,分别为BOOT_CFG1[7:0]、 BOOT_CFG2[7:0]、BOOT_CFG4[7:0]这 24个配置 IO,他们分别对应LCD的 24根数据线 LCD_DATA0~LCD_DATA23。这24个引脚和BOOT_MODE1、 BOOT_MODE0共同组成了 I.MAX6ULL的启动选择引脚。但这24个引脚都需要用到吗,不然,其实只要用BOOT_CFG2[3]、BOOT_CFG1[7:3]

I.MAX6ULL与STM32启动方式对比_第4张图片

参考资料:

《Cortex M3权威指南(中文)》

《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.3》

 

 

你可能感兴趣的:(Linux)