欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于汽車ECU程序自動刷寫測試的方法和裝置與流程

文檔序號:12719000閱讀:671來源:國知局
一種用于汽車ECU程序自動刷寫測試的方法和裝置與流程

本發(fā)明涉及汽車電子測試領域,具體涉及一種用于汽車ECU程序自動刷寫的方法。



背景技術(shù):

汽車電子控制單元(ECU,Electronic Control Unit)程序是ECU的核心,在開發(fā)階段由于不同車型和運行模式的不同需求、ECU標定等原因經(jīng)常需要對ECU程序進行修改,這種修改的結(jié)果是生成多個不同的程序版本。這些不同的程序版本將被重新刷寫到ECU中去,以驗證實際效果。

在使用Vector公司的vFlash軟件進行ECU程序刷寫時,用戶通常是手動打開一個個刷寫文件,然后點擊按鈕進行程序刷寫。在進行ECU程序版本切換操作測試時,由于程序版本較多,所以需要進行大量的手動操作,不僅效率低,而且非常耗費人力,數(shù)據(jù)記錄也不方便。

本發(fā)明提出的自動刷寫方法根據(jù)用戶提供的待刷寫文件,生成包括所有ECU程序版本切換操作的測試序列,然后通過調(diào)用Vector vFlash提供的接口,按照測試序列進行ECU程序刷寫,并在刷寫前后通過刷寫文件的Custom Action功能進行ECU診斷測試,記錄刷寫和診斷結(jié)果,生成Excel格式的刷寫報告。并且,當ECU程序的刷寫出現(xiàn)錯誤時,調(diào)整測試序列,以保證所有版本切換的測試都被包括。利用此方法及執(zhí)行該方法的裝置能夠?qū)崿F(xiàn)自動測試,操作簡單,能夠大幅度減輕測試人員的工作強度。



技術(shù)實現(xiàn)要素:

為實現(xiàn)上述目的,本發(fā)明提供了一種基于Vector vFlash軟件接口的汽車ECU程序自動刷寫測試的方法和執(zhí)行所述方法的裝置。根據(jù)用戶提供的ECU程序刷寫文件,自動生成包括有ECU程序版本切換的測試序列,然后通過調(diào)用Vector vFlash提供的接口,按照測試序列進行ECU程序刷寫,記錄刷寫結(jié)果,可以生成Excel格式的刷寫報告。

該發(fā)明適用于具有Vector vFlash軟件和相關(guān)接口硬件的汽車ECU程序多個版本切換的自動刷寫測試。本發(fā)明提供如下方案:

一種汽車ECU軟件程序自動刷寫測試方法,其特征在于包括以下步驟:101.獲取文件數(shù)量并根據(jù)文件數(shù)量(N)創(chuàng)建一個初始測試序列,該測試序列包括所有的程序版本切換,測試序列的元素個數(shù)為N×(N-1)+1;102.從測試序列中獲取需要刷寫的文件序號;103.判斷序號是否合格,若序號不合格則測試循環(huán)結(jié)束;若序號合格則執(zhí)行步驟104;104.初始化刷寫接口,再加載步驟102中獲取的文件序號所對應的刷寫文件,初始化ECU診斷線程結(jié)束標志;105.啟動ECU診斷步驟;106.開始進行刷寫操作;107.等待刷寫操作結(jié)束;108.刷寫操作結(jié)束后,等待步驟105中的ECU診斷線程結(jié)束時產(chǎn)生的診斷結(jié)束標志;109.當出現(xiàn)診斷結(jié)束標志時,卸載刷寫文件并關(guān)閉刷寫接口;110.存儲刷寫操作結(jié)果;例如可以將刷寫操作相關(guān)數(shù)據(jù)、診斷數(shù)據(jù)和刷寫結(jié)果存儲到Excel文件中;111.判斷刷寫操作是否成功,如果刷寫操作失敗,進行修改測試流程的操作,然后執(zhí)行步驟112;如果刷寫操作成功,執(zhí)行步驟112;112.判斷一個測試循環(huán)是否結(jié)束,如果未結(jié)束,則返回步驟102,進行下一個刷寫操作。

步驟101中包括以下子步驟:1011.獲取刷寫文件個數(shù)N;1012.初始化測試序列,該測試序列為空,不包含任何元素;1013.初始化數(shù)字a為0;1014.判斷a是否小于N-1,如果小于則繼續(xù)下一步,否則跳至步驟1019;1015.初始化數(shù)字b,使其等于a+1;1016.判斷b是否小于N,如果小于,則執(zhí)行下一步,否則將a自身遞增加1,返回至步驟1014;1017.在測試序列尾部依次添加元素a、b;1018.數(shù)字b遞增加1,返回至步驟1016;1019.在測試序列尾部添加元素0。

