boot流程OK
This commit is contained in:
parent
ffedf209af
commit
1c0d34995d
BIN
CAN_Bootloader/DM_RP_SA.dll
Normal file
BIN
CAN_Bootloader/DM_RP_SA.dll
Normal file
Binary file not shown.
Binary file not shown.
@ -137,7 +137,7 @@ namespace usb2canfd{
|
|||||||
//加载DLL
|
//加载DLL
|
||||||
LoadDll = function(){
|
LoadDll = function(){
|
||||||
try{
|
try{
|
||||||
DllHandle = ..raw.loadDll("USB2XXX.dll")
|
DllHandle = ..raw.loadDll("\USB2XXX.dll")
|
||||||
}
|
}
|
||||||
catch(err)
|
catch(err)
|
||||||
{
|
{
|
||||||
|
@ -14,6 +14,7 @@ btnReadF199={cls="button";text="读取F199";left=149;top=415;right=248;bottom=44
|
|||||||
btnReadHw={cls="button";text="读取硬件版本号";left=149;top=381;right=248;bottom=409;z=12};
|
btnReadHw={cls="button";text="读取硬件版本号";left=149;top=381;right=248;bottom=409;z=12};
|
||||||
btnReadSw={cls="button";text="读取软件版本号";left=37;top=382;right=136;bottom=410;z=10};
|
btnReadSw={cls="button";text="读取软件版本号";left=37;top=382;right=136;bottom=410;z=10};
|
||||||
btnTest={cls="button";text="停止";left=149;top=316;right=248;bottom=344;z=11};
|
btnTest={cls="button";text="停止";left=149;top=316;right=248;bottom=344;z=11};
|
||||||
|
button={cls="button";text="Button";left=248;top=445;right=278;bottom=459;z=26};
|
||||||
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};
|
||||||
checkbox={cls="checkbox";text="CANFD设备";left=151;top=101;right=248;bottom=120;checked=1;z=21};
|
checkbox={cls="checkbox";text="CANFD设备";left=151;top=101;right=248;bottom=120;checked=1;z=21};
|
||||||
@ -49,6 +50,7 @@ Display = function(str){//显示日志
|
|||||||
}
|
}
|
||||||
//遍历目录
|
//遍历目录
|
||||||
import console;
|
import console;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
import fsys.fileInfo;
|
import fsys.fileInfo;
|
||||||
info = fsys.fileInfo("C:\Users\fcb19\Desktop\dll\libusb-1.0.dll");
|
info = fsys.fileInfo("C:\Users\fcb19\Desktop\dll\libusb-1.0.dll");
|
||||||
@ -62,7 +64,8 @@ if(ret == 0){
|
|||||||
Display("DLL加载成功");
|
Display("DLL加载成功");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Display("DLL加载失败");
|
//Display("DLL加载失败");
|
||||||
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -246,5 +249,13 @@ mainForm.btnDiag.oncommand = function(id,event){
|
|||||||
thrdHandle,thrdId = thread.create( CanThread )
|
thrdHandle,thrdId = thread.create( CanThread )
|
||||||
|
|
||||||
|
|
||||||
|
mainForm.onClose = function(hwnd,message,wParam,lParam){
|
||||||
|
::PostThreadMessage(thrdId,120,1,0)
|
||||||
|
raw.closehandle(thrdHandle);
|
||||||
|
thread.waitClose(thrdHandle);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
mainForm.show();
|
mainForm.show();
|
||||||
return win.loopMessage();
|
return win.loopMessage();
|
@ -83,6 +83,9 @@ FuncLoopMsg = function(msg){
|
|||||||
case 115 {
|
case 115 {
|
||||||
write2Etest(msg.wParam)
|
write2Etest(msg.wParam)
|
||||||
}
|
}
|
||||||
|
case 120 {
|
||||||
|
win.quitMessage()
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -197,14 +200,14 @@ var PackID = 0;
|
|||||||
var FuncSendPackage = function(){
|
var FuncSendPackage = function(){
|
||||||
while(#Packdata > 0)
|
while(#Packdata > 0)
|
||||||
{
|
{
|
||||||
sleep(0.3);
|
//sleep(0.3);
|
||||||
var data = {PackNext,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC};
|
var data = {PackNext,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC};
|
||||||
var max = #Packdata > 7 ? 7 : #Packdata;
|
var max = #Packdata > 7 ? 7 : #Packdata;
|
||||||
for(i=1;max;1){
|
for(i=1;max;1){
|
||||||
data[i+1] = table.remove(Packdata);
|
data[i+1] = table.remove(Packdata);
|
||||||
}
|
}
|
||||||
CANHw.SendMsg(PackID,data);
|
CANHw.SendMsg(PackID,data);
|
||||||
sleep(2);
|
sleep(1);
|
||||||
PackNext += 1;
|
PackNext += 1;
|
||||||
if(PackNext > 0x2f){
|
if(PackNext > 0x2f){
|
||||||
PackNext = 0x20;
|
PackNext = 0x20;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
FuncReq31EraseFlash = function(addr,len){
|
FuncReq31EraseFlash = function(addr,len){
|
||||||
FuncDisplay("开始擦除数据")
|
FuncDisplay("开始擦除数据")
|
||||||
var data = {0xff,0x00,0x44,addr>>24,addr>>16,addr>>8,addr,len>>24,len>>16,len>>8,len};
|
var data = {0xfd,0x01,0x44,addr>>24,addr>>16,addr>>8,addr,len>>24,len>>16,len>>8,len};
|
||||||
FuncReq31(data);
|
FuncReq31(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,6 +19,19 @@ FuncReq31CheckFlash = function(){
|
|||||||
FuncReq31(data);
|
FuncReq31(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FuncReq3103 = function(id){
|
||||||
|
//停止例程
|
||||||
|
var txdata = {0x04,0x31,0x03,id>>8,id&0xff,0x00,0x00,0x00};
|
||||||
|
CANHw.SendMsg(DiagReqID,txdata);
|
||||||
|
}
|
||||||
|
FuncReq3101FD02 = function(){
|
||||||
|
var txdata = {0x04,0x31,0x01,0xfd,0x02,0x00,0x00,0x00};
|
||||||
|
CANHw.SendMsg(DiagReqID,txdata);
|
||||||
|
}
|
||||||
|
FuncReq3101FD03 = function(){
|
||||||
|
var txdata = {0x04,0x31,0x01,0xfd,0x03,0x00,0x00,0x00};
|
||||||
|
CANHw.SendMsg(DiagReqID,txdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -48,9 +61,12 @@ FuncDiag31Pro = function(data){
|
|||||||
}
|
}
|
||||||
var rid = (data[2]<<8) + data[3];
|
var rid = (data[2]<<8) + data[3];
|
||||||
select(rid) {
|
select(rid) {
|
||||||
case 0xFF00 {
|
case 0xFD01 {
|
||||||
FuncDisplay("擦除成功")
|
FuncDisplay("擦除成功")
|
||||||
}
|
}
|
||||||
|
case 0xFD02 {
|
||||||
|
FuncDisplay("flash driver校验成功")
|
||||||
|
}
|
||||||
case 0x0202 {
|
case 0x0202 {
|
||||||
FuncDisplay("校验成功")
|
FuncDisplay("校验成功")
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ FuncDiag34Pro = function(data){
|
|||||||
|
|
||||||
FuncGetSengLen = function(){
|
FuncGetSengLen = function(){
|
||||||
if(maxlen>2){
|
if(maxlen>2){
|
||||||
return maxlen-2;
|
return maxlen;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -79,6 +79,7 @@ var alldata_blocknum = 0;
|
|||||||
var block_sended = 0;
|
var block_sended = 0;
|
||||||
var sendFlashDriverState = 0;
|
var sendFlashDriverState = 0;
|
||||||
var FuncSendBlockApp_sendflag = 0;
|
var FuncSendBlockApp_sendflag = 0;
|
||||||
|
var nowid=0;
|
||||||
FuncSendBlockInit = function(id){
|
FuncSendBlockInit = function(id){
|
||||||
var len = 0;
|
var len = 0;
|
||||||
alldata = FuncGetAllData(id);
|
alldata = FuncGetAllData(id);
|
||||||
@ -90,12 +91,13 @@ FuncSendBlockInit = function(id){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
for(i=1;#alldata;1){
|
for(i=1;#alldata;1){
|
||||||
len += math.ceil(#alldata[i]["data"] / 0x200)
|
len += math.ceil(#alldata[i]["data"] / FuncGetSengLen())
|
||||||
}
|
}
|
||||||
alldata_blocknum = len;
|
alldata_blocknum = len;
|
||||||
block_sended = 0;
|
block_sended = 0;
|
||||||
sendblockstate = 0;
|
sendblockstate = 0;
|
||||||
FuncSendBlockApp_sendflag = 0;
|
FuncSendBlockApp_sendflag = 0;
|
||||||
|
nowid = id;
|
||||||
//console.log("发送数据初始化")
|
//console.log("发送数据初始化")
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -142,6 +144,9 @@ FuncSendBlockApp = function(){
|
|||||||
FuncSendBlockApp_sendflag = 0;
|
FuncSendBlockApp_sendflag = 0;
|
||||||
if(FuncGetSendStatus() == true){//所有块发送完成
|
if(FuncGetSendStatus() == true){//所有块发送完成
|
||||||
sendblockstate += 1;
|
sendblockstate += 1;
|
||||||
|
if(nowid == 1){
|
||||||
|
sendblockstate += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -291,29 +296,24 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
case 9 {
|
case 9 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
|
FuncReq31EraseFlash(0x1FFFF000,0x1000);
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
//FuncDIDWriteStr(0xf198,"Daming ");//写入repair_shopcode
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//var ret = FuncWait(0x2E);
|
var ret = FuncWait(0x31);
|
||||||
nextstate(0);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case 10 {
|
case 10 {
|
||||||
if(sendstate == 0){//写入installation_date
|
if(sendstate == 0){//写入installation_date
|
||||||
var year1 = BCD_Conv(time.now().year/100);
|
FuncReq3103(0xFD01);
|
||||||
var year2 = BCD_Conv(time.now().year%100);
|
|
||||||
var month = BCD_Conv(time.now().month);
|
|
||||||
var day = BCD_Conv(time.now().day);
|
|
||||||
//FuncReq2E(0XF199,{year1,year2,month,day})
|
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
//console.log("写入installation_date")
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//var ret = FuncWait(0x2E);
|
var ret = FuncWait(0x31);
|
||||||
nextstate(0);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 11 {
|
case 11 {
|
||||||
@ -329,8 +329,9 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
case 12 {
|
case 12 {
|
||||||
if(sendstate == 0){//CheckLogicBlock
|
if(sendstate == 0){//CheckLogicBlock
|
||||||
var crc = FuncGetFlashCRC(0);
|
//var crc = FuncGetFlashCRC(0);
|
||||||
FuncReq31CheckLogicBlock(crc);
|
//FuncReq31CheckLogicBlock(crc);
|
||||||
|
FuncReq3101FD02();
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -339,8 +340,18 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 13 {
|
case 13 {
|
||||||
|
if(sendstate == 0){//写入installation_date
|
||||||
|
FuncReq3103(0xFD02);
|
||||||
|
FuncClearState();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var ret = FuncWait(0x31);
|
||||||
|
nextstate(ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 14 {
|
||||||
if(sendstate == 0){//CheckLogicBlock
|
if(sendstate == 0){//CheckLogicBlock
|
||||||
FuncReq31EraseFlash(0xA000,0x10000);
|
FuncReq31EraseFlash(0x00010000,0x70000);
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -349,7 +360,7 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case 14 {
|
case 15 {
|
||||||
if(sendstate == 0){//发送数据
|
if(sendstate == 0){//发送数据
|
||||||
FuncSendBlockInit(2);
|
FuncSendBlockInit(2);
|
||||||
FuncDisplay("开始发送App数据");
|
FuncDisplay("开始发送App数据");
|
||||||
@ -360,20 +371,9 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 15 {
|
|
||||||
if(sendstate == 0){//CheckLogicBlock
|
|
||||||
var crc = FuncGetFlashCRC(1);
|
|
||||||
FuncReq31CheckLogicBlock(crc);
|
|
||||||
FuncClearState();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var ret = FuncWait(0x31);
|
|
||||||
nextstate(ret);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case 16 {
|
case 16 {
|
||||||
if(sendstate == 0){////Programming Dependencies
|
if(sendstate == 0){//CheckLogicBlock
|
||||||
FuncReq31CheckPD();
|
FuncReq3101FD03();
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -382,6 +382,16 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 17 {
|
case 17 {
|
||||||
|
if(sendstate == 0){////Programming Dependencies
|
||||||
|
FuncReq3103(0xFD03);
|
||||||
|
FuncClearState();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var ret = FuncWait(0x31);
|
||||||
|
nextstate(ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 18 {
|
||||||
if(sendstate == 0){//复位
|
if(sendstate == 0){//复位
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
FuncReq11(0x03);
|
FuncReq11(0x03);
|
||||||
@ -392,7 +402,7 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case 18 {
|
case 19 {
|
||||||
if(sendstate == 0){//等待复位完成
|
if(sendstate == 0){//等待复位完成
|
||||||
delaycount = 0;
|
delaycount = 0;
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -406,7 +416,7 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case 19 {
|
case 20 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq10(true,0x03);//进入扩展会话
|
FuncReq10(true,0x03);//进入扩展会话
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -416,7 +426,7 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 20 {
|
case 21 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq28(0x00,0x01);//开启发送
|
FuncReq28(0x00,0x01);//开启发送
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -426,7 +436,7 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 21 {
|
case 22 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq85(0x01);//开启DTC
|
FuncReq85(0x01);//开启DTC
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
@ -436,7 +446,7 @@ FuncBootSeq = function(){
|
|||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 22 {
|
case 23 {
|
||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncReq10(true,0x01);//进入默认会话
|
FuncReq10(true,0x01);//进入默认会话
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
|
@ -65,6 +65,7 @@ FuncGetFlashCRC = function(id){
|
|||||||
return crc;
|
return crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var s19crc = {};
|
||||||
|
|
||||||
|
|
||||||
FuncOpenS19File = function(id,path){
|
FuncOpenS19File = function(id,path){
|
||||||
@ -147,19 +148,46 @@ FuncOpenS19File = function(id,path){
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
s19crc = null;
|
||||||
|
FuncDisplay(string.format("addr=%x ,len = %x",block.address,#block.data))//显示
|
||||||
|
if(block.address == 0x10000 && #block.data==0xf0000){
|
||||||
|
var last_data_addr = 0;
|
||||||
|
for(i=1;0x90840-5;1){
|
||||||
|
if(block.data[0x90840-5-i] != 0xff){
|
||||||
|
last_data_addr = 0x90840-5-i + 0x10000;
|
||||||
|
var temp = last_data_addr%2048;
|
||||||
|
if(temp != 0){
|
||||||
|
last_data_addr += 2048-temp;
|
||||||
|
}
|
||||||
|
s19crc = {};
|
||||||
|
s19crc["address"] = 0x7F800;
|
||||||
|
s19crc["data"] = table.slice(block.data,-0x800,);
|
||||||
|
s19crc.data[0x7FC] = last_data_addr>>24;
|
||||||
|
s19crc.data[0x7FB] = last_data_addr>>16;
|
||||||
|
s19crc.data[0x7FA] = last_data_addr>>8;
|
||||||
|
s19crc.data[0x7F9] = last_data_addr&0XFF;
|
||||||
|
|
||||||
|
block.data = table.slice(block.data,,last_data_addr-0x10000);
|
||||||
|
//FuncDisplay(string.format("addr=%x ,Data = %x",last_data_addr,block.data[last_data_addr-0x10000]))//显示
|
||||||
|
var crc32temp = FuncCRC32Calc(block.data);
|
||||||
|
s19crc.data[0x800] = crc32temp>>24;
|
||||||
|
s19crc.data[0x7FF] = crc32temp>>16;
|
||||||
|
s19crc.data[0x7FE] = crc32temp>>8;
|
||||||
|
s19crc.data[0x7FD] = crc32temp&0XFF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if(block != null){
|
if(block != null){
|
||||||
table.push(FlashData,block)
|
table.push(FlashData,block)
|
||||||
}
|
}
|
||||||
/*
|
if(s19crc != null){
|
||||||
for(i=1;#FlashData;1){
|
table.push(FlashData,s19crc)
|
||||||
var crc = FuncCRC32Calc(FlashData[i].data);
|
|
||||||
var str = string.format("block %d:addr=0x%X,len=0x%X,crc=0x%X",i,FlashData[i]["address"],#FlashData[i].data,crc);
|
|
||||||
FuncDisplay(str);
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
AllData[id] = FlashData;
|
AllData[id] = FlashData;
|
||||||
}
|
}
|
||||||
|
|
||||||
//blocknum = 1;
|
//blocknum = 1;
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user