[發明專利]一種生成嵌入式程序運行符號表的方法和裝置有效
申請號: | 201310741877.1 | 申請日: | 2013-12-27 |
公開(公告)號: | CN103677851A | 公開(公告)日: | 2014-03-26 |
發明(設計)人: | 黃錫元 | 申請(專利權)人: | 瑞斯康達科技發展股份有限公司 |
主分類號: | G06F9/44 | 分類號: | G06F9/44 |
代理公司: | 北京安信方達知識產權代理有限公司 11262 | 代理人: | 王丹;栗若木 |
地址: | 100085 北京*** | 國省代碼: | 北京;11 |
權利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關鍵詞: | 一種 生成 嵌入式 程序 運行 符號 方法 裝置 | ||
技術領域
本發明涉及嵌入式軟件領域,尤其涉及一種生成嵌入式程序運行符號表的方法。
背景技術
隨著網絡系統復雜度的增加,設備的現場可調試能力越顯重要,而其中,符號表則是現場調試的最重要的技術之一。通過符號表信息,工程師可以通過名稱進行函數調用操作,查看全局變量的信息,打印進程的調用棧等信息。這對于獲取設備的運行狀態有很大的幫助,能讓工程師更快的定位問題原因。
在嵌入式系統中,由于存儲空間和芯片速度的原因,符號表的設計應該盡可能少的占用存儲空間,具備盡可能快的查找效率。當前業界主要采用“二次鏈接一次安裝”的方法來生成符號表:
如圖1所示,“二次鏈接一次安裝”的方法流程如下:
A、第一次鏈接。首先將所有的目標文件和庫文件進行一次鏈接,生成一個臨時的目標文件。
B、第二次鏈接。接著從該臨時目標文件里面提取符號信息生成包含原始符號信息的源文件,編譯該源文件生成符號表目標文件。然后將該符號表目標文件與步驟A生產的臨時目標文件再次鏈接,生成最終的bin文件。
C、一次安裝。在設備啟動的時候對符號進行安裝初始化,比如安裝為哈希表、AVL樹等。
安裝了符號表之后,設備在運行過程中可以通過函數名查找到對應的符號信息,例如函數地址等,從而能夠方便的進行函數調用相關的調試。
但是該方法存在如下缺陷:
1、二次鏈接增加了編譯的時間。當前的嵌入式系統越來越龐大,最后的鏈接時間占總的編譯鏈接時間很大比例,增加一次鏈接增加的時間比較大。
2、目前很多系統提供商(比如風河)提供了完整的編譯和腳本的集成環境,而使用二次鏈接的方式需要修改這些環境和腳本,比較麻煩。
3、有一個安裝的過程,一來會增加設備的啟動時間;二來由于增加了一個索引空間,會額外增加不少內存消耗。對于嵌入式系統來說,無論是非易失性存儲空間還是內存空間,都是比較寶貴的資源。
4、由于安裝的符號表是以符號名稱為索引的,因此從符號名稱可以快捷的找到符號信息,但是從符號地址查找符號信息則比較耗時。在獲取進程的調用棧時,這是個經常性操作。
5、由于存在很多同名的靜態變量,為了防止從符號名稱查找符號信息時產生歧義,當前的符號表只提取全局符號,缺少靜態符號,因此靜態符號是無法通過符號地址查找符號信息的。而在進程的調用棧中,有不少是靜態函數,如果無法獲取函數名,在打印調用棧信息的時候只能打印一個地址信息,這會給調試帶來不少困擾。
6、符號表不具備動態加載特性,要么有要么無。這個對于FLASH或者內存比較小的設備而言比較不利,由于空間限制,無法添加符號表,而一旦出了問題想用符號表則比較麻煩。
發明內容
本發明所要解決的技術問題是減少編譯鏈接時間,快捷的找到符號信息,并且使得符號表可動態加載,提出一種生成嵌入式程序運行符號表的方法和裝置。
為了解決上述技術問題,本發明提供的技術方案如下:
一種生成嵌入式程序運行符號表的方法,包括:
從生成的目標文件中提取所有的符號信息或者從生成的目標文件中根據設定需求提取符號信息;
從提取的符號信息中篩選出全局符號信息,對所述全局符號信息的符號名稱進行排序,生成第一有序符號數組;
從提取的符號信息中篩選出靜態符號信息,生成第二符號數組;
對提取的符號信息的符號地址進行排序,生成地址排序符號索引數組;
對第一有序符號數組、第二符號數組和地址排序符號索引數組進行合并,生成符號表。
進一步地,所述目標文件為通過對源文件進行編譯和鏈接生成的文件,所述符號表為二進制文件。
進一步地,所述方法還包括
將所述符號表和目標文件加載到閃存FLASH中;對符號名稱排序為按照符號名稱的ASCII碼大小排序。
進一步地,在將所述符號表和目標文件加載到閃存FLASH中之前還包括判斷閃存FLASH的空間是否滿足所述符號表和目標文件的加載要求,如果滿足,將所述符號表和目標文件加載到閃存FLASH中,如果不滿足,則將所述符號表和目標文件加載到內存中。
進一步地,對第一有序符號數組、第二符號數組和地址排序符號索引數組進行合并包括:
建立一個符號表管理文件,所述符號表管理文件維護符號表的版本號、全局符號的個數、靜態符號的個數和符號地址索引的個數;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于瑞斯康達科技發展股份有限公司,未經瑞斯康達科技發展股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310741877.1/2.html,轉載請聲明來源鉆瓜專利網。