步驟104中包括以下子步驟:1051.初始化診斷數(shù)據(jù);1052.檢測是否正在進行刷寫前準備操作;1053.如果一定時間內(nèi)未檢測到Vector vFlash軟件的刷寫前準備工作,則跳轉(zhuǎn)至第步驟1055;若檢測到,則執(zhí)行步驟1054;1054.向ECU發(fā)送診斷命令并獲取返回的診斷數(shù)據(jù);1055.等待程序刷寫結(jié)束;1056.檢測到程序刷寫結(jié)束后,開始檢測是否正在進行刷寫后執(zhí)行操作;1057.如果一定時間內(nèi)未檢測到刷寫后執(zhí)行工作,則跳轉(zhuǎn)至步驟1059;若檢測到,則執(zhí)行步驟1058;1058.向ECU發(fā)送診斷命令并獲取返回的診斷數(shù)據(jù);1059.置位診斷結(jié)束標志,退出。

其中步驟(11)中的進行修改測試流程的操作步驟包括:設當前程序文件序號為所述a,目標程序文件序號為所述b,判斷當前刷寫順序;1)如果當前刷寫順序為序列中最后一個,則不修改測試序列;2)如果執(zhí)行刷寫前的ECU程序是初始程序,此時所述a為-1,且b小于N-1,則令c等于b加1,將c插入到未執(zhí)行的測試序列之前,再將未執(zhí)行的測試序列所有元素加1對N取余,測試序列修改完畢;3)如果執(zhí)行刷寫前的ECU程序是初始程序,且從初始程序向所有程序進行刷寫均失敗,則插入測試序號-1到測試序列中,測試序列修改完畢;4)如果測試序列中最后一個元素為序號為所述b的所述目標程序,則查找當前目標程序b之后是否存在元素a,若存在,則將其之后的所有元素移動到未執(zhí)行的測試序列的最前面;5)如果任何其他程序到目標程序b的刷寫均已刷寫失敗,則刪除其后的任何從目標程序b出發(fā),經(jīng)過一個元素再返回目標程序b的元素段,并刪除連續(xù)重復以及連續(xù)的已完成刷寫的元素;6)如果以上條件均不滿足,則插入一個元素到未測試的序列元素之前,該元素到目標程序b的刷寫工作未執(zhí)行或已執(zhí)行成功,然后在其后再插入目標元素b。

本發(fā)明還提供一種用于執(zhí)行如上所述汽車ECU軟件程序自動刷寫測試方法的自動刷寫測試裝置,其中包括:測試序列生成模塊,所述測試序列生成模塊用于獲取用戶提供的刷寫文件數(shù)量,并創(chuàng)建測試序列;所述測試序列生成模塊還用于在刷寫失敗時修改測試序列;測試序號判斷模塊,所述測試序號判斷模塊用于從測試序列獲取需要刷寫的文件序號,并判斷所述文件序號是否合格;ECU診斷模塊,所述ECU診斷模塊用于進行ECU診斷測試,通過確定是否在執(zhí)行刷寫前的準備工作或是否正在進行刷寫后執(zhí)行操作來向ECU發(fā)送診斷命令并獲取診斷結(jié)果;刷寫模塊,所述刷寫模塊根據(jù)測試序號判斷結(jié)果初始化刷寫接口,并根據(jù)ECU診斷模塊提供的診斷結(jié)束標志關(guān)閉刷寫接口,所述刷寫模塊還用于刷寫操作。

附圖說明

圖1是根據(jù)本發(fā)明一個實施方式的用于汽車ECU程序自動刷寫測試的示意圖;

圖2是根據(jù)本發(fā)明一個實施方式的刷寫測試方法的流程圖;

圖3是根據(jù)本發(fā)明一個實施方式的初始測試序列生流程圖;

圖4是根據(jù)本發(fā)明一個實施方式的診斷流程圖。

其中附圖是對本發(fā)明的內(nèi)容進行示意性說明,并非采用附圖所示的內(nèi)容對本發(fā)明的內(nèi)容進行具體限定。

具體實施方式

下面結(jié)合附圖及實施方式對本發(fā)明進行詳細說明。

本發(fā)明提供了一種基于Vector vFlash軟件接口的汽車ECU程序自動刷寫測試的方法和執(zhí)行所述方法的裝置。本發(fā)明的實施方式根據(jù)用戶提供的ECU程序刷寫文件,自動生成包括所有ECU程序版本切換的測試序列,然后通過調(diào)用Vector vFlash提供的接口,按照測試序列進行ECU程序刷寫,記錄刷寫結(jié)果,生成Excel格式的刷寫報告。

