本發明涉及集成芯片編程的開發方法技術領域,特別涉及一種用于集成芯片的可視化編程方法。
背景技術:
由于汽車電子控制系統由多個ecu組成,各ecu之間功能獨立開發過程獨立,而彼此之間又存在聯合工作和相互制約。然而目前嵌入式軟件開發主要是手寫代碼,工作量大、出錯率高、規范性和可讀性差,從而導致開發成本和周期在不斷的增加。因此,為了保證各ecu的主控芯片編程的高效性和穩定性應規避以上問題,應開發一種更先進的集成芯片編程方法。
ecu的軟件部分總體上可以分為三層,即應用層、rte層和微控制器層。應用層主要功能是對微控制器的實時數據進行處理,rte層是微控制器層與應用層的接口層。微控制器層是對微控制器各個資源當前狀態、資源信息的采集和輸出的控制層。mcal是微控制器抽象層的縮寫,是細化微控制器層的控制層,他與微控制器寄存器直接相關。只有正確的編寫mcal的配置才能實現硬件資源的正確控制從而實現整車的正常運行。因此mcal的編程方法,是根據用戶的需求對微控制器資源的寄存器進行的軟件的操作。操作過程包括對寄存器的讀、寫和復位。
本發明提供了一種利用面向對象設計的理念,編程者無需關注mcal的具體的寄存器組成和控制方法而直接按照對mcal的需求進行功能選擇的編程方法,從而減少編寫代碼量、降低出錯率并增加了代碼的規范性。
技術實現要素:
為了解決背景技術中所述問題,本發明提供一種用于集成芯片的可視化編程方法,該方法采用面向對象設計的理念,實現了快捷、規范的編程方式,而且出錯率為零。
為了達到上述目的,本發明采用以下技術方案實現:
一種用于集成芯片的可視化編程方法,采用面向對象的設計理念,在對某一款芯片進行編程時采用人機對話的方式讓編程者只需要選擇芯片所要使用的功能,無需面對微控制器的寄存器;在該方法中集成芯片的編程部分使用預編譯語句進行功能和寄存器的讀寫數據的選擇,適用于任何嵌入式軟件開發項目;具體包括如下步驟:
步驟一、設定上位機mcal功能配置界面,用戶在上位機的可視化界面中對芯片功能進行配置;
步驟二、對芯片的mcal功能進行分類,按mcal功能設定不同的mcal功能模塊界面,根據步驟一中用戶設定的mcal功能確定mcal需要配置的功能模塊界面,在此界面中進行與本功能相關的具體信息配置;
步驟三、查找寄存器列表,根據mcal的所選功能和相關信息遍歷所有寄存器以確定該功能的寄存器列表,每一個硬件資源的功能或工作狀態都需要正確地配置一個或多個寄存器來實現,在這一階段按照已選擇的功能查找并確定與該功能相關的寄存器,并將這些寄存器保存到寄存器列表中;
步驟四、確定寄存器配置,在這階段中,需要對寄存器列表中所有的寄存器配置進行判斷并選擇正確的寄存器配置,每一個寄存器的配置都保存在該寄存器的配置文件中;
步驟五、配置寄存器,配置寄存器,即完成對寄存器的讀寫操作,在這一階段,已經根據用戶的功能選擇確定了相關寄存器,并確定了這些寄存器的最終操作值和操作方法;在這一階段,根據硬件本身的控制流程和硬件資源的操作方法,將所有存在于寄存器列表中的寄存器分別寫入其對應的已確定的配置數據;
步驟六、根據已配置的寄存器自動生成程序代碼。
步驟三具體過程為:首先遍歷每一個寄存器并進行判斷,根據編程者已選擇的功能判斷該寄存器是否與該功能相關,如果相關,那么將該寄存器保存到寄存器列表中,否則返回,繼續查找寄存器直到遍歷所有寄存器結束,以確定完整的寄存器列表;換言之,每一個硬件資源的每一種功能每一種工作狀態都對應唯一的寄存器列表,而寄存器列表所包含的寄存器必須要完整,缺一不可。
步驟四具體過程為:寄存器的配置文件由芯片供應商提供,主要以預編譯語句的方式進行編寫,并以標準庫的形式引入到可視化編程軟件中,每一條預編譯語句的判斷條件都是根據該寄存器的不同配置實現這個硬件資源的不同功能和不同工作模式的唯一表現形式,系統從第一個預編譯條件開始進行判斷,通過判斷條件來確定該條件是否與所要實現的功能配置相匹配,如果匹配系統會使用該配置作為寄存器的操作值,否則系統進入下一個判斷條件,直到找到與該功能相符的配置數據,最終確定寄存器的控制方案。
步驟五中考慮不同硬件的讀寫時序和操作流程不盡相同的因素。
與現有技術相比,本發明的有益效果是:
1、代碼手寫工作量減少,提高了工作效率。
2、降低了代碼編寫的出錯率,出錯率為零。
3、規范了代碼編寫格式和寄存器的配置方法。
4、編程者只需要確定硬件資源的功能,無需關注硬件資源的具體使用方法和其對應的寄存器配置方法。
5、該編程方法只與用戶的不同配置相關,與編程者自身無任何關聯,增加了程序的可讀性。
附圖說明
圖1為本發明的一種用于集成芯片的可視化編程方法的流程圖;
圖2為本發明的具體實施例的功能配置界面圖;
圖3為本發明的具體實施例的can功能模塊界面圖。
具體實施方式
以下結合附圖對本發明提供的具體實施方式進行詳細說明。
如圖1所示,一種用于集成芯片的可視化編程方法,采用面向對象的設計理念,在對某一款芯片進行編程時采用人機對話的方式讓編程者只需要選擇芯片所要使用的功能,無需面對微控制器的寄存器;在該方法中集成芯片的編程部分使用預編譯語句進行功能和寄存器的讀寫數據的選擇,適用于任何嵌入式軟件開發項目;具體包括如下步驟:
步驟一、設定上位機mcal功能配置界面,用戶在上位機的可視化界面中對芯片功能進行配置;
步驟二、對芯片的mcal功能進行分類,按mcal功能設定不同的mcal功能模塊界面,根據步驟一中用戶設定的mcal功能確定mcal需要配置的功能模塊界面,在此界面中進行與本功能相關的具體信息配置;
步驟三、查找寄存器列表,根據mcal的所選功能和相關信息遍歷所有寄存器以確定該功能的寄存器列表,每一個硬件資源的功能或工作狀態都需要正確地配置一個或多個寄存器來實現,在這一階段按照已選擇的功能查找并確定與該功能相關的寄存器,并將這些寄存器保存到寄存器列表中;
步驟四、確定寄存器配置,在這階段中,需要對寄存器列表中所有的寄存器配置進行判斷并選擇正確的寄存器配置,每一個寄存器的配置都保存在該寄存器的配置文件中;
步驟五、配置寄存器,配置寄存器,即完成對寄存器的讀寫操作,在這一階段,已經根據用戶的功能選擇確定了相關寄存器,并確定了這些寄存器的最終操作值和操作方法;在這一階段,根據硬件本身的控制流程和硬件資源的操作方法,將所有存在于寄存器列表中的寄存器分別寫入其對應的已確定的配置數據;
步驟六、根據已配置的寄存器自動生成程序代碼。
步驟三具體過程為:首先遍歷每一個寄存器并進行判斷,根據編程者已選擇的功能判斷該寄存器是否與該功能相關,如果相關,那么將該寄存器保存到寄存器列表中,否則返回,繼續查找寄存器直到遍歷所有寄存器結束,以確定完整的寄存器列表;換言之,每一個硬件資源的每一種功能每一種工作狀態都對應唯一的寄存器列表,而寄存器列表所包含的寄存器必須要完整,缺一不可。
步驟四具體過程為:寄存器的配置文件由芯片供應商提供,主要以預編譯語句的方式進行編寫,并以標準庫的形式引入到可視化編程軟件中,每一條預編譯語句的判斷條件都是根據該寄存器的不同配置實現這個硬件資源的不同功能和不同工作模式的唯一表現形式,系統從第一個預編譯條件開始進行判斷,通過判斷條件來確定該條件是否與所要實現的功能配置相匹配,如果匹配系統會使用該配置作為寄存器的操作值,否則系統進入下一個判斷條件,直到找到與該功能相符的配置數據,最終確定寄存器的控制方案。
步驟五中考慮不同硬件的讀寫時序和操作流程不盡相同的因素。
具體實施例:
目標:配置can通訊,實現標準幀,波特率500k,引腳使用p3.12和p3.13。
1、如圖2所示,首先使用上位機進入can配置界面,在這里根據我們的實際需求進行勾選和配置。
2、點擊“確定”按鈕后即確認當前模塊為需要mcal進行編輯的模塊,如圖3所示。
3、上位機內部開始搜索列表,確定哪些寄存器需要被配置。具體方法為上位機的每一個控件對應幾個固定的寄存器。
4、當需要配置的寄存器列表確定后,根據上位機控件中的數據配置,查找需要寫入寄存器的值。
比如波特率配置為500k,那么檢索到的需要配置的寄存器為can_nbtr0和can_nfcr0,再根據其數值為500000,對每個寄存器配值列表進行檢索,當查到對應的寄存器配值為0x0000164f和0x00000000后判定符合該配值(數據存儲結構為一個二維表),則該寄存器配值結束。
5、生成對應的代碼:
can_nbtr0.reg=0x0000164f;
can_nfcr0.reg=0x00000000;
本發明方法代碼手寫工作量減少,提高了工作效率;降低了代碼編寫的出錯率。規范了代碼編寫格式和寄存器的配置方法,編程者只需要確定硬件資源的功能,無需關注硬件資源的具體使用方法和其對應的寄存器配置方法。該編程方法只與用戶的不同配置相關,與編程者自身無任何關聯,增加了程序的可讀性。
以上實施例在以本發明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發明的保護范圍不限于上述的實施例。上述實施例中所用方法如無特別說明均為常規方法。