V0.1_20220518_OK
This commit is contained in:
parent
dce7399998
commit
2a5370e6e8
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/dist
|
||||||
|
/.build
|
66
main.aardio
66
main.aardio
@ -3,24 +3,35 @@ import win.ui;
|
|||||||
mainForm = win.form(text="CAN_Bootloader";right=599;bottom=399;border="dialog frame";max=false)
|
mainForm = win.form(text="CAN_Bootloader";right=599;bottom=399;border="dialog frame";max=false)
|
||||||
mainForm.add(
|
mainForm.add(
|
||||||
btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=4};
|
btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=4};
|
||||||
btnFlash={cls="button";text="开始刷写";left=152;top=180;right=272;bottom=205;z=9};
|
btnFlash={cls="button";text="开始刷写";left=147;top=198;right=246;bottom=226;z=9};
|
||||||
btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=2};
|
btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=2};
|
||||||
btnOpen={cls="button";text="打开文件";left=31;top=180;right=131;bottom=206;z=8};
|
btnOpen={cls="button";text="打开文件";left=32;top=197;right=131;bottom=225;z=8};
|
||||||
btnReadF186={cls="button";text="读取当前会话";left=19;top=293;right=118;bottom=321;z=13};
|
btnReadF186={cls="button";text="读取当前会话";left=32;top=236;right=131;bottom=264;z=13};
|
||||||
btnReadHw={cls="button";text="读取硬件版本号";left=17;top=263;right=116;bottom=291;z=12};
|
btnReadHw={cls="button";text="读取硬件版本号";left=147;top=276;right=246;bottom=304;z=12};
|
||||||
btnReadSw={cls="button";text="读取软件版本号";left=17;top=233;right=116;bottom=261;z=10};
|
btnReadSw={cls="button";text="读取软件版本号";left=32;top=276;right=131;bottom=304;z=10};
|
||||||
btnTest={cls="button";text="测试";left=173;top=355;right=272;bottom=383;z=11};
|
btnTest={cls="button";text="停止";left=147;top=237;right=246;bottom=265;z=11};
|
||||||
cbbChannel={cls="combobox";left=58;top=64;right=191;bottom=90;edge=1;items={};mode="dropdown";z=3};
|
cbbChannel={cls="combobox";left=58;top=64;right=191;bottom=90;edge=1;items={};mode="dropdown";z=3};
|
||||||
cbbDev={cls="combobox";left=58;top=27;right=191;bottom=53;edge=1;items={};mode="dropdown";z=1};
|
cbbDev={cls="combobox";left=58;top=27;right=191;bottom=53;edge=1;items={};mode="dropdown";z=1};
|
||||||
edFile={cls="richedit";left=8;top=114;right=288;bottom=170;border=1;disabled=1;edge=1;multiline=1;wrap=1;z=14};
|
edFile={cls="richedit";left=8;top=131;right=288;bottom=187;border=1;disabled=1;edge=1;multiline=1;wrap=1;z=14};
|
||||||
edit={cls="edit";left=296;top=8;right=582;bottom=383;edge=1;multiline=1;z=5};
|
edit={cls="edit";left=296;top=8;right=598;bottom=383;autovscroll=false;edge=1;multiline=1;vscroll=1;z=5};
|
||||||
|
progress={cls="progress";left=16;top=349;right=279;bottom=377;edge=1;max=100;min=0;z=15};
|
||||||
static={cls="static";text="设备";left=1;top=28;right=61;bottom=52;align="center";center=1;transparent=1;z=6};
|
static={cls="static";text="设备";left=1;top=28;right=61;bottom=52;align="center";center=1;transparent=1;z=6};
|
||||||
static2={cls="static";text="通道";left=1;top=66;right=61;bottom=90;align="center";center=1;transparent=1;z=7}
|
static2={cls="static";text="通道";left=1;top=66;right=61;bottom=90;align="center";center=1;transparent=1;z=7};
|
||||||
|
static3={cls="static";text="刷写进度";left=17;top=328;right=70;bottom=348;transparent=1;z=16};
|
||||||
|
static4={cls="static";text="烧录APP";left=13;top=108;right=85;bottom=132;center=1;transparent=1;z=17};
|
||||||
|
static5={cls="static";text="V0.1_20220518";left=452;top=383;right=596;bottom=399;align="right";center=1;transparent=1;z=18}
|
||||||
)
|
)
|
||||||
/*}}*/
|
/*}}*/
|
||||||
|
|
||||||
import win;
|
import win;
|
||||||
import usb2canfd;
|
import usb2canfd;
|
||||||
|
import win.timer;
|
||||||
|
|
||||||
|
var boot_count = 0;
|
||||||
|
timer_bootcount = win.timer(mainForm,100);
|
||||||
|
timer_bootcount.onTimer = function(){
|
||||||
|
boot_count++;
|
||||||
|
}
|
||||||
|
|
||||||
Display = function(str){
|
Display = function(str){
|
||||||
mainForm.edit.print(tostring(time()) + " " + str);
|
mainForm.edit.print(tostring(time()) + " " + str);
|
||||||
@ -72,19 +83,40 @@ mainForm.btnConnect.oncommand = function(id,event){
|
|||||||
//CAN通讯线程
|
//CAN通讯线程
|
||||||
import thread.command;
|
import thread.command;
|
||||||
var listener = thread.command();
|
var listener = thread.command();
|
||||||
|
var flag_connected=0;
|
||||||
listener.$Display = function(str){
|
listener.$Display = function(str){
|
||||||
Display(str);
|
Display(str);
|
||||||
}
|
}
|
||||||
listener.$ShowPath = function(str){
|
listener.$ShowPath = function(str){
|
||||||
mainForm.edFile.text = str;
|
mainForm.edFile.text = str;
|
||||||
}
|
}
|
||||||
|
listener.$SetProgress = function(pos){
|
||||||
|
if(pos >= 0 && pos <= 100){
|
||||||
|
mainForm.progress.pos = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
listener.$Connected = function(){
|
||||||
|
mainForm.btnConnect.disabled = true;
|
||||||
|
mainForm.btnFresh.disabled = true;
|
||||||
|
mainForm.cbbDev.disabled = true;
|
||||||
|
mainForm.cbbChannel.disabled = true;
|
||||||
|
flag_connected = 1;
|
||||||
|
}
|
||||||
|
listener.$SendEnd = function(isSuccess){
|
||||||
|
timer_bootcount.disable();
|
||||||
|
if(isSuccess == true){
|
||||||
|
Display("刷写成功,用时 " + boot_count/10 + " S")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//线程函数
|
//线程函数
|
||||||
var CanThread = function(){
|
var CanThread = function(){
|
||||||
|
|
||||||
//线程函数内部要添加自已的import语句
|
//线程函数内部要添加自已的import语句
|
||||||
import win;
|
import win;
|
||||||
import console;
|
import console;
|
||||||
console.log("线程开始运行")
|
//console.log("线程开始运行")
|
||||||
loadcodex("\user\CanThread.aardio");//加载线程程序
|
loadcodex("\user\CanThread.aardio");//加载线程程序
|
||||||
//在子线程启动消息循环
|
//在子线程启动消息循环
|
||||||
win.loopMessage(FuncLoopMsg)
|
win.loopMessage(FuncLoopMsg)
|
||||||
@ -120,7 +152,21 @@ mainForm.btnTest.oncommand = function(id,event){
|
|||||||
}
|
}
|
||||||
|
|
||||||
mainForm.btnFlash.oncommand = function(id,event){
|
mainForm.btnFlash.oncommand = function(id,event){
|
||||||
|
if(io.exist(mainForm.edFile.text) == null){
|
||||||
|
Display("请打开文件");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(flag_connected == 0){
|
||||||
|
Display("请连接设备");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mainForm.edit.text = "";
|
||||||
|
Display("开始刷写流程");
|
||||||
|
timer_bootcount.enable();
|
||||||
|
boot_count = 0;
|
||||||
DiagBootReq();
|
DiagBootReq();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mainForm.btnOpen.oncommand = function(id,event){
|
mainForm.btnOpen.oncommand = function(id,event){
|
||||||
|
@ -71,6 +71,7 @@ FuncConnect = function(dev,chn){
|
|||||||
var ret = CANHw.OpenDevice(dev,chn);
|
var ret = CANHw.OpenDevice(dev,chn);
|
||||||
if(ret == 0){
|
if(ret == 0){
|
||||||
FuncDisplay("连接成功");
|
FuncDisplay("连接成功");
|
||||||
|
thread.command.$Connected();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FuncDisplay("连接失败");
|
FuncDisplay("连接失败");
|
||||||
@ -115,8 +116,13 @@ FuncDiagPro = function(diagmsg){
|
|||||||
FuncDiag27Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
FuncDiag27Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
||||||
}
|
}
|
||||||
case 0x74 {
|
case 0x74 {
|
||||||
|
FuncDiag34Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
||||||
|
}
|
||||||
|
case 0x71 {
|
||||||
|
FuncDiag31Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
||||||
}
|
}
|
||||||
case 0x76 {
|
case 0x76 {
|
||||||
|
FuncDiag36Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
||||||
}
|
}
|
||||||
case 0x68 {
|
case 0x68 {
|
||||||
FuncDiag28Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
FuncDiag28Pro(table.slice(diagmsg.data,1,diagmsg.len))
|
||||||
@ -162,7 +168,7 @@ FuncSendPackage = function(){
|
|||||||
data[i+1] = table.remove(Packdata);
|
data[i+1] = table.remove(Packdata);
|
||||||
}
|
}
|
||||||
CANHw.SendMsg(PackID,data);
|
CANHw.SendMsg(PackID,data);
|
||||||
sleep(1);
|
sleep(0.3);
|
||||||
PackNext += 1;
|
PackNext += 1;
|
||||||
if(PackNext > 0x2f){
|
if(PackNext > 0x2f){
|
||||||
PackNext = 0x20;
|
PackNext = 0x20;
|
||||||
|
@ -30,7 +30,7 @@ FuncDiag27Pro = function(data){
|
|||||||
var str = "收到种子";
|
var str = "收到种子";
|
||||||
for(i=1;4;1){
|
for(i=1;4;1){
|
||||||
SecuretySeed[i] = data[i+1];
|
SecuretySeed[i] = data[i+1];
|
||||||
str += tostring(SecuretySeed[i],16);
|
str += " " + tostring(SecuretySeed[i],16);
|
||||||
}
|
}
|
||||||
FuncDisplay(str)
|
FuncDisplay(str)
|
||||||
SecuretyKey = GenerateKeyEx(SecuretySeed,data[1]);
|
SecuretyKey = GenerateKeyEx(SecuretySeed,data[1]);
|
||||||
|
@ -1,24 +1,25 @@
|
|||||||
|
|
||||||
//发送
|
//发送
|
||||||
FuncReq28 = function(num1,num2){
|
FuncReq28 = function(num1,num2){
|
||||||
if(num1 >= 1 && num1 <= 3){
|
var txdata = {0x03,0x28,num1,num2,0,0,0,0};
|
||||||
var data = {0x03,0x28,num1,num2,0,0,0,0};
|
var ret = CANHw.SendMsg(DiagGloableID,txdata);
|
||||||
var ret = CANHw.SendMsg(DiagGloableID,data);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//接收
|
//接收
|
||||||
FuncDiag28Pro = function(data){
|
FuncDiag28Pro = function(data){
|
||||||
//console.dumpJson(data);
|
//console.dumpJson(data);
|
||||||
select(data[1]) {
|
select(data[1]) {
|
||||||
|
case 0 {
|
||||||
|
FuncDisplay("使能接收发送")
|
||||||
|
}
|
||||||
case 1 {
|
case 1 {
|
||||||
FuncDisplay("使能接收,禁能发送")
|
FuncDisplay("使能接收,禁止发送")
|
||||||
}
|
}
|
||||||
case 2 {
|
case 2 {
|
||||||
FuncDisplay("28 - TDB02")
|
FuncDisplay("禁止接收,使能发送")
|
||||||
}
|
}
|
||||||
case 3 {
|
case 3 {
|
||||||
FuncDisplay("28 - TDB03")
|
FuncDisplay("禁止接收发送")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
FuncReq31EraseFlash = function(addr,len){
|
FuncReq31EraseFlash = function(addr,len){
|
||||||
|
FuncDisplay("开始擦除数据")
|
||||||
var data = {0xff,0x00,0x44,addr>>24,addr>>16,addr>>8,addr,len>>24,len>>16,len>>8,len};
|
var data = {0xff,0x00,0x44,addr>>24,addr>>16,addr>>8,addr,len>>24,len>>16,len>>8,len};
|
||||||
FuncReq31(data);
|
FuncReq31(data);
|
||||||
}
|
}
|
||||||
@ -36,15 +37,19 @@ FuncReq31 = function(data){
|
|||||||
//接收
|
//接收
|
||||||
FuncDiag31Pro = function(data){
|
FuncDiag31Pro = function(data){
|
||||||
//console.dumpJson(data);
|
//console.dumpJson(data);
|
||||||
select(data[1]) {
|
var rid = (data[2]<<8) + data[3];
|
||||||
case 1 {
|
select(rid) {
|
||||||
FuncDisplay("使能接收,禁能发送")
|
case 0xFF00 {
|
||||||
|
FuncDisplay("擦除成功")
|
||||||
}
|
}
|
||||||
case 2 {
|
case 0x0202 {
|
||||||
FuncDisplay("28 - TDB02")
|
FuncDisplay("校验成功")
|
||||||
}
|
}
|
||||||
case 3 {
|
case 0xFF01 {
|
||||||
FuncDisplay("28 - TDB03")
|
FuncDisplay("检查标志成功")
|
||||||
|
}
|
||||||
|
case 0xF518 {
|
||||||
|
FuncDisplay("数字签名错误")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
}
|
}
|
||||||
|
@ -9,16 +9,6 @@ FuncStartSendBlock = function(data){
|
|||||||
flag_sendend = false;
|
flag_sendend = false;
|
||||||
flag_sending = true;
|
flag_sending = true;
|
||||||
alldata = data;
|
alldata = data;
|
||||||
/*
|
|
||||||
if(alldata>0x400){
|
|
||||||
FuncReq36(blocknum,table.slice(alldata,1,0x400));
|
|
||||||
alldata = table.slice(alldata,0x401,)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
FuncReq36(blocknum,alldata);
|
|
||||||
alldata = {};
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
FuncStopSendBlock = function(data){
|
FuncStopSendBlock = function(data){
|
||||||
blocknum = 0x01;
|
blocknum = 0x01;
|
||||||
@ -59,7 +49,6 @@ FuncReq36 = function(num,data){
|
|||||||
CANHw.SendMsg(DiagReqID,txdata);
|
CANHw.SendMsg(DiagReqID,txdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//接收
|
//接收
|
||||||
FuncDiag36Pro = function(data){
|
FuncDiag36Pro = function(data){
|
||||||
|
@ -12,7 +12,7 @@ FuncDiag85Pro = function(data){
|
|||||||
//console.dumpJson(data);
|
//console.dumpJson(data);
|
||||||
select(data[1]) {
|
select(data[1]) {
|
||||||
case 0x01 {
|
case 0x01 {
|
||||||
FuncDisplay("DTC - 01")
|
FuncDisplay("DTC开启")
|
||||||
}
|
}
|
||||||
case 0x02 {
|
case 0x02 {
|
||||||
FuncDisplay("DTC禁能")
|
FuncDisplay("DTC禁能")
|
||||||
|
@ -18,6 +18,7 @@ FuncWait = function(sid){
|
|||||||
else {
|
else {
|
||||||
FuncDisplay("刷写错误");
|
FuncDisplay("刷写错误");
|
||||||
boottimer.disable();
|
boottimer.disable();
|
||||||
|
thread.command.$SendEnd(false);
|
||||||
return 1; //负响应
|
return 1; //负响应
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,11 +26,13 @@ FuncWait = function(sid){
|
|||||||
if(stopflag == 1){
|
if(stopflag == 1){
|
||||||
FuncDisplay("停止");
|
FuncDisplay("停止");
|
||||||
boottimer.disable();
|
boottimer.disable();
|
||||||
|
thread.command.$SendEnd(false);
|
||||||
return 2;//停止命令
|
return 2;//停止命令
|
||||||
}
|
}
|
||||||
bootcount += 1;
|
bootcount += 1;
|
||||||
if(bootcount >= 400){
|
if(bootcount >= 400){
|
||||||
FuncDisplay("超时 " + tostring(sid,16));
|
FuncDisplay("超时 " + tostring(sid,16));
|
||||||
|
thread.command.$SendEnd(false);
|
||||||
boottimer.disable();
|
boottimer.disable();
|
||||||
return 3;//超时
|
return 3;//超时
|
||||||
}
|
}
|
||||||
@ -51,31 +54,40 @@ FuncInitBootState = function(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nextstate = function(val){
|
|
||||||
if(val == 0){
|
|
||||||
bootstate += 1;
|
|
||||||
sendstate = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BCD_Conv = function(num){
|
BCD_Conv = function(num){
|
||||||
if(num > 99){
|
if(num > 99){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (num/10)*16 + (num%10);
|
var ret = 0;
|
||||||
|
ret += math.floor(num/10) * 16;
|
||||||
|
ret += num%10;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
var sendblockstate = 0;
|
var sendblockstate = 0;
|
||||||
var alldata = {};
|
var alldata = {};
|
||||||
var blocknum = 1;
|
var blocknum = 1;
|
||||||
|
var alldata_blocknum = 0;
|
||||||
|
var block_sended = 0;
|
||||||
FuncSendBlockInit = function(){
|
FuncSendBlockInit = function(){
|
||||||
|
var len = 0;
|
||||||
alldata = FuncGetAllData();
|
alldata = FuncGetAllData();
|
||||||
blocknum = 1;
|
blocknum = 1;
|
||||||
if(alldata != null){
|
for(i=1;#alldata;1){
|
||||||
blocknum = 1;
|
len += math.ceil(#alldata[i]["data"] / 0x400)
|
||||||
FuncStartSendBlock(alldata[blocknum]["data"])
|
}
|
||||||
|
alldata_blocknum = len + 19;
|
||||||
|
block_sended = 0;
|
||||||
|
sendblockstate = 0;
|
||||||
|
}
|
||||||
|
nextstate = function(val){
|
||||||
|
if(val == 0){
|
||||||
|
bootstate += 1;
|
||||||
|
sendstate = 0;
|
||||||
|
block_sended += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
var FuncSendBlockApp_sendflag = 0
|
var FuncSendBlockApp_sendflag = 0
|
||||||
FuncSendBlockApp = function(){
|
FuncSendBlockApp = function(){
|
||||||
@ -104,6 +116,7 @@ FuncSendBlockApp = function(){
|
|||||||
if(FuncSendBlockApp_sendflag == 0){
|
if(FuncSendBlockApp_sendflag == 0){
|
||||||
FuncSendNextBlock();
|
FuncSendNextBlock();
|
||||||
FuncSendBlockApp_sendflag = 1;
|
FuncSendBlockApp_sendflag = 1;
|
||||||
|
block_sended += 1;
|
||||||
RespState = 0;
|
RespState = 0;
|
||||||
bootcount = 0;
|
bootcount = 0;
|
||||||
}
|
}
|
||||||
@ -145,20 +158,16 @@ FuncSendBlockApp = function(){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var delaycount = 0;
|
||||||
//boot总流程
|
//boot总流程
|
||||||
|
var boottime = 0;
|
||||||
FuncBootSeq = function(){
|
FuncBootSeq = function(){
|
||||||
|
boottime++;
|
||||||
select(bootstate) {
|
select(bootstate) {
|
||||||
case 0 {
|
case 0 {
|
||||||
//读取当前会话
|
boottime = 1;
|
||||||
/*
|
|
||||||
var bootdata = FuncGetAllData();
|
|
||||||
if(#bootdata < 1){
|
|
||||||
FuncDisplay("请打开文件");
|
|
||||||
boottimer.disable();
|
|
||||||
return 0;
|
|
||||||
}*/
|
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
|
FuncSendBlockInit();
|
||||||
FuncReadDID(0xF186);
|
FuncReadDID(0xF186);
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
}
|
}
|
||||||
@ -267,7 +276,7 @@ FuncBootSeq = function(){
|
|||||||
var day = BCD_Conv(time.now().day);
|
var day = BCD_Conv(time.now().day);
|
||||||
FuncReq2E(0XF199,{year1,year2,month,day})
|
FuncReq2E(0XF199,{year1,year2,month,day})
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
console.log("写入installation_date")
|
//console.log("写入installation_date")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var ret = FuncWait(0x2E);
|
var ret = FuncWait(0x2E);
|
||||||
@ -287,7 +296,8 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
case 12 {
|
case 12 {
|
||||||
if(sendstate == 0){//发送数据
|
if(sendstate == 0){//发送数据
|
||||||
FuncSendBlockInit();
|
//FuncSendBlockInit();
|
||||||
|
FuncDisplay("开始发送app数据");
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -318,8 +328,8 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
case 15 {
|
case 15 {
|
||||||
if(sendstate == 0){//复位
|
if(sendstate == 0){//复位
|
||||||
FuncReq11(0x01);
|
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
|
FuncReq11(0x01);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var ret = FuncWait(0x11);
|
var ret = FuncWait(0x11);
|
||||||
@ -328,6 +338,20 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 16 {
|
case 16 {
|
||||||
|
if(sendstate == 0){//等待复位完成
|
||||||
|
delaycount = 0;
|
||||||
|
FuncClearState();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
delaycount += 1;
|
||||||
|
if(delaycount > 100){
|
||||||
|
nextstate(0);//延时1S
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case 17 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq10(true,0x03);//进入扩展会话
|
FuncReq10(true,0x03);//进入扩展会话
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -337,7 +361,7 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 17 {
|
case 18 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq28(0x00,0x01);//开启发送
|
FuncReq28(0x00,0x01);//开启发送
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -347,7 +371,7 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 18 {
|
case 19 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq85(0x01);//开启DTC
|
FuncReq85(0x01);//开启DTC
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -357,7 +381,7 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 19 {
|
case 20 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq10(true,0x01);//进入默认会话
|
FuncReq10(true,0x01);//进入默认会话
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -368,8 +392,11 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FuncDisplay("刷写完成")
|
thread.command.$SendEnd(true);
|
||||||
|
//FuncDisplay("刷写完成,用时 " + boottime/100 + " S")
|
||||||
boottimer.disable();
|
boottimer.disable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
thread.command.$SetProgress(block_sended/alldata_blocknum * 100);
|
||||||
}
|
}
|
@ -9,6 +9,7 @@ FuncGetFileInfo = function(){
|
|||||||
return fileinfo;
|
return fileinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FuncOpenS19File = function(path){
|
FuncOpenS19File = function(path){
|
||||||
import fsys.dlg;
|
import fsys.dlg;
|
||||||
if(path == null){
|
if(path == null){
|
||||||
@ -76,21 +77,6 @@ FuncOpenS19File = function(path){
|
|||||||
FlashData[#FlashData+1]={"address" = block["address"];"data" = block["data"];}
|
FlashData[#FlashData+1]={"address" = block["address"];"data" = block["data"];}
|
||||||
block["address"] = addr;
|
block["address"] = addr;
|
||||||
block["data"] = {};
|
block["data"] = {};
|
||||||
//不连续,判断是否填充
|
|
||||||
/*不填充,所以注释了
|
|
||||||
if((addr & 0xfff800) == ((block["address"]+#block["data"])&0xfff800)){
|
|
||||||
//同一个块,填充FF
|
|
||||||
for(i=1;addr - (block["address"]+#block["data"]);1){
|
|
||||||
table.push(block["data"],0xff);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
FlashData[#FlashData+1]={"address" = block["address"];"data" = block["data"];}
|
|
||||||
block["address"] = addr;
|
|
||||||
block["data"] = {};
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,11 +93,7 @@ FuncOpenS19File = function(path){
|
|||||||
|
|
||||||
if(block != null){
|
if(block != null){
|
||||||
table.push(FlashData,block)
|
table.push(FlashData,block)
|
||||||
//console.dumpTable(block["data"]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//blocknum = 1;
|
//blocknum = 1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user