亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于分散加載技術(shù)的單片機增量升級程序設(shè)計

        2022-05-11 08:34:38陳文斌黃明鑫劉根利
        無線互聯(lián)科技 2022年3期
        關(guān)鍵詞:程序工程

        陳文斌,黃明鑫,劉根利,楊 志,翟 淵

        (重慶科技學(xué)院 智能技術(shù)與工程學(xué)院,重慶 401331)

        0 引言

        隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,程序的遠程升級成了剛需。目前,多數(shù)單片機程序遠程升級都是基于單片機的 IAP 技術(shù)[1]。然而,物聯(lián)網(wǎng)設(shè)備往往數(shù)量較多,升級所有設(shè)備對服務(wù)器開銷大,基于差分原理的升級方式對硬件要求又高,在硬件資源有限的微控制器MCU上使用差分算法存在局限性。因此,本文提出了一種應(yīng)用在MCU上的新型增量升級方法,將后期不需要升級和需要升級的代碼獨立開來,形成固件工程和應(yīng)用工程。通過這種方法,實現(xiàn)了固件代碼和升級代碼的解耦,同時不需要復(fù)雜的差分算法支持,能降低硬件對資源的要求,提高升級效率,降低升級成本。

        1 原理

        分散加載(scatter)文件是一種文本文件,可以用來描述連接器生成映像文件時需要的信息。通過編寫一個分散加載文件來指定ARM連接器在生成映像文件時如何分配 Code,RO-Data,RW-Data,ZI-Data等數(shù)據(jù)的存放地址[2]。有時候用戶希望將不同代碼放在不同存儲空間,也就是通過編譯器生成的映像文件需要包含多個域,每個域在加載和運行時可以有不同的地址。要生成這樣的映像文件,必須通過某種方式告知編譯器相關(guān)的地址映射關(guān)系[3]。

        2 設(shè)計思路

        MCU編譯后的代碼在執(zhí)行文件中是按照一定區(qū)域進行排列的,并且函數(shù)在執(zhí)行文件中的首地址就是其函數(shù)的入口地址,因此通過地址能直接調(diào)用函數(shù)。參考單片機中斷函數(shù)向量表的形式,劃分一部分空間出來專門存放函數(shù)的入口地址,其他工程則利用這一地址,偏移之后,就可以得到函數(shù)的地址,實現(xiàn)不同工程之間函數(shù)的調(diào)用。其不同工程在單片機FLASH的存儲空間分配原理,如圖1所示。在每個工程中再分配一定的空間用于存儲函數(shù)地址,即圖中應(yīng)用程序接口(Application Programming Interface,API)部分。

        圖1 存儲空間分配示意

        3 總體框架

        為了實現(xiàn)Firmware固件層代碼與APP應(yīng)用層代碼的解耦,APP應(yīng)用層工程中不能含有Firmware固件工程中的代碼。Firmware固件層代碼應(yīng)該在正常完成調(diào)試之后,將APP應(yīng)用層會用到的函數(shù)的地址集中存放在單片機FLASH固定位置,以便APP應(yīng)用層能夠通過這一固定的位置來定位函數(shù)地址,實現(xiàn)對Firmware固件層函數(shù)的調(diào)用。根據(jù)以上原理和設(shè)計要求的考慮,軟件框架設(shè)計如圖2所示,整個框架一共包括以下3個部分:固件工程模塊、程序升級模塊、應(yīng)用工程模塊。

        圖2 總體軟件框架結(jié)構(gòu)

        (1)固件工程模塊。固件工程是存儲設(shè)備中不需要升級的代碼,例如輪椅傳感器驅(qū)動程序、內(nèi)核程序、操作系統(tǒng)程序、輪椅控制程序等。這部分程序代碼量是最大的,且基本不需要升級,因此只需要在設(shè)備投入使用之前寫入程序。同時,這個模塊還為升級模塊和應(yīng)用層模塊提供必要的API接口。

        (2)應(yīng)用層模塊。應(yīng)用層模塊用于存儲后期升級會用到的程序,如面部識別算法等。其中固件工程模塊與應(yīng)用層模塊之間函數(shù)能夠相互調(diào)用;設(shè)備投入使用后,需要對代碼進行小修改,就可以將這些代碼放到應(yīng)用層工程中,以后修改這些函數(shù)代碼時,只需要重新編譯,再通過OTA進行升級。

        (3)程序升級模塊。用于更新應(yīng)用層的代碼。這里的升級模塊可以使用固件工程中的函數(shù),例如校驗函數(shù)、無線通信函數(shù)等,同時也可以單獨設(shè)計成一個Bootloder程序。這樣不但可以升級應(yīng)用層程序,還可以升級固件層的程序。

        4 增量升級程序設(shè)計

        4.1 增量升級工程程序調(diào)整

        采用新的增量升級方法需要將代碼分為后期需要升級的部分作為應(yīng)用層工程,將后期不需要升級的部分作為固件工程。其程序的調(diào)整可以以一個函數(shù)為單位進行調(diào)整,并根據(jù)需要為添加到應(yīng)用層工程的函數(shù)單獨創(chuàng)建一個或多個c文件和h文件,再將這些代碼添加到一個新的工程中;應(yīng)用層可以根據(jù)升級需要再分成多個工程。

        4.2 RAM和ROM空間的劃分

        程序的正常運行需要一定的ROM和RAM空間,多個工程相互結(jié)合實現(xiàn)最終的功能,需要為每個工程劃分一片空間來保證程序的正常運行。

        4.3 函數(shù)對外接口和函數(shù)訪問接口設(shè)計

        現(xiàn)在雖然將原始代碼分成了多個工程,但是多個工程之間缺少相應(yīng)的函數(shù)名,是無法編譯的,接下來就需要實現(xiàn)不同工程之間的關(guān)聯(lián),保證函數(shù)能在不同工程之間實現(xiàn)相互調(diào)用。

        (1)函數(shù)對外接口設(shè)計。在C語言函數(shù)的調(diào)用是通過函數(shù)地址進行的,圖1中每個工程中的函數(shù)地址存儲在固定的地址,其他工程通過訪問這一固定的地址來實現(xiàn)不同工程之間的函數(shù)調(diào)用。

        函數(shù)對外接口的設(shè)計有多個方法。方法一:創(chuàng)建一個指針型結(jié)構(gòu)體,并將其值賦值為函數(shù)的地址,再使用編譯器的__attribute__指令,將該結(jié)構(gòu)體變量存放在固定地址;方法二:可以將變量在啟動文件中使用DCD指令申請4字節(jié)的空間用于存儲函數(shù)指針結(jié)構(gòu)體變量。

        (2)函數(shù)訪問接口設(shè)計。其他工程需要訪問這些函數(shù)時,通過創(chuàng)建一個函數(shù)指針結(jié)構(gòu)體變量,并將其首地址指向這一固定地址。其他工程通過訪問函數(shù)指針結(jié)構(gòu)體變量,進而訪問不同工程的函數(shù),實現(xiàn)不同工程之間的函數(shù)調(diào)用。

        5 結(jié)語

        本論文通過介紹目前增量升級技術(shù)的應(yīng)用和目前基于差分原理的增量升級方式在低成本MCU上應(yīng)用的局限性,提出了一種新的增量升級方法。根據(jù)增量升級需求,希望能夠?qū)崿F(xiàn)對單個函數(shù)升級的要求,增量升級的設(shè)計過程。采用新的增量升級方法在低成本MCU上應(yīng)用具有一定的優(yōu)勢。

        猜你喜歡
        程序工程
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        子午工程
        太空探索(2016年6期)2016-07-10 12:09:06
        創(chuàng)衛(wèi)暗訪程序有待改進
        工程
        工程
        工程
        工程
        亚洲av日韩专区在线观看| 国产人妖视频一区二区| 国产成人av无码精品| 精品淑女少妇av久久免费 | 亚洲一区sm无码| 日韩av一区二区三区在线观看| av免费在线播放视频| 色婷婷综合久久久久中文字幕| 色婷婷七月| 亚洲中文字幕有综合久久| 亚洲av无一区二区三区| 手机看片久久国产免费| 美女在线国产| 一级黄色一区二区三区视频| 亚洲综合精品亚洲国产成人| 免费少妇a级毛片人成网| 亚洲av无码成人网站www | 中国少妇久久一区二区三区| 久久婷婷人人澡人人爽人人爱| 亚洲黄视频| 亚洲视频一区二区三区免费| 国产网站一区二区三区| 亚洲av成人一区二区三区| 欧美精品aaa久久久影院| 少妇被猛烈进入中文字幕| 最近中文字幕国语免费| 人妻人人澡人人添人人爽人人玩 | 国产亚洲日本人在线观看| 在线观看免费不卡网站| 丰满少妇人妻无码专区| 日韩视频第二页| 午夜av福利亚洲写真集| 久久综合九色欧美综合狠狠| 女厕厕露p撒尿八个少妇| 久久久国产不卡一区二区| 久久久精品亚洲人与狗| 亚洲熟女乱综合一区二区| 狠狠躁夜夜躁AV网站中文字幕 | 狠狠躁狠狠躁东京热无码专区| 日韩亚洲精选一区二区三区| 无码人妻一区二区三区在线 |