I.MAX6ULL与STM32启动方式对比

142 篇文章 13 订阅

目录

前言

一、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大容量产品闪存模块组织)

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

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

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

二、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

保留

串行下载:

串行下载的意思就是可以通过 USB或者 UART将代码下载到板子上的外置存储设备中,我们可以使用 OTG1这个 USB口向开发板上的 SD/EMMC、 NAND等存储设备下载代码。这个下载是需要用到 NXP提供的一个软件mfgtool,一般用来最终量产的时候将代码烧写到外置存储设备中的

内部 BOOT模式:

在此模式下,芯片会执行内部的 boot ROM代码,这段 boot ROM代码会进行硬件初始化 (一部分外设 ),然后从 boot设备 (就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM中,一般是 DDR。这个 boot ROM代码都会做什么处理呢?首先肯定是初始化时钟, boot ROM设置的系统时钟如图 所示:

当 BOOT_MODE设置为内部 BOOT模式以后,可以从多种启动设备中启动。

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]

参考资料:

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

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

(48条消息) I.MAX6ULL与STM32启动方式对比_hurryddd-CSDN博客_imx6ull和stm32区别

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值