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

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

大家好,我是痞子衡,是正經搞技術的痞子。今天給大家帶來的是痞子衡的開源專案 RT-UFL。 痞子衡在近兩年多的i.MXRT客戶專案支援過程中,遇到的一個相當高頻的問題就是製作i.MXRT下載演算法。我們知道i.MXRT沒有內建非易失性儲存器,一般都要外掛一塊儲存器用於載入啟動,最常用的是通過FlexSPI外設外掛序列NOR Flash,掛了NOR Flash我們既可以離線啟動,也可以線上除錯,而線上除錯就必然離不開下載演算法。 因為是外掛Flash,所以下載演算法需要根據Flash的連線以及型號而定,這就需要根據客戶板子實際情況來製作匹配的下載演算法。下載演算法對於瞭解其原理的人來說,製作一個並不難,但是對於不瞭解的人來說卻又不容易。從我們i.MXRT原廠技術支援角度,重複的工作我們又不太想一次次去做,基於此,痞子衡發起了一個開源專案,命名為 RT-UFL,就是設計一個超級下載演算法。這個專案目前還處於研發階段,如果大家有更好的建議和想法,歡迎在文章下面留言。 > 專案地址:https://github.com/JayHeng/RT-UFL ## 一、簡介 RT-UFL 是一個適用全平臺i.MXRT的通用Flash下載演算法專案,專案的最終目標是做到一個.FLM檔案適用所有的i.MXRT開發板,且不論其連線的哪款Flash型號。 RT-UFL 主要是為了解決如下七大痛點: ```text 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)決定了,不可更改。 ![](http://henjay724.com/image/cnblogs/RT-UFL_Framework.PNG) ## 二、特性 為了使 RT-UFL 成為一個超級下載演算法,它至少要包含如下八個特性: ```text 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 專案開發過程所有疑難點及其解決方法,和大家分享下載演算法設計背後的奧祕,後續文章敬請期待! ### 歡迎訂閱 文章會同時釋出到我的 [部落格園主頁](https://www.cnblogs.com/henjay724/)、[CSDN主頁](https://blog.csdn.net/henjay724)、[知乎主頁](https://www.zhihu.com/people/henjay724)、[微信公眾號](http://weixin.sogou.com/weixin?type=1&query=痞子衡嵌入式) 平臺上。 微信搜尋"__痞子衡嵌入式__"或者掃描下面二維碼,就可以在手機上第一時間看了哦。 ![](http://henjay724.com/image/github/pzhMcu_qrcode_258x2