本發(fā)明涉及計(jì)算機(jī),尤其涉及一種代碼生成方法、裝置、電子設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、在汽車開放系統(tǒng)架構(gòu)(automotive?open?system?architecture,autosar)下,運(yùn)行時(shí)環(huán)境(run-time?environment,rte)作為連接應(yīng)用層(software?component)和基礎(chǔ)軟件軟件層(basic?software,bsw)的中間層,主要負(fù)責(zé)實(shí)現(xiàn)應(yīng)用層的通信以及調(diào)度。rte模塊具有邏輯復(fù)雜、代碼量大等特點(diǎn),因此,rte模塊的代碼生成器的開發(fā)是autosar所有模塊的代碼生成器中功能最多、最復(fù)雜的,也是所有autosar技術(shù)供應(yīng)商的核心技術(shù)。
2、目前autosar技術(shù)供應(yīng)商開發(fā)的rte代碼生成器通常采用eclipse為底層框架,采用artop進(jìn)行autosar數(shù)據(jù)處理,采用xtend為代碼模板,以上所有技術(shù)棧均以java語言為基礎(chǔ),但java語言天然存在被反編譯的缺點(diǎn),因此,autosar技術(shù)供應(yīng)商提供rte代碼生成器時(shí),存在rte核心代碼被泄露的風(fēng)險(xiǎn)。
3、目前常見的防反編譯手段有代碼混淆、加密等,但這些方法開發(fā)工作量巨大,極大增加了代碼生成器的開發(fā)難度;若采用免費(fèi)開源的第三方庫提供的防反編譯方法,又存在執(zhí)行效率低、防反編譯層度不高等問題。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問題,本發(fā)明公開了一種代碼生成方法、裝置、電子設(shè)備及存儲介質(zhì),將與軟件組件的通信和/或調(diào)度相關(guān)的數(shù)據(jù)處理函數(shù)封裝在動(dòng)態(tài)鏈接庫中,通過調(diào)用動(dòng)態(tài)鏈接庫生成接口信息,進(jìn)一步基于接口信息生成用于實(shí)現(xiàn)軟件組件的通信和/或調(diào)度的代碼,可以防止代碼被反編譯。
2、為了達(dá)到上述目的,本發(fā)明提供了一種代碼生成方法,應(yīng)用于目標(biāo)電子控制器,所述目標(biāo)電子控制器包括第一軟件組件,所述方法包括:
3、獲取目標(biāo)配置參數(shù);所述目標(biāo)配置參數(shù)包括所述第一軟件組件與第二軟件組件之間的通信配置參數(shù)和/或所述第一軟件組件的調(diào)度配置參數(shù);
4、調(diào)用預(yù)設(shè)動(dòng)態(tài)鏈接庫中的預(yù)設(shè)數(shù)據(jù)處理函數(shù),以使得所述預(yù)設(shè)動(dòng)態(tài)鏈接庫基于所述預(yù)設(shè)數(shù)據(jù)處理函數(shù)對所述目標(biāo)配置參數(shù)進(jìn)行處理,得到目標(biāo)接口信息;所述目標(biāo)接口信息表征所述第一軟件組件對所述第二軟件組件的訪問信息和/或所述目標(biāo)電子控制器對所述第一軟件組件的訪問信息;
5、基于所述目標(biāo)接口信息,生成與所述目標(biāo)電子控制器對應(yīng)的目標(biāo)代碼;所述目標(biāo)代碼用于實(shí)現(xiàn)所述第一軟件組件與所述第二軟件組件之間的通信和/或所述第一軟件組件的調(diào)度。
6、在一個(gè)可選的實(shí)施例中,所述預(yù)設(shè)數(shù)據(jù)處理函數(shù)包括拼接函數(shù)以及序列化函數(shù),所述調(diào)用預(yù)設(shè)動(dòng)態(tài)鏈接庫中的預(yù)設(shè)數(shù)據(jù)處理函數(shù),以使得所述預(yù)設(shè)動(dòng)態(tài)鏈接庫基于所述預(yù)設(shè)數(shù)據(jù)處理函數(shù)對所述目標(biāo)配置參數(shù)進(jìn)行處理,得到目標(biāo)接口信息,包括:
7、將所述目標(biāo)配置參數(shù)發(fā)送至所述預(yù)設(shè)動(dòng)態(tài)鏈接庫,以使得所述預(yù)設(shè)動(dòng)態(tài)鏈接庫基于所述拼接函數(shù)對所述目標(biāo)配置參數(shù)進(jìn)行拼接,得到所述目標(biāo)接口信息,以及基于所述序列化函數(shù)對所述目標(biāo)接口信息進(jìn)行序列化處理,得到序列化接口信息,將所述序列化接口信息保存在預(yù)設(shè)路徑。
8、在一個(gè)可選的實(shí)施例中,所述將所述目標(biāo)配置參數(shù)發(fā)送至所述預(yù)設(shè)動(dòng)態(tài)鏈接庫,以使得所述預(yù)設(shè)動(dòng)態(tài)鏈接庫基于所述拼接函數(shù)對所述目標(biāo)配置參數(shù)進(jìn)行拼接,得到所述目標(biāo)接口信息,以及基于所述序列化函數(shù)對所述目標(biāo)接口信息進(jìn)行序列化處理,得到序列化接口信息,將所述序列化接口信息保存在預(yù)設(shè)路徑之后,所述方法還包括:
9、從所述預(yù)設(shè)路徑獲取所述序列化接口信息;
10、對所述序列化接口信息進(jìn)行反序列化處理,將所述序列化接口信息恢復(fù)為所述目標(biāo)接口信息。
11、在一個(gè)可選的實(shí)施例中,所述基于所述目標(biāo)接口信息,生成與所述目標(biāo)電子控制器對應(yīng)的目標(biāo)代碼,包括:
12、基于所述目標(biāo)接口信息確定目標(biāo)代碼模版;
13、基于所述目標(biāo)接口信息以及所述目標(biāo)代碼模版,生成與所述目標(biāo)電子控制器對應(yīng)的目標(biāo)代碼。
14、在一個(gè)可選的實(shí)施例中,所述基于所述目標(biāo)接口信息確定目標(biāo)代碼模版,包括:
15、基于所述目標(biāo)接口信息確定目標(biāo)加密模板;
16、調(diào)用所述預(yù)設(shè)動(dòng)態(tài)鏈接庫,獲取所述目標(biāo)加密模板對應(yīng)的目標(biāo)密鑰;
17、基于所述目標(biāo)密鑰對所述目標(biāo)加密模板進(jìn)行解密處理,得到所述目標(biāo)代碼模版。
18、在一個(gè)可選的實(shí)施例中,所述基于所述目標(biāo)接口信息以及所述目標(biāo)代碼模版,生成與所述目標(biāo)電子控制器對應(yīng)的目標(biāo)代碼,包括:
19、加載所述目標(biāo)代碼模版,得到與所述目標(biāo)接口信息對應(yīng)的目標(biāo)代碼框架信息;
20、對所述目標(biāo)接口信息以及所述目標(biāo)代碼框架信息進(jìn)行整合處理,生成所述目標(biāo)代碼。
21、在一個(gè)可選的實(shí)施例中,所述加載所述目標(biāo)代碼模版,得到與所述目標(biāo)接口信息對應(yīng)的目標(biāo)代碼框架信息之后,所述方法還包括:
22、在所述目標(biāo)代碼模版加載完成后,刪除所述目標(biāo)代碼模版。
23、本發(fā)明還提供了一種代碼生成裝置,應(yīng)用于目標(biāo)電子控制器,所述目標(biāo)電子控制器包括第一軟件組件,所述裝置包括:
24、數(shù)據(jù)獲取模塊,用于獲取目標(biāo)配置參數(shù);所述目標(biāo)配置參數(shù)包括所述第一軟件組件與第二軟件組件之間的通信配置參數(shù)和/或所述第一軟件組件的調(diào)度配置參數(shù);
25、動(dòng)態(tài)鏈接庫調(diào)用模塊,用于調(diào)用預(yù)設(shè)動(dòng)態(tài)鏈接庫中的預(yù)設(shè)數(shù)據(jù)處理函數(shù),以使得所述預(yù)設(shè)動(dòng)態(tài)鏈接庫基于所述預(yù)設(shè)數(shù)據(jù)處理函數(shù)對所述目標(biāo)配置參數(shù)進(jìn)行處理,得到目標(biāo)接口信息;所述目標(biāo)接口信息表征所述第一軟件組件對所述第二軟件組件的訪問信息和/或所述目標(biāo)電子控制器對所述第一軟件組件的訪問信息;
26、代碼生成模塊,用于基于所述目標(biāo)接口信息,生成與所述目標(biāo)電子控制器對應(yīng)的目標(biāo)代碼;所述目標(biāo)代碼用于實(shí)現(xiàn)所述第一軟件組件與所述第二軟件組件之間的通信和/或所述第一軟件組件的調(diào)度。
27、本發(fā)明還提供了一種電子設(shè)備,所述設(shè)備包括處理器和存儲器,所述存儲器中存儲有至少一條指令或至少一段程序,所述至少一條指令或所述至少一段程序由所述處理器加載并執(zhí)行,以實(shí)現(xiàn)如上述所述的代碼生成方法。
28、本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲介質(zhì),所述存儲介質(zhì)中存儲有至少一條指令或至少一段程序,所述至少一條指令或所述至少一段程序由處理器加載并執(zhí)行,以實(shí)現(xiàn)如上述所述的代碼生成方法。
29、實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
30、本發(fā)明公開的代碼生成方法,將與軟件組件的通信和/或調(diào)度相關(guān)的數(shù)據(jù)處理函數(shù)封裝在動(dòng)態(tài)鏈接庫中,通過調(diào)用動(dòng)態(tài)鏈接庫生成接口信息,進(jìn)一步基于接口信息生成用于實(shí)現(xiàn)軟件組件的通信和/或調(diào)度的目標(biāo)代碼,由于動(dòng)態(tài)鏈接庫中的數(shù)據(jù)處理函數(shù)具有防反編譯的特點(diǎn),因此通過調(diào)用動(dòng)態(tài)鏈接庫生成的接口信息可以防止被反編譯,從而以接口信息作為代碼內(nèi)容而生成的目標(biāo)代碼也可以實(shí)現(xiàn)防反編譯的效果,此外,由于不需要引入復(fù)雜的代碼防反編譯方法,也不會影響目標(biāo)代碼的生成效率,可以保證軟件組件的通信和/或調(diào)度正常進(jìn)行。