大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT600中的Debug Mailbox实现对JLink调试的影响. 事情缘起痞子衡的同事 - 喜欢打破砂锅问到底的Kerry小姐姐,她最近在研究i.MXRT600这款芯片,她发现在芯片ROM串行下载(ISP)模式下,连上芯片USB端口可以在设备管理器中正常看到枚举的HID设备(0x1fc9,0x0020),这个HID设备可配合上位机工具blhost.exe进行应用程序下载.但是当使用JLink正常连上芯片(选择的是MIMX…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是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 调试似乎存在…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT上使用16MB以上NOR Flash软复位无法正常启动问题的分析解决经验. 痞子衡这几天在支持一个i.MXRT1050客户项目,客户遇到了软复位无法从32MB NOR Flash重新启动的问题.这个客户是做医疗设备的,已经基于i.MXRT做出一款成功的产品了,所以客户其实有丰富的i.MXRT使用经验.目前调试的项目是客户的第二款产品,这个软复位无法启动问题已经困扰他们很久,但问题毕竟不是特别紧急,不影响他们开发进度,所以…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是一个奇怪的Keil MDK下变量链接强制对齐报错问题. 痞子衡最近一直在参与恩智浦SBL项目(就是一个适用LPC和i.MXRT的完整OTA方案),这个项目近期会和大家见面,项目需要同时支持GCC, IAR, MDK三大开发环境,项目所属i.MXRT1170工程在GCC和IAR下编译链接一切正常,但是在MDK下出现了链接对齐报错问题,痞子衡花时间研究解决了这个问题,这个问题算是和MDK工具本身紧紧相关,痞子衡觉得挺有意思(其实主要是想…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是一种快速定位i.MXRT600板级设计ISP[2-0]启动模式引脚上电时序问题的方法. 我们知道恩智浦i.MXRT600是主打音频市场的MCU产品,其也是i.MXRT三位数平台的第一款型号.这颗MCU已被众多知名国际大厂客户选用,在项目中作为协处理器负责音频相关子功能.不少客户都已经到了量产阶段,最近痞子衡在支持其中一个量产客户,客户遇到了同一批次某几个板卡无法正常启动的问题.痞子衡和同事一起排查,最终发现是ISP[2:0]启动引脚…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的Serial ISP模式. 在上一篇文章 Boot配置(ISP Pin, OTP) 里痞子衡为大家介绍了i.MXRTxxx Boot的行为配置,其中第1.2节里讲了Boot有三类行为模式:Serial ISP.Serial Boot.Device Boot,后两种都是跟App启动执行相关的行为模式,而Serial ISP模式则是相对独立的Flash下载功能,有了Serial ISP,便可省去专用…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1170的eFuse空间访问可靠性保护策略. 关于i.MXRT系列的eFuse/OTP,痞子衡之前在介绍Boot时写过两篇,分别是针对RT1050的<eFuse及其烧写方法> 和针对RT600的<OTP及其烧写方法>,今天要介绍的i.MXRT1170 eFuse其实是这两者的融合,在空间组织上(尤其是Shadow Register)更像RT1050,但是在访问可靠性保护策略上又接近RT600.关于访问…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业环境里要求设备能够持续稳定运行,不能轻易宕机,但现实环境中常常有各种意外发生,其中一个常见的意外就是设备主控 MCU 程序被破坏.为了降低程序损坏这种意外带来的影响,一个很典型的做法就是增加 MCU 程序的份数,第一份被破坏,就启动第二份...,用程序数量的增加来降低启动失败率,这属于概率学手段范畴…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是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 RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子衡提到了OTP,部分Boot配置都存储在OTP memory里,但是对OTP的介绍仅仅浅尝辄止,没有深入,今天痞子衡就为大家再进一步介绍OTP. OTP是i.MXRTxxx里一块特殊的存储区域,用于存放全部芯片配置信息,其中有一部分配置信息和Boot相关.这块特殊存储区域并不在ARM的4G syst…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件. 想要在Flash中调试,基本是离不开Flash下载算法的,毕竟要先将代码烧写进Flash,然后才能调试.主流MCU开发环境(MCUX / IAR / Keil)以及调试工具(J-Link)的Flash下载算法设计思路基本都差不多,简单的说,就是把Flash擦写操作的底层驱动代码可执行文件通过JTAG/SWD预先加载到MCU内部RAM里,然后继续从JTAG/S…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下在App中利用ROM API进ISP/SDP模式的方法. 我们知道i.MXRT系列分为两大阵营:CM33内核的i.MXRTxxx系列和CM7内核的i.MXRT1xxx系列,但是这两个阵营都有一个共性,那就是都没有内部非易失性存储器(NVM)并且BootROM里都集成了串行下载功能. 串行下载功能即BootROM中实现了通过串行接口(UART/USB...)与上位机通讯,将客户App数据烧录进外部启动设备中,这个功能主要…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRTxxx系列MCU的SD/eMMC卡启动. 关于 i.MXRT 启动设备,痞子衡之前写过很多篇文章,都是关于串并行 NOR/NAND Flash.相信对于 Flash 的原理和读写擦访问,玩 MCU 的朋友一定不会陌生,但是说到让 MCU 从 SD/eMMC 卡启动,估计很多人都是一脸懵,这个在 MCU 世界里没怎么见过啊. 从 SD/eMMC 启动其实在 MPU(应用处理器) 世界里非常常见,因为其更换应用程序的便…
NXP MCU Boot Utility English | 中文 1 软件概览 1.1 介绍 NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP MCU里BootROM功能相对应,目前主要支持i.MXRT系列MCU芯片,与NXP官方的标准安全加密配套工具集(OpenSSL, CST, sdphost, blhost, elftosb, BD, MfgTool2)相比,NXP-MCUBootUtility是一个真正的一站式工具,一个工具包含NXP…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的project文件. 前面两节课里,痞子衡分别给大家介绍了嵌入式开发中的两种典型input文件:源文件(.c/.h/.s).链接文件(.icf).痞子衡要再次提问了,还有没有input文件呢?答案确实是有,但这次真的是有且仅有了,本文要介绍的主角project文件也属于半个input文件.为什么说是半个?因为project文件不仅包含开发者指定的input信息,还包含很多其他辅助调试的input/output信息,算是嵌…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的性能. 在前面的文章 i.MXRTxxx微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2018年推出的全新跨界微控制器i.MX RTxxx系列,该系列第一款芯片i.MXRT600搭载一颗Cortex-M33控制内核和一颗Tensilica HiFi4 DSP处理内核,该芯片可在超低功耗边缘处理应用中实现高效本地音频预处理.沉浸式3D音频播放和支持语音的体验.今天痞子衡先为大家实测一下其Cor…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的1-bit SPI NOR恢复启动. 在前几篇里痞子衡介绍的Boot Device都属于主动启动的Master Boot Device(Serial(Multi-IO) NOR, SD/eMMC),试想一下如果遇到这样的情况,你选择启动的某个Master Boot Device正常工作一段时间后某次开机突然因为某种未知原因无法启动了,此时系统无法正常工作,但如果你希望系统能够有一定的容错/鲁棒能…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT600的FlexSPI NOR启动的连接方式. 痞子衡前段时间一鼓作气写完了三篇关于i.MXRT1xxx系列FlexSPI NOR启动连接的文章,算是把目前已供货的i.MXRT1xxx型号全部都聊了一遍,但是恩智浦近期刚宣布i.MXRT600正式供货了,得了,活又来了,继续写吧. <FlexSPI NOR启动连接方式(RT1015/1020/1050)> <FlexSPI NOR启动连接方式(RT1060…
-- 痞子衡的 NXP-MCUBootUtility 开源项目自2018年8月27日第一笔提交至今已有21个月,目前累计代码已近50000行.相信这个工具为大家开发 i.MXRT 项目提供了一些便利,听闻也有不少客户用这个工具做量产,这是痞子衡坚持维护这个项目的最大意义所在. 时光飞逝,距离上一个版本(v2.2)发布已有半年了,这一次痞子衡为大家带来了全新版本v2.3,新版本除了一些常规新i.MXRT型号支持以及bugfix之外,痞子衡特别花了大功夫彻底解决了NOR Flash支持问题,以后不管…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项. 痞子衡前段时间写过一篇小文<为i.MXRT设计更新Segger J-Link Flash下载算法文件>,介绍了痞子衡在github上的开源i.MXRT下载算法项目,这个项目收集了几乎所有i.MXRT型号的J-Link flash下载算法源工程,基于这个源工程可以很轻松修改生成不同flash的算法文件用于各大IDE以及J-Flash.今天痞子衡就来介绍…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT500. 自2018年i.MXRTxxx系列首款芯片i.MXRT600(主打智能语音市场)问世以来,近两年时间这个系列一直没有再出新品,这其实是可以理解的,毕竟i.MXRTxxx系列走的不是通用市场路线,无法按照通用MCU产品那样以每年推2-3款型号的固定节奏来立项.不过就在上个周末,NXP悄悄上线了新一款型号i.MXRT500,这是个主打智能可穿戴市场的MCU.今天痞子衡就和大…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT三位数系列隐藏的FlexSPI Remap功能. 前段时间痞子衡写了一篇文章 <利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA>,介绍了Remap功能在OTA设计中的重要性.如果你对比过i.MXRT三位数(RT500/600)和四位数(RT1xxx)的FlexSPI模块,你会发现它们是一样的,寄存器定义几乎完全一致.但是我们知道这两个系列又分别是来自不同平台(LPC/i…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash XIP调试原理>一文中,痞子衡简单提了一下串行NOR Flash下载算法的概念,并没有介绍具体设计细节,关于NOR Flash下载算法每个IDE/工具都有自己的一套设计,虽然基本设计理念是一样的,但是细节方面还是有区别,今天痞子衡就来细聊J-Link下的NOR Flash下载算法: 一.J-Link各版本…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM内核下>,我们已经解决了超级下载算法能够在i.MXRT全系列下执行的问题,现在我们往前继续推进项目.因为这个超级下载算法将来要跑在很多个芯片型号上,有时候因为型号间差异,我们不得不针对性地弄出不同代码处理分支,而这一切的前提是我们能动态地获取当前芯片型号. 本篇是开发笔记第二篇,咱们就重点聊聊如何让超级…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是IAR开发环境下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash XIP调试原理>一文中,痞子衡简单提了一下串行NOR Flash下载算法的概念,并没有介绍具体设计细节,关于NOR Flash下载算法每个IDE都有自己的一套设计,虽然基本设计理念是一样的,但是细节方面还是有区别.在前面的文章里,痞子衡分别介绍过<J-Link下算法设计>.<Keil MD…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE开发环境下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash XIP调试原理>一文中,痞子衡简单提了一下串行NOR Flash下载算法的概念,并没有介绍具体设计细节,关于NOR Flash下载算法每个IDE都有自己的一套设计,虽然基本设计理念是一样的,但是细节方面还是有区别.在前面的文章里,痞子衡分别介绍过<J-Link下算法设计>.…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败问题. 本篇是<系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败> 的后续篇,我们为i.MXRT1010解决了OTFAD时钟配置限制问题后,加密的App就一定能正常跑了吗?其实并不一定,如果你的App跟IAP有关(即会调用FlexSPI驱动去擦写Flash),免不了会在FlexSPI驱动里操作FlexSPI外设寄存器的软复位位,软复位操作…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT500的FlexSPI NOR启动的连接方式. 这个i.MXRT FlexSPI NOR启动连接方式系列文章,痞子衡在一年前写过四篇,把当时已面世的所有i.MXRT型号(RT600/1010/1015/1020/1050/1060/1064)都囊括了.最近这一年里,i.MXRT系列又新增了两个型号,分别是属于i.MXRTxxx阵营的二号选手i.MXRT500.属于i.MXRT1xxx阵营的第一代战神i.MXRT1…
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v3.0.0)发布过去4个多月了,期间痞子衡其实断断续续做个几个小版本更新,这一次痞子衡为大家带来了稳定版本v3.3.0,顺便将之前的所有新增功能改动一并介绍.其实这次更新主要是跟恩智浦SE团队近期主推的一个神秘大项目SBL有关. 一.v3.1 - v3.3更新记录 -- v3.3.0 Features: 1. 支持对源image文件进行部分签名 2. 支持SBL设备的ISP下载 3. 通用编程器模式下增加支持带格式源i…