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
工程
工程
工程
工程
主站蜘蛛池模板: 成人毛片免费观看| 日本午夜视频在线观看| 伊人婷婷色香五月综合缴缴情| 国产嫖妓91东北老熟女久久一| 亚洲无线一二三四区男男| 黄色一级视频欧美| 亚洲成a人片77777在线播放| 亚洲色图欧美激情| 啦啦啦网站在线观看a毛片| 97一区二区在线播放| 午夜毛片免费看| 激情视频综合网| 激情乱人伦| 国产亚洲精品无码专| 亚洲国产清纯| 免费看美女毛片| 亚洲男人的天堂视频| 2048国产精品原创综合在线| 国产精品自在线拍国产电影| 精品国产www| 福利片91| 91免费观看视频| 亚洲人成电影在线播放| 国产人成午夜免费看| 欧美色亚洲| 丰满人妻中出白浆| 日韩无码真实干出血视频| 永久成人无码激情视频免费| 日日拍夜夜嗷嗷叫国产| 亚洲成人黄色在线| 亚洲日本www| 国内嫩模私拍精品视频| 真实国产乱子伦视频| 乱人伦视频中文字幕在线| 欧美精品H在线播放| 国产精品网址你懂的| 伊伊人成亚洲综合人网7777| 亚洲无限乱码| 亚洲国产天堂久久综合| 91免费国产高清观看| 国产一级精品毛片基地| 在线亚洲精品自拍| 成人午夜视频网站| 四虎成人免费毛片| 久久国产成人精品国产成人亚洲| 成人精品午夜福利在线播放 | 久久99国产综合精品1| 无码国内精品人妻少妇蜜桃视频| 亚洲天堂网站在线| 精品一区二区三区水蜜桃| 小说 亚洲 无码 精品| 成人精品亚洲| 国内熟女少妇一线天| 91久久国产综合精品女同我| 欧美人人干| 天天躁夜夜躁狠狠躁图片| 国产电话自拍伊人| 亚洲无码视频图片| 91福利在线观看视频| 一区二区在线视频免费观看| 19国产精品麻豆免费观看| 免费激情网站| 免费无码一区二区| 亚洲第一极品精品无码| 四虎国产精品永久在线网址| 一级毛片免费高清视频| 国产精品女熟高潮视频| 欧美不卡视频一区发布| 亚洲国产精品一区二区第一页免 | 日日噜噜夜夜狠狠视频| 国产91线观看| 精品人妻无码中字系列| 亚洲精品卡2卡3卡4卡5卡区| 理论片一区| 国产欧美日韩专区发布| 72种姿势欧美久久久大黄蕉| 国产男女XX00免费观看| 亚洲AV无码久久天堂| 九九热视频在线免费观看| 91亚洲免费视频| 国产在线第二页| 新SSS无码手机在线观看|