鬼佬大哥大
  • / 13
  • 下載費用:30 金幣  

一種基于自動化RAL的寄存器訪問方法及系統.pdf

關 鍵 詞:
一種 基于 自動化 RAL 寄存器 訪問 方法 系統
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
摘要
申請專利號:

CN201510315874.0

申請日:

2015.06.10

公開號:

CN104898991A

公開日:

2015.09.09

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||專利申請權的轉移IPC(主分類):G06F 3/06登記生效日:20170802變更事項:申請人變更前權利人:武漢飛思靈微電子技術有限公司變更后權利人:烽火通信科技股份有限公司變更事項:地址變更前權利人:河北省武漢市東湖開發區關東工業園烽火路光通信大樓產業大樓二樓變更后權利人:430000 湖北省武漢市東湖高新技術開發區高新四路6號變更事項:申請人變更后權利人:武漢飛思靈微電子技術有限公司|||專利申請權的轉移IPC(主分類):G06F 3/06登記生效日:20170605變更事項:申請人變更前權利人:烽火通信科技股份有限公司變更后權利人:武漢飛思靈微電子技術有限公司變更事項:地址變更前權利人:430074 湖北省武漢市東湖開發區光谷創業街67號變更后權利人:430074 湖北省武漢市東湖開發區關東工業園烽火路光通信大樓產業大樓二樓|||實質審查的生效IPC(主分類):G06F 3/06申請日:20150610|||公開
IPC分類號: G06F3/06; G06F9/44 主分類號: G06F3/06
申請人: 烽火通信科技股份有限公司
發明人: 楊宗悅; 王良俊
地址: 430074湖北省武漢市東湖開發區光谷創業街67號
優先權:
專利代理機構: 北京捷誠信通專利事務所(普通合伙)11221 代理人: 王衛東
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510315874.0

授權公告號:

||||||||||||

法律狀態公告日:

2018.07.27|||2017.08.22|||2017.06.23|||2015.10.07|||2015.09.09

法律狀態類型:

授權|||專利申請權、專利權的轉移|||專利申請權、專利權的轉移|||實質審查的生效|||公開

摘要

本發明公開了一種基于自動化RAL的寄存器訪問方法及系統,涉及芯片寄存器訪問技術領域。該方法包括以下步驟:按照規定的格式,創建若干用于描述寄存器的描述文件;利用腳本工具將描述文件自動轉換成訪問所需的C文件;根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息,根據查找到的域信息進行對應域值的讀取或改變操作。本發明能夠基于寄存器抽象層RAL的自動生成完成寄存器的訪問,有效提高芯片開發及驗證的效率。

權利要求書

權利要求書
1.  一種基于自動化RAL的寄存器訪問方法,其特征在于,包括以下步驟:
S1:按照規定的格式,創建若干用于描述寄存器的描述文件,轉入S2;
S2:利用腳本工具將描述文件自動轉換成訪問所需的C文件,轉入S3;
S3:根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息;根據查找到的域信息進行對應域值的讀取或改變操作。

2.  如權利要求1所述的基于自動化RAL的寄存器訪問方法,其特征在于:S1中所述描述文件的類型包括txt文檔、doc文檔和excel表格;所述描述文件的內容包括文件信息、寄存器信息和表項信息:
所述文件信息包括文件名、文件占用的地址高低bit位;
所述寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字數、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只讀只寫指示、域描述、域默認值;
所述表項信息包括表項名、條目數、條目占用字數、表項偏移地址、表項描述和表項的域信息;其中,表項的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、讀寫指示、域描述。

3.  如權利要求2所述的基于自動化RAL的寄存器訪問方法,其特征在于,S2具體包括以下步驟:
S201:指定描述文件的輸入路徑和轉換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,轉入S202;
S202:利用腳本工具依次讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,轉入S203;
S203:根據S202中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動轉換生成對應的C文件,S2全部結束,轉入S3。

4.  如權利要求3所述的基于自動化RAL的寄存器訪問方法,其特征在于:S202中讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,具體包括以下步驟:
每次讀取描述文件時,為讀取的描述文件定義一個文件class對象,將文件class對象保存在一個文件list中;
逐行讀取描述文件中的關鍵字指示,當讀到FileName時,表示為文件信息,將文件信息保存在文件class對象里面;當讀到RegMem/Register時,則表示為表項/寄存器信息,為表項/寄存器定義對應的表項class對象/寄存器class對象,將表項class對象/寄存器class對象組成相應的表項list/寄存器list,并保存在文件class對象中;當讀到MemRegFields/Fields時,則表示為表項的域信息/寄存器的域信息,為表項的域信息/寄存器的域信息定義對應的表項域信息class對象/寄存器域信息class對象,將表項域信息class對象/寄存器域信息class對象組成相應的表項域信息list/寄存器域信息list,并保存在對應的表項class對象/寄存器class對象中。

