System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 日日摸日日碰夜夜爽无码,亚洲精品无码专区在线播放 ,精品国产一区二区三区无码
  • 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法及裝置制造方法及圖紙

    技術(shù)編號(hào):44498133 閱讀:4 留言:0更新日期:2025-03-04 18:06
    本申請(qǐng)公開了一種鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法。在鏈接腳本文件中為需要搬移的段指定加載內(nèi)存地址為容量足夠且運(yùn)行效率最高的內(nèi)存空間;根據(jù)鏈接腳本對(duì)每個(gè)應(yīng)用程序的每個(gè)段進(jìn)行內(nèi)存布局的規(guī)則創(chuàng)建一張全局列表。鴻蒙系統(tǒng)中實(shí)現(xiàn)一個(gè)自搬移和自解壓程序。鴻蒙系統(tǒng)在向嵌入式設(shè)備的內(nèi)存空間加載每個(gè)應(yīng)用程序的每個(gè)段時(shí),先在預(yù)先加載進(jìn)內(nèi)存的所述全局列表中查詢?cè)摱巍1旧暾?qǐng)可以更加靈活地對(duì)應(yīng)用程序的不同段所加載的內(nèi)存空間進(jìn)行合理分配,有利于提升應(yīng)用程序的運(yùn)行效率。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本申請(qǐng)涉及一種嵌入式系統(tǒng)(embedded?system),尤其涉及一種鴻蒙系統(tǒng)中通過鏈接腳本自搬移解壓的方法。


    技術(shù)介紹

    1、嵌入式系統(tǒng)在開發(fā)時(shí),通常是將啟動(dòng)加載器(bootloader)、系統(tǒng)內(nèi)核(kernel)、文件系統(tǒng)、應(yīng)用程序獨(dú)立開發(fā)的,前三者都屬于操作系統(tǒng)。開發(fā)完成后將以上各部分整合在一起制作成系統(tǒng)鏡像文件,系統(tǒng)鏡像文件被燒寫到嵌入式設(shè)備的非易失性存儲(chǔ)器——例如閃存(flash)中。嵌入式設(shè)備上電后,在啟動(dòng)階段會(huì)將操作系統(tǒng)的代碼從非易失性存儲(chǔ)器加載到內(nèi)存中運(yùn)行。需要運(yùn)行某個(gè)應(yīng)用程序時(shí),嵌入式系統(tǒng)將該應(yīng)用程序從非易失性存儲(chǔ)器加載進(jìn)內(nèi)存運(yùn)行,或者在非易失性存儲(chǔ)器中以xip(execute?in?place,就地執(zhí)行)方式執(zhí)行。

    2、通常情況下,嵌入式設(shè)備有多個(gè)內(nèi)存空間可以運(yùn)行應(yīng)用程序的代碼,例如itcm(instruction?tightly-coupled?memory,指令緊耦合存儲(chǔ)器)、sram(static?random-access?memory,靜態(tài)隨機(jī)存儲(chǔ)器)、psram(pseudo?static?random?access?memory,偽靜態(tài)隨機(jī)存儲(chǔ)器)等。代碼的運(yùn)行效率是itcm>sram>psram,而內(nèi)存空間的容量大小則是psram>sram>itcm。尤其是itcm的空間很小,僅能容納少量代碼。

    3、嵌入式系統(tǒng)的開發(fā)設(shè)計(jì)使用編譯器(compiler)、鏈接器(linker)和調(diào)試器(debugger)。鏈接器是一個(gè)程序,將一個(gè)或多個(gè)由編譯器或匯編器生成的目標(biāo)文件外加庫,鏈接為一個(gè)可執(zhí)行文件。鏈接器可以簡單地理解為將一個(gè)或多個(gè)輸入文件(目標(biāo)文件)合并為一個(gè)輸出文件(可執(zhí)行文件)。鏈接器通常使用一個(gè)鏈接腳本(linker?script)。鏈接腳本描述如何將輸入文件中的各個(gè)段(section)放到輸出文件中,并控制輸出文件中各個(gè)段在內(nèi)存中的布局。有時(shí)將輸入文件的段稱作輸入段,將輸出文件的段稱作輸出段。

    4、一個(gè)段可以被標(biāo)記為可加載(loadable),這意味著在運(yùn)行輸出文件時(shí)該段內(nèi)容需要先加載到內(nèi)存中。一個(gè)沒有內(nèi)容的段是可分配的,這意味著應(yīng)該在內(nèi)存中預(yù)留一個(gè)區(qū)域,但是這里不需要加載任何東西(在某些情況下,該內(nèi)存必須清零)。既不可裝載也不可分配的部分通常包含某種調(diào)試信息。

    5、每個(gè)可加載或可分配的輸出段都有兩個(gè)地址。第一個(gè)是vma(virtual?memoryarea,虛擬內(nèi)存地址),第二個(gè)是lma(load?memory?address,加載內(nèi)存地址)。虛擬內(nèi)存地址就是鏈接地址(link?address)。在編譯程序時(shí),每個(gè)目標(biāo)文件都是由源代碼編譯得到的,最終多個(gè)目標(biāo)文件鏈接生成一個(gè)可執(zhí)行文件。鏈接地址指示各個(gè)目標(biāo)文件在可執(zhí)行程序中的位置。例如,一個(gè)可執(zhí)行程序(輸出文件)a.out由三個(gè)目標(biāo)文件(輸入文件)a1.0、a2.o、a3.o組成,那么在輸出文件中各個(gè)輸入文件的先后順序就是由鏈接地址決定的。加載地址指示可執(zhí)行文件(應(yīng)用程序)的各個(gè)段加載到內(nèi)存中運(yùn)行的地址。在大多數(shù)情況下,每個(gè)段的鏈接地址和加載地址是相同的,當(dāng)然它們也可能不同。

    6、鴻蒙系統(tǒng)的應(yīng)用程序啟動(dòng)的常規(guī)流程是通過引導(dǎo)程序加載應(yīng)用程序,將應(yīng)用程序從非易失性存儲(chǔ)器讀入到內(nèi)存運(yùn)行、或者在非易失性存儲(chǔ)器中以xip方式運(yùn)行。應(yīng)用程序中執(zhí)行的第一條指令稱為入口點(diǎn)(entry?point)。鴻蒙系統(tǒng)加載應(yīng)用程序后,進(jìn)入應(yīng)用程序的入口點(diǎn)。這樣的運(yùn)行方式限定了一個(gè)應(yīng)用程序必須全部運(yùn)行在同一塊內(nèi)存空間中。當(dāng)某個(gè)應(yīng)用程序的代碼量比較大時(shí),其通常運(yùn)行在容量大但運(yùn)行效率相對(duì)較低的內(nèi)存空間——例如psram中,這樣會(huì)造成該應(yīng)用程序的代碼運(yùn)行效率低下,尤其是對(duì)于一些需要頻繁調(diào)用的模塊或者一些需要提高運(yùn)行效率的模塊會(huì)有很大的負(fù)面影響。


    技術(shù)實(shí)現(xiàn)思路

    1、本申請(qǐng)所要解決的技術(shù)問題是如何使鴻蒙系統(tǒng)的鏈接腳本支持自搬移解壓,以提高鴻蒙系統(tǒng)中應(yīng)用程序的運(yùn)行效率。

    2、為解決上述技術(shù)問題,本申請(qǐng)?zhí)岢隽艘环N鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,包括如下步驟。步驟s1:在生成嵌入式設(shè)備的系統(tǒng)鏡像文件時(shí),對(duì)至少部分應(yīng)用程序的部分段進(jìn)行數(shù)據(jù)壓縮以減少體積。步驟s2:將“需要提升運(yùn)行效率的應(yīng)用程序的段”稱為需要搬移的段,在鏈接腳本文件中為需要搬移的段指定加載內(nèi)存地址為容量足夠且運(yùn)行效率最高的內(nèi)存空間;根據(jù)鏈接腳本對(duì)每個(gè)應(yīng)用程序的每個(gè)段進(jìn)行內(nèi)存布局的規(guī)則創(chuàng)建一張全局列表;所述全局列表保存了鏈接腳本里記錄的需要搬移的段的源地址、目的地址、源數(shù)據(jù)大小、目的數(shù)據(jù)大小,還保存了鏈接腳本里記錄的需要清零的段;需要清零的段的目的數(shù)據(jù)大小為0。步驟s3:鴻蒙系統(tǒng)中實(shí)現(xiàn)一個(gè)自搬移和自解壓程序。步驟s4:鴻蒙系統(tǒng)在向嵌入式設(shè)備的內(nèi)存空間加載每個(gè)應(yīng)用程序的每個(gè)段時(shí),先在預(yù)先加載進(jìn)內(nèi)存的所述全局列表中查詢?cè)摱?。如果在所述全局列表中記錄的該段的目的?shù)據(jù)大小為0,將該段數(shù)據(jù)清零。如果在所述全局列表中記錄的該段的源數(shù)據(jù)大小與目的數(shù)據(jù)大小相同,將該段從所述全局列表中記錄的該段的源地址復(fù)制到該段的目的地址。如果在所述全局列表中記錄的該段的源數(shù)據(jù)大小與目的數(shù)據(jù)大小不同,先從所述全局列表中記錄的該段的源地址讀取該段數(shù)據(jù),再調(diào)用所述自搬移和自解壓程序?qū)λx取的該段數(shù)據(jù)進(jìn)行解壓縮,然后將解壓縮后的該段數(shù)據(jù)寫到所述全局列表中記錄的該段的目的地址。

    3、進(jìn)一步地,所述步驟s1中,所述段包括代碼段、數(shù)據(jù)段、bss段、只讀數(shù)據(jù)段的任意一種或多種。

    4、進(jìn)一步地,所述步驟s2中,嵌入式設(shè)備有多個(gè)用于運(yùn)行應(yīng)用程序的內(nèi)存空間,按照代碼的運(yùn)行效率由高到低排序是指令緊耦合存儲(chǔ)器itcm>靜態(tài)隨機(jī)存儲(chǔ)器sram>偽靜態(tài)隨機(jī)存儲(chǔ)器psram;按照內(nèi)存空間的容量由大到小排序是psram>sram>itcm。

    5、進(jìn)一步地,所述步驟s2中,鏈接腳本中為每個(gè)段指定虛擬內(nèi)存地址vma,還為某個(gè)段通過at關(guān)鍵字指定加載內(nèi)存地址lma;如果鏈接腳本沒有為某個(gè)段通過at關(guān)鍵字指定lma,鏈接器默認(rèn)該段的lma等同于vma。

    6、進(jìn)一步地,所述步驟s2中,所述需要搬移的段是指鏈接腳本里由at關(guān)鍵字指定的lma與vma不一致的段。

    7、進(jìn)一步地,所述步驟s2中,所述需要清零的段是指加載到內(nèi)存時(shí)會(huì)被清零的段或者不加載進(jìn)內(nèi)存的段。

    8、進(jìn)一步地,所述步驟s3中,所述自搬移和自解壓程序放在鴻蒙系統(tǒng)的最開始的啟動(dòng)位置,不能被搬移和解壓縮,用來對(duì)需要搬移的段進(jìn)行自搬移和自解壓處理。

    9、進(jìn)一步地,所述步驟s4中,如果在所述全局列表中記錄的該段的目的數(shù)據(jù)大小為0,表明該段是需要清零的段。如果在所述全局列表中記錄的該段的源數(shù)據(jù)大小與目的數(shù)據(jù)大小相同,表明該段是需要搬移的段、且該段數(shù)據(jù)未被壓縮。如果在所述全局列表中記錄的該段的源數(shù)據(jù)大小與目的數(shù)據(jù)大小不同,表明該段是需要搬移的段、且該段數(shù)據(jù)被壓縮。

    10、本申請(qǐng)還提出了一種鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的裝置,包括壓縮單元、設(shè)置與創(chuàng)建單元、實(shí)現(xiàn)單元、查本文檔來自技高網(wǎng)...

    【技術(shù)保護(hù)點(diǎn)】

    1.一種鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,包括如下步驟;

    2.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S1中,所述段包括代碼段、數(shù)據(jù)段、BSS段、只讀數(shù)據(jù)段的任意一種或多種。

    3.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S2中,嵌入式設(shè)備有多個(gè)用于運(yùn)行應(yīng)用程序的內(nèi)存空間,按照代碼的運(yùn)行效率由高到低排序是指令緊耦合存儲(chǔ)器ITCM>靜態(tài)隨機(jī)存儲(chǔ)器SRAM>偽靜態(tài)隨機(jī)存儲(chǔ)器PSRAM;按照內(nèi)存空間的容量由大到小排序是PSRAM>SRAM>ITCM。

    4.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S2中,鏈接腳本中為每個(gè)段指定虛擬內(nèi)存地址VMA,還為某個(gè)段通過AT關(guān)鍵字指定加載內(nèi)存地址LMA;如果鏈接腳本沒有為某個(gè)段通過AT關(guān)鍵字指定LMA,鏈接器默認(rèn)該段的LMA等同于VMA。

    5.根據(jù)權(quán)利要求4所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S2中,所述需要搬移的段是指鏈接腳本里由AT關(guān)鍵字指定的LMA與VMA不一致的段。

    6.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S2中,所述需要清零的段是指加載到內(nèi)存時(shí)會(huì)被清零的段或者不加載進(jìn)內(nèi)存的段。

    7.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S3中,所述自搬移和自解壓程序放在鴻蒙系統(tǒng)的最開始的啟動(dòng)位置,不能被搬移和解壓縮,用來對(duì)需要搬移的段進(jìn)行自搬移和自解壓處理。

    8.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟S4中,如果在所述全局列表中記錄的該段的目的數(shù)據(jù)大小為0,表明該段是需要清零的段;

    9.一種鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的裝置,其特征是,包括壓縮單元、設(shè)置與創(chuàng)建單元、實(shí)現(xiàn)單元、查詢與處理單元;

    ...

    【技術(shù)特征摘要】

    1.一種鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,包括如下步驟;

    2.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟s1中,所述段包括代碼段、數(shù)據(jù)段、bss段、只讀數(shù)據(jù)段的任意一種或多種。

    3.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟s2中,嵌入式設(shè)備有多個(gè)用于運(yùn)行應(yīng)用程序的內(nèi)存空間,按照代碼的運(yùn)行效率由高到低排序是指令緊耦合存儲(chǔ)器itcm>靜態(tài)隨機(jī)存儲(chǔ)器sram>偽靜態(tài)隨機(jī)存儲(chǔ)器psram;按照內(nèi)存空間的容量由大到小排序是psram>sram>itcm。

    4.根據(jù)權(quán)利要求1所述的鴻蒙系統(tǒng)的鏈接腳本自搬移解壓的方法,其特征是,所述步驟s2中,鏈接腳本中為每個(gè)段指定虛擬內(nèi)存地址vma,還為某個(gè)段通過at關(guān)鍵字指定加載內(nèi)存地址lma;如果鏈接腳本沒有為某個(gè)段通過at關(guān)鍵字指定lma,鏈接器默認(rèn)該段的lma等同于vma。

    ...

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:胡文黃金華,龍?jiān)乞v,
    申請(qǐng)(專利權(quán))人:翱捷科技股份有限公司
    類型:發(fā)明
    國別省市:

    網(wǎng)友詢問留言 已有0條評(píng)論
    • 還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。

    1
    主站蜘蛛池模板: 精品久久久无码人妻中文字幕| 色综合色国产热无码一| 精品无码日韩一区二区三区不卡 | 色偷偷一区二区无码视频| 伊人无码精品久久一区二区| 亚洲AV无码乱码在线观看裸奔| 国产精品va无码免费麻豆| 精品无码无人网站免费视频 | 四虎国产精品永久在线无码| 精品无码成人片一区二区98| 亚洲AV中文无码乱人伦| 精品无码久久久久久久久久| 下载天堂国产AV成人无码精品网站| 最新无码专区视频在线| 亚洲性无码一区二区三区| 岛国无码av不卡一区二区| 久久亚洲精品AB无码播放| 久久久无码人妻精品无码| 国精品无码A区一区二区| 国产精品无码一二区免费| 亚洲va成无码人在线观看| 中文一国产一无码一日韩| 亚洲精品无码99在线观看| 天堂无码久久综合东京热| 亚洲精品av无码喷奶水糖心 | 无码人妻精品一区二区三区99性 | 极品粉嫩嫩模大尺度无码视频 | 精品人妻系列无码一区二区三区| 国产免费无码一区二区| 无码av高潮喷水无码专区线| 无码日韩人妻精品久久蜜桃 | 久久久久亚洲AV无码麻豆| 国产精品va无码一区二区 | 亚洲ⅴ国产v天堂a无码二区| 永久免费AV无码网站国产| 国产成人麻豆亚洲综合无码精品| 永久免费AV无码网站国产| 亚洲av永久无码精品漫画| 日韩乱码人妻无码系列中文字幕| 久久久久亚洲Av无码专| 亚洲AV永久无码精品一福利 |