当前位置: 首页 > news >正文

ARM学习(29)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择

ARM学习(28)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择

1、多种启动方式介绍

IMX1166 支持多组flexSPI 引脚启动,FlexSPI1以及FlexSPI2,通过boot cfg可以切换FlexSPI得实例。
在这里插入图片描述
每个实例又支持多组引脚,总共又两个组别,每个组别又有两组引脚,分别为PortA+PortB,ROM Code默认是通过黑体引脚去加载Code得。
在这里插入图片描述
实例1得第二组得PORTA+PORTB。
在这里插入图片描述
在这里插入图片描述

通过eUFSE信息可以去配置选择是第几组,且是哪个PORTA或者哪个PORTB。
在这里插入图片描述
eFUSE配置是通过NXP-MCUBootUtility-3.4.0工具来进行操作得。
下载地址:git@github.com:JayHeng/NXP-MCUBootUtility.git

  1. 点击左下角connect,连接成功之后,会变成蓝色,按钮会变成reset device,同时就会连接成功,左下角有日志,显示Flash得相关size信息
  2. 界面中间有eFUSE Operation Utility,可以操作eFUSE信息,eFUSE只可写一次,之后就无法操作,如下图二,可以县级scan,可以读出所有得eFUSE数据,点击Burn,就可以写eFUSE信息
  3. 界面中间得Boot Device Memory,可以对Flash进行读写擦,可以烧录bin或者hex文件下去。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2、IDE 下载以及Jflash下载代码

两者均是下载程序到Flash中。

2.1 IDE 下载代码(CMSIS DAP)

IDE采用CMSIS DAP下载代码到Flash中,也可以采用JIink方式,但是开发板上面自带得烧录器,可以直接烧录和串口显示。
在这里插入图片描述
在这里插入图片描述
其烧录得Flash Driver是MIMXRT1160_SFDP_QSPI.cfx,默认是实例1得第一组得PortA,如果换乘其他引脚无法烧录,当然其还支持MIMXRT1160_FlexSPI2_A_SFDP_QSPI.cfx,实例2得第一组得PORTA。下载算法跟Flash得位置息息相关,如果Flash得引脚更换,会导致程序无法下载。
在这里插入图片描述
注意:程序如果更新到RAM,可以直接通过下载器 走JTAG协议下进去,但是Flash不行,Flash需要有单独得接口进行操作,比如读写擦,所有下载到FLash得代码,首先需要下载到RAM中一个Flash驱动程序,然后与Flash驱动程序进行通信,然后再把代码下载到Flash中。

IDE得下载算法如这篇文章所示:RT1170 flexSPI1 secondary QSPI flash debug flashdriver。

2.2 JLink下载代码

同样JLink下载到Flash里面得程序,同样需要JLink得Flash驱动程序,不过Jlink得Flash驱动程序和IDE得不一样。
如果要通过JINK下载Flash,支持得引脚也有限,如下图所示,如果引脚不一样,则无法通过jlink下载程序。
在这里插入图片描述
JLink认为他们得下载程序更快,相对传统得FLM Flash驱动程序,就是CMSIS loader开源得Flash下载驱动。具体相关得Flash下载驱动算法,下一章节详细介绍ARM学习(30)JFlash下载Flash程序的理解。
在这里插入图片描述

3、下载到RAM运行

下载最简单的hello wrold程序到RAM中,下图为链接脚本,代码放到SRAM_DTC_cm7位置。
在这里插入图片描述
在这里插入图片描述
现象:一直打印数据。
在这里插入图片描述
操作:trace32直接加载对应的axf文件,就可以直接烧录到RAM上面运行。

SYStem.Down
IF SYStem.Mode()<5
(SYStem.CPU IMXRT1166-CM7SYStem.up)
Data.LOAD.Elf "~~~~/evkmimxrt1160_hello_world_cm7.axf"  

在这里插入图片描述
Trace32窗口再新增一个core,然后点击开始,就可以新建一个窗口,可以追踪另外一个cortexm4的行为。
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • gin源码分析
  • fortran简单排序算法,对一维、二维矩阵进行正序或倒序排序
  • 【深度学习】PyTorch深度学习笔记02-线性模型
  • 百度安全大模型智能体实践入选信通院“安全守卫者计划”优秀案例
  • 专业条码二维码扫描设备和手机二维码扫描软件的区别?
  • 【Java--数据结构】栈:不仅仅是数据存储,它是编程的艺术
  • Docker 容器出现 IP 冲突
  • 深度加速器 为游戏而生
  • 【ARM】CCI缓存一致性整理
  • [论文笔记]RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL
  • 【LeetCode】2187. 完成旅途的最少时间
  • 基于Python/MATLAB长时间序列遥感数据处理及在全球变化、植被物候提取、植被变绿与生态系统固碳分析、生物量估算与趋势分析应用
  • Three.js相机简明教程
  • 期货量化交易客户端开源教学第三节——键盘通信协议
  • CSS相对定位和绝对定位的区别
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • C++11: atomic 头文件
  • co.js - 让异步代码同步化
  • Django 博客开发教程 16 - 统计文章阅读量
  • Hibernate【inverse和cascade属性】知识要点
  • js面向对象
  • js正则,这点儿就够用了
  • Object.assign方法不能实现深复制
  • redis学习笔记(三):列表、集合、有序集合
  • Spark学习笔记之相关记录
  • Spring核心 Bean的高级装配
  • SQLServer之创建数据库快照
  • Vue官网教程学习过程中值得记录的一些事情
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 每天一个设计模式之命令模式
  • 那些年我们用过的显示性能指标
  • 如何设计一个微型分布式架构?
  • 限制Java线程池运行线程以及等待线程数量的策略
  • PostgreSQL之连接数修改
  • ​zookeeper集群配置与启动
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • $(function(){})与(function($){....})(jQuery)的区别
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (3)选择元素——(17)练习(Exercises)
  • (4)logging(日志模块)
  • (6)添加vue-cookie
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (论文阅读30/100)Convolutional Pose Machines
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net6 webapi log4net完整配置使用流程
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • /boot 内存空间不够