該發(fā)明適用于具有Vector vFlash軟件和相關(guān)接口硬件的汽車ECU程序多個版本切換的自動刷寫測試。

圖1示出了根據(jù)本發(fā)明的一個實施方式的用于汽車ECU程序自動刷寫測試裝置10,該裝置10包括測試序列生成模塊21,用于獲取用戶提供的刷寫文件數(shù)量,并創(chuàng)建測試序列;測試序列生成模塊21還用于在刷寫失敗時修改測試序列;測試序號判斷模塊22,用于從測試序列獲取需要刷寫的文件序號,并判斷所述文件序號是否合格;ECU診斷模塊23,用于進行ECU診斷測試,通過確定是否在執(zhí)行刷寫前的準備工作或是否正在進行刷寫后執(zhí)行操作來向ECU發(fā)送診斷命令并獲取診斷結(jié)果;刷寫模塊24,根據(jù)測試序號判斷結(jié)果初始化刷寫接口,并根據(jù)ECU診斷模塊23提供的診斷結(jié)束標志關(guān)閉刷寫接口,所述刷寫模塊還用于刷寫操作。自動刷寫測試裝置10對ECU 11進行檢測和刷寫。具體的操作方法如下文所示。

圖2示出了本發(fā)明自動刷寫測試方法的流程圖,其中在自動刷寫測試裝置10中各個模塊執(zhí)行以下步驟:

101獲取文件數(shù)量并根據(jù)文件數(shù)量(N)創(chuàng)建一個初始測試序列,該測試序列包括所有的程序版本切換,測試序列的元素個數(shù)為N×(N-1)+1。

102從測試序列中獲取需要刷寫的文件序號。

103判斷序號是否合格,若序號不合格則測試循環(huán)結(jié)束;若序號合格則執(zhí)行步驟104;

104初始化vFlash的刷寫接口,再加載步驟102中獲取的文件序號所對應的刷寫文件,初始化ECU診斷線程結(jié)束標志;

105啟動ECU診斷步驟;

106開始進行刷寫操作;

107等待刷寫操作結(jié)束;

108刷寫操作結(jié)束后,等待步驟105中的ECU診斷線程結(jié)束時產(chǎn)生的診斷結(jié)束標志;

109當出現(xiàn)診斷結(jié)束標志時,卸載刷寫文件并關(guān)閉vFlash的刷寫接口;

110存儲刷寫操作結(jié)果。例如可以將刷寫操作相關(guān)數(shù)據(jù)、診斷數(shù)據(jù)和刷寫結(jié)果存儲到Excel文件中。

111判斷刷寫操作是否成功,如果刷寫操作失敗,進行修改測試流程的操作,然后執(zhí)行步驟112;如果刷寫操作成功,執(zhí)行步驟112。

112判斷一個測試循環(huán)是否結(jié)束,如果未結(jié)束,則返回步驟102,進行下一個刷寫操作。

圖3是上述刷寫測試方法中步驟101的生成元素初始測試序列的流程圖,這一步驟由測試序列生成模塊21執(zhí)行,并且包括以下子步驟:

1011獲取刷寫文件個數(shù)N;

1012初始化測試序列,該測試序列為空,不包含任何元素;

1013初始化數(shù)字a為0;

1014判斷a是否小于N-1,如果小于則繼續(xù)下一步,否則跳至步驟1019;

1015初始化數(shù)字b,使其等于a+1;

1016判斷b是否小于N,如果小于,則執(zhí)行下一步,否則將a自身遞增加1,返回至步驟1014;

1017在測試序列尾部依次添加元素a、b;

1018數(shù)字b遞增加1,返回至步驟1016;

1019在測試序列尾部添加元素0。

經(jīng)過上述步驟所生成的測試序列,其中的元素x代表第x+1個文件的序號。例如,當有3個待刷寫的文件時,將生成測試序列0 1 0 2 1 2 0,0代表3個文件中第1個待刷寫的文件,1代表3個文件中第2個待刷寫的文件,以此類推;按照生成的測試序列完成刷寫,即可實現(xiàn)對所有可能的程序版本切換刷寫,例子中完成的程序切換刷寫依次為0->1,1->0,0->2,2->1,1->2,2->0。

圖4是上述刷寫測試方法中步驟105中ECU診斷步驟的流程圖;這一步驟由ECU診斷模塊23執(zhí)行,在該診斷步驟中包括以下子步驟:

1051初始化診斷數(shù)據(jù)

1052檢測是否正在進行刷寫前準備操作;

1053如果一定時間內(nèi)未檢測到Vector vFlash軟件的刷寫前準備工作,則跳轉(zhuǎn)至第步驟1055;若檢測到,則執(zhí)行步驟1054;

