解决不能擦除flash的问题
This commit is contained in:
@@ -103,7 +103,7 @@
|
|||||||
<bEvRecOn>1</bEvRecOn>
|
<bEvRecOn>1</bEvRecOn>
|
||||||
<bSchkAxf>0</bSchkAxf>
|
<bSchkAxf>0</bSchkAxf>
|
||||||
<bTchkAxf>0</bTchkAxf>
|
<bTchkAxf>0</bTchkAxf>
|
||||||
<nTsel>4</nTsel>
|
<nTsel>6</nTsel>
|
||||||
<sDll></sDll>
|
<sDll></sDll>
|
||||||
<sDllPa></sDllPa>
|
<sDllPa></sDllPa>
|
||||||
<sDlgDll></sDlgDll>
|
<sDlgDll></sDlgDll>
|
||||||
@@ -114,9 +114,14 @@
|
|||||||
<tDlgDll></tDlgDll>
|
<tDlgDll></tDlgDll>
|
||||||
<tDlgPa></tDlgPa>
|
<tDlgPa></tDlgPa>
|
||||||
<tIfile></tIfile>
|
<tIfile></tIfile>
|
||||||
<pMon>Segger\JL2CM3.dll</pMon>
|
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||||
|
<Name>-U52FF6E065266545441081687 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RC$Flash\STM32F10x_512.FLM)</Name>
|
||||||
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>UL2CM3</Key>
|
<Key>UL2CM3</Key>
|
||||||
@@ -130,7 +135,7 @@
|
|||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>DLGUARM</Key>
|
<Key>DLGUARM</Key>
|
||||||
<Name>?</Name>
|
<Name>(105=-1,-1,-1,-1,0)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -159,8 +164,8 @@
|
|||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>1</SubType>
|
<SubType>0</SubType>
|
||||||
<ItemText>0x200018F0</ItemText>
|
<ItemText>0x0801d000</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
@@ -168,7 +173,7 @@
|
|||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>2</WinNumber>
|
<WinNumber>2</WinNumber>
|
||||||
<SubType>0</SubType>
|
<SubType>0</SubType>
|
||||||
<ItemText>src_data</ItemText>
|
<ItemText>0x0803B000</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow2>
|
</MemoryWindow2>
|
||||||
@@ -322,7 +327,7 @@
|
|||||||
<bEvRecOn>1</bEvRecOn>
|
<bEvRecOn>1</bEvRecOn>
|
||||||
<bSchkAxf>0</bSchkAxf>
|
<bSchkAxf>0</bSchkAxf>
|
||||||
<bTchkAxf>0</bTchkAxf>
|
<bTchkAxf>0</bTchkAxf>
|
||||||
<nTsel>4</nTsel>
|
<nTsel>6</nTsel>
|
||||||
<sDll></sDll>
|
<sDll></sDll>
|
||||||
<sDllPa></sDllPa>
|
<sDllPa></sDllPa>
|
||||||
<sDlgDll></sDlgDll>
|
<sDlgDll></sDlgDll>
|
||||||
@@ -333,9 +338,19 @@
|
|||||||
<tDlgDll></tDlgDll>
|
<tDlgDll></tDlgDll>
|
||||||
<tDlgPa></tDlgPa>
|
<tDlgPa></tDlgPa>
|
||||||
<tIfile></tIfile>
|
<tIfile></tIfile>
|
||||||
<pMon>Segger\JL2CM3.dll</pMon>
|
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>DLGUARM</Key>
|
||||||
|
<Name>(105=-1,-1,-1,-1,0)</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||||
|
<Name>-U52FF6E065266545441081687 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RC$Flash\STM32F10x_512.FLM)</Name>
|
||||||
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>UL2CM3</Key>
|
<Key>UL2CM3</Key>
|
||||||
@@ -362,24 +377,7 @@
|
|||||||
<Name></Name>
|
<Name></Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>93</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>.\source\rt_thread\board.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
<TargetName>app</TargetName>
|
<TargetName>app</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
|
||||||
<uAC6>0</uAC6>
|
<uAC6>0</uAC6>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
@@ -185,7 +185,6 @@
|
|||||||
<uocXRam>0</uocXRam>
|
<uocXRam>0</uocXRam>
|
||||||
<RvdsVP>0</RvdsVP>
|
<RvdsVP>0</RvdsVP>
|
||||||
<RvdsMve>0</RvdsMve>
|
<RvdsMve>0</RvdsMve>
|
||||||
<RvdsCdeCp>0</RvdsCdeCp>
|
|
||||||
<hadIRAM2>0</hadIRAM2>
|
<hadIRAM2>0</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<StupSel>8</StupSel>
|
<StupSel>8</StupSel>
|
||||||
@@ -352,7 +351,7 @@
|
|||||||
<NoWarn>0</NoWarn>
|
<NoWarn>0</NoWarn>
|
||||||
<uSurpInc>0</uSurpInc>
|
<uSurpInc>0</uSurpInc>
|
||||||
<useXO>0</useXO>
|
<useXO>0</useXO>
|
||||||
<ClangAsOpt>4</ClangAsOpt>
|
<uClangAs>0</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
@@ -1073,7 +1072,7 @@
|
|||||||
<TargetName>boot</TargetName>
|
<TargetName>boot</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
|
||||||
<uAC6>0</uAC6>
|
<uAC6>0</uAC6>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
@@ -1248,7 +1247,6 @@
|
|||||||
<uocXRam>0</uocXRam>
|
<uocXRam>0</uocXRam>
|
||||||
<RvdsVP>0</RvdsVP>
|
<RvdsVP>0</RvdsVP>
|
||||||
<RvdsMve>0</RvdsMve>
|
<RvdsMve>0</RvdsMve>
|
||||||
<RvdsCdeCp>0</RvdsCdeCp>
|
|
||||||
<hadIRAM2>0</hadIRAM2>
|
<hadIRAM2>0</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<StupSel>8</StupSel>
|
<StupSel>8</StupSel>
|
||||||
@@ -1415,7 +1413,7 @@
|
|||||||
<NoWarn>0</NoWarn>
|
<NoWarn>0</NoWarn>
|
||||||
<uSurpInc>0</uSurpInc>
|
<uSurpInc>0</uSurpInc>
|
||||||
<useXO>0</useXO>
|
<useXO>0</useXO>
|
||||||
<ClangAsOpt>4</ClangAsOpt>
|
<uClangAs>0</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
@@ -1862,7 +1860,7 @@
|
|||||||
<NoWarn>2</NoWarn>
|
<NoWarn>2</NoWarn>
|
||||||
<uSurpInc>2</uSurpInc>
|
<uSurpInc>2</uSurpInc>
|
||||||
<useXO>2</useXO>
|
<useXO>2</useXO>
|
||||||
<ClangAsOpt>0</ClangAsOpt>
|
<uClangAs>2</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
@@ -2926,7 +2924,7 @@
|
|||||||
<NoWarn>2</NoWarn>
|
<NoWarn>2</NoWarn>
|
||||||
<uSurpInc>2</uSurpInc>
|
<uSurpInc>2</uSurpInc>
|
||||||
<useXO>2</useXO>
|
<useXO>2</useXO>
|
||||||
<ClangAsOpt>0</ClangAsOpt>
|
<uClangAs>2</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
@@ -3468,7 +3466,7 @@
|
|||||||
<NoWarn>2</NoWarn>
|
<NoWarn>2</NoWarn>
|
||||||
<uSurpInc>2</uSurpInc>
|
<uSurpInc>2</uSurpInc>
|
||||||
<useXO>2</useXO>
|
<useXO>2</useXO>
|
||||||
<ClangAsOpt>0</ClangAsOpt>
|
<uClangAs>2</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
@@ -3572,7 +3570,7 @@
|
|||||||
<NoWarn>2</NoWarn>
|
<NoWarn>2</NoWarn>
|
||||||
<uSurpInc>2</uSurpInc>
|
<uSurpInc>2</uSurpInc>
|
||||||
<useXO>2</useXO>
|
<useXO>2</useXO>
|
||||||
<ClangAsOpt>0</ClangAsOpt>
|
<uClangAs>2</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
@@ -3651,7 +3649,7 @@
|
|||||||
<NoWarn>2</NoWarn>
|
<NoWarn>2</NoWarn>
|
||||||
<uSurpInc>2</uSurpInc>
|
<uSurpInc>2</uSurpInc>
|
||||||
<useXO>2</useXO>
|
<useXO>2</useXO>
|
||||||
<ClangAsOpt>0</ClangAsOpt>
|
<uClangAs>2</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
|
BIN
doc/JW3425_boot_v6.bin
Normal file
BIN
doc/JW3425_boot_v6.bin
Normal file
Binary file not shown.
BIN
doc/MS-IEpro20231007.bin
Normal file
BIN
doc/MS-IEpro20231007.bin
Normal file
Binary file not shown.
47
doc/creat_jwt_boot.py
Normal file
47
doc/creat_jwt_boot.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOT_PATH ="JW3425_boot_v6.bin"
|
||||||
|
APP_PATH ="MS-IEpro20231007.bin"
|
||||||
|
OUT_PATH = "jwt_program.jwt"
|
||||||
|
|
||||||
|
# 创建离线下载器的镜像
|
||||||
|
|
||||||
|
|
||||||
|
# 填充指定个数的byte
|
||||||
|
def arr_byte_copy(byte:int,num:int):
|
||||||
|
t=bytearray()
|
||||||
|
for i in range(num):
|
||||||
|
t.append(byte)
|
||||||
|
return t
|
||||||
|
# int转数组
|
||||||
|
def arr_from_int(num:int):
|
||||||
|
return bytearray([num&0xff,(num>>8)&0xff,(num>>16)&0xff,(num>>24)&0xff])
|
||||||
|
|
||||||
|
|
||||||
|
def creat():
|
||||||
|
boot=BOOT_PATH
|
||||||
|
app=APP_PATH
|
||||||
|
d=bytearray()
|
||||||
|
with open(boot,"rb") as f:
|
||||||
|
d+=f.read()
|
||||||
|
d+=arr_byte_copy(0x00,4096-len(d))
|
||||||
|
with open(app,"rb") as f:
|
||||||
|
d+=f.read()
|
||||||
|
d+=arr_byte_copy(0x00,0x3c7c-len(d))
|
||||||
|
d+=arr_from_int(0x55aa6699)
|
||||||
|
d+=arr_byte_copy(0x00,1024*16-len(d))
|
||||||
|
with open(OUT_PATH,"wb+") as f:
|
||||||
|
f.write(d)
|
||||||
|
print(OUT_PATH+" create boot file success.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
creat()
|
||||||
|
|
||||||
|
|
BIN
doc/jwt_program.jwt
Normal file
BIN
doc/jwt_program.jwt
Normal file
Binary file not shown.
@@ -184,4 +184,8 @@
|
|||||||
2023.10.7
|
2023.10.7
|
||||||
添加iic模块升级相关命令
|
添加iic模块升级相关命令
|
||||||
添加下载模块程序指令0xec
|
添加下载模块程序指令0xec
|
||||||
|
2023.10.8
|
||||||
|
发现gd32不能以地址0x00000000来擦除flash
|
||||||
|
修改擦除地址为0x08000000来解决无法写入的问题
|
||||||
|
添加设置总线电压cmd命令
|
||||||
|
|
||||||
|
@@ -88,10 +88,13 @@ static int flash_erase(uint32_t sector)
|
|||||||
s->mutex=rt_mutex_create("flash_mutex",RT_IPC_FLAG_FIFO);
|
s->mutex=rt_mutex_create("flash_mutex",RT_IPC_FLAG_FIFO);
|
||||||
}
|
}
|
||||||
rt_mutex_take(s->mutex,RT_WAITING_FOREVER);
|
rt_mutex_take(s->mutex,RT_WAITING_FOREVER);
|
||||||
|
//irq_disable();
|
||||||
FLASH_Unlock();
|
FLASH_Unlock();
|
||||||
FLASH_CLEAR_FLAG();
|
FLASH_CLEAR_FLAG();
|
||||||
// 对于f103 2048byte为一个扇区,这里把扇区地址转化为flash地址
|
// 对于f103 2048byte为一个扇区,这里把扇区地址转化为flash地址
|
||||||
ret=FLASH_ErasePage(sector*2048);
|
ret=FLASH_ErasePage(FLASH_BASE+ sector*2048);
|
||||||
|
//FLASH_Lock();
|
||||||
|
//irq_enable();
|
||||||
rt_mutex_release(s->mutex);
|
rt_mutex_release(s->mutex);
|
||||||
if(ret!=FLASH_COMPLETE)
|
if(ret!=FLASH_COMPLETE)
|
||||||
{
|
{
|
||||||
@@ -263,20 +266,24 @@ int flash_write(uint8_t *addr,const uint8_t *data,int len)
|
|||||||
|
|
||||||
//DBG_LOG("write flash addr=%08x",flash_addr);
|
//DBG_LOG("write flash addr=%08x",flash_addr);
|
||||||
len+=3;// len不是4字节对齐时强行增加到4字节
|
len+=3;// len不是4字节对齐时强行增加到4字节
|
||||||
|
//FLASH_Unlock();
|
||||||
for(int i=0;i<len/4;i++)
|
for(int i=0;i<len/4;i++)
|
||||||
{
|
{
|
||||||
//FLASH_CLEAR_FLAG();
|
//irq_disable();
|
||||||
//state=FLASH_ProgramByte((uint32_t)addr,data[i]);
|
//state=FLASH_ProgramByte((uint32_t)addr,data[i]);
|
||||||
state=FLASH_ProgramWord(flash_addr,t[i]);
|
state=FLASH_ProgramWord(flash_addr,t[i]);
|
||||||
flash_addr+=4;
|
//FLASH_CLEAR_FLAG();
|
||||||
|
//irq_enable();
|
||||||
if(state!=FLASH_COMPLETE)
|
if(state!=FLASH_COMPLETE)
|
||||||
{
|
{
|
||||||
DBG_WARN("flash write failed.ret=%d",state);
|
DBG_WARN("flash write failed.ret=%d",state);
|
||||||
DBG_WARN("FLASH->SR=%08X",FLASH->SR);
|
DBG_WARN("addr=%08X",flash_addr);
|
||||||
ret=-1;
|
ret=-1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
flash_addr+=4;
|
||||||
}
|
}
|
||||||
|
//FLASH_Lock();
|
||||||
if(memcmp(addr,data,(len/4)*4)!=0)
|
if(memcmp(addr,data,(len/4)*4)!=0)
|
||||||
{
|
{
|
||||||
DBG_WARN("addr=%08x write/read data not equate.",addr);
|
DBG_WARN("addr=%08x write/read data not equate.",addr);
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
#include "elec_det.h"
|
#include "elec_det.h"
|
||||||
#include "commend.h"
|
#include "commend.h"
|
||||||
#include "mystring.h"
|
#include "mystring.h"
|
||||||
|
#include "mystdlib.h"
|
||||||
#include "hardware/jw3425iic.h"
|
#include "hardware/jw3425iic.h"
|
||||||
#include "interface/BaseChecker.h"
|
#include "interface/BaseChecker.h"
|
||||||
#include "base/define.h"
|
#include "base/define.h"
|
||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
|
#include "interface/EWChecker.h"
|
||||||
|
|
||||||
// 电子模块相关调试命令
|
// 电子模块相关调试命令
|
||||||
|
|
||||||
@@ -15,8 +17,9 @@ static int cmd_check(list_def *argv)
|
|||||||
{
|
{
|
||||||
array_def *data=arr_creat();
|
array_def *data=arr_creat();
|
||||||
cmd_print("start check.");
|
cmd_print("start check.");
|
||||||
elec_check_with_scheme(data);
|
array_def *r=elec_check_with_scheme(data);
|
||||||
arr_delete(data);
|
arr_delete(data);
|
||||||
|
cmd_print("check end,ret=%s.",str_temp(arr_string(r)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
commend_export(check,cmd_check,"start check")
|
commend_export(check,cmd_check,"start check")
|
||||||
@@ -94,3 +97,21 @@ commend_export(iic_read,cmd_iic_read,"read mtp via iic,param:mtp_addr,data_lengt
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 设置总线电压
|
||||||
|
static int cmd_set_bus_power(list_def *argv)
|
||||||
|
{
|
||||||
|
if(list_length(argv)<2){
|
||||||
|
cmd_print("param num too less.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int bus_v=str_atoi(list_get_str(argv,1));
|
||||||
|
int ret=0;
|
||||||
|
checker_runcfg.params[0]=(uint16_t)bus_v;
|
||||||
|
checker_runcfg.param_count=1;
|
||||||
|
EW_Test_SetBusV();
|
||||||
|
ret=checker_runcfg.excue_rtv;
|
||||||
|
cmd_print("cmd end,ret=%d.",ret);
|
||||||
|
}
|
||||||
|
commend_export(bus_power,cmd_set_bus_power,"set bus power,param:bus_power")
|
||||||
|
|
||||||
|
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include "interface/BaseChecker.h"
|
#include "interface/BaseChecker.h"
|
||||||
#include "interface/JQChecker.h"
|
#include "interface/JQChecker.h"
|
||||||
#include "interface/XTChecker.h"
|
#include "interface/XTChecker.h"
|
||||||
|
#include "interface/EWChecker.h"
|
||||||
|
|
||||||
|
|
||||||
#define PLAN_MAX_TASK 64
|
#define PLAN_MAX_TASK 64
|
||||||
@@ -196,7 +197,7 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
{
|
{
|
||||||
self_def *s=&g_self;
|
self_def *s=&g_self;
|
||||||
const uint8_t* ptaskindex = (uint8_t*)(APP_TEST_PLAN_ADDR+4);
|
const uint8_t* ptaskindex = (uint8_t*)(APP_TEST_PLAN_ADDR+4);
|
||||||
CheckerTask *tasks_fun_table[]={jqtaskArray,xttaskArray};
|
CheckerTask *tasks_fun_table[]={jqtaskArray,xttaskArray,ewtaskArray};
|
||||||
CheckerTask_Info_st *task_par=0;
|
CheckerTask_Info_st *task_par=0;
|
||||||
uint8_t chip_type=0;
|
uint8_t chip_type=0;
|
||||||
uint8_t taskid=0;
|
uint8_t taskid=0;
|
||||||
@@ -205,10 +206,12 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
array_def *r=arr_creat();
|
array_def *r=arr_creat();
|
||||||
chip_type=(board_st.plan_id >> 12 ) & 0x0F;
|
chip_type=(board_st.plan_id >> 12 ) & 0x0F;
|
||||||
if(s->scheme_inited==0){
|
if(s->scheme_inited==0){
|
||||||
|
DBG_WARN("scheme not init.");
|
||||||
arr_append(r,1);
|
arr_append(r,1);
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
if(chip_type>=LENGTH(tasks_fun_table)){
|
if(chip_type>=LENGTH(tasks_fun_table)){
|
||||||
|
DBG_WARN("unknown chip type.");
|
||||||
arr_append(r,2);
|
arr_append(r,2);
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
@@ -225,14 +228,17 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
checker_runcfg.excue_rtv = 0;
|
checker_runcfg.excue_rtv = 0;
|
||||||
checker_runcfg.task_info.retry_time = 0;
|
checker_runcfg.task_info.retry_time = 0;
|
||||||
if(taskid>=CHECKER_MAXID_COUNT){
|
if(taskid>=CHECKER_MAXID_COUNT){
|
||||||
|
DBG_WARN("tiskid out of bound.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
task_par= s->task_info_array[task_index];
|
task_par= s->task_info_array[task_index];
|
||||||
if(task_par==0){
|
if(task_par==0){
|
||||||
|
DBG_WARN("can not find task params.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
task_fun=tasks_fun_table[chip_type][taskid];
|
task_fun=tasks_fun_table[chip_type][taskid];
|
||||||
if(task_fun==0){
|
if(task_fun==0){
|
||||||
|
DBG_WARN("can not find task fun.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "hardware/power.h"
|
#include "hardware/power.h"
|
||||||
#include "hardware/timer_cfg.h"
|
#include "hardware/timer_cfg.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
#define UPDATA_PACK_LEN 58
|
#define UPDATA_PACK_LEN 58
|
||||||
#define UPDATA_BASE_ADDR 0x1000
|
#define UPDATA_BASE_ADDR 0x1000
|
||||||
@@ -23,6 +23,7 @@ static uint8_t EW_Erease(void)
|
|||||||
uint8_t ret=0;
|
uint8_t ret=0;
|
||||||
DMod_SendBytesXor(data,2,1);
|
DMod_SendBytesXor(data,2,1);
|
||||||
ret=DMod_ReadBytesXor(read,4,100);
|
ret=DMod_ReadBytesXor(read,4,100);
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||||
delay_ms(50);
|
delay_ms(50);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -36,6 +37,7 @@ static uint8_t EW_Jump(void)
|
|||||||
uint8_t ret=0;
|
uint8_t ret=0;
|
||||||
DMod_SendBytesXor(data,2,1);
|
DMod_SendBytesXor(data,2,1);
|
||||||
ret=DMod_ReadBytesXor(read,4,100);
|
ret=DMod_ReadBytesXor(read,4,100);
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||||
delay_ms(50);
|
delay_ms(50);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -50,6 +52,7 @@ static uint8_t EW_Charg(void)
|
|||||||
delay_ms(2000);
|
delay_ms(2000);
|
||||||
DMod_SendBytesXor(data,3,1);
|
DMod_SendBytesXor(data,3,1);
|
||||||
ret=DMod_ReadBytesXor(read,4,100);
|
ret=DMod_ReadBytesXor(read,4,100);
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||||
delay_ms(5000);
|
delay_ms(5000);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -70,6 +73,7 @@ static uint8_t EW_Write(uint16_t addr,uint8_t *d,uint16_t len)
|
|||||||
DMod_SendBytesXor(buf,len+2+2,1);
|
DMod_SendBytesXor(buf,len+2+2,1);
|
||||||
ret=DMod_ReadBytesXor(read,4,100);
|
ret=DMod_ReadBytesXor(read,4,100);
|
||||||
rt_free(buf);
|
rt_free(buf);
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||||
delay_ms(50);
|
delay_ms(50);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -89,6 +93,7 @@ static uint8_t EW_CheckCrc(uint16_t adr_start,uint16_t adr_end,uint32_t *crc)
|
|||||||
*crc=(read[3])|(read[4]<<8)|(read[5]<<16)|(read[6]<<24);
|
*crc=(read[3])|(read[4]<<8)|(read[5]<<16)|(read[6]<<24);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||||
delay_ms(50);
|
delay_ms(50);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -110,12 +115,23 @@ static uint8_t EW_Read(uint16_t adr,uint8_t *buf,uint16_t len)
|
|||||||
{
|
{
|
||||||
rt_memcpy(buf,&read[3],len);
|
rt_memcpy(buf,&read[3],len);
|
||||||
}
|
}
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||||
delay_ms(50);
|
delay_ms(50);
|
||||||
rt_free(read);
|
rt_free(read);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// app:通信测试
|
||||||
|
static void EW_appCommTest(void)
|
||||||
|
{
|
||||||
|
uint8_t data[4]={0x11,0x22};
|
||||||
|
uint8_t ret;
|
||||||
|
ret=EW_CommTest(data,2,300);
|
||||||
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,data[0],data[1],data[2],data[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 升级
|
// 升级
|
||||||
void EW_Updata(void)
|
void EW_Updata(void)
|
||||||
{
|
{
|
||||||
@@ -127,9 +143,11 @@ void EW_Updata(void)
|
|||||||
uint8_t pack_len=UPDATA_PACK_LEN;
|
uint8_t pack_len=UPDATA_PACK_LEN;
|
||||||
uint32_t crc=0;
|
uint32_t crc=0;
|
||||||
uint32_t crc_module=0;
|
uint32_t crc_module=0;
|
||||||
|
EW_appCommTest();
|
||||||
ret=EW_Charg();
|
ret=EW_Charg();
|
||||||
if(ret) {ret=1;goto err;}
|
if(ret) {ret=1;goto err;}
|
||||||
ret=EW_Erease();
|
ret=EW_Erease();
|
||||||
|
//ret=EW_Jump();
|
||||||
if(ret) {ret=2;goto err;}
|
if(ret) {ret=2;goto err;}
|
||||||
while(len>0){
|
while(len>0){
|
||||||
pack_len=len>UPDATA_PACK_LEN?UPDATA_PACK_LEN:len;
|
pack_len=len>UPDATA_PACK_LEN?UPDATA_PACK_LEN:len;
|
||||||
@@ -156,6 +174,7 @@ void EW_Updata(void)
|
|||||||
delay_ms(100);
|
delay_ms(100);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
DBG_LOG("ret=%d",ret);
|
||||||
Checker_MaskResult(ret,checker_runcfg.task_info.runindex);
|
Checker_MaskResult(ret,checker_runcfg.task_info.runindex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,8 +210,9 @@ void EW_Test_SetBusV(void)
|
|||||||
Checker_RunCfg_st *cfg=&checker_runcfg;
|
Checker_RunCfg_st *cfg=&checker_runcfg;
|
||||||
uint8_t uc_rtv = 0;
|
uint8_t uc_rtv = 0;
|
||||||
uint16_t us_h_v,us_m_v;
|
uint16_t us_h_v,us_m_v;
|
||||||
//us_h_v = cfg->params[0];
|
uint16_t power_old;
|
||||||
us_h_v = 240;
|
us_h_v = cfg->params[0];
|
||||||
|
power_old=us_h_v;
|
||||||
if(us_h_v < 55)
|
if(us_h_v < 55)
|
||||||
{
|
{
|
||||||
uc_rtv = 1;
|
uc_rtv = 1;
|
||||||
@@ -207,6 +227,12 @@ void EW_Test_SetBusV(void)
|
|||||||
us_h_v = Power_GetBousV();
|
us_h_v = Power_GetBousV();
|
||||||
Checker_SetRtv(&us_h_v,cfg->rtv_count);
|
Checker_SetRtv(&us_h_v,cfg->rtv_count);
|
||||||
}
|
}
|
||||||
|
if(uc_rtv){
|
||||||
|
DBG_WARN("bus power init failed.h");
|
||||||
|
}
|
||||||
|
if((us_h_v<power_old-10)||(us_h_v>power_old+10)){
|
||||||
|
DBG_WARN("power set fialed,want=%d,reality=%d.",power_old,us_h_v);
|
||||||
|
}
|
||||||
Checker_MaskResult(uc_rtv,cfg->task_info.runindex);
|
Checker_MaskResult(uc_rtv,cfg->task_info.runindex);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
extern CheckerTask ewtaskArray[CHECKER_MAXID_COUNT] ;
|
extern CheckerTask ewtaskArray[CHECKER_MAXID_COUNT] ;
|
||||||
|
|
||||||
|
void EW_Test_SetBusV(void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -87,7 +87,7 @@ static const uart_dtb g_uartdtb[]={
|
|||||||
.uart=USART1,
|
.uart=USART1,
|
||||||
.uart_clock_fun=RCC_APB2PeriphClockCmd,
|
.uart_clock_fun=RCC_APB2PeriphClockCmd,
|
||||||
.uart_rcc=RCC_APB2Periph_USART1,
|
.uart_rcc=RCC_APB2Periph_USART1,
|
||||||
.baudrate=115200,
|
.baudrate=57600,
|
||||||
.irq_channel=USART1_IRQn,
|
.irq_channel=USART1_IRQn,
|
||||||
|
|
||||||
.gpio_tx_clock_fun=RCC_APB2PeriphClockCmd,
|
.gpio_tx_clock_fun=RCC_APB2PeriphClockCmd,
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2023-10-07 22:39:04"
|
#define BUILD_DATE "2023-10-08 17:53:21"
|
||||||
#define SOFT_VERSION "0.03"
|
#define SOFT_VERSION "0.03"
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user