本發(fā)明涉及汽車控制器技術(shù)領(lǐng)域,尤其涉及一種可根據(jù)各控制器芯片平臺及集成編譯環(huán)境的特征差異性進(jìn)行用戶可配置模式來實(shí)現(xiàn)a2l變量數(shù)據(jù)庫文件的自動生成的方法和裝置。
背景技術(shù):
a2l文件是標(biāo)定數(shù)據(jù)庫文件,它包括標(biāo)定變量,測量量的類型、地址、物理轉(zhuǎn)化方式以及單位等等信息,用于在INCA或CANape等標(biāo)定工具中建立標(biāo)定Database前需要導(dǎo)入的一個(gè)變量數(shù)據(jù)庫文件,其遵循的是ASAP2協(xié)議。對于各廠商的控制器平臺以及何其對應(yīng)的編譯環(huán)境來說,其生成的地址映射文件(.map)也各有不同,所以在整車廠的控制器開發(fā)工程中,需要根據(jù)不同控制器平臺使用各廠商自己開發(fā)的生成工具。而且在產(chǎn)品開發(fā)過程中也需要頻繁的更改控制器中的應(yīng)用層軟件以及底層軟件,所以也需要頻繁的使用此工具來生成a2l文件以供標(biāo)定工具來創(chuàng)建變量數(shù)據(jù)庫,有時(shí)也需要根據(jù)實(shí)際標(biāo)定工作需求做一些對于a2l文件的修改,由于其中涉及到眾多變量,導(dǎo)致了更改的過程成為一個(gè)極為機(jī)械化和勞動量巨大的工作。所以當(dāng)前a2l生成方式的主要缺陷在于:a2l文件的可靠性低,可拓展性差,移植性差。
技術(shù)實(shí)現(xiàn)要素:
以下給出一個(gè)或多個(gè)方面的簡要概述以提供對這些方面的基本理解。此概述不是所有構(gòu)想到的方面的詳盡綜覽,并且既非旨在指認(rèn)出所有方面的關(guān)鍵性或決定性要素亦非試圖界定任何或所有方面的范圍。其唯一的目的是要以簡化形式給出一個(gè)或多個(gè)方面的一些概念以為稍后給出的更加詳細(xì)的描述之序。
本發(fā)明的目的在于解決上述問題,提供了一種用戶可配置的自動生成a2l文件的裝置和方法,解決了配置標(biāo)定數(shù)據(jù)庫過程中產(chǎn)生的問題。
本發(fā)明的技術(shù)方案為:本發(fā)明揭示了一種用戶可配置的自動生成a2l文件的裝置,包括:
用戶配置界面輸入模塊,通過人機(jī)界面對所要生成的a2l文件進(jìn)行通用性預(yù)定義配置,并將配置項(xiàng)賦值給對應(yīng)的程序數(shù)據(jù)接口,包括:
源a2l文件路徑輸入單元,輸入matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l文件)的路徑;
地址映射文件路徑輸入單元,輸入編譯器生成的存儲器數(shù)據(jù)的地址映射文件的路徑;
標(biāo)定量數(shù)據(jù)段名及ROM地址單元,根據(jù)不同編譯器環(huán)境和控制器進(jìn)行配置,在a2l文件中標(biāo)識工作頁和引用頁的數(shù)據(jù)段定義;
測量量數(shù)據(jù)段名單元,根據(jù)不同編譯器環(huán)境進(jìn)行配置,用于在程序中將指針指向字符串指定的數(shù)據(jù)段位置的頭;
自動生成器模塊,根據(jù)用戶配置界面中配置的控制器平臺數(shù)據(jù)段特征信息配置生成a2l的模板,自動生成器模塊進(jìn)一步包括:
用戶配置接口調(diào)用及實(shí)例化單元,獲取用戶配置路徑下的地址映射文件,根據(jù)用戶指定的標(biāo)簽名及起始地址提取出其中的標(biāo)定量和測量量數(shù)據(jù),并將數(shù)據(jù)以字符串形式保存在程序緩存中,用于之后的變量名和地址的檢索;
數(shù)據(jù)類型結(jié)構(gòu)體數(shù)組實(shí)例化單元,定義并實(shí)例化結(jié)構(gòu)體,根據(jù)各類結(jié)構(gòu)體在matlab生成的a2l文件中定義變量屬性的格式定義結(jié)構(gòu)體,并對結(jié)構(gòu)體以結(jié)構(gòu)體數(shù)組的形式進(jìn)行實(shí)例化;
地址映射文件各數(shù)據(jù)段數(shù)據(jù)獲取單元,獲取用戶指定路徑下的matlab生成的源a2l文件,用ASAP2協(xié)議中定義的關(guān)鍵字對其數(shù)據(jù)進(jìn)行檢索并分配給對應(yīng)的四類結(jié)構(gòu)體,再按行將數(shù)據(jù)填入其對應(yīng)結(jié)構(gòu)體的成員中;
a2l文件解析單元,用已經(jīng)分配好的結(jié)構(gòu)體變量中的變量名成員到地址映射文件解析出來的數(shù)據(jù)段中檢索對應(yīng)的變量名并讀取其地址;
數(shù)據(jù)段信息查找單元,將對應(yīng)數(shù)據(jù)段中解析出來的變量對應(yīng)地址寫入其對應(yīng)的結(jié)構(gòu)體變量的地址成員中;
a2l文件生成單元,為新a2l文件寫入頭、尾模板,將結(jié)構(gòu)體變量的成員按照a2l文件的標(biāo)準(zhǔn)格式循環(huán)寫入已經(jīng)預(yù)便攜的a2l文件的指定段定義中,并將文件輸出至用戶指定的路徑下。
根據(jù)本發(fā)明的用戶可配置的自動生成a2l文件的裝置的一實(shí)施例,數(shù)據(jù)類型結(jié)構(gòu)體數(shù)組實(shí)例化單元定義并實(shí)例化的結(jié)構(gòu)體包括:標(biāo)定量結(jié)構(gòu)體、測量量結(jié)構(gòu)體、Y軸標(biāo)定量結(jié)構(gòu)體以及X軸標(biāo)定量結(jié)構(gòu)體。
根據(jù)本發(fā)明的用戶可配置的自動生成a2l文件的裝置的一實(shí)施例,數(shù)據(jù)段信息查找單元中判斷結(jié)構(gòu)體變量的屬性,若為標(biāo)定量則根據(jù)結(jié)構(gòu)體變量在其RAM中的地址和標(biāo)定數(shù)據(jù)段在flash/ROM中的映射地址計(jì)算出地址的偏移量,并將其映射地址減去其偏移量后將其寫入,若為測量量則不需要進(jìn)行地址換算后直接寫入。
本發(fā)明還揭示了一種用戶可配置的自動生成a2l文件的方法,包括:
步驟1:通過用戶配置界面對所要生成的a2l文件進(jìn)行通用性預(yù)定義配置,并將配置項(xiàng)賦值給對應(yīng)的程序數(shù)據(jù)接口;
步驟2:自動生成器根據(jù)用戶輸入的地址映射文件標(biāo)簽對指定路徑下的地址映射文件以流文件的形式讀取并進(jìn)行字符串處理和讀寫,以檢索和獲取需要用到的數(shù)據(jù)段信息;
步驟3:自動生成器對用戶指定路徑下的matlab生成的a2l文件進(jìn)行流文件讀取并進(jìn)行字符串處理檢索,其中的關(guān)鍵字依據(jù)ASAP2協(xié)議,之后將所有的信息按照結(jié)構(gòu)體的定義形式分配到對應(yīng)類型的結(jié)構(gòu)體數(shù)組中的指定元素的對應(yīng)結(jié)構(gòu)體成員中;
步驟4:自動生成器通過對結(jié)構(gòu)體成員的處理,檢索出內(nèi)容缺省的部分,并從在對應(yīng)的地址映射文件中讀取出的數(shù)據(jù)段中以結(jié)構(gòu)體中的變量名成員進(jìn)行檢索,檢索完成后再將其對應(yīng)地址或相關(guān)信息填充入對應(yīng)屬性的結(jié)構(gòu)體變量成員中;
步驟5:為新a2l文件寫入頭、尾模板,將結(jié)構(gòu)體變量的成員按照a2l文件的標(biāo)準(zhǔn)格式循環(huán)寫入已經(jīng)預(yù)便攜的a2l文件的指定段定義中,并將文件輸出至用戶指定的路徑下。
根據(jù)本發(fā)明的用戶可配置的自動生成a2l文件的方法的一實(shí)施例,在步驟1中,通過用戶配置界面獲取matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l文件)以 及編譯器生成的存儲器數(shù)據(jù)的地址映射文件的路徑,同時(shí)獲取用戶配置的地址映射文件中的標(biāo)簽名作為接口。
根據(jù)本發(fā)明的用戶可配置的自動生成a2l文件的方法的一實(shí)施例,步驟3中的結(jié)構(gòu)體包括:標(biāo)定量結(jié)構(gòu)體、測量量結(jié)構(gòu)體、Y軸標(biāo)定量結(jié)構(gòu)體以及X軸標(biāo)定量結(jié)構(gòu)體。
根據(jù)本發(fā)明的用戶可配置的自動生成a2l文件的方法的一實(shí)施例,步驟4中進(jìn)一步包括:判斷結(jié)構(gòu)體變量的屬性,若為標(biāo)定量則根據(jù)結(jié)構(gòu)體變量在其RAM中的地址和標(biāo)定數(shù)據(jù)段在flash/ROM中的映射地址計(jì)算出地址的偏移量,并將其映射地址減去其偏移量后將其寫入,若為測量量則不需要進(jìn)行地址換算后直接寫入。
本發(fā)明相較于現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明提供了一個(gè)人機(jī)可配置界面對所要生成的a2l文件進(jìn)行通用性預(yù)定義配置,并且在軟件裝置運(yùn)行的過程中將配置項(xiàng)賦值給對應(yīng)的程序數(shù)據(jù)接口,在運(yùn)行過程中,軟件會自動調(diào)用這些程序接口,以達(dá)到用戶配置預(yù)期的效果。本發(fā)明相較于傳統(tǒng)方法的優(yōu)勢在于可以在不同控制器平臺及集成編譯環(huán)境中根據(jù)其特征對裝置進(jìn)行用戶自定義配置(特征包括:地址映射文件中各數(shù)據(jù)段的標(biāo)簽名、各數(shù)據(jù)段的起始地址、daq List長度、各內(nèi)存數(shù)據(jù)段長度),很大程度提高了生成裝置的通用性,并且降低了頻繁更換生成軟件的風(fēng)險(xiǎn)。
附圖說明
圖1示出了本發(fā)明的用戶可配置的自動生成a2l文件的裝置的較佳實(shí)施例的原理圖。
圖2示出了本發(fā)明的裝置實(shí)施例的系統(tǒng)運(yùn)行圖。
圖3示出了本發(fā)明的裝置實(shí)施例的用戶配置界面輸入模塊的圖形化界面示意圖。
圖4示出了本發(fā)明的裝置實(shí)施例的自動生成器模塊的功能實(shí)現(xiàn)框圖。
圖5示出了本發(fā)明的裝置實(shí)施例的自動生成器模塊的程序流程圖。
圖6示出了本發(fā)明的用戶可配置的自動生成a2l文件的方法的較佳實(shí)施例的流程圖。
具體實(shí)施方式
在結(jié)合以下附圖閱讀本公開的實(shí)施例的詳細(xì)描述之后,能夠更好地理解本發(fā)明的上述特征和優(yōu)點(diǎn)。在附圖中,各組件不一定是按比例繪制,并且具有類似的相關(guān)特性或特征的組件可能具有相同或相近的附圖標(biāo)記。
圖1示出了本發(fā)明的用戶可配置的自動生成a2l文件的裝置的較佳實(shí)施例的原理。請參見圖1,本實(shí)施例的用戶可配置的自動生成a2l文件的裝置包括:用戶配置界面輸入模塊1和自動生成器模塊2。用戶配置界面輸入模塊1通過人機(jī)界面對所要生成的a2l文件進(jìn)行通用性預(yù)定義配置,并將配置項(xiàng)賦值給對應(yīng)的程序數(shù)據(jù)接口。自動生成器模塊2根據(jù)用戶配置界面中配置的控制器平臺數(shù)據(jù)段特征信息配置生成a2l的模板。
用戶配置界面輸入模塊1包括:源a2l文件路徑輸入單元11、地址映射文件路徑輸入單元12、標(biāo)定量數(shù)據(jù)段名及ROM地址單元13、測量量數(shù)據(jù)段名單元14。
同時(shí)參見圖2,源a2l文件路徑輸入單元11輸入matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l文件)的路徑。地址映射文件路徑輸入單元12輸入編譯器生成的存儲器數(shù)據(jù)的地址映射文件的路徑。導(dǎo)入地址映射文件和源a2l文件的路徑,用于自動生成器模塊構(gòu)造其流文件讀取的實(shí)例。標(biāo)定量數(shù)據(jù)段名及ROM地址單元13根據(jù)不同編譯器環(huán)境和控制器進(jìn)行配置,在a2l文件中標(biāo)識工作頁(working page)和引用頁(reference page)的數(shù)據(jù)段(segment)定義。測量量數(shù)據(jù)段名單元14根據(jù)不同編譯器環(huán)境進(jìn)行配置,用于在程序中將指針指向字符串指定的數(shù)據(jù)段位置的頭。
用戶在生成a2l文件前,可以手動配置一些特征選項(xiàng)以保證輸出的a2l文件可以在不同的控制器平臺上運(yùn)行。通過用戶配置界面獲取matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l)以及編譯器生成的存儲器數(shù)據(jù)地址映射文件(.map)的路徑,同時(shí)獲取用戶配置的地址映射文件中的標(biāo)簽名作為接口,這些條件將作為自動生成器模塊的輸入,并且以字符串的數(shù)據(jù)形式保存在程序緩存中。其中地址映射文 件(.map)路徑與matlab生成的變量數(shù)據(jù)庫文件(.a2l)路徑為必選配置項(xiàng),自動生成器需根據(jù)路徑訪問對應(yīng)的文件并對文件進(jìn)行流文件的讀寫操作。其中測量量數(shù)據(jù)段名和地址與標(biāo)定量數(shù)據(jù)段名和地址為可選配置項(xiàng),若用戶配置項(xiàng)為空,則生成器會根據(jù)默認(rèn)配置進(jìn)行生成(默認(rèn)配置為POWERPC的mpc5604單片機(jī)的鏈接文件定義)。用戶配置界面在windows系統(tǒng)下的操作界面如圖3所示,當(dāng)用戶配置完畢后,單擊Generate按鍵進(jìn)行自動變量數(shù)據(jù)庫文件(.a2l)生成。其中各可選配置項(xiàng)中的數(shù)據(jù)段標(biāo)簽及起始地址均在工程源文件中的lcf鏈接文件中定義,用戶可根據(jù)不同控制器平臺對于此文件中數(shù)據(jù)段的定以來修改這些可配置項(xiàng)。
自動生成器模塊2包括:用戶配置接口調(diào)用及實(shí)例化單元21、數(shù)據(jù)類型結(jié)構(gòu)體數(shù)組實(shí)例化單元22、地址映射文件各數(shù)據(jù)段數(shù)據(jù)獲取單元23、a2l文件解析單元24、數(shù)據(jù)段信息查找單元25、a2l文件生成單元26。
用戶配置接口調(diào)用及實(shí)例化單元21獲取用戶配置路徑下的地址映射文件(即編譯器編譯生成的.map文件),根據(jù)用戶指定的標(biāo)簽名及起始地址提取出其中的標(biāo)定量和測量量數(shù)據(jù),并將數(shù)據(jù)以字符串形式保存在程序緩存中,用于之后的變量名和地址的檢索。
數(shù)據(jù)類型結(jié)構(gòu)體數(shù)組實(shí)例化單元22定義并實(shí)例化結(jié)構(gòu)體,根據(jù)各類結(jié)構(gòu)體在matlab生成的a2l文件中定義變量屬性的格式定義結(jié)構(gòu)體,并對結(jié)構(gòu)體以結(jié)構(gòu)體數(shù)組的形式進(jìn)行實(shí)例化。這里的結(jié)構(gòu)體包括:標(biāo)定量結(jié)構(gòu)體、測量量結(jié)構(gòu)體、Y軸標(biāo)定量結(jié)構(gòu)體以及X軸標(biāo)定量結(jié)構(gòu)體。
地址映射文件各數(shù)據(jù)段數(shù)據(jù)獲取單元23獲取用戶指定路徑下的matlab生成的源a2l文件(應(yīng)用層變量數(shù)據(jù)庫文件),用ASAP2協(xié)議中定義的關(guān)鍵字對其數(shù)據(jù)進(jìn)行檢索并分配給對應(yīng)的四類結(jié)構(gòu)體,再按行將數(shù)據(jù)填入其對應(yīng)結(jié)構(gòu)體的成員中。
a2l文件解析單元24用已經(jīng)分配好的結(jié)構(gòu)體變量中的變量名成員到地址映射文件解析出來的數(shù)據(jù)段中檢索對應(yīng)的變量名并讀取其地址。
數(shù)據(jù)段信息查找單元25將對應(yīng)數(shù)據(jù)段中解析出來的變量對應(yīng)地址寫入其對應(yīng)的結(jié)構(gòu)體變量的地址成員中。其中數(shù)據(jù)段信息查找單元25判斷結(jié)構(gòu)體變量的屬性,若為標(biāo)定量則根據(jù)結(jié)構(gòu)體變量在其RAM中的地址和標(biāo)定數(shù)據(jù)段在flash/ROM 中的映射地址計(jì)算出地址的偏移量,并將其映射地址減去其偏移量后將其寫入,若為測量量則不需要進(jìn)行地址換算后直接寫入。
a2l文件生成單元26為新a2l文件寫入頭、尾模板,將結(jié)構(gòu)體變量的成員按照a2l文件的標(biāo)準(zhǔn)格式循環(huán)寫入已經(jīng)預(yù)便攜的a2l文件的指定段定義中,并將文件輸出至用戶指定的路徑下默認(rèn)情況下與.map文件所在路徑一致)。其中頭、尾模板包含:宏定義、數(shù)據(jù)段名與地址定義、daq list定義、計(jì)算方法定義。其中內(nèi)存空間段與控制器相關(guān)的參數(shù)都可以從之前的用戶配置信息以及地址映射文件中獲取。
請同時(shí)參見圖4和圖5,自動生成器模塊2執(zhí)行如下的步驟。
根據(jù)用戶輸入的地址映射文件標(biāo)簽對指定路徑下的地址映射文件以流文件的形式讀取并進(jìn)行字符串處理和讀寫,以檢索和獲取需要用到的數(shù)據(jù)段信息。
對用戶指定路徑下的matlab生成的應(yīng)用程序變量數(shù)據(jù)庫文件(.a2l)進(jìn)行流文件讀取并進(jìn)行字符串處理檢索,其主要的關(guān)鍵字依據(jù)為ASAP2協(xié)議,之后會將所有的信息按照結(jié)構(gòu)體的定義形式分配到對應(yīng)類型的結(jié)構(gòu)體數(shù)組中的指定元素中的對應(yīng)結(jié)構(gòu)體成員中去。
通過對結(jié)構(gòu)體各成員進(jìn)行處理,檢索出其內(nèi)容缺省的部分,并到對應(yīng)的地址映射文件中讀取出來的數(shù)據(jù)段中以變量名即結(jié)構(gòu)體中的變量名成員進(jìn)行檢索,檢索完成后再將其對應(yīng)地址或相關(guān)信息填充入對應(yīng)屬性的結(jié)構(gòu)體變量成員中去。
在檢索并寫入地址變量時(shí)應(yīng)注意如果是標(biāo)定量則應(yīng)寫入其RAM對應(yīng)映射到其對應(yīng)Flash/ROM的地址。這里地址需要做轉(zhuǎn)換,先將標(biāo)定量的RAM地址讀取出來,再減去其標(biāo)定量數(shù)據(jù)段在RAM中的基地址即得到此標(biāo)定量在變定量數(shù)據(jù)段中對應(yīng)的地址偏移量,將此偏移量加上標(biāo)定量數(shù)據(jù)段雜ROM中的基地址即得到此標(biāo)定量在實(shí)際ROM/Flash中的地址。
借助于使用結(jié)構(gòu)體數(shù)組及其結(jié)構(gòu)體成員的數(shù)據(jù)管理方式,可以更有效的管理及分配各類型變量的參數(shù),使得該軟件更易于維護(hù)和響應(yīng)用戶的新的需求,例如對于計(jì)算方法COMPUTE METHOD、變量的上下限值Upper Limit Lower Limit、變量別名Long Identifier等描述變量的參數(shù)。
在結(jié)構(gòu)體數(shù)組分配過程中主要按照四個(gè)大類來分配:測量量結(jié)構(gòu)體、y軸數(shù)組標(biāo)定量結(jié)構(gòu)體、x軸數(shù)組標(biāo)定量結(jié)構(gòu)體、普通標(biāo)定量結(jié)構(gòu)體。
每個(gè)結(jié)構(gòu)體中的成員變量都是根據(jù)matlab生成的數(shù)據(jù)源文件進(jìn)行定義的,在生成器中繼承了其數(shù)據(jù)描述結(jié)構(gòu),比起傳統(tǒng)的a2l文件的數(shù)據(jù)屬性描述結(jié)構(gòu)其優(yōu)勢在于結(jié)構(gòu)合理并添加注釋可讀性強(qiáng),可維護(hù)性強(qiáng),具有通用的標(biāo)識符方便進(jìn)行批量的數(shù)據(jù)處理。
圖6示出了本發(fā)明的用戶可配置的自動生成a2l文件的方法的實(shí)施例的流程。請參見圖6,本實(shí)施例的方法的詳細(xì)步驟如下。
步驟S1:通過用戶配置界面對所要生成的a2l文件進(jìn)行通用性預(yù)定義配置,并將配置項(xiàng)賦值給對應(yīng)的程序數(shù)據(jù)接口。
通過用戶配置界面獲取matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l文件)以及編譯器生成的存儲器數(shù)據(jù)的地址映射文件的路徑,同時(shí)獲取用戶配置的地址映射文件中的標(biāo)簽名作為接口。
步驟S2:自動生成器根據(jù)用戶輸入的地址映射文件標(biāo)簽對指定路徑下的地址映射文件以流文件的形式讀取并進(jìn)行字符串處理和讀寫,以檢索和獲取需要用到的數(shù)據(jù)段信息。
步驟S3:自動生成器對用戶指定路徑下的matlab生成的a2l文件進(jìn)行流文件讀取并進(jìn)行字符串處理檢索,其中的關(guān)鍵字依據(jù)ASAP2協(xié)議,之后將所有的信息按照結(jié)構(gòu)體的定義形式分配到對應(yīng)類型的結(jié)構(gòu)體數(shù)組中的指定元素的對應(yīng)結(jié)構(gòu)體成員中。其中結(jié)構(gòu)體包括:標(biāo)定量結(jié)構(gòu)體、測量量結(jié)構(gòu)體、Y軸標(biāo)定量結(jié)構(gòu)體以及X軸標(biāo)定量結(jié)構(gòu)體。
步驟S4:自動生成器通過對結(jié)構(gòu)體成員的處理,檢索出內(nèi)容缺省的部分,并從在對應(yīng)的地址映射文件中讀取出的數(shù)據(jù)段中以結(jié)構(gòu)體中的變量名成員進(jìn)行檢索,檢索完成后再將其對應(yīng)地址或相關(guān)信息填充入對應(yīng)屬性的結(jié)構(gòu)體變量成員中。
本步驟進(jìn)一步包括:判斷結(jié)構(gòu)體變量的屬性,若為標(biāo)定量則根據(jù)結(jié)構(gòu)體變量在其RAM中的地址和標(biāo)定數(shù)據(jù)段在flash/ROM中的映射地址計(jì)算出地址的偏移量,并將其映射地址減去其偏移量后將其寫入,若為測量量則不需要進(jìn)行地址換算后直接寫入。
步驟S5:為新a2l文件寫入頭、尾模板,將結(jié)構(gòu)體變量的成員按照a2l文件的標(biāo)準(zhǔn)格式循環(huán)寫入已經(jīng)預(yù)便攜的a2l文件的指定段定義中,并將文件輸出至用戶指定的路徑下。
請同時(shí)參見圖4和圖5,本實(shí)施例的方法如下。
用戶在生成變量數(shù)據(jù)庫文件(.a2l)前,可以手動配置一些特征選項(xiàng)以保證輸出的a2l文件可以在不同的控制器平臺上運(yùn)行。其中地址映射文件(.map)路徑與matlab生成的變量數(shù)據(jù)庫文件(.a2l)路徑為必選配置項(xiàng),自動生成器模塊需根據(jù)路徑訪問對應(yīng)的文件并對文件進(jìn)行流文件的讀寫操作。其中測量量數(shù)據(jù)段名和地址與標(biāo)定量數(shù)據(jù)段名和地址為可選配置項(xiàng),若用戶配置項(xiàng)為空,則生成器會根據(jù)默認(rèn)配置進(jìn)行生成(默認(rèn)配置為POWERPC的mpc5604單片機(jī)的鏈接文件定義)。
用戶配置界面在Windows系統(tǒng)下的操作界面如圖3所示,當(dāng)用戶配置完畢后,單擊Generate鍵進(jìn)行自動變量數(shù)據(jù)庫文件(.a2l)生成。其中各可選配置項(xiàng)中的數(shù)據(jù)段標(biāo)簽及起始地址均在工程源文件中的lcf鏈接文件中定義,用戶可根據(jù)不同控制器平臺對于此文件中數(shù)據(jù)段的定以來修改這些可配置項(xiàng)。
當(dāng)用戶在配置界面中單擊Generate鍵后,裝置會啟動自動生成器模塊來執(zhí)行以下步驟。
調(diào)用用戶配置界面中的各數(shù)據(jù)段接口的數(shù)據(jù)—標(biāo)定量數(shù)據(jù)段名、測量量數(shù)據(jù)段名、標(biāo)定量內(nèi)存起始地址、標(biāo)定量存儲器起始地址,將其以字符串的格式保存于緩存中,用于之后程序進(jìn)行檢索。這些數(shù)據(jù)的聲明需為public,便于用戶在文本框中配置的內(nèi)容可對其進(jìn)行進(jìn)行修改,其初值均為適用于POWERPC 5604B的默認(rèn)值,若文本框中配置項(xiàng)為空,則程序按默認(rèn)值運(yùn)行。
定義四種結(jié)構(gòu)體類型:標(biāo)定量結(jié)構(gòu)體類型、測量量結(jié)構(gòu)體類型、數(shù)組型X軸標(biāo)定量結(jié)構(gòu)體類型、數(shù)組型Y軸標(biāo)定量結(jié)構(gòu)體類型。定義規(guī)則按照matlab生成的變量數(shù)據(jù)庫文件(.a2l)對變量的定義的格式來定義。按照結(jié)構(gòu)體的一般定義順序測量量結(jié)構(gòu)體的成員有:變量名、長id、類型、轉(zhuǎn)換方式、分辨率、精度、上限值、下限值、內(nèi)存地址。標(biāo)定量結(jié)構(gòu)體的成員有:變量名、長id、標(biāo)定量類型、內(nèi)存地址、記錄格式、轉(zhuǎn)換方式、上限值、下限值。
訪問用戶定義的文件路徑構(gòu)造地址映射文件(.map)和變量數(shù)據(jù)庫文件(.a2l)的創(chuàng)建流文件和讀流文件的實(shí)例。
地址映射文件處理,將讀入的.map文件字符串按照用戶配置的標(biāo)簽名進(jìn)行檢索并獲取標(biāo)定量數(shù)據(jù)段信息及測量量數(shù)據(jù)段信息,數(shù)據(jù)段信息的內(nèi)容包括:變量名、數(shù)據(jù)類型、內(nèi)存起始地址、所占空間、所屬源文件等新消息。通過截取字符串的方法獲取關(guān)鍵數(shù)據(jù)段信息,并按照其原始的文件格式存儲。
Matlab生成的源變量數(shù)據(jù)庫文件(.a2l)處理,先將讀入的文件按照定義關(guān)鍵字進(jìn)行分塊按每個(gè)/begin到/end分為一個(gè)數(shù)據(jù)定義塊,/begin CHARACTERISTIC到/end CHARACTERISTIC中的內(nèi)容為標(biāo)定量,其中標(biāo)定量又分為兩種種類型:一般標(biāo)定量與數(shù)組型Y軸標(biāo)定量,若在此數(shù)據(jù)塊中檢索到/begin AXIS_DESCR關(guān)鍵字,則判斷此數(shù)據(jù)塊為Y軸標(biāo)定量,其余為一般標(biāo)定量。另外測量量數(shù)據(jù)塊的關(guān)鍵字標(biāo)簽為/begin MEASUREMENT和/end MEASUREMENT。數(shù)組型X軸標(biāo)定量數(shù)據(jù)塊的關(guān)鍵字標(biāo)簽為/begin AXIS_PTS和/end AXIS_PTS。根據(jù)各數(shù)據(jù)塊的類型為其分配對應(yīng)的結(jié)構(gòu)體數(shù)組中的元素。
分配的到與其數(shù)據(jù)塊類型對應(yīng)的結(jié)構(gòu)體數(shù)組元素之后,需要將數(shù)據(jù)塊中的內(nèi)容按照其屬性類型填入對應(yīng)的結(jié)構(gòu)體數(shù)組元素的成員中。一般格式為按照換行符作為分隔符將數(shù)據(jù)塊按換行符進(jìn)行分割,并且按照循環(huán)分割的先后次序?qū)⒚枋龃俗兞康膶傩灾饌€(gè)寫入其成員中去。
填入結(jié)構(gòu)體成員后還需要對結(jié)構(gòu)體成員中的內(nèi)容進(jìn)行字符串處理,由于matlab生成的版本中可用數(shù)據(jù)前都會添加上注釋,故在此需要作字符串的處理并將最后可直接使用的數(shù)據(jù)重新寫入其所在類型的結(jié)構(gòu)體成員中。在此處因?yàn)閙atlab生成的變量數(shù)據(jù)庫文件(.a2l)都遵循列對齊的格式。只需要在此處做一個(gè)統(tǒng)一的刪去從索引0到40個(gè)字符的內(nèi)容,其剩余的字符即被作為有效數(shù)據(jù)寫入結(jié)構(gòu)體成員中。
將已經(jīng)寫入數(shù)據(jù)的結(jié)構(gòu)體成員用其變量名成員作為索引的關(guān)鍵字,到地址映射文件所獲取的對應(yīng)類型數(shù)據(jù)段中檢索其對應(yīng)的地址信息,并截取地址信息后寫入對應(yīng)結(jié)構(gòu)體成員中,截取地址的操作也可根據(jù)地址映射文件統(tǒng)一的格式對其字符串進(jìn)行取子字符串函數(shù)。
此時(shí)若變量為標(biāo)定量,還需要對地址進(jìn)行處理,將得到的其在內(nèi)存中的地址減去內(nèi)存中的起始地址得到此變量在此數(shù)據(jù)段中的偏移量,并且將此偏移量加上標(biāo)定段在FLASH/ROM中的地址,即為此變量在FLASH/ROM中的地址。將轉(zhuǎn)換好的地址寫入結(jié)構(gòu)體中的地址成員中。
在用戶指定的地址映射文件路徑下構(gòu)造一個(gè)新的文件實(shí)例和一個(gè)寫流文件的實(shí)例,寫入新變量數(shù)據(jù)庫文件(a2l)的頭和尾模板,其中包括:宏定義、數(shù)據(jù)段名與地址定義、daq list定義、計(jì)算方法定義。其中內(nèi)存空間段與控制器相關(guān)的參數(shù)生成器都會自動從的用戶配置信息及地址映射文件中獲取。
遍歷各結(jié)構(gòu)體數(shù)組及成員,寫入新生成的變量數(shù)據(jù)庫文件(.a2l),寫入的位置為檢索關(guān)鍵字/end MODULE的索引前。
最后需要添加對所有標(biāo)定量變量名的聲明,在文件的末尾即關(guān)鍵詞標(biāo)簽/begin REF_CHARACTERISTIC到/end REF_CHARACTERISTIC之間插入所有標(biāo)定量結(jié)構(gòu)體的變量名成員。
析構(gòu)所有實(shí)例釋放內(nèi)存,并調(diào)用生成完畢信息窗口提示用戶變量數(shù)據(jù)庫文件生成完畢。此時(shí)文件將被保存在用戶指定的地址映射文件(.map)下,即一般在工程原文件的bin目錄下方便用戶的使用和管理。
本裝置在目前一般的專用型變量數(shù)據(jù)庫文件(.a2l)文件生成工具(只針對單一控制器平臺)的基礎(chǔ)上,對各平臺差異性和特殊性作了總結(jié)和抽象,開放了用戶可配置選項(xiàng)作為借口,可以支持在不同平臺生成a2l文件。增加了工具的通用性和移植性,降低了頻繁更換工具風(fēng)險(xiǎn)。同時(shí)自動生成工具節(jié)約了大量的工作量和出錯率,提高了生成文件的可靠性和一致性。
使用結(jié)構(gòu)體數(shù)組的形式管理數(shù)據(jù),使得程序更易于維護(hù)和管理。由于變量數(shù)據(jù)庫文件(.a2l)在標(biāo)定中通常需要對一些參數(shù)進(jìn)行更改,方便對于變量的屬性的修改和更新。
盡管為使解釋簡單化將上述方法圖示并描述為一系列動作,但是應(yīng)理解并領(lǐng)會,這些方法不受動作的次序所限,因?yàn)楦鶕?jù)一個(gè)或多個(gè)實(shí)施例,一些動作可按不同次序發(fā)生和/或與來自本文中圖示和描述或本文中未圖示和描述但本領(lǐng)域技術(shù)人員可以理解的其他動作并發(fā)地發(fā)生。
本領(lǐng)域技術(shù)人員將進(jìn)一步領(lǐng)會,結(jié)合本文中所公開的實(shí)施例來描述的各種解說性邏輯板塊、模塊、電路、和算法步驟可實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件、或這兩者的組合。為清楚地解說硬件與軟件的這一可互換性,各種解說性組件、框、模塊、電路、和步驟在上面是以其功能性的形式作一般化描述的。此類功能性是被實(shí)現(xiàn)為硬件還是軟件取決于具體應(yīng)用和施加于整體系統(tǒng)的設(shè)計(jì)約束。技術(shù)人員對于每種特定應(yīng)用可用不同的方式來實(shí)現(xiàn)所描述的功能性,但這樣的實(shí)現(xiàn)決策不應(yīng)被解讀成導(dǎo)致脫離了本發(fā)明的范圍。
結(jié)合本文所公開的實(shí)施例描述的各種解說性邏輯板塊、模塊、和電路可用通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯器件、分立的門或晶體管邏輯、分立的硬件組件、或其設(shè)計(jì)成執(zhí)行本文所描述功能的任何組合來實(shí)現(xiàn)或執(zhí)行。通用處理器可以是微處理器,但在替換方案中,該處理器可以是任何常規(guī)的處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器還可以被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如DSP與微處理器的組合、多個(gè)微處理器、與DSP核心協(xié)作的一個(gè)或多個(gè)微處理器、或任何其他此類配置。
結(jié)合本文中公開的實(shí)施例描述的方法或算法的步驟可直接在硬件中、在由處理器執(zhí)行的軟件模塊中、或在這兩者的組合中體現(xiàn)。軟件模塊可駐留在RAM存儲器、閃存、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可移動盤、CD-ROM、或本領(lǐng)域中所知的任何其他形式的存儲介質(zhì)中。示例性存儲介質(zhì)耦合到處理器以使得該處理器能從/向該存儲介質(zhì)讀取和寫入信息。在替換方案中,存儲介質(zhì)可以被整合到處理器。處理器和存儲介質(zhì)可駐留在ASIC中。ASIC可駐留在用戶終端中。在替換方案中,處理器和存儲介質(zhì)可作為分立組件駐留在用戶終端中。
在一個(gè)或多個(gè)示例性實(shí)施例中,所描述的功能可在硬件、軟件、固件或其任何組合中實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn)為計(jì)算機(jī)程序產(chǎn)品,則各功能可以作為一條或更多條指令或代碼存儲在計(jì)算機(jī)可讀介質(zhì)上或藉其進(jìn)行傳送。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)兩者,其包括促成計(jì)算機(jī)程序從一地向另一地轉(zhuǎn)移的任何介質(zhì)。存儲介質(zhì)可以是能被計(jì)算機(jī)訪問的任何可用介質(zhì)。作為示例而非限定,這樣的計(jì)算機(jī)可讀介質(zhì)可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或能被用來攜帶或存儲指令或數(shù)據(jù)結(jié)構(gòu)形 式的合意程序代碼且能被計(jì)算機(jī)訪問的任何其它介質(zhì)。任何連接也被正當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。例如,如果軟件是使用同軸電纜、光纖電纜、雙絞線、數(shù)字訂戶線(DSL)、或諸如紅外、無線電、以及微波之類的無線技術(shù)從web網(wǎng)站、服務(wù)器、或其它遠(yuǎn)程源傳送而來,則該同軸電纜、光纖電纜、雙絞線、DSL、或諸如紅外、無線電、以及微波之類的無線技術(shù)就被包括在介質(zhì)的定義之中。如本文中所使用的盤(disk)和碟(disc)包括壓縮碟(CD)、激光碟、光碟、數(shù)字多用碟(DVD)、軟盤和藍(lán)光碟,其中盤(disk)往往以磁的方式再現(xiàn)數(shù)據(jù),而碟(disc)用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
提供對本公開的先前描述是為使得本領(lǐng)域任何技術(shù)人員皆能夠制作或使用本公開。對本公開的各種修改對本領(lǐng)域技術(shù)人員來說都將是顯而易見的,且本文中所定義的普適原理可被應(yīng)用到其他變體而不會脫離本公開的精神或范圍。由此,本公開并非旨在被限定于本文中所描述的示例和設(shè)計(jì),而是應(yīng)被授予與本文中所公開的原理和新穎性特征相一致的最廣范圍。