[發明專利]一種創建基于多映像的多功能嵌入式系統的方法有效
| 申請號: | 201811548125.2 | 申請日: | 2018-12-18 |
| 公開(公告)號: | CN109783145B | 公開(公告)日: | 2022-02-08 |
| 發明(設計)人: | 潘潤宇 | 申請(專利權)人: | 潘潤宇 |
| 主分類號: | G06F9/4401 | 分類號: | G06F9/4401;G06F9/445;G06F12/02;G06F11/07 |
| 代理公司: | 廣州專理知識產權代理事務所(普通合伙) 44493 | 代理人: | 曲超 |
| 地址: | 450042 河南省*** | 國省代碼: | 河南;41 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 創建 基于 映像 多功能 嵌入式 系統 方法 | ||
1.一種創建基于多映像的多功能嵌入式系統的方法,其特征在于,包括以下步驟:
步驟1、創建一個操作系統模塊映像,并燒寫入系統存儲器內,或者放在網絡上的某個服務器內;所述操作系統模塊映像sys_image包括引導文件、板級支持包BSP、操作系統內核的二進制映像和設備樹,存放操作系統模塊映像的存儲介質是連續的也能夠是不連續的;
步驟2、創建一個或多個應用程序模塊映像,并燒寫入系統存儲器內,或者放在網絡上的某個服務器內,所述應用程序模塊映像app_image包括應用程序二進制映像本身和應用程序的內存要求描述符app_mem_desc,存儲應用程序模塊映像的存儲介質是連續的也能夠是不連續的;
步驟3、在系統初始化階段,先從系統存儲器或者網絡加載操作系統模塊映像,并將操作系統模塊映像做初始化,并且將系統設置到啟動階段;
步驟4、在系統啟動階段,操作系統模塊映像從系統存儲器或者網絡加載各個應用程序模塊映像,并分析app_mem_desc;加載一個應用程序模塊映像的sys_load_app包括以下步驟:
步驟4.1、解析應用程序模塊映像的app_mem_desc,分析其各段內存的加載虛擬地址、實際物理地址和讀寫執行權限屬性,以及內存訪問實時性屬性,內存訪問的實時性屬性有兩種,一種是需要實時訪問,以下稱實時內存段,一種是不需要實時訪問,以下稱非實時內存段;
步驟4.2、在操作系統模塊映像中建立對應app_mem_desc的內存空間數據結構app_mem_trie,通過所述數據結構記錄所述應用程序模塊映像的當前地址空間分布;
步驟4.3、根據app_mem_trie生成對應于所述應用程序模塊映像的、填充內存保護單元或基于基址-長度的內存管理單元的硬件寄存器的、存儲在所述應用程序模塊映像的管理數據結構app_mgmt內的地址空間緩存app_mem_cache,當應用程序模塊映像的內存段數超過硬件支持的槽位數,按照內存選擇流程sys_mem_choose判定哪些內存段被加入地址空間緩存app_mem_cache中;內存選擇流程sys_mem_choose包括以下步驟:
步驟4.3.1、在app_mem_desc中找出所有實時內存段,并優先為其分配地址空間緩存的槽位;
步驟4.3.2、當地址空間緩存的槽位數量小于需要應用程序模塊內存描述符中實時內存段的數量,操作系統應當使用地址空間緩存所有的槽位滿足實時內存段;
步驟4.3.3、當地址空間緩存的槽位在為實時內存段分配之后還有剩余,將剩下的各個槽位分配給非實時內存段;
步驟4.4、加載應用程序模塊映像的數據段和代碼段,完成其他相關初始化;
步驟5、在完成應用程序模塊映像的加載后,操作系統即轉入后臺,并按照設定的調度算法調度各個應用程序,在運行中也能夠動態加載更多應用程序模塊映像,仍按照加載一個應用程序模塊映像的過程sys_load_app執行;
步驟6、應用程序模塊映像在運行中調用接口向操作系統請求更多內存,要求與某個其他應用程序模塊映像共享內存,釋放內存,或者取消與某個應用程序模塊映像共享內存;
sys_mem_shared_add相當于兩個或多個應用程序模塊映像同時調用內存增加流程sys_mem_add,并由操作系統分配相同的物理地址進行映射,sys_mem_shared_rem則相當于兩個或多個應用程序模塊映像同時調用內存減少流程sys_mem_rem,并由操作系統解除相應的物理內存的映射;內存增加流程sys_mem_add和內存減少流程sys_mem_rem包括以下步驟:
步驟6.1、內存增加流程sys_mem_add操作的流程;包括以下步驟:
步驟6.1.1、操作系統模塊映像尋找一塊大小和屬性匹配的物理內存準備進行映射;
步驟6.1.2、在應用程序模塊映像指定物理內存的情況下,操作系統檢查地址的合法性,當通過則按照步驟6.1.3進行,不通過則報錯;
步驟6.1.3、修改內存空間數據結構app_mem_trie的內容,將所述物理內存段所對應的描述符添加到數據結構內部以反映應用程序模塊映像地址空間的改變;
步驟6.2、內存減少流程sys_mem_rem操作的流程;包括以下步驟:
步驟6.2.1、根據應用程序模塊映像提供的地址,操作系統模塊映像在內存空間數據結構app_mem_trie中找到需要移除的物理內存段;
步驟6.2.2、當能夠找到所述地址則按照步驟6.2.3進行,不通過則報錯;
步驟6.2.3、修改內存空間數據結構app_mem_trie的內容以反映這一改變;
步驟6.2.4、在地址空間緩存app_mem_cache中尋找對應這一區域的槽位,找到則清空;
步驟6.2.5、當前運行的是所述應用程序模塊映像,則在硬件寄存器中也需要清空所述物理內存段對應的緩存條目,即將地址空間緩存app_mem_cache重新裝入硬件寄存器;
操作系統模塊映像能夠進行應用程序模塊切換;當操作系統模塊映像切換應用程序模塊映像時,需要切換執行環境的上下文,并將即將切換到的應用程序模塊映像對應的地址空間緩存app_mem_cache裝入硬件寄存器中;
步驟7、內存段替換更新;對于某些內存段數較多的應用程序模塊,地址空間緩存app_mem_cache不能在同一時刻包含其所有內存段,當應用程序訪問到那些潛在的未被包含內存段時,硬件會產生一個內存訪問錯誤異常;操作系統模塊應當按照訪存異常處理流程sys_mem_fault處理此內存訪問錯誤異常;訪存異常處理流程sys_mem_fault包括以下步驟:
步驟7.1、從硬件訪存錯誤地址寄存器hw_mmfar中讀取錯誤發生的內存地址,并從硬件訪存錯誤原因寄存器hw_mcause中讀取所述內存訪問錯誤發生的原因;
步驟7.2、在當前應用程序模塊映像對應的內存空間數據結構app_mem_trie中尋找對應于所述地址的描述,當找不到描述符或描述符不包含錯誤原因中指示的訪問類型,則按照真正的權限錯誤處理,在實際應用中的處理方法是終止此應用;當找到相關條目則繼續按步驟7.3處理;
步驟7.3、將與所述錯誤發生的內存地址相對應的緩存條目加入當前應用程序對應的地址空間緩存app_mem_cache;在地址空間緩存app_mem_cache中有空余位置的前提下,加入地址空間緩存app_mem_cache的空余位置;在地址空間緩存app_mem_cache填滿的前提下,按照替換算法,優先替換地址空間緩存app_mem_cache中的非實時內存段;
步驟7.4、將更新過后的地址空間緩存app_mem_cache裝入硬件寄存器內。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于潘潤宇,未經潘潤宇許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811548125.2/1.html,轉載請聲明來源鉆瓜專利網。





