999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

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

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

0 引言

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

1 原理

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

2 設計思路

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

圖1 存儲空間分配示意

3 總體框架

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

圖2 總體軟件框架結構

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

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

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

4 增量升級程序設計

4.1 增量升級工程程序調整

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

4.2 RAM和ROM空間的劃分

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

4.3 函數對外接口和函數訪問接口設計

現在雖然將原始代碼分成了多個工程,但是多個工程之間缺少相應的函數名,是無法編譯的,接下來就需要實現不同工程之間的關聯,保證函數能在不同工程之間實現相互調用。

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

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

(2)函數訪問接口設計。其他工程需要訪問這些函數時,通過創建一個函數指針結構體變量,并將其首地址指向這一固定地址。其他工程通過訪問函數指針結構體變量,進而訪問不同工程的函數,實現不同工程之間的函數調用。

5 結語

本論文通過介紹目前增量升級技術的應用和目前基于差分原理的增量升級方式在低成本MCU上應用的局限性,提出了一種新的增量升級方法。根據增量升級需求,希望能夠實現對單個函數升級的要求,增量升級的設計過程。采用新的增量升級方法在低成本MCU上應用具有一定的優勢。

猜你喜歡
程序工程
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
工程
工程
工程
工程
主站蜘蛛池模板: 98超碰在线观看| 亚洲人成网站在线播放2019| 免费看av在线网站网址| 青青极品在线| 最新亚洲av女人的天堂| 亚洲一区二区三区香蕉| 久久九九热视频| 十八禁美女裸体网站| 国产主播一区二区三区| 日本道中文字幕久久一区| 国产精品成人AⅤ在线一二三四| 伊人成色综合网| a级毛片网| 一级一级一片免费| 欧洲av毛片| 亚洲永久精品ww47国产| 日韩国产亚洲一区二区在线观看| 成人国产精品视频频| 国产特一级毛片| 欧美啪啪一区| 久久久久人妻一区精品| 波多野结衣无码中文字幕在线观看一区二区 | 丝袜久久剧情精品国产| 国产精品第页| 国产亚洲精品97AA片在线播放| 午夜毛片福利| 午夜福利无码一区二区| 国产精品白浆在线播放| 日韩毛片在线视频| 成人在线综合| 日本免费高清一区| 欧美日韩北条麻妃一区二区| 亚洲色精品国产一区二区三区| 国产在线日本| 亚洲精品成人7777在线观看| 69av免费视频| 一级毛片在线直接观看| 四虎成人免费毛片| 免费毛片a| 在线观看免费AV网| 久久精品这里只有国产中文精品| yjizz国产在线视频网| 91麻豆国产视频| 久久久久人妻一区精品| 偷拍久久网| 91福利免费| 精品国产三级在线观看| 538国产视频| 国产自在线拍| 波多野结衣一区二区三区88| 日本三级欧美三级| 国产精品白浆无码流出在线看| 日韩国产综合精选| 国产h视频免费观看| 青草精品视频| 国产v精品成人免费视频71pao| 高清亚洲欧美在线看| 欧美精品色视频| 国产成人免费| 久久semm亚洲国产| 国产精品v欧美| 欧美精品黑人粗大| 欧美色综合网站| 欧美啪啪一区| 国产欧美日韩免费| 18禁黄无遮挡网站| 欧美中文字幕在线播放| 多人乱p欧美在线观看| 欧美成人精品一区二区| 嫩草在线视频| 91久久偷偷做嫩草影院电| 欧美在线国产| 国产精品久久久久久搜索| 欧美区一区| 91精品福利自产拍在线观看| 性欧美久久| 99久视频| a毛片基地免费大全| 69av在线| 欧美国产日产一区二区| 婷婷亚洲最大| 国产精品亚洲欧美日韩久久|