ARM学习(29)NXP 双coreMCU MCXN94学习

33 篇文章 33 订阅

笔者来介绍一下NXP 双core板子 ,新系列的mcxn94

1、MCX 新系列介绍

恩智浦 MCU 系列产品包括 Kinetis 、LPC 系列,以及 i.MX RT 系列,现在又推出新系列产品 MCX 产品,包括四个系列,目前已经发布产品的是 MCX N 系列。

  • MCX N 系列,高性能微控制器,面向边缘安全智能微控制器,主要应用在物联网以及工业应用产品。

    • 主频 150MHz 至 250MHz 512KB-2MB
    • 广泛的外设,包括神经处理单元 (NPU) 和 DSP
    • EdgeLock® 安全子系统
    • 智能外设
  • MCX A 系列,主要针对优化成本和上市时间为主要考虑因素的产品。

    • 主频 48 MHz - 180 MHz ,32KB-1MB
    • 内置定时器,引脚数低,单引脚电源
    • 适用于成本受限的应用
  • MCX W 系列,低功耗无线连接产品,支持多协议。

    • 32MHz - 96MHz
    • 多协议无线设备
    • 低功耗BLE、Thread和Zigbee射频器件,面向工业物联网与Matter应用
    • 片上集成减少了外部 BOM
  • MCX L 系列,针对超低功耗应用产品。

    • 50Mhz - 100 MHz,可选 50% 倍频
    • 极低的功耗和漏电
    • 适用于具有低功耗要求的应用
  • MCX C 系列,针对超低功耗应用产品。

    • List item 48MHz,32KB–256KB
    • 易于使用的外设
    • 面向入门级应用的高性价比的设计

笔者来看一下MCXN947的框图,如下图所示,需要的组件直接看下图

  • CPU0和CPU1 都是Cortexm33 内核,ARMv8-M架构,150MHZ,不过Core0的内核支持的外设组件更多,支持DSP、FPU、DSP、ETM和TrustZone, and coprocessor interface。
  • 2MB的内部FLash 512KB的SRAM
  • 支持系统组件、安全组件、Debug组件、通信组件、模拟组件和timers组件

在这里插入图片描述

2、MCXN94内存映射

MCXN994的内存如下图所述:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:上述空间安全和非安全的空间是重叠的。
在这里插入图片描述

  • 0x0 - 0x001FFFFF:internal Flash 地址,2MB Size,分为两个bank,可配置,每个bank 是1MB,看上图可以看到,目前每个Program Flash均是1MB,N947是2MB,N946是1MB,可以看数据手册。

  • 0x08000000 -0xFFFFFFF:FlexSPI 外设,可接Norflash,存放代码,最大128MB,与0x80000000 外设地址重叠

  • 0x10000000 - 0x 101FFFFF:internal Flash 地址,2MB Size,分为两个bank,可配置,每个bank 是1MB,与上面0x0 重叠

  • 0x13000000 - 1303FFFF: ROM Code的地址

  • 0x14000000 - 0x14017FFF:RAMX,code bus总线上面,适合放code代码

  • 0x18000000 - 0x1FFFFFFF:FlexSPI 外设,可接Norflash,存放代码,最大128MB,与0x90000000 外设地址重叠

  • 0x20000000 0x20007FFF :RAMA - RAMH地址,RAM,可以用到存放core1的代码,以及一部分当中共享空间

    • RAMA相对特殊,被分为4个bank,每个bank8K,可以在低功耗场景下作为retaintion for data,每个bank都是独立编程的电源控制 ,不支持ECC
    • 其他bank都有独立的电源开关,可以根据需要进行开关,RAMG和RAMH作为ECC数据空间

下图为 RAM空间配置ECC的设置,

  • 可以看到RAMX 和RAMB 使用RAMH进行ECC数据空间,默认这两块校验是开着的,所以RAMH无法作为数据访问
  • RAMC、D、E、F使用RAMG作为ECC数据校验
  • RAMA 没有ECC数据校验

在这里插入图片描述
在这里插入图片描述

下图分别为core0和core1的内存空间分布:
Flash:768KB的FLash
RAM0:304KB的RAM空间
RAM1:104KB的RAM空间,用来存放core1的代码
RAM3:共享空间代码
在这里插入图片描述
在这里插入图片描述

