Can協議代碼源文件的生成方法和裝置的制造方法
【技術領域】
[0001]本發明涉及汽車制造技術領域,尤其涉及一種控制器局域網(Controller AreaNetwork, CAN)協議代碼源文件的生成方法和裝置。
【背景技術】
[0002]當今,汽車電子控制器在汽車中的應用越來越廣泛,已成為影響汽車性能的重要組成。汽車電子控制器程序的開發周期與質量作為整車開發周期與質量的一環,越來越受到汽車開發商的關注。
[0003]CAN協議代碼的開發在控制器底層軟件開發項目中是一項很重要的工作。這一部分的代碼規律性較強,但牽涉到的變量和文件較多,代碼量大。
[0004]現有技術中,CAN協議代碼源文件采用人工編寫及修改的方式,但是人工處理方式不僅費時費力,而且非常容易出錯。
【發明內容】
[0005]本發明旨在至少在一定程度上解決相關技術中的技術問題之一。
[0006]為此,本發明的一個目的在于提出一種CAN協議代碼源文件的生成方法,該方法可以實現CAN協議代碼源文件的自動生成。
[0007]本發明的另一個目的在于提出一種CAN協議代碼源文件的生成裝置。
[0008]為達到上述目的,本發明第一方面實施例提出的CAN協議代碼源文件的生成方法,包括:讀入預設文件,所述預設文件中包含CAN協議信息;采用預設的腳本,解析所述預設文件,生成預設類別的CAN協議代碼源文件;輸出所述CAN協議代碼源文件。
[0009]本發明第一方面實施例提出的CAN協議代碼源文件的生成方法,通過將CAN協議信息包含在預設文件中,并采用預設腳本對預設文件進行解析,可以實現CAN協議代碼源文件的自動生成,并通過自動生成提高效率和準確率,降低開發周期,降低成本。
[0010]為達到上述目的,本發明第二方面實施例提出的CAN協議代碼源文件的生成裝置,包括:讀入模塊,用于讀入預設文件,所述預設文件中包含CAN協議信息;處理模塊,用于采用預設的腳本,解析所述預設文件,生成預設類別的CAN協議代碼源文件;輸出模塊,用于輸出所述CAN協議代碼源文件。
[0011]本發明第二方面實施例提出的CAN協議代碼源文件的生成裝置,通過將CAN協議信息包含在預設文件中,并采用預設腳本對預設文件進行解析,可以實現CAN協議代碼源文件的自動生成,并通過自動生成提高效率和準確率,降低開發周期,降低成本。
[0012]本發明附加的方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發明的實踐了解到。
【附圖說明】
[0013]本發明上述的和/或附加的方面和優點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0014]圖1是本發明一實施例提出的CAN協議代碼源文件的生成方法的流程示意圖;
[0015]圖2是本發明另一實施例提出的CAN協議代碼源文件的生成方法的流程示意圖;
[0016]圖3是本發明另一實施例提出的CAN協議代碼源文件的生成方法的流程示意圖;
[0017]圖4是本發明實施例中生成var.h文件的流程示意圖;
[0018]圖5是本發明實施例中生成can_process.h文件的流程示意圖;
[0019]圖6是本發明實施例中生成can_process.c文件的流程示意圖;
[0020]圖7是本發明另一實施例提出的CAN協議代碼源文件的生成裝置的結構示意圖;
[0021]圖8是本發明另一實施例提出的CAN協議代碼源文件的生成裝置的結構示意圖。
【具體實施方式】
[0022]下面詳細描述本發明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發明,而不能理解為對本發明的限制。相反,本發明的實施例包括落入所附加權利要求書的精神和內涵范圍內的所有變化、修改和等同物。
[0023]圖1是本發明一實施例提出的CAN協議代碼源文件的生成方法的流程示意圖,該方法包括:
[0024]Sll:讀入預設文件,所述預設文件中包含CAN協議信息。
[0025]其中,預設文件可以具體是包括分隔符的文件,具體如,字符分隔值(Comma-Separated Values,CSV)文件。
[0026]CSV文件也可以稱為逗號分隔值文件,其文件以純文本形式存儲表格數據表格數據例如為數字或文本。純文本意味著該文件是一個字符序列,不含必須像二進制數字那樣被解讀的數據。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。通常,所有記錄都有完全相同的字段序列。
[0027]本實施例中,可以將CAN協議信息定義在CSV文件中。
[0028]參見圖2,包含CAN協議信息的CSV文件21可以稱為:32bit_CAN_Definit1n.CSVo
[0029]S12:采用預設的腳本,解析所述預設文件,生成預設類別的CAN協議代碼源文件。
[0030]可選的,參見圖2,預設的腳本22可以是peri腳本。
[0031]peri 一般被稱為實用報表提取語言(Practical Extract1n and ReportLanguage),其借取了 C、sed、awk、shell scripting以及很多其他程序語言的特性。其中最重要的特性是它內部集成了正則表達式的功能,以及巨大的第三方代碼庫CPAN。簡而言之,peri像C 一樣強大,像awk、sed等腳本描述語言一樣方便。
[0032]可選的,預設類別的CAN協議代碼源文件可以包括:用于變量定義的源文件,用于CAN協議解析定義的源文件,用于CAN協議解析處理的源文件,用于接口的源文件,其中,用于接口的源文本包括用于接口定義的源文件或者用于接口處理的源文件。
[0033]本實施例中,用于變量定義的源文件可以表示為:vars.h文件,用于CAN協議解析定義的源文件可以表示為:can_process.h文件,用于CAN協議解析處理的源文件可以表示為:can_process.c文件,用于接口定義的源文件可以表示為:com.h文件,用于接口處理的源文件可以表示為:com.c文件。
[0034]S13:輸出所述CAN協議代碼源文件。
[0035]參見圖2,輸出的源文件23包括:vars.h文件,can_process.h文件,can_process, c 文件,com.h 文件,和 com.c 文件。
[0036]另外,當需要修改CAN協議信息時,可以在csv文件中修改,之后再采用peri腳本運行,得到源文件。
[0037]本實施例通過將CAN協議信息包含在預設文件中,并采用預設腳本對預設文件進行解析,可以實現CAN協議代碼源文件的自動生成,并通過自動生成提高效率和準確率,降低開發周期,降低成本。
[0038]圖3是本發明另一實施例提出的CAN協議代碼源文件的生成方法的流程示意圖,本實施例以預設文件是CSV文件為例,該方法包括:
[0039]S31:讀入包含CAN協議代碼的CSV文件,對所述CSV文件中的內容進行排序,生成臨時文件。
[0040]參見圖3,該步驟可以用sort_1_spec表示。
[0041]具體的,CSV文件中的內容可以分為多行和多列,可以按照預設列中內容的值大小對每行內容進行排序,得到臨時文件,臨時文件可以表示為temp, csv文件。
[0042]預設列例如為如下字段表示的列:Column_1_Type,Column_CAN_ChanneI,Column_ID,或者,Column_CAN_Start_Bit。
[0043]例如,假設列序號從O開始,行序號從I開始,以Column_1_Type字段的內容進行升序排列時,其中,CSV文件的第O列表示Column_1_Type,則如果CSV文件的第I行的第O列的值大于第2行第O列的值,則排序后,CSV文件的第I行排序在第2行的后面。
[0044]S32:解析所述臨時文件,生成每個所述源文件對應的數組。
[0045]參見圖3,該步驟可以用creat_can_messages表示。
[0046]—個實施例中,當所述源文件是用于變量定義的源文件時,所述解析所述臨時文件,生成每個所述源文件對應的數組,包括:
[0047]從所述臨時文件中分別讀取每行內容,對應每行內容執行:
[0048]在所述臨時文件的Column_Var_Type字段的內容是can_input或者can_out時,用所述臨時文件的Column_Var_Type字段的內容作為所述源文件的類型type字段的內容,以及,用所述臨時文件的Column_Var_Name字段的內容作為所述源文件的名稱varname字段的內容;
[0049]將所述源文件的類型字段的內容以及所述源文件的名稱字段的內容作為初始數組的變量值寫入到初始數組