大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1010, 1170型号上不一样的SNVS GPR寄存器读写控制设计. 痞子衡之前两篇文章 <在SBL项目实战中妙用i.MXRT1xxx里SystemReset不复位的GPR寄存器>.<对比i.MXRT与LPC在RTC外设GPREG寄存器使用上的异同> 介绍了 i.MXRT/LPC 上 System Reset 后不复位的 GPR 寄存器用法,但是有客户发现在 i.MXRT1010 和 i.MXRT1170…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1010上的普通GPIO与高速GPIO极限翻转频率. 上一篇文章 <聊聊i.MXRT1xxx上的普通GPIO与高速GPIO差异及其用法>,痞子衡从原理上介绍了 i.MXRT1xxx 系列里普通 GPIO 和 HSGPIO 差异,今天我们就来实测它们的极限翻转频率,看看它们实际表现差别到底有多大.本次选择的测试芯片是 i.MXRT1010,这颗芯片从功能上来说是目前 i.MXRT1xxx 系列里的小兄弟,但别小看它,因为…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT上的普通GPIO与高速GPIO差异. GPIO 可以说是 MCU 上最简单最常用的外设模块了,当一些原生功能外设接口模块不能满足项目设计要求时,我们常常会考虑使用 GPIO 来软件模拟实现相应功能,这时候 GPIO 本身性能就显得至关重要了. 在早期的 i.MXRT1015/1020/1024/1050 型号上,GPIO 都是普通性能(注意这里的普通其实相比一般低端 MCU 来说已经够性能优越了),考虑到 i.MXRT…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060/1170上的普通GPIO与高速GPIO极限翻转频率. 按照上一篇文章 <实测i.MXRT1010上的普通GPIO与高速GPIO极限翻转频率> 里的测试流程和方法,痞子衡今天带大家再测试下含有 HSGPIO 模块的 i.MXRT1060 和 i.MXRT1170 系列.从芯片整体性能上来说,它们俩都是 i.MXRT1010 的老大哥,但是老大哥未必是方方面面都碾压小老弟的,有时候系统设计越复杂,细节之处反而越难…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业环境里要求设备能够持续稳定运行,不能轻易宕机,但现实环境中常常有各种意外发生,其中一个常见的意外就是设备主控 MCU 程序被破坏.为了降低程序损坏这种意外带来的影响,一个很典型的做法就是增加 MCU 程序的份数,第一份被破坏,就启动第二份...,用程序数量的增加来降低启动失败率,这属于概率学手段范畴…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的性能. 在前面的文章 i.MXRT微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新一代跨界微控制器i.MX RT系列,该系列第一款芯片i.MXRT105x性能完爆同时期市面上所有的微控制器,官方公布的CoreMark跑分高达3020,有人可能不明白这个数字意味着什么,作为对比,我们再来看看意法半导体最流行的芯片STM32F103RB,它的CoreMark是108(此处应该有类似M…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的性能. 在前面的文章 i.MXRTxxx微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2018年推出的全新跨界微控制器i.MX RTxxx系列,该系列第一款芯片i.MXRT600搭载一颗Cortex-M33控制内核和一颗Tensilica HiFi4 DSP处理内核,该芯片可在超低功耗边缘处理应用中实现高效本地音频预处理.沉浸式3D音频播放和支持语音的体验.今天痞子衡先为大家实测一下其Cor…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的性能. 在前面的文章 i.MXRTyyyy微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新一代跨界微控制器i.MX RTyyyy系列,该系列第一款芯片i.MXRT105x性能完爆同时期市面上所有的微控制器,官方公布的CoreMark跑分高达3020,有人可能不明白这个数字意味着什么,作为对比,我们再来看看意法半导体最流行的芯片STM32F103RB,它的CoreMark是…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT部分型号上新增的FlexSPI Remap功能. OTA升级设计几乎是每个量产客户都绕不开的话题,产品发布后免不了要做固件(App)升级以修复bug或者增加新特性.升级App是个麻烦事,因为处理不好,App被破坏了导致启动不了,产品就容易变砖,变了砖即使能救回来,也非常影响用户体验. 如今基于i.MXRT的客户量产产品越来越多,关于OTA安全升级的客户支持也越来越多.早期的i.MXRT型号(比如i.MXRT1050/10…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT三位数系列隐藏的FlexSPI Remap功能. 前段时间痞子衡写了一篇文章 <利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA>,介绍了Remap功能在OTA设计中的重要性.如果你对比过i.MXRT三位数(RT500/600)和四位数(RT1xxx)的FlexSPI模块,你会发现它们是一样的,寄存器定义几乎完全一致.但是我们知道这两个系列又分别是来自不同平台(LPC/i…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Octal或Hyper Flash上DQS信号与Dummy Cycle联系. 关于在 i.MXRT 上启动 NOR Flash 时如何设置正确的 Dummy Cycle 值,痞子衡一共写过四篇文章:<IS25WP系列Dummy Cycle设置>.<IS25LP系列Dummy Cycle设置>.<Dummy Cycle设置为0的误区>.<DTR模式下Dummy Cycle设置>, 这四篇文章都是针…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MbedTLS算法库纯软件实现与i.MXRT上DCP,CAAM硬件加速器实现性能差异. 近期有 i.MXRT 客户在集成 OTA SBL 项目去实现产品的 2nd bootloader 时遇到了 MbedTLS 库算法性能问题,客户想知道 MbedTLS 纯软件实现和使用 i.MXRT 芯片里的硬件加速器实现,在性能上差距有多大.借着客户这个问题,我们今天就在 i.MXRT 上实测看一下两个方式的性能差异. 客户使用的是 i.MXR…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1060/1010上串行NOR Flash冗余程序启动设计> 里,痞子衡详细介绍了 i.MXRT10xx 上的冗余程序启动设计,本质上这就是个双备份程序启动, NOR Flash 里存两份一样的 image,物理地址靠前的 image 0 启动失效就继续启动后面的 image 1,多一层保障. i.MXRT1170 是区别于 i.MXR…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT500/600上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1170上串行NOR Flash双程序可交替启动设计> 里,痞子衡详细介绍了 i.MXRT11xx 系列上的双程序启动设计,本质上其就是在双备份程序启动基础上增加了 image 版本控制,所以两份 image 可以按版本优先级来灵活选择启动,而不是死板地靠物理地址高低来定启动顺序. i.MXRTxxx 系列上(RT500/600)…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手册/数据手册,官方EVK板设计文件,各种应用笔记,各种参考设计方案.培训视频.软件SDK开发包,官方IDE/CFG工具,第三方软件支持等应有尽有,如果这上面文档你都能全部仔细看一遍,软件都能下载用起来,不用怀疑,你就是资深专家了. 其中痞子衡特别推荐你把所有应用笔记都看一遍,这些笔记凝结了所有恩智浦…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺. 恩智浦 MCU SE 团队近期一直在加班加点赶 SBL 项目(解决客户产品 OTA 需求),这个项目里集成了 ISP 本地升级(UART/USB)功能,其中 UART 口下载升级实现里加入了自动波特率识别支持,具体识别方法见 <串口(UART)自动波特率识别程序设计与实现(中断)> 一文,这一套 ISP 代码其实是移植于 i.MXRT Flashloade…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是对比i.MXRT与LPC在RTC外设GPREG寄存器使用上的异同. 本篇是 <在SBL项目实战中妙用i.MXRT1xxx里SystemReset不复位的GPR寄存器> 一文的延续,SBL 项目是为 i.MXRT/LPC 系列设计的,上文只介绍了 i.MXRT1xxx 里 SystemReset 不复位的 IOMUXC_SNVS_GPR 寄存器,我们需要在 i.MXRTxxx 和 LPC 中也找出 SystemReset 不复位的通…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异. 恩智浦 SW 团队每个季度都会公布 SDK.Tool 官网下载量,其中 MCUXpresso IDE 下载量一直稳步上升,这个恩智浦自家 IDE 其实在欧美和台湾地区是非常受欢迎的,在中国普及率稍微低一点,主要是国内的嵌入式开发者还是更熟悉 IAR/MDK 这两个经典的 IDE.人嘛,都不愿意轻易离开自己的舒适区. 今天痞子衡要介绍的是 MCUXpre…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上安全调试策略实现对JLink调试的影响. 痞子衡之前写过一篇旧文 <i.MXRT600的ISP模式下用J-Link连接后PC总是停在0x1c04a>,这篇文章详细解释了 Debug Mailbox 机制对 J-Link 调试体验的影响.我们知道 Debug Mailbox 是 i.MXRT 三位数系列(i.MXRT500/600)独有的外设模块,但是在 i.MXRT1170 上使用 J-Link 调试似乎存在…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的DTR模式. 前两篇文章 <IS25WP系列Dummy Cycle设置> 与 <IS25LP系列Dummy Cycle设置>, 痞子衡均是设置Flash的Fast Read Quad I/O SDR模式去启动的,但最近在恩智浦官方论坛上,有不止一个客户需要使能Flash的DTR模式去启动,他们似乎都遇到了小问题,难道DTR模式藏着什么玄机?走,跟痞子衡去瞧瞧: 一.什么是DTR模…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记番外篇之JLinkScript妙用. JLinkScript 文件是配套 J-Link 调试器使用的脚本,这个脚本适用于需要定制 J-Link 执行操作的场景,它可以帮助用户完成 J-Link 标准工具做不到的一些事情(比如 J-Link 连接顺序或者执行复位的方式,或者一些定制的硬件板需要一些特殊处理),关于 JLinkScript 文件详细解释参见痞子衡旧文 <JLink Script文件基础>. 痞子衡在…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列里暗藏的Product ID寄存器. MCU 厂商在定义一个产品系列时,通常是会预先规划产品发展路线的(即会有一大波 MCU 型号面世,各型号间特性有差异),因此 MCU 内部一般都会有一个专门的只读寄存器用以存放 Product ID 值,应用程序可读取这个 ID 值来识别当前 MCU 型号,这样在设计软件时可以让代码在这个 MCU 系列上通用,从而方便项目做 MCU 型号更换升级. 前段时间,痞子衡做了一…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx的系统中断延迟时间. 在 <Cortex-M系统中断延迟及其测量方法简介> 一文里,痞子衡介绍了 Cortex-M 中断延迟的基本概念及一种用 GPIO 模块来测量中断延迟时间的方法,今天我们就在 i.MXRT1xxx 系列芯片上用这种方法实测一下中断延迟: 一.官方指标 恩智浦 i.MXRT1xxx 系列目前有很多型号,都是基于 Cortex-M7 内核,主频从 500MHz 到 1GHz 不等.拿该系列第一…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的eFUSE. 在i.MXRT启动系列第二篇文章 Boot配置(BOOT Pin, eFUSE) 里痞子衡提到了eFUSE,部分Boot配置都存储在eFUSE memory里,但是对eFUSE的介绍仅仅浅尝辄止,没有深入,今天痞子衡就为大家再进一步介绍eFUSE. eFUSE是i.MXRT里一块特殊的存储区域,用于存放全部芯片配置信息,其中有一部分配置信息和Boot相关.这块特殊存储区域并不在ARM的…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Bootable image格式与加载过程. 在i.MXRT启动系列第三篇文章 Serial Downloader模式(sdphost, mfgtool) 里痞子衡在介绍使用sdphost引导启动Flashloader时使用过一个名叫ivt_flashloader.bin的image文件,其实这个image文件就是Bootable image的一种,虽然痞子衡简单分析过ivt_flashloader…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Raw NAND启动. 前面铺垫了七篇启动系列文章,终于该讲具体Boot Device了,我们知道i.MXRT支持的外部Boot Device共有6种(Serial NOR&NAND.Parallel NOR&NAND.SD/eMMC.SPI NOR/EEPROM),其中最常用的是Serial NOR&NAND,目前各大社区里讨论最火的也是Serial NOR/NAND启动,有不少大神…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Parallel NOR启动. 上一篇讲i.MXRT从Raw NAND启动的文章 从Raw NAND启动 一经放出,深入广大网友喜爱,短时间内阅读量飙升,这让痞子衡深入鼓舞,所以趁热打铁继续把从Parallel NOR启动也顺便一起讲了,为什么说是顺便呢?因为Parallel NOR与Raw NAND都是并行接口,属于同一门派,且这两种外存设备在i.MXRT内部是通过同一IP(SEMC)实现底层接口…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial EEPROM/NOR恢复启动. 在前几篇里痞子衡介绍的Boot Device都属于主动启动的Primary Boot Device(Serial NOR/NAND, Parallel NOR/NAND, SD/eMMC),试想一下如果遇到这样的情况,你选择启动的某个Primary Boot Device正常工作一段时间后某次开机突然因为某种未知原因无法启动了,此时系统无法正常工作,但如…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之软件优化. 前面痞子衡已经初步实现了Jays-PyCOM的串口功能,并且通过了最基本的测试,但目前的Jays-PyCOM相比市面上流行的串口调试工具还差得很远,有很大的优化空间.优化可以从两方面进行:一.是功能上的优化,可以添加更多实用的功能:二.是界面效果上的优化,可以增加一些界面动画效果或者重新配色美化界面.下面痞子衡从这两方面分别为Jays-PyCOM做一些简单的优化: 一.功能优化 1.…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子衡提到了OTP,部分Boot配置都存储在OTP memory里,但是对OTP的介绍仅仅浅尝辄止,没有深入,今天痞子衡就为大家再进一步介绍OTP. OTP是i.MXRTxxx里一块特殊的存储区域,用于存放全部芯片配置信息,其中有一部分配置信息和Boot相关.这块特殊存储区域并不在ARM的4G syst…