大数跨境
0
0

Infineon技术洞察丨浅谈PSOC 6 SMIF的使用——在线烧录片外Flash

Infineon技术洞察丨浅谈PSOC 6 SMIF的使用——在线烧录片外Flash 增你强
2025-04-17
2
导读:本篇主要简述了烧录器(Programmer)通过PSOC 6 SMIF接口对片外SPI Flash进行直接烧录的基本原理和实现方式,以及需要考虑的注意事项。


1

基本原理与机制


PSOC 6 SMIF访问片外Flash的操作模式,如《浅谈PSOC 6 SMIF的使用(一)——基本功能》一文中介绍,主要是MMIO模式和XIP模式。但考虑通过PSoC6 SWD的方式来在线烧录连接在SMIF上的片外flash的内容,意味着对于PSOC 6来说片外Flash是可以寻址的,所以这里需要配合XIP模式,把片外的flash空间映射到PSOC 6能访问的地址段,如之前提到的0x1800 0000开始的地址区域。


要完成整个烧录的工作,需要从片外flash的配置(参考文中QSPI Configurator的介绍)、片内工程保存QSPI Data Structure、工程的linker script、烧录工具配合来完成。参考以下完整的Ecosystem Tool设计



接下来会自上而下的介绍这里的基本原理和操作:


(1)首先,针对不同的memory产品,可以通过QSPI Configurator配置或者自定义对应的读写命令组合,生成对应的命令集合的结构体参数:



自动生成的源码文件:

cycfg_qspi_memslot.c, cycfg_qspi_memslot.h


源码中有对应的结构体映射了实际执行的命令配置的集合,如以下例子中deviceCfg_S25FL512S_SlaveSlot_0就包含了读写对应QSPI Data Structure。



>>>详细说明可点击此处,参考外设驱动库里的对应源码。



(2)有了生成的memslot信息后,就要绑定PSOC 6系统的读写接口到对应的QSPI flash的配置结构体,让flash loader知道如果要读写某个地址片段的信息时,使用哪个访问外部命令来进行操作。这一部分需要由一个保存在SFlash (0x1600 0000) 区域里进行声明,这部分片区在PSoC6里定义为Table of Contents part 2 (TOC2)。


例子如下,声明由QSPI Configurator配置工具自动生成的memslot源码中的smifBlockConfig的结构体地址指针到指定的区间。



然后在TOC2 固定区域里(offset = 0x000C)把对应的指针保存进去。编译后生成的代码就会自动生成新的TOC2的固定配置,在烧录片内flash区域后,System Call就获取了当前的配置结构体的指针索引。



经过以上配置后,就可以实现通过烧录接口访问片外的结构体。但这部分目前英飞凌已经提供了现成的中间件serial-flash,用户只要引用中间件,就可以直接使用上面的配置,无需额外的重写以上存储结构体。


>>>点击此处,查看详细参考。



实现了XIP区域编译和烧录的例程,推荐参考CY8CPROTO-062S3-4343W这个BSP上使用WiFi的例程。上面使用了CY8C6245LQI-S3D72, 具有512KB Flash和256KB SRAM。在需要驱动WIFI模块时,由于WIFI模块的固件由400KB左右的区间,所以需要保存在片外NorFlash上。


>>>点击此处,查看详细参考



main.c :



bsp.mk里也需要对应声明



这样wifi的固件就会编译时指定到xip的地址段。



在bsp文件夹中提供的PSoC 6的默认link script (e.g. GCC的.ld文件) 已经包含了对.cy_xip段的定义描述:



2

烧录片外flash的注意事项:


根据上述章节的描述,我们可以理解以下的读写的流程:


  1. 片外SPI Flash的配置结构体保存到片内flash,并产生了确定的&smifBlockConfig指针。


  2. SFlash 相关区域(TOC2)存储了能索引配置结构体信息的指针地址(e.g. &smifIpBlocksArr).


  3. 这个索引信息已经生效。


  4. 需要烧录到片外flash的内容编译后能落在0x18000000开始的 xip 的地址段(Link Script 已经默认做了相关定义)


  5. 烧录器根据需要烧录的Hex File,当需要烧录0x18000000 ~ 0x1FFFFFFF这些地址段的区域时,通过DAP接口索引到对应片外flash的读,写,擦除等命令,对片外flash进行访问和控制。


所以,针对这个流程,当想要通过PSoC6烧录口对片外flash进行直接烧录的话,需要确定以下问题(Trouble Shooting):


1. 对应的片外flash的配置结构体的参数是否正确:


  • 命令是否匹配正确的IO数,SPI/Dual-SPI/Quad-SPI 对应的读写命令一般时不一致的。需要确认当前配置的IO数与命令一致。


  • Memory擦除的命令是否匹配,如4KB sector擦除,还是64KB sector擦除,对应的命令和效果会影响烧录的结果。


  • Write Enable的寄存器位是否正确,Qaud Mode的使能位或者命令是否匹配。


  • 擦除,Program等时间参数是否一致,这里建议使用对应memory datasheet的最大时间来保证擦和写的可靠性。


2. 置结构体已经烧录到片内,TOC2的结构体有正确的索引指针。基于烧录的原理,TOC2里必须包含能索引到命令集合,并且已经生效,否则系统无法确定片外flash的映射地址的操作方式。


3.片外flash的接口状况,有一些用户设计会考虑给片外flash做供电管理控制,比如用MCU的IO口控制flash的供电,以节省功耗。这时,如果需要考虑片外flash的在线烧录,需要明确在烧录进行时片外flash的供电情况时明确上电的。由于这时候MCU并没有进入正常的工作逻辑,所以管理片外flash的IO不一定处在给flash打开电源开关的状体,这时候需要考虑额外的设计来保证片外flash的供电,比如:


  • 定制烧录制具可以烧录时明确给片外flash供电。


  • 设计默认上电,控制IO时可以关闭电源的电路。


  • 如果外部电路无法使用默认上电,可以考虑定制flash loader来增加IO管理的功能给片外flash先上电。


3

总结


本篇主要简述了烧录器(Programmer)通过PSOC 6 SMIF接口对片外SPI Flash进行直接烧录的基本原理和实现方式,以及需要考虑的注意事项。



👇🏻扫码进入英飞凌开发者社区👇🏻



>>>点击此处,获取英飞凌开发者论坛使用指南



扫描二维码关注英飞凌官微

寻找更多应用或产品信息



关于增你强

增你强是大中华区领先业界的半导体零组件通路商,我们的使命是成为「技术领先的加值通路商」,持续不断地专注于“以客为尊”的服务理念,用最短的时间协助客户将新产品上市,并提供技术加值服务的整体解决方案。 

【声明】内容源于网络
0
0
增你强
增你强股份有限公司为台湾半导体零组件通路商的早期先驱之一,营运据点以大中华地区为主。 代理销售产品与服务产业横跨电源供应、网络通讯、消费性电子、工业电子、 汽车电子、AIoT智能物联网、手持装置、信息科技、零售通路等多元领域。
内容 484
粉丝 0
增你强 增你强股份有限公司为台湾半导体零组件通路商的早期先驱之一,营运据点以大中华地区为主。 代理销售产品与服务产业横跨电源供应、网络通讯、消费性电子、工业电子、 汽车电子、AIoT智能物联网、手持装置、信息科技、零售通路等多元领域。
总阅读377
粉丝0
内容484