痞子衡嵌入式:RT-UFL - 一個(gè)適用全平臺(tái)i.MXRT的超級(jí)下載算法設(shè)計(jì)
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天給大家?guī)淼氖瞧ψ雍獾拈_源項(xiàng)目 RT-UFL。
痞子衡在近兩年多的i.MXRT客戶項(xiàng)目支持過程中,遇到的一個(gè)相當(dāng)高頻的問題就是制作i.MXRT下載算法。我們知道i.MXRT沒有內(nèi)置非易失性存儲(chǔ)器,一般都要外掛一塊存儲(chǔ)器用于加載啟動(dòng),最常用的是通過FlexSPI外設(shè)外掛串行NOR Flash,掛了NOR Flash我們既可以離線啟動(dòng),也可以在線調(diào)試,而在線調(diào)試就必然離不開下載算法。
因?yàn)槭峭鈷霧lash,所以下載算法需要根據(jù)Flash的連接以及型號(hào)而定,這就需要根據(jù)客戶板子實(shí)際情況來制作匹配的下載算法。下載算法對(duì)于了解其原理的人來說,制作一個(gè)并不難,但是對(duì)于不了解的人來說卻又不容易。從我們i.MXRT原廠技術(shù)支持角度,重復(fù)的工作我們又不太想一次次去做,基于此,痞子衡發(fā)起了一個(gè)開源項(xiàng)目,命名為 RT-UFL,就是設(shè)計(jì)一個(gè)超級(jí)下載算法。這個(gè)項(xiàng)目目前還處于研發(fā)階段,如果大家有更好的建議和想法,歡迎在文章下面留言。
項(xiàng)目地址:https://github.com/JayHeng/RT-UFL
一、簡介
RT-UFL 是一個(gè)適用全平臺(tái) i.MXRT 的通用 Flash 下載算法項(xiàng)目,項(xiàng)目的最終目標(biāo)是做到一個(gè) .FLM 文件適用所有的i.MXRT開發(fā)板,且不論其連接的哪款 Flash 型號(hào)。
RT-UFL 主要是為了解決如下七大痛點(diǎn):
1. 每一個(gè)i.MXRT型號(hào)都需要一個(gè)單獨(dú)的下載算法文件.
2. 同一個(gè)i.MXRT型號(hào)搭配不同屬性的Flash也需要不同的算法文件.
3. 同一個(gè)i.MXRT型號(hào)搭配相同特性的Flash但Flash出廠設(shè)置不同(有無SFDP、QE默認(rèn)狀態(tài)位)也需要不同的算法文件.
4. Flash連接到i.MXRT不同的FlexSPI引腳上也可能需要不同的算法文件.
5. 如果下載算法公共設(shè)計(jì)部分有不可忽視的缺陷,需要整體更新全部i.MXRT型號(hào)對(duì)應(yīng)的下載算法.
6. 對(duì)于下載算法的發(fā)布,沒有一個(gè)統(tǒng)一的版本管理.
7. 在量產(chǎn)過程中,如果更換了Flash型號(hào),則需要對(duì)應(yīng)更換算法文件,對(duì)于工廠流程來說有點(diǎn)麻煩.
RT-UFL 從設(shè)計(jì)上分為三層:
- 最底層是Driver層:即Low-level驅(qū)動(dòng),對(duì)于i.MXRT來說,就是FlexSPI模塊的驅(qū)動(dòng)。
- 中間是Adapter層:這一層是最核心的,它實(shí)現(xiàn)了全i.MXRT平臺(tái)、全Flash型號(hào)的自適應(yīng)支持。
- 最頂層是API層:這屬于下載算法模板,其實(shí)由集成開發(fā)環(huán)境(Keil、JLink)決定了,不可更改。
二、特性
為了使 RT-UFL 成為一個(gè)超級(jí)下載算法,它至少要包含如下八個(gè)特性:
1. 可以跑在所有i.MXRT型號(hào)下.
2. 可以支持能用作i.MXRT可啟動(dòng)設(shè)備的所有類型Flash.
3. 可以擦寫連在i.MXRT可啟動(dòng)FleXSPI引腳上的Flash.
4. 可以自動(dòng)識(shí)別連接的Flash類型(QuadSPI, Octal-SPI, Hyperbus).
5. 可以自動(dòng)檢測Flash中有無SFDP及其版本.
6. 可以支持不含SFDP表的Flash.
7. 可以自動(dòng)識(shí)別Flash的默認(rèn)QE狀態(tài)并開啟QE.
8. 可以輸出一些有效的Flash信息以便后續(xù)啟動(dòng).
最后歡迎關(guān)注痞子衡個(gè)人微信公眾號(hào)【痞子衡嵌入式】,一個(gè)專注嵌入式技術(shù)的公眾號(hào),跟著痞子衡一起玩轉(zhuǎn)嵌入式。
衡杰(痞子衡),目前就職于恩智浦(NXP)半導(dǎo)體MCU系統(tǒng)應(yīng)用部門,擔(dān)任高級(jí)嵌入式系統(tǒng)應(yīng)用工程師。
專欄內(nèi)所有文章的轉(zhuǎn)載請(qǐng)注明出處:http://www.rzrgm.cn/henjay724/
與痞子衡進(jìn)一步交流或咨詢業(yè)務(wù)合作請(qǐng)發(fā)郵件至 hengjie1989@foxmail.com
可以關(guān)注痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項(xiàng)目。
關(guān)于專欄文章有任何疑問請(qǐng)直接在博客下面留言,痞子衡會(huì)及時(shí)回復(fù)免費(fèi)(劃重點(diǎn))答疑。
痞子衡郵箱已被私信擠爆,技術(shù)問題不推薦私信,堅(jiān)持私信請(qǐng)先掃碼付款(5元起步)再發(fā)。
浙公網(wǎng)安備 33010602011771號(hào)