5.  如權利要求2所述的基于自動化RAL的寄存器訪問方法,其特征在于:S203中所述對應的C文件包括以下9個文件:allenum.h文件、memacc.h文件、memregs.h文件、intenum.h文件、allfields.h文件、regs.c文件、mems.c文件、switch_xx.c文件和fields.c文件;
allenum.h文件用于:對寄存器名、表項名、域名進行定義,通過調用該定義對寄存器或表項進行訪問;
memacc.h文件用于:定義每個表項的域的讀寫操作;
memregs.h文件用于:定義所有寄存器的讀寫操作;
intenum.h文件用于:定義寄存器信息的查找索引、表項信息的查找索引;
allfields.h文件用于:對所有寄存器、表項的域指針進行聲明;
regs.c文件用于:保存所有寄存器信息,包括寄存器所屬描述文件的文件名、寄存器占用字數、寄存器偏移地址、寄存器的域個數、寄存器的域指針、默認值;
mems.c文件用于:保存所有表項信息,包括表項的條目最小索引、條目最大索引、表項所屬描述文件的文件名、表項偏移地址、表項條目地址跳變字數、表項的域個數、表項的域指針;
switch_xx.c文件用于:對芯片進行寄存器抽象層RAL的驅動定義,所述驅動定義的內容包括芯片類型、芯片名稱、芯片對應寄存器傳輸層RTL版本、芯片對應的寄存器、芯片對應的表項以及初始化值;
fields.c文件用于:保存寄存器、表項對應的域信息,每個寄存器的域信息、表項的域信息均以結構體數組ARRAY的形式保存,且每個域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、讀寫指示。

6.  如權利要求2所述的基于自動化RAL的寄存器訪問方法,其特征在于:S3具體包括以下步驟:
S301:根據需要訪問的寄存器名、表項名,判斷對應的寄存器、表項是否存在,若是,轉入S302;否則直接返回錯誤信息,結束;
S302:在轉換生成的C文件中查找對應的寄存器的所有域信息、表項的所有域信息,轉入S303;
S303:根據要訪問的域名,判斷所述寄存器的所有域信息中、所述表項的所有域信息中是否分別存在與域名對應的域信息,若是,轉入S304;否則返回錯誤信息,結束;
S304:獲取對應的域信息,并根據該對應的域信息進行對應域值的讀取或改變操作。

7.  如權利要求1至6中任一項所述的基于自動化RAL的寄存器訪問方法,其特征在于:S2中所述腳本工具采用工具命令語言TCL,TCL是一種基于字符串解釋性的命令語言。

8.  一種實現權利要求1至7中任一項所述方法的基于自動化RAL的寄存器訪問系統,其特征在于:包括描述文件創建模塊、C文件轉換模塊和域信息操作模塊;
所述描述文件創建模塊用于:按照規定的格式,創建若干用于描述寄存器的描述文件,向C文件轉換模塊發送轉換信號;
所述C文件轉換模塊用于:收到轉換信號后,利用腳本工具將描述文件自動轉換成訪問所需的C文件,向域信息操作模塊發送操作信號;
所述域信息操作模塊用于:收到操作信號后,根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息;根據查找到的域信息進行對應域值的讀取或改變操作。

9.  如權利要求8所述的基于自動化RAL的寄存器訪問系統,其特征在于:所述C文件轉換模塊包括文件獲取子模塊、文件解析子模塊和C文件生成子模塊;
所述文件獲取子模塊用于:指定描述文件的輸入路徑和轉換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,向文件解析子 模塊發送解析信號;
所述文件解析子模塊用于:收到解析信號后,利用腳本工具依次讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,向C文件生成子模塊發送文件生成信號;
所述C文件生成子模塊用于:收到文件生成信號后,根據文件解析子模塊中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動轉換生成對應的C文件。

