痞子衡嵌入式:RT-UFL - 一個適用全平臺i.MXRT的超級下載算法設計

你們好,我是痞子衡,是正經搞技術的痞子。今天給你們帶來的是痞子衡的開源項目 RT-UFL。git

痞子衡在近兩年多的i.MXRT客戶項目支持過程當中,遇到的一個至關高頻的問題就是製做i.MXRT下載算法。咱們知道i.MXRT沒有內置非易失性存儲器,通常都要外掛一塊存儲器用於加載啓動,最經常使用的是經過FlexSPI外設外掛串行NOR Flash,掛了NOR Flash咱們既能夠離線啓動,也能夠在線調試,而在線調試就必然離不開下載算法。github

由於是外掛Flash,因此下載算法須要根據Flash的鏈接以及型號而定,這就須要根據客戶板子實際狀況來製做匹配的下載算法。下載算法對於瞭解其原理的人來講,製做一個並不難,可是對於不瞭解的人來講卻又不容易。從咱們i.MXRT原廠技術支持角度,重複的工做咱們又不太想一次次去作,基於此,痞子衡發起了一個開源項目,命名爲 RT-UFL,就是設計一個超級下載算法。這個項目目前還處於研發階段,若是你們有更好的建議和想法,歡迎在文章下面留言。算法

項目地址:https://github.com/JayHeng/RT-UFL微信

1、簡介

RT-UFL 是一個適用全平臺i.MXRT的通用Flash下載算法項目,項目的最終目標是作到一個.FLM文件適用全部的i.MXRT開發板,且不論其鏈接的哪款Flash型號。.net

RT-UFL 主要是爲了解決以下七大痛點:設計

1. 每個i.MXRT型號都須要一個單獨的下載算法文件.
2. 同一個i.MXRT型號搭配不一樣屬性的Flash也須要不一樣的算法文件.
3. 同一個i.MXRT型號搭配相同特性的Flash但Flash出廠設置不一樣(有無SFDP、QE默認狀態燈)也須要不一樣的算法文件.
4. Flash鏈接到i.MXRT不一樣的FlexSPI引腳上也可能須要不一樣的算法文件.
5. 若是下載算法公共設計部分有不可忽視的缺陷,須要總體更新所有i.MXRT型號對應的下載算法.
6. 對於下載算法的發佈,沒有一個統一的版本管理.
7. 在量產過程當中,若是更換了Flash型號,則須要對應更換算法文件,對於工廠流程來講有點麻煩.

RT-UFL 從設計上分爲三層:調試

  • 最底層是Driver層:即Low-level驅動,對於i.MXRT來講,就是FlexSPI模塊的驅動。
  • 中間是Adapter層:這一層是最核心的,它實現了全i.MXRT平臺、全Flash型號的自適應支持。
  • 最頂層是API層:這屬於下載算法模板,其實由集成開發環境(Keil、JLink)決定了,不可更改。

2、特性

爲了使 RT-UFL 成爲一個超級下載算法,它至少要包含以下八個特性:code

1. 能夠跑在全部i.MXRT型號下.
2. 能夠支持能用做i.MXRT可啓動設備的全部類型Flash.
3. 能夠擦寫連在i.MXRT可啓動FleXSPI引腳上的Flash.
4. 能夠自動識別鏈接的Flash類型(QuadSPI, Octal-SPI, Hyperbus).
5. 能夠自動檢測Flash中有無SFDP及其版本.
6. 能夠支持不含SFDP表的Flash.
7. 能夠自動識別Flash的默認QE狀態並開啓QE.
8. 能夠輸出一些有效的Flash信息以便後續啓動.

痞子衡會記錄 RT-UFL 項目開發過程全部疑難點及其解決方法,和你們分享下載算法設計背後的奧祕,後續文章敬請期待!blog

歡迎訂閱

文章會同時發佈到個人 博客園主頁CSDN主頁知乎主頁微信公衆號 平臺上。開發

微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就能夠在手機上第一時間看了哦。

相關文章
相關標籤/搜索