1.一種用戶可配置的自動生成a2l文件的裝置,包括:
用戶配置界面輸入模塊,通過人機界面對所要生成的a2l文件進行通用性預(yù)定義配置,并將配置項賦值給對應(yīng)的程序數(shù)據(jù)接口,包括:
源a2l文件路徑輸入單元,輸入matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l文件)的路徑;
地址映射文件路徑輸入單元,輸入編譯器生成的存儲器數(shù)據(jù)的地址映射文件的路徑;
標定量數(shù)據(jù)段名及ROM地址單元,根據(jù)不同編譯器環(huán)境和控制器進行配置,在a2l文件中標識工作頁和引用頁的數(shù)據(jù)段定義;
測量量數(shù)據(jù)段名單元,根據(jù)不同編譯器環(huán)境進行配置,用于在程序中將指針指向字符串指定的數(shù)據(jù)段位置的頭;
自動生成器模塊,根據(jù)用戶配置界面中配置的控制器平臺數(shù)據(jù)段特征信息配置生成a2l的模板,自動生成器模塊進一步包括:
用戶配置接口調(diào)用及實例化單元,獲取用戶配置路徑下的地址映射文件,根據(jù)用戶指定的標簽名及起始地址提取出其中的標定量和測量量數(shù)據(jù),并將數(shù)據(jù)以字符串形式保存在程序緩存中,用于之后的變量名和地址的檢索;
數(shù)據(jù)類型結(jié)構(gòu)體數(shù)組實例化單元,定義并實例化結(jié)構(gòu)體,根據(jù)各類結(jié)構(gòu)體在matlab生成的a2l文件中定義變量屬性的格式定義結(jié)構(gòu)體,并對結(jié)構(gòu)體以結(jié)構(gòu)體數(shù)組的形式進行實例化;
地址映射文件各數(shù)據(jù)段數(shù)據(jù)獲取單元,獲取用戶指定路徑下的matlab生成的源a2l文件,用ASAP2協(xié)議中定義的關(guān)鍵字對其數(shù)據(jù)進行檢索并分配給對應(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文件的標準格式循環(huán)寫入已經(jīng)預(yù)便攜的a2l文件的指定段定義中,并將文件輸出至用戶指定的路徑下。
2.根據(jù)權(quán)利要求1所述的用戶可配置的自動生成a2l文件的裝置,其特征在于,數(shù)據(jù)類型結(jié)構(gòu)體數(shù)組實例化單元定義并實例化的結(jié)構(gòu)體包括:標定量結(jié)構(gòu)體、測量量結(jié)構(gòu)體、Y軸標定量結(jié)構(gòu)體以及X軸標定量結(jié)構(gòu)體。
3.根據(jù)權(quán)利要求1所述的用戶可配置的自動生成a2l文件的裝置,其特征在于,數(shù)據(jù)段信息查找單元中判斷結(jié)構(gòu)體變量的屬性,若為標定量則根據(jù)結(jié)構(gòu)體變量在其RAM中的地址和標定數(shù)據(jù)段在flash/ROM中的映射地址計算出地址的偏移量,并將其映射地址減去其偏移量后將其寫入,若為測量量則不需要進行地址換算后直接寫入。
4.一種用戶可配置的自動生成a2l文件的方法,包括:
步驟1:通過用戶配置界面對所要生成的a2l文件進行通用性預(yù)定義配置,并將配置項賦值給對應(yīng)的程序數(shù)據(jù)接口;
步驟2:自動生成器根據(jù)用戶輸入的地址映射文件標簽對指定路徑下的地址映射文件以流文件的形式讀取并進行字符串處理和讀寫,以檢索和獲取需要用到的數(shù)據(jù)段信息;
步驟3:自動生成器對用戶指定路徑下的matlab生成的a2l文件進行流文件讀取并進行字符串處理檢索,其中的關(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)體中的變量名成員進行檢索,檢索完成后再將其對應(yīng)地址或相關(guān)信息填充入對應(yīng)屬性的結(jié)構(gòu)體變量成員中;
步驟5:為新a2l文件寫入頭、尾模板,將結(jié)構(gòu)體變量的成員按照a2l文件的標準格式循環(huán)寫入已經(jīng)預(yù)便攜的a2l文件的指定段定義中,并將文件輸出至用戶指定的路徑下。
5.根據(jù)權(quán)利要求4所述的用戶可配置的自動生成a2l文件的方法,其特征在于,在步驟1中,通過用戶配置界面獲取matlab生成的應(yīng)用層變量數(shù)據(jù)庫文件(.a2l文件)以及編譯器生成的存儲器數(shù)據(jù)的地址映射文件的路徑,同時獲取用戶配置的地址映射文件中的標簽名作為接口。
6.根據(jù)權(quán)利要求4所述的用戶可配置的自動生成a2l文件的方法,其特征在于,步驟3中的結(jié)構(gòu)體包括:標定量結(jié)構(gòu)體、測量量結(jié)構(gòu)體、Y軸標定量結(jié)構(gòu)體以及X軸標定量結(jié)構(gòu)體。
7.根據(jù)權(quán)利要求4所述的用戶可配置的自動生成a2l文件的方法,其特征在于,步驟4中進一步包括:判斷結(jié)構(gòu)體變量的屬性,若為標定量則根據(jù)結(jié)構(gòu)體變量在其RAM中的地址和標定數(shù)據(jù)段在flash/ROM中的映射地址計算出地址的偏移量,并將其映射地址減去其偏移量后將其寫入,若為測量量則不需要進行地址換算后直接寫入。