一種軟件封裝方法及一種汽車電子控制器的制造方法
【技術領域】
[0001]本發明涉及汽車技術領域,特別是涉及一種軟件封裝方法及相應的汽車電子控制器。
【背景技術】
[0002]汽車電子控制器出產后,需要對其進行軟件刷寫,才能使其正常工作。當軟件代碼有改動時,常規的做法是對所有代碼進行一次集成,擦除ECU內原目標文件并重新刷寫新集成的目標文件。進行軟件版本管理與維護時,需要保證所有代碼的正確性。這一系列的操作步驟太過繁瑣,任何一環節出現問題都將導致ECU失效甚至出現錯誤導致車輛存在安全隱患。
[0003]目前的版本管理以所有代碼為單位進行統一的軟件版本管理,以保證刷寫目標文件的正確性。當策略、底層驅動、底層控制邏輯等需要變更時,都需要對所有代碼進行一次全面的編譯、鏈接等集成操作。
[0004]當前的版本管理以代碼為單位進行統一的軟件版本管理,對整個代碼群進行全面集成的動作需要保證所有集成代碼的正確性,當代碼集中無需變更的代碼有帶有并不需要的修改或變化時,對于本次的變更會造成影響。
[0005]因此希望有一種軟件封裝方法來克服或至少減輕現有技術的上述缺陷中的一個或多個。
【發明內容】
[0006]動態庫(Dynamic Link Library (DLL))即動態鏈接庫。DLL是包含多代碼和數據的庫,它可被多個程序同時使用,但DLL不是可執行文件。動態連接提供了一種方法,使得程序可以調用不屬于其可執行代碼的函數,所述函數的可執行代碼位于一個動態庫中。該動態庫包含一個或多個已編譯、鏈接并與使用它們的程序進行分開存儲的函數。
[0007]模塊化設計是指程序的編寫并非開始就逐條錄入計算機語句和指令,而是用主程序、子程序、子過程等框架把軟件的主要結構和流程描述出來,并定義和調試好各個框架之間的輸入、輸出鏈接關系。逐步求精的結果是得到一系列以功能塊為單位的算法描述。以功能塊為單位進行程序設計,實現其求解算法的方法稱為模塊化。模塊化的目的是為了降低程序復雜度,使程序設計、調試和維護等操作簡單化。
[0008]FTP對應的英文為File Transfer Control Protocol,即文件傳輸協議。FTP用于主機間共享文件。FTP采用TCP生成一個虛擬連接用于控制信息,然后再生成一個單獨的TCP連接用于數據傳輸。FTP屬于網絡協議族的應用層,FTP客戶端可以給服務器發出命令來下載、上傳文件,創建或改變服務器上的目錄。
[0009]本發明的目的在于提供一種基于動態庫的軟件封裝方法來克服或至少減輕現有技術的上述缺陷中的一個或多個。
[0010]為實現上述目的,本發明提供一種軟件封裝方法,所述軟件封裝方法包括下述步驟:步驟S1:以模塊化方式設計軟件,所述軟件包括主控程序、任務配置文件和功能模塊,所述功能模塊集成為動態庫;以及步驟S2:將所述主控程序、任務配置文件和動態庫載入控制器,其中所述控制器支持CAN通訊和網口通訊。所述方法是基于動態庫的軟件封裝方法。
[0011 ] 優選地,步驟S2包括下述步驟:
[0012]步驟S21:控制器上電以及連接存儲有所述軟件的電腦與控制器;
[0013]步驟S22:對控制器進行bootloader的刷寫;
[0014]步驟S23:將所述主控程序和任務配置文件刷寫至控制器;
[0015]步驟S24:上傳所有動態庫到控制器;以及
[0016]步驟S25:重置主控程序。
[0017]優選地,在修改所述軟件時,僅編譯、集成需改動的模塊,并將之封裝成動態庫。
[0018]優選地,所述軟件封裝方法進一步包括下述步驟:
[0019]S31:控制器上電以及連接存儲有變動的動態庫的電腦與控制器;
[0020]S32:把所述變動的動態庫從電腦載入至控制器的相應目錄中;以及
[0021]S33:重置主控程序。
[0022]優選地,所述動態庫的數量為多個,每個動態庫對應于同一種類的功能模塊。
[0023]優選地,所述任務配置文件包括所有任務所屬動態庫名稱、路徑、任務的執行周期、所屬任務的順序編號。
[0024]優選地,在步驟S21中,采用BDM或JTAG連接電腦與控制器。
[0025]優選地,所述軟件是基于Iinux平臺的。
[0026]優選地,步驟SI包括下述步驟:
[0027]Sll:進行軟件模塊分析,裁剪Iinux內核,保留任務管理、資源管理、動態庫調用功能,以及在OS內創建路徑,用于存儲任務配置文件和動態庫;
[0028]S12:設計基于OS的主控程序,該主控程序獨立于芯片型號、功能模塊的變更;
[0029]S13:根據模塊分類,集成各個模塊,生成動態庫;以及
[0030]S14:編輯任務配置文件。
[0031]優選地,所述控制器為汽車電子控制器。
[0032]本發明還提供一種汽車電子控制器,所述汽車電子控制器內封裝的軟件包括主控程序、任務配置文件和動態庫,所述汽車電子控制器支持CAN通訊和網口通訊。
[0033]采用模塊化動態庫封裝的方式,本發明的方法能夠保證開發人員在同時對多個模塊進行修改的時候,依次對模塊進行更新,不會因改動中的其他模塊造成軟件發布版本的紊亂,有效的提高了運行代碼的準確性,并降低了代碼維護的成本。
【附圖說明】
[0034]圖1是主控程序運行調用圖。
[0035]圖2是動態庫封裝軟件設計步驟示意圖。
[0036]圖3是程序設計流程圖。
[0037]圖4是控制器首次刷寫流程圖。
[0038]圖5是E⑶程序變更后的刷寫流程圖。
[0039]圖6是E⑶端FTP服務器工作流程圖。
【具體實施方式】
[0040]為使本發明實施的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行更加詳細的描述。在附圖中,自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。所描述的實施例是本發明一部分實施例,而不是全部的實施例。下面通過參考附圖描述的實施例是示例性的,旨在用于解釋本發明,而不能理解為對本發明的限制。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。下面結合附圖對本發明的實施例進行詳細說明。
[0041]在本發明的描述中,需要理解的是,術語“中心”、“縱向”、“橫向”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底” “內”、“外”等指示的方位或位置關系為基于附圖所示的方位或位置關系,僅是為了便于描述本發明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構造和操作,因此不能理解為對本發明保護范圍的限制。
[0042]根據本發明的軟件封裝方法是基于動態庫的,所述軟件封裝方法包括下述步驟:步驟S1:以模塊化方式設計軟件,所述軟件包括主控程序、任務配置文件和功能模塊,所述功能模塊集成為動態庫;以及步驟S2:將所述主控程序、任務配置文件和動態庫載入控制器,其中所述控制器支持CAN通訊和網口通訊。
[0043]需要指出的是,上述的主控程序是基于操作系統(OS)的主控程序,其中含有OS。所述任務配置文件服務于主控程序,供主控程序調度或調用。動態庫的數量為多個,有利的是,每個動態庫對應于功能相同或相近的多個功能模塊。網口通訊可以用于將初始的動態庫或變更后的動態庫載入控制器中。CAN通訊一方面用于控制器與其他車載電器的通訊,另一方面,還可以用于刷寫基于操作系統(OS)的主控程序。
[0044]采用模塊化動態庫封裝的方式,能夠保證開發人員在同時對多個模塊進行修改的時候,依次對模塊進行更新,不會因改動中的其他模塊造成軟件發布版本的紊亂,有效的提高了運行代碼的準確性,并降低了代碼維護的成本。
[0045]在所述軟件封裝方法中,步驟S2包括下述步驟:
[0046]步驟S21:控制器上電以及連接存儲有所述軟件的電腦與控制器;
[0047]步驟S22:對控制器進行bootloader的刷寫;
[0048]步驟S23:將所述主控程序和任務配置文件刷寫至控制器;
[0049]步驟S24:上傳所有動態庫到控制器;以及
[0050]步驟S25:重置主控程序。
[0051]有利的是,在修改所述軟件時,僅編譯、集成需改動的模塊,并將之封裝成動態庫。
[0052]從而,所述軟件封裝方法進一步包括下述步驟:S31:控制器上電以及連接存儲有變動的動態庫的電腦與控制器;S32:把所述變動的動態庫從電腦載入至控制器的相應目錄中;以及S33:重置主控程序。由此,容易地實現功能模塊的變更。
[0053]優選地,所述動態庫的數量為多個,每個動態庫對應于同一種類的功能模塊。
[0054]可以理解的是,所述任務配置文件包括所有任務所屬動態庫名稱、路徑、任務的執行周期、所屬任務的順序編號。
[0055]優選地,在步驟S21中,采用BDM或JTAG連接電腦與控制器。
[0056]優選地,所述軟件是基于Iinux平臺的。有利的是,步驟SI包括下述步驟:
[0057]Sll:進行軟件模塊分析,裁剪Iinux內核,保留任務管理、資源管理、動態庫調用功能,以及在OS內創建路徑,用于存儲任務配置文件和動態庫;
[0058]S12:設計基于OS的主控程序,該主控程序獨立于芯片型號、功能模塊的變更;
[0059]S13:根據模塊分類,集成各個模塊,生成動態庫;以及
[0060]S14:編輯任務配置文件。
[0061]優選地,所述控制器為汽車電子控制器。
[0062]可以理解的是,本發明還提供與上述方法相對應的汽車電子控制器。所述汽車電子控制器中的軟件以上述方法進行封裝。具體地,所述汽車電子控制器內封裝的軟件包括主控程序、任務配置文件和動態庫,所述汽車電子控制器支持CAN通訊和網口通訊。
[0063]采用模塊化動態庫封裝的方式,能夠保證開發人員在同時對多個模塊進行修改的時候,依次對模塊進行更新,不會因改動中的其他模塊造成軟件發布版本的紊亂,有效的提高了運行代碼的準確性,并降低了代碼維護的成本。
[0064]圖1是主控程序運行調用圖。主控程序main根據需要調用各模塊對應的動態庫,MODEL 1.so、M0DE