21

Mar . 2025

技術洞察 | 淺談PSOC 6 SMIF的使用-線上燒錄片外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進行直接燒錄的基本原理與實現方式,以及需要考慮的注意事項。


如果對PSOC 6 SMIF燒錄片外flash的方式有疑問,歡迎在評論區留言交流。



文章來源:英飛凌官微

半導體元件詢問單
Inquiry Form
如您對本公司產品有任何的問題(產品報價、技術諮詢、產品文件、樣品索取、合作代理…等),都可以透過諮詢表單跟我們聯絡,我們將有專人回覆。
隱私權暨個人資料保護聲明

STEP

01
!

有標示 欄位為必填,請確實填寫謝謝。

諮詢需求
市場應用

↑若無法選擇適當的產業類別,請直接在此欄輸入您的所屬產業

↑請直接在此欄輸入您的所屬市場應用

諮詢商品

↑若無法搜尋到您要諮詢的品牌,請直接在此欄輸入品牌名稱

↑若無法搜尋到您要諮詢的料號,請直接在此欄輸入料號

備註內容

下一步,聯繫資料填寫

STEP

02
!

有標示 欄位為必填,請確實填寫謝謝。

公司名稱
所屬部門
聯絡人
職稱
聯絡電話
電子信箱
聯絡地址
交貨地址
是否為貿易商
驗證碼
訂閱電子報
Subscribe to Newsletter
!

有標示 * 欄位為必填,請確實填寫謝謝。

公司名稱
所屬部門
姓名
職稱
聯絡電話
選擇電子報語系
電子信箱
驗證碼