1054向ECU發(fā)送診斷命令并獲取返回的診斷數(shù)據(jù);

1055等待程序刷寫結(jié)束;

1056檢測到程序刷寫結(jié)束后,開始檢測是否正在進行刷寫后執(zhí)行操作;

1057如果一定時間內(nèi)未檢測到刷寫后執(zhí)行工作,則跳轉(zhuǎn)至步驟1059;若檢測到,則執(zhí)行步驟1058;

1058向ECU發(fā)送診斷命令并獲取返回的診斷數(shù)據(jù);

1059置位診斷結(jié)束標志,退出。

更進一步地,本發(fā)明由測試序列生成模塊21執(zhí)行的刷寫測試方法的步驟111中修改測試流程的步驟如下:

設當前程序文件序號為a,目標程序文件序號為b。修改測試序列的原則如下(例子中“<”與“>”之間為已刷寫過的序列元素,刷寫結(jié)果可能成功,也可能失敗;“{”與“}”之間的為刷寫失敗的序列元素;“[”與“]”之間為已刷寫成功的序列元素;其余為尚未執(zhí)行的程序):

1)如果當前刷寫順序為序列中最后一個,不修改測試序列。

2)如果執(zhí)行刷寫前的ECU程序是初始程序(a=-1),且b小于N-1,則令c等于b加1,將c插入到未執(zhí)行的測試序列之前,再將未執(zhí)行的測試序列所有元素加1對N取余,測試序列修改完畢。(例如刷寫文件數(shù)量N=3,初始測試序列為0 1 0 2 1 2 0,第一次取序列中第一個元素即序號為0的刷寫文件進行刷寫,刷寫失敗,則測試序列變?yōu)閧0}1 2 1 0 2 0 1,下一次執(zhí)行將從序列中第二個元素1對應的刷寫文件開始刷寫。若再次刷寫失敗,則測試序列變?yōu)閧0 1}2 0 2 1 0 1 2,下一次執(zhí)行將從序列中第三個元素2對應的刷寫文件開始刷寫)。

3)如果執(zhí)行刷寫前的ECU程序是初始程序,且從初始程序向所有程序進行刷寫均失敗(例如N=3,此時的測試序列為{0 1 2}0 2 1 0 1 2),則插入測試序號-1到測試序列中({0 1 2}-1 0 2 1 0 1 2),測試序列修改完畢。

4)如果測試序列中最后一個元素為目標程序b,則查找當前目標程序b之后是否存在元素a,若存在,則將其之后的所有元素移動到未執(zhí)行的測試序列的最前面(例如測試序列為<…>[a]{…b}x…a y…b,修改后為<…>[a]{…b}y…b x…a)。

5)如果任何其他程序到目標程序b的刷寫均已刷寫失敗,則刪除其后的任何從目標程序b出發(fā),經(jīng)過一個元素再返回目標程序b的元素段,并刪除連續(xù)重復以及連續(xù)的已完成刷寫的元素(例如測試序列為<…>[a]{…b}…c b x b y b d…e b z b f…g,修改后序列為<…>[a]{…b}…c d…e f…g;如果c=d,修改后序列為<…>[a]{…b}…c…e f…g;如果c d…e f段已經(jīng)刷寫過,則修改后序列為<…>[a]{…b}…c f…g)。

6)如果以上條件均不滿足,則插入一個元素到未測試的序列元素之前,該元素到目標程序b的刷寫工作未執(zhí)行或已執(zhí)行成功(優(yōu)先選擇刷寫工作未執(zhí)行的元素),然后在其后再插入目標元素b(例如測試序列為<…>[a]{…b}x…y,修改后為<…>[a]{…b}c b x…y,其中a->c未執(zhí)行或已執(zhí)行完畢)。

本發(fā)明的上述實施例是對本發(fā)明的說明而不能用于限制本發(fā)明,與本發(fā)明有請求保護范圍相當?shù)暮x和范圍內(nèi)的任何改變,都應認為是包括在本發(fā)明請求保護的范圍內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
巴中市| 甘洛县| 多伦县| 梨树县| 饶河县| 永善县| 万盛区| 甘南县| 怀远县| 依安县| 宁国市| 泸溪县| 黄陵县| 清徐县| 梁山县| 湘潭县| 都兰县| 盈江县| 青海省| 万载县| 左权县| 秭归县| 镇远县| 西平县| 肥西县| 金寨县| 广饶县| 临沭县| 合山市| 河东区| 桑植县| 西藏| 宁安市| 浦城县| 汤原县| 神农架林区| 华安县| 电白县| 贺兰县| 射洪县| 灵武市|