cache部分:

  • 由memory map地址上面 可以看到地址的cache 部分,Flash部分才有Cache,RAM部分均不被cache
  • 分为两种cache,一种是LPCAC,低功耗的cahce,针对所有的flash地址(包括内部flash + flex spi flash),大小为16KB,SYSCON LPCAC Control (LPCAC_CTRL) register可以配置本cache,如下图第一张图
  • 一种是CACHE64,只针对FlexSPI的地址范围,大小为16KB, CACHE64_POLSE寄存器可以配置cache属性,如下图第二种图

在这里插入图片描述
在这里插入图片描述
CPU型号对应的外设资源如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、mcxn94 启动方式

启动方式就两种:内部Flash Boot,ISP Boot。通过ISPMODE(P06) 引脚决定。

  • 从flash 启动会寻找有效Image,如果使能恢复Image Flash,会从恢复ImageFlash里面找,如果还找不到,就进入ISP 模式
  • 从ISP Boot,可以UART/IIC/SPI/USB支持下载代码
    在这里插入图片描述
    ISP 下载时,配置引脚可以决定下载方式,也可以禁止ISP模式,
    在这里插入图片描述
    在这里插入图片描述

3.1 boot device

boot device:从内部flash boot,外部Flash FlexSPI NorFlash boot(偏移是0x1000),SPI Flash Nor Recovery Boot,第二个bootloader Boot。

在这里插入图片描述
基于BOOT SRC可以决定是从内部flash还是外部Flash boot。

  • 内部flash boot
  • 外部 FlexSPI Flashboot
  • SPI 1bit Nor 恢复boot
  • 第二个bootloade rboot

3.2 Internal Flash Boot

内部flash启动时,需要关注Image header情况,NXP利用了中断向量表里面得空闲位置,然后做了一些厂商自定义得操作。

  • CM4 得中断向量表,第一个SP指针,第二个是入口函数,流程中会校验SP的合法性,比如属于RAM的地址。
  • 0x20、24、28和0x34是空闲位置,做了自定义得操作
  • 0x24 用来表示当前的Image 长度,包括签名的长度,如果Load 到RAM上面执行的化,才有长度信息
  • 0x28 ImageType,以及Image version信息
  • 0x28 签名类型,则是证书头的偏移位置,如果是CRC签名类型,则是crc校验值
  • 0x34 指明XIP类型,或者如果是load 到RAM执行,则是Image 执行地址。
    在这里插入图片描述
    在这里插入图片描述

内部Flash的boot流程如下图所示:

  • 支持双ImageBoot,根据Image Header在0x24为处理版本来决定
  • 检测Image list信息,FLASH_REMAP_SIZE指明了第二个image的size,如果size为0,则不存在多个image
  • run bootloader指明了 boot image,如果是,则进行指定的image index进行
  • 如果不是,之前是否boot 失败,如果不是,则image index为0
  • 如果是,是否之前的image index为1,如果,是,则image boot失败
  • 如果是,则image index为1,继续进行image 流程
  • 判断image 是否存在,如果不存在boot 失败,返回主boot 流程
  • 如果存在,则加载image header到ram空间,是否是安全 boot被使能,
  • 如果是,进行安全boot流程
  • 如果不是,则检查image type,如果是非XIP image,则需要copy image到目的ram地址
  • 如果是crc image,则进行crc check,check有效,且SP PC有效,则跳转到用户程序
  • 如果PC和SP无效,第二个image存在,且当前是第一个image,则设置boot失败,触发系统复位,再进行一次boot流程
  • 如果是安全boot,使用ECDSA 安全算法进行授权验证,
  • 如果image授权不成功,则判断是否有第二个image,然后进行下一次boot流程
  • 如果授权成功,进行image CMAC更新流程
  • 然后判断SP 和PC是否有效,如果有效,判断 TZM 数据是否存在,如果存在,执行TZM 数据配置
  • 如果不存在,则直接跳转app。

在这里插入图片描述
通过设置FLASH_REMAP_SIZE可以产生双Image 流程操作。

  • 如果设置FLASH_REMAP_SIZE,则0地址被映射到bank1的地址,然后boot rom 可以进行boot,
  • 通过CMPA 或者eFUSE进行设置FLASH_REMAP_SIZE
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.3 external Flash Boot

外部Flash从FlexSPi Flashboot,需要在0x400 有FCB信息,512Byte。
在这里插入图片描述
在这里插入图片描述
boot流程如下:
在这里插入图片描述

4、mcxn94 代码下载

5、参考

1、恩智浦新系列产品 MCX系列产品
2、MCXNx4xRM-MCXN947 用户参考手册

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张一西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值