<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      痞子衡嵌入式:超級下載算法(RT-UFL)開發(fā)筆記(1) - 執(zhí)行在不同CM內(nèi)核下


        大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是超級下載算法開發(fā)筆記(1)之執(zhí)行在不同CM內(nèi)核下。

        文接上篇 《RT-UFL - 一個適用全平臺i.MXRT的超級下載算法設(shè)計》,痞子衡開源的這個項目已經(jīng)正式啟動了。痞子衡說過會記錄 RT-UFL 項目開發(fā)過程所有疑難點及其解決方法,和大家分享下載算法設(shè)計背后的奧秘。

        本篇是開發(fā)筆記第一篇,咱們重點聊聊這個項目的立身之本,即如何做到一個.FLM(其實就是最終的可執(zhí)行機器碼)能在所有i.MXRT芯片下均能正常運行。

      一、從嵌入式程序角度看i.MXRT家族差異

        因為超級下載算法要運行于所有i.MXRT型號下,首先我們得知道i.MXRT家族一共有哪些型號、這些不同型號間差異是什么,哪些差異是影響超級下載算法的主要因素。

        下表是當前i.MXRT家族已面世的全部9款型號(注:部分型號下不止一款芯片,但僅是內(nèi)部外設(shè)數(shù)量差別):

        雖然從芯片本身角度去細看差異會比較多,但我們可以從一個嵌入式程序最根本的三大要素(指令、外設(shè)操作、鏈接空間)來逐一定向分析:

        從上表我們可以看出i.MXRT都是基于ARM Cortex-M內(nèi)核的,這其實是整個項目立項最重要的基礎(chǔ),它們的指令集一脈相承。不過雖然都是Cortex-M內(nèi)核,但是涉及到三個內(nèi)核處理器版本(M4、M7、M33),因此設(shè)計超級下載算法時第一要考慮的就是處理器版本差異。

        再從外設(shè)角度來看,超級下載算法代碼可能涉及操作芯片內(nèi)部的Clock(時鐘)、IOMUXC(引腳)、FlexSPI(Flash控制器)等外設(shè),這些外設(shè)會有差異,但并不重要,我們可以為不同i.MXRT型號引入不同代碼處理分支。

        最后從鏈接空間來看,超級下載算法是要加載到內(nèi)部RAM去執(zhí)行的,這些i.MXRT內(nèi)部RAM大小不一,并且在系統(tǒng)映射地址空間中的地址也略有不同,但也不重要,如果你看過痞子衡之前寫的文章 《串行NOR Flash下載算法(Keil MDK工具篇) 》,你應(yīng)該知道下載算法代碼都是位置無關(guān)鏈接,其加載地址可以不固定(由配套xml文件或IDE工程設(shè)置中額外指定),因此RAM的差異也不重要。

      二、解決Cortex-M處理器不同版本指令差異

        經(jīng)過上一節(jié)的分析,我們知道解決超級下載算法在i.MXRT全系列下運行最重要的問題就是處理不同Cortex-M內(nèi)核指令差異。

        在解決指令差異問題前,有一個重要問題痞子衡不得不澄清,那就是不同Cortex-M芯片其中斷向量表序列定義并不同,前16個是系統(tǒng)向量,這是由ARM規(guī)定的,但后面的中斷向量均是由廠商自定義的。不同芯片型號下,同一類型外設(shè)分配的向量號并不一定相同,因此對于一些異構(gòu)雙核下跑的嵌入式程序,需要處理中斷向量表差異。但是這對于下載算法來說,不是個問題,因為下載算法不是一般的嵌入式程序,其不含中斷向量表,這意味著下載算法中沒有使用中斷響應(yīng)函數(shù),不能開啟外設(shè)中斷(這是位置無關(guān)鏈接導(dǎo)致的)。

        好,我們現(xiàn)在來解決指令差異問題。查看ARM官方資料得知,Cortex-M家族共有10款處理器(M0、M0+、M1、M3、M23、M4、M33、M35P、M7、M55),分屬四個架構(gòu)規(guī)范(ARMv6-M、ARMv7-M、ARMv8-M、ARMv8.1-M),架構(gòu)主要和指令集息息相關(guān)。

        再來看兩張Cortex-M指令集關(guān)系圖,從圖里我們可以看出Cortex-M0/M0+/M1處理器基于ARMv6-M架構(gòu),這是一個只支持56條指令的小指令集(藍色粗框標出),所有Cortex-M處理器都支持這個56條指令的指令集。

        看到這你是不是有所領(lǐng)悟?ARM公司其實為了能讓Cortex-M用戶的軟件能重用,特地在設(shè)計Cortex-M處理器時為其賦予了處理器向下兼容、軟件二進制向上兼容特性。通俗地說就是在較低版本Cortex-M處理器上編譯出來的機器碼可以在較高版本Cortex-M處理器上直接執(zhí)行。

        因此為了實現(xiàn)超級下載算法在i.MXRT全系列上(M4、M7、M33)運行,我們只需要做一件事,那就是編譯生成算法文件的源MDK工程設(shè)置里選擇Cortex-M0處理器就行,是不是超級簡單?如果你下載了CMSIS_5包,里面的下載算法模板工程默認處理器就是ARMCM0,這并不只是個偶然!

        至此,超級下載算法開發(fā)筆記(1)之執(zhí)行在不同CM內(nèi)核下痞子衡便介紹完畢了,掌聲在哪里~~~

      歡迎訂閱

      文章會同時發(fā)布到我的 博客園主頁、CSDN主頁知乎主頁、微信公眾號 平臺上。

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

      posted @ 2020-11-12 22:09  痞子衡  閱讀(840)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 无遮高潮国产免费观看| 欧美交a欧美精品喷水| 在线一区二区中文字幕| 男人扒开添女人下部免费视频| 日韩精品自拍偷拍一区二区| 亚洲色大成网站WWW永久麻豆| 营口市| 91久久亚洲综合精品成人| 亚洲香蕉免费有线视频| 中文字幕无码不卡在线| 亚洲狠狠婷婷综合久久久| 人妻无码中文专区久久app| 性无码专区无码| 新建县| 日韩精品国内国产一区二| 日韩乱码人妻无码中文字幕视频 | 久久天天躁狠狠躁夜夜躁2012| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 欧美亚洲另类制服卡通动漫| 国产不卡一区二区精品| 亚洲精品国产av成拍色拍个| 国产一级三级三级在线视| 亚洲免费成人av一区| 国产精品高清国产三级囯产AV| 久久这里精品国产99丫E6| 国产午夜精品理论大片| 激情的视频一区二区三区| 中文字幕亚洲精品人妻| 定结县| 国产做a爱片久久毛片a片| 成人网站免费观看永久视频下载| 襄樊市| 婷婷99视频精品全部在线观看| 放荡的少妇2欧美版| 99久久亚洲综合精品成人网| 国产一区二区视频在线看| 人人妻人人玩人人澡人人爽| 日韩有码精品中文字幕| 国产福利视频区一区二区| 色8久久人人97超碰香蕉987| 亚洲一区二区三区丝袜|