10.  如權利要求8所述的基于自動化RAL的寄存器訪問系統,其特征在于:所述域信息操作模塊包括判斷子模塊、查找子模塊、域信息判斷子模塊和域信息處理子模塊;
所述判斷子模塊用于:根據需要訪問的寄存器名、表項名,判斷對應的寄存器、表項是否存在,若是,向查找子模塊發送查找信號;否則直接返回錯誤信息,結束;
所述查找子模塊用于:收到查找信號后,在轉換生成的C文件中查找對應的寄存器的所有域信息、表項的所有域信息,向域信息判斷子模塊發送判斷信號;
所述域信息判斷子模塊用于:收到判斷信號后,根據要訪問的域名,判斷所述寄存器的所有域信息中、所述表項的所有域信息中是否分別存在與域名對應的域信息,若是,向域信息處理子模塊發送處理信號;否則返回錯誤信息,結束;
所述域信息處理子模塊用于:收到處理信號后,獲取對應的域信息,并根據該對應的域信息進行對應域值的讀取或改變操作。

說明書

說明書一種基于自動化RAL的寄存器訪問方法及系統
技術領域
本發明涉及芯片寄存器訪問技術領域,具體來講是一種基于自動化RAL(Register Abstraction Layer,寄存器抽象層)的寄存器訪問方法及系統。
背景技術
隨著全球通信技術的IP(Internet Protocol,網際協議)化進程不斷深入,包處理類芯片的應用需求日益增多,包處理相關的協議也隨之增多,進而使得包處理類芯片的測試日趨復雜,包處理芯片進行測試時,需要對包處理芯片經過多輪的設計、開發和驗證。
在芯片的驅動開發和功能級驗證過程中,需要多次進行寄存器的訪問操作。目前,芯片的驅動開發過程和功能級驗證過程分別存在以下不足:
對于驅動開發而言,由于芯片的驅動開發方式一般為手動開發,當寄存器出現硬件、軟件的設計修改時,會導致驅動開發過程中需要手動進行多次軟件修訂,進而使得整個收斂過程出現大量的反復操作,降低了開發效率。
對于芯片功能級驗證而言,由于測試用例的設計依賴寄存器的訪問,當寄存器出現硬件、軟件的設計修改時,會導致測試用例的重復修訂,進而造成驗證效率低下的問題。
發明內容
本發明的目的是為了克服上述背景技術的不足,提供一種基于自 動化RAL的寄存器訪問方法及系統,本發明能夠基于寄存器抽象層RAL的自動生成完成寄存器的訪問,有效提高芯片開發及驗證的效率。
為達到以上目的,本發明提供一種基于自動化RAL的寄存器訪問方法,包括以下步驟:
S1:按照規定的格式,創建若干用于描述寄存器的描述文件,轉入S2;
S2:利用腳本工具將描述文件自動轉換成訪問所需的C文件,轉入S3;
S3:根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息;根據查找到的域信息進行對應域值的讀取或改變操作。
在上述技術方案的基礎上,S1中所述描述文件的類型包括txt文檔、doc文檔和excel表格;所述描述文件的內容包括文件信息、寄存器信息和表項信息:
所述文件信息包括文件名、文件占用的地址高低bit位;
所述寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字數、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只讀只寫指示、域描述、域默認值;
所述表項信息包括表項名、條目數、條目占用字數、表項偏移地址、表項描述和表項的域信息;其中,表項的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、讀寫指示、域描述。
在上述技術方案的基礎上,S2具體包括以下步驟:
S201:指定描述文件的輸入路徑和轉換C文件后的輸出路徑; 獲取輸入路徑下的所有描述文件,轉入S202;
S202:利用腳本工具依次讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,轉入S203;
S203:根據S202中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動轉換生成對應的C文件,S2全部結束,轉入S3。
在上述技術方案的基礎上,S202中讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,具體包括以下步驟:
每次讀取描述文件時,為讀取的描述文件定義一個文件class對象,將文件class對象保存在一個文件list中;
逐行讀取描述文件中的關鍵字指示,當讀到FileName時,表示為文件信息,將文件信息保存在文件class對象里面;當讀到RegMem/Register時,則表示為表項/寄存器信息,為表項/寄存器定義對應的表項class對象/寄存器class對象,將表項class對象/寄存器class對象組成相應的表項list/寄存器list,并保存在文件class對象中;當讀到MemRegFields/Fields時,則表示為表項的域信息/寄存器的域信息,為表項的域信息/寄存器的域信息定義對應的表項域信息class對象/寄存器域信息class對象,將表項域信息class對象/寄存器域信息class對象組成相應的表項域信息list/寄存器域信息list,并保存在對應的表項class對象/寄存器class對象中。
在上述技術方案的基礎上,S203中所述對應的C文件包括以下9個文件:allenum.h文件、memacc.h文件、memregs.h文件、intenum.h文件、allfields.h文件、regs.c文件、mems.c文件、switch_xx.c文件和fields.c文件;
allenum.h文件用于:對寄存器名、表項名、域名進行定義,通過調用該定義對寄存器或表項進行訪問;
memacc.h文件用于:定義每個表項的域的讀寫操作;
memregs.h文件用于:定義所有寄存器的讀寫操作;
intenum.h文件用于:定義寄存器信息的查找索引、表項信息的查找索引;
allfields.h文件用于:對所有寄存器、表項的域指針進行聲明;
regs.c文件用于:保存所有寄存器信息,包括寄存器所屬描述文件的文件名、寄存器占用字數、寄存器偏移地址、寄存器的域個數、寄存器的域指針、默認值;
mems.c文件用于:保存所有表項信息,包括表項的條目最小索引、條目最大索引、表項所屬描述文件的文件名、表項偏移地址、表項條目地址跳變字數、表項的域個數、表項的域指針;
switch_xx.c文件用于:對芯片進行寄存器抽象層RAL的驅動定義,所述驅動定義的內容包括芯片類型、芯片名稱、芯片對應寄存器傳輸層RTL版本、芯片對應的寄存器、芯片對應的表項以及初始化值;
fields.c文件用于:保存寄存器、表項對應的域信息,每個寄存器的域信息、表項的域信息均以結構體數組ARRAY的形式保存,且每個域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、讀寫指示。
在上述技術方案的基礎上,S3具體包括以下步驟:
S301:根據需要訪問的寄存器名、表項名,判斷對應的寄存器、表項是否存在,若是,轉入S302;否則直接返回錯誤信息,結束;
S302:在轉換生成的C文件中查找對應的寄存器的所有域信息、表項的所有域信息,轉入S303;
S303:根據要訪問的域名,判斷所述寄存器的所有域信息中、所 述表項的所有域信息中是否分別存在與域名對應的域信息,若是,轉入S304;否則返回錯誤信息,結束;
S304:獲取對應的域信息,并根據該對應的域信息進行對應域值的讀取或改變操作。
在上述技術方案的基礎上,S2中所述腳本工具采用工具命令語言TCL,TCL是一種基于字符串解釋性的命令語言。
本發明還提供一種實現上述方法的基于自動化RAL的寄存器訪問系統,包括描述文件創建模塊、C文件轉換模塊和域信息操作模塊;
所述描述文件創建模塊用于:按照規定的格式,創建若干用于描述寄存器的描述文件,向C文件轉換模塊發送轉換信號;
所述C文件轉換模塊用于:收到轉換信號后,利用腳本工具將描述文件自動轉換成訪問所需的C文件,向域信息操作模塊發送操作信號;
所述域信息操作模塊用于:收到操作信號后,根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息;根據查找到的域信息進行對應域值的讀取或改變操作。
在上述技術方案的基礎上,所述C文件轉換模塊包括文件獲取子模塊、文件解析子模塊和C文件生成子模塊;
所述文件獲取子模塊用于:指定描述文件的輸入路徑和轉換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,向文件解析子模塊發送解析信號;
所述文件解析子模塊用于:收到解析信號后,利用腳本工具依次讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,向C文件生成子模塊發送文件生成信號;
所述C文件生成子模塊用于:收到文件生成信號后,根據文件解析子模塊中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動轉換生成對應的C文件。
在上述技術方案的基礎上,所述域信息操作模塊包括判斷子模塊、查找子模塊、域信息判斷子模塊和域信息處理子模塊;
所述判斷子模塊用于:根據需要訪問的寄存器名、表項名,判斷對應的寄存器、表項是否存在,若是,向查找子模塊發送查找信號;否則直接返回錯誤信息,結束;
所述查找子模塊用于:收到查找信號后,在轉換生成的C文件中查找對應的寄存器的所有域信息、表項的所有域信息,向域信息判斷子模塊發送判斷信號;
所述域信息判斷子模塊用于:收到判斷信號后,根據要訪問的域名,判斷所述寄存器的所有域信息中、所述表項的所有域信息中是否分別存在與域名對應的域信息,若是,向域信息處理子模塊發送處理信號;否則返回錯誤信息,結束;
所述域信息處理子模塊用于:收到處理信號后,獲取對應的域信息,并根據該對應的域信息進行對應域值的讀取或改變操作。
本發明的有益效果在于:
(1)本發明利用腳本工具將描述文件自動轉換成訪問所需的C文件,從而實現自動生成RAL(寄存器抽象層),系統根據需要訪問的寄存器名、表項名和域名,在自動生成的C文件中查找對應的寄存器的域信息、表項的域信息后,即可對相應域值進行操作,從而實現寄存器的訪問。
因此,利用本方法進行寄存器的訪問時,不需要關心寄存器或表項的具體信息,當寄存器或表項有更新時(如地址修改、域占用的高 低bit位變化、新增域等),只要寄存器名、表項名、域名沒有變化,就無需對代碼進行任何修改,只需更新寄存器抽象中生成的C文件即可,進而能夠有效提高芯片開發及驗證的效率。
(2)本發明適用于各類芯片的驅動開發及驗證過程,適用范圍比較廣,復用性較高。
附圖說明
圖1為本發明實施例中基于自動化RAL的寄存器訪問方法的流程圖;
圖2為本發明實施例中S2的具體步驟的流程圖;
圖3為本發明實施例中保存解析信息的數據結構的示意圖;
圖4為本發明實施例中S3的具體步驟的流程圖。
具體實施方式
下面結合附圖及具體實施例對本發明作進一步的詳細描述。
參見圖1所示,本發明實施例提供一種基于自動化RAL的寄存器訪問方法,包括以下步驟:
S1:按照規定的格式,創建若干用于描述寄存器的描述文件,轉入S2。
該描述文件的類型包括txt文檔、doc文檔和excel表格;該描述文件的內容包括文件信息、寄存器信息和表項信息:
文件信息包括文件名、文件占用的地址高低bit位;
寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字數、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只讀只寫指示、域描述、域默認值;
表項信息包括表項名、條目數、條目占用字數、表項偏移地址、表項描述和表項的域信息;其中,表項的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、讀寫指示、域描述。
另外,同一描述文件中,寄存器名和表項名不能相同,但域名可相同;不同描述文件中,寄存器名、表項名、域名均可以相同。
S2:利用腳本工具將描述文件自動轉換成訪問所需的C文件,從而實現RAL(寄存器抽象層)的自動生成,轉入S3。
所述腳本工具采用TCL(Tool Command Language,工具命令語言)腳本工具,TCL是一種基于字符串解釋性的命令語言。
將描述文件自動轉換成訪問所需的C文件時,可基于用戶需求選擇轉換所有描述文件、轉換某種格式的描述文件或轉換指定的描述文件。
參見圖2所示,實際操作時,S2具體包括以下步驟:
S201:獲取描述文件:指定描述文件的輸入路徑和轉換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,轉入S202。
S202:解析描述文件:利用腳本工具依次讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存(如圖3所示),轉入S203。
S203:生成C文件:根據S202中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動轉換生成對應的C文件,S2全部結束,轉入S3。
S3:根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息;根據查找到的域信息進行對應域值的讀取或改變操作。
參見圖4所示,實際操作時,S3具體包括以下步驟:
S301:根據需要訪問的寄存器名、表項名,判斷對應的寄存器、 表項是否存在,若是,轉入S302;否則直接返回錯誤信息,結束。
S302:在轉換生成的C文件中查找對應的寄存器的所有域信息、表項的所有域信息,轉入S303。
S303:根據要訪問的域名,判斷所述寄存器的所有域信息中、所述表項的所有域信息中是否分別存在與域名對應的域信息,若是,轉入S304;否則返回錯誤信息,結束。
S304:獲取對應的域信息,并根據該對應的域信息進行對應域值的讀取或改變操作。
S202中讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,具體包括以下步驟:每次讀取描述文件時,為讀取的描述文件定義一個文件class(類,與C++相似,一種具有相同屬性或功能的具體實例)對象,將文件class對象保存在一個文件list(列表,是TCL中由一堆有特殊解釋元素組成的有序集合)中(通過文件class對象名可以訪問對應描述文件的信息);
逐行讀取描述文件中的關鍵字指示,當讀到FileName時,表示為文件信息,將文件信息保存在文件class對象里面;當讀到RegMem/Register時,則表示為表項/寄存器信息,為表項/寄存器定義對應的表項class對象/寄存器class對象,將表項class對象/寄存器class對象組成相應的表項list/寄存器list,并保存在文件class對象中;當讀到MemRegFields/Fields時,則表示為表項的域信息/寄存器的域信息,為表項的域信息/寄存器的域信息定義對應的表項域信息class對象/寄存器域信息class對象,將表項域信息class對象/寄存器域信息class對象組成相應的表項域信息list/寄存器域信息list,并保存在對應的表項class對象/寄存器class對象中。
S203中所述對應的C文件包括以下9個文件:allenum.h文件、 memacc.h文件、memregs.h文件、intenum.h文件、allfields.h文件、regs.c文件、mems.c文件、switch_xx.c文件和fields.c文件;
allenum.h文件用于:對寄存器名、表項名、域名進行定義,通過調用該定義對寄存器或表項進行訪問;
memacc.h文件用于:定義每個表項的域的讀寫操作;
memregs.h文件用于:定義所有寄存器的讀寫操作;
intenum.h文件用于:定義寄存器信息的查找索引、表項信息的查找索引;
allfields.h文件用于:對所有寄存器、表項的域指針進行聲明;
regs.c文件用于:保存所有寄存器信息,包括寄存器所屬描述文件的文件名、寄存器占用字數、寄存器偏移地址(描述文件基地址+寄存器偏移地址=寄存器地址)、寄存器的域個數、寄存器的域指針(可基于寄存器的域指針找到寄存器對應的域信息)、默認值。
mems.c文件用于:保存所有表項信息,包括表項的條目最小索引、條目最大索引、表項所屬描述文件的文件名、表項偏移地址、表項條目地址跳變字數(描述文件基地址+表項偏移地址+條目索引*條目地址跳變字數,即為此表項對應條目的地址)、表項的域個數、表項的域指針(可基于表項的域指針找到表項對應的域信息)。
switch_xx.c文件用于:對芯片進行RAL驅動定義,該驅動定義的內容包括芯片類型、芯片名稱、芯片對應RTL(Register-Transport-layer,寄存器傳輸層)版本、芯片對應的寄存器、芯片對應的表項以及初始化值。
fields.c文件用于:保存寄存器、表項對應的域信息,每個寄存器的域信息、表項的域信息均以結構體數組ARRAY的形式保存,且每個域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、 讀寫指示。
本發明還提供一種實現上述方法的基于自動化RAL的寄存器訪問系統,包括描述文件創建模塊、C文件轉換模塊和域信息操作模塊。
描述文件創建模塊用于:按照規定的格式,創建若干用于描述寄存器的描述文件,向C文件轉換模塊發送轉換信號。
C文件轉換模塊用于:收到轉換信號后,利用腳本工具將描述文件自動轉換成訪問所需的C文件,向域信息操作模塊發送操作信號。
其中,C文件轉換模塊包括文件獲取子模塊、文件解析子模塊和C文件生成子模塊;
文件獲取子模塊用于:指定描述文件的輸入路徑和轉換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,向文件解析子模塊發送解析信號;
文件解析子模塊用于:收到解析信號后,利用腳本工具依次讀取每個描述文件,將讀取的信息按照一定的數據結構進行保存,向C文件生成子模塊發送文件生成信號;
C文件生成子模塊用于:收到文件生成信號后,根據文件解析子模塊中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動轉換生成對應的C文件。
域信息操作模塊用于:收到操作信號后,根據需要訪問的寄存器名、表項名和域名,在轉換生成的C文件中查找到對應的寄存器的域信息、表項的域信息;根據查找到的域信息進行對應域值的讀取或改變操作。
其中,域信息操作模塊包括判斷子模塊、查找子模塊、域信息判斷子模塊和域信息處理子模塊;
判斷子模塊用于:根據需要訪問的寄存器名、表項名,判斷對應 的寄存器、表項是否存在,若是,向查找子模塊發送查找信號;否則直接返回錯誤信息,結束;
查找子模塊用于:收到查找信號后,在轉換生成的C文件中查找對應的寄存器的所有域信息、表項的所有域信息,向域信息判斷子模塊發送判斷信號;
域信息判斷子模塊用于:收到判斷信號后,根據要訪問的域名,判斷所述寄存器的所有域信息中、所述表項的所有域信息中是否分別存在與域名對應的域信息,若是,向域信息處理子模塊發送處理信號;否則返回錯誤信息,結束;
域信息處理子模塊用于:收到處理信號后,獲取對應的域信息,并根據該對應的域信息進行對應域值的讀取或改變操作。
本發明不局限于上述實施方式,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發明的保護范圍之內。本說明書中未作詳細描述的內容屬于本領域專業技術人員公知的現有技術。

關于本文
本文標題:一種基于自動化RAL的寄存器訪問方法及系統.pdf
鏈接地址:http://www.wwszu.club/p-6369453.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大