编译app自动生成boot.bin文件
This commit is contained in:
@@ -120,7 +120,7 @@
|
|||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>DLGUARM</Key>
|
<Key>DLGUARM</Key>
|
||||||
<Name>,</Name>
|
<Name>5</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -157,11 +157,19 @@
|
|||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>0</SubType>
|
<SubType>1</SubType>
|
||||||
<ItemText>str</ItemText>
|
<ItemText>0x100004D8</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
|
<MemoryWindow2>
|
||||||
|
<Mm>
|
||||||
|
<WinNumber>2</WinNumber>
|
||||||
|
<SubType>1</SubType>
|
||||||
|
<ItemText>m</ItemText>
|
||||||
|
<AccSizeX>0</AccSizeX>
|
||||||
|
</Mm>
|
||||||
|
</MemoryWindow2>
|
||||||
<MemoryWindow3>
|
<MemoryWindow3>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>3</WinNumber>
|
<WinNumber>3</WinNumber>
|
||||||
@@ -329,6 +337,7 @@
|
|||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>DLGUARM</Key>
|
<Key>DLGUARM</Key>
|
||||||
|
<Name>1</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -361,40 +370,7 @@
|
|||||||
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM))</Name>
|
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM))</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>99</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134230110</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>.\source\rt_thread\board.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\checker_gen1_boot\source/rt_thread/board.c\99</Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>182</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134218452</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>.\source\core\startup_stm32f40_41xxx.s</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\checker_gen1_boot\source/core/startup_stm32f40_41xxx.s\182</Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
@@ -418,6 +394,22 @@
|
|||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow2>
|
</MemoryWindow2>
|
||||||
|
<MemoryWindow3>
|
||||||
|
<Mm>
|
||||||
|
<WinNumber>3</WinNumber>
|
||||||
|
<SubType>1</SubType>
|
||||||
|
<ItemText>0x2000CA00</ItemText>
|
||||||
|
<AccSizeX>0</AccSizeX>
|
||||||
|
</Mm>
|
||||||
|
</MemoryWindow3>
|
||||||
|
<MemoryWindow4>
|
||||||
|
<Mm>
|
||||||
|
<WinNumber>4</WinNumber>
|
||||||
|
<SubType>0</SubType>
|
||||||
|
<ItemText>0x20019bb0</ItemText>
|
||||||
|
<AccSizeX>0</AccSizeX>
|
||||||
|
</Mm>
|
||||||
|
</MemoryWindow4>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
@@ -1132,7 +1124,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>rt_thread</GroupName>
|
<GroupName>rt_thread</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
@@ -132,7 +132,7 @@
|
|||||||
<UseTargetDll>1</UseTargetDll>
|
<UseTargetDll>1</UseTargetDll>
|
||||||
<UseExternalTool>0</UseExternalTool>
|
<UseExternalTool>0</UseExternalTool>
|
||||||
<RunIndependent>0</RunIndependent>
|
<RunIndependent>0</RunIndependent>
|
||||||
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||||
<Capability>1</Capability>
|
<Capability>1</Capability>
|
||||||
<DriverSelection>4096</DriverSelection>
|
<DriverSelection>4096</DriverSelection>
|
||||||
</Flash1>
|
</Flash1>
|
||||||
@@ -1481,7 +1481,7 @@
|
|||||||
<UseTargetDll>1</UseTargetDll>
|
<UseTargetDll>1</UseTargetDll>
|
||||||
<UseExternalTool>0</UseExternalTool>
|
<UseExternalTool>0</UseExternalTool>
|
||||||
<RunIndependent>0</RunIndependent>
|
<RunIndependent>0</RunIndependent>
|
||||||
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||||
<Capability>1</Capability>
|
<Capability>1</Capability>
|
||||||
<DriverSelection>4096</DriverSelection>
|
<DriverSelection>4096</DriverSelection>
|
||||||
</Flash1>
|
</Flash1>
|
||||||
@@ -1661,7 +1661,7 @@
|
|||||||
</ArmAdsMisc>
|
</ArmAdsMisc>
|
||||||
<Cads>
|
<Cads>
|
||||||
<interw>1</interw>
|
<interw>1</interw>
|
||||||
<Optim>1</Optim>
|
<Optim>4</Optim>
|
||||||
<oTime>0</oTime>
|
<oTime>0</oTime>
|
||||||
<SplitLS>0</SplitLS>
|
<SplitLS>0</SplitLS>
|
||||||
<OneElfS>1</OneElfS>
|
<OneElfS>1</OneElfS>
|
||||||
|
82
download.jflash
Normal file
82
download.jflash
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
AppVersion = 76403
|
||||||
|
FileVersion = 2
|
||||||
|
[GENERAL]
|
||||||
|
aATEModuleSel[24] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
ConnectMode = 0
|
||||||
|
CurrentFile = ""
|
||||||
|
DataFileSAddr = 0x00000000
|
||||||
|
GUIMode = 0
|
||||||
|
HostName = ""
|
||||||
|
TargetIF = 1
|
||||||
|
USBPort = 0
|
||||||
|
USBSerialNo = 0x00000000
|
||||||
|
UseATEModuleSelection = 0
|
||||||
|
[JTAG]
|
||||||
|
IRLen = 0
|
||||||
|
MultipleTargets = 0
|
||||||
|
NumDevices = 0
|
||||||
|
Speed0 = 4000
|
||||||
|
Speed1 = 4000
|
||||||
|
TAP_Number = 0
|
||||||
|
UseAdaptive0 = 0
|
||||||
|
UseAdaptive1 = 0
|
||||||
|
UseMaxSpeed0 = 0
|
||||||
|
UseMaxSpeed1 = 0
|
||||||
|
[CPU]
|
||||||
|
NumInitSteps = 1
|
||||||
|
InitStep0_Action = "Reset"
|
||||||
|
InitStep0_Value0 = 0x00000000
|
||||||
|
InitStep0_Value1 = 0x00000000
|
||||||
|
InitStep0_Comment = "Reset and halt target"
|
||||||
|
NumExitSteps = 0
|
||||||
|
UseScriptFile = 0
|
||||||
|
ScriptFile = ""
|
||||||
|
UseRAM = 1
|
||||||
|
RAMAddr = 0x20000000
|
||||||
|
RAMSize = 0x00020000
|
||||||
|
CheckCoreID = 1
|
||||||
|
CoreID = 0x4BA00477
|
||||||
|
CoreIDMask = 0x0F000FFF
|
||||||
|
UseAutoSpeed = 0x00000001
|
||||||
|
ClockSpeed = 0x00000000
|
||||||
|
EndianMode = 0
|
||||||
|
ChipName = "ST STM32F407VG"
|
||||||
|
[FLASH]
|
||||||
|
aRangeSel[1] = 0-11
|
||||||
|
BankName = "Internal flash"
|
||||||
|
BankSelMode = 1
|
||||||
|
BaseAddr = 0x08000000
|
||||||
|
NumBanks = 1
|
||||||
|
[PRODUCTION]
|
||||||
|
AutoPerformsDisconnect = 0
|
||||||
|
AutoPerformsErase = 1
|
||||||
|
AutoPerformsProgram = 1
|
||||||
|
AutoPerformsSecure = 0
|
||||||
|
AutoPerformsStartApp = 0
|
||||||
|
AutoPerformsUnsecure = 0
|
||||||
|
AutoPerformsVerify = 1
|
||||||
|
EnableFixedVTref = 0
|
||||||
|
EnableTargetPower = 0
|
||||||
|
EraseType = 1
|
||||||
|
FixedVTref = 0x00000CE4
|
||||||
|
MonitorVTref = 0
|
||||||
|
MonitorVTrefMax = 0x0000157C
|
||||||
|
MonitorVTrefMin = 0x000003E8
|
||||||
|
OverrideTimeouts = 0
|
||||||
|
ProgramSN = 0
|
||||||
|
SerialFile = ""
|
||||||
|
SNAddr = 0x00000000
|
||||||
|
SNInc = 0x00000001
|
||||||
|
SNLen = 0x00000004
|
||||||
|
SNListFile = ""
|
||||||
|
SNValue = 0x00000001
|
||||||
|
StartAppType = 0
|
||||||
|
TargetPowerDelay = 0x00000014
|
||||||
|
TimeoutErase = 0x00003A98
|
||||||
|
TimeoutProgram = 0x00002710
|
||||||
|
TimeoutVerify = 0x00002710
|
||||||
|
VerifyType = 1
|
||||||
|
[PERFORMANCE]
|
||||||
|
DisableSkipBlankDataOnProgram = 0x00000000
|
||||||
|
PerfromBlankCheckPriorEraseChip = 0x00000001
|
||||||
|
PerfromBlankCheckPriorEraseSelectedSectors = 0x00000001
|
@@ -430,6 +430,8 @@ class protu(QObject):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
u=protu()
|
u=protu()
|
||||||
u.init("utcp:7777")
|
# u.init("utcp:7777")
|
||||||
# u.send_file(0xee,"file/JQ_JCXB_V54.bin")
|
# u.send_file(0xee,"file/JQ_JCXB_V54.bin")
|
||||||
u.send_file(0xed,"../Objects/checker_gen1_app_20230602.bin")
|
# u.send_file(0xed,"../Objects/checker_gen1_app_20230602.bin")
|
||||||
|
u.cmd=0x34
|
||||||
|
print(u.encode(bytearray()).hex(' '))
|
||||||
|
@@ -105,9 +105,12 @@
|
|||||||
log打印可以单独设置主机地址
|
log打印可以单独设置主机地址
|
||||||
bootloader解决打包时间始终被设置为?的bug
|
bootloader解决打包时间始终被设置为?的bug
|
||||||
赋码仪相关指令全部添加通道字段
|
赋码仪相关指令全部添加通道字段
|
||||||
|
2023.6.16
|
||||||
|
解决hostif字段不对造成的程序死机问题
|
||||||
|
通过命令0x08设置的参数如果参数错误会返回对应的错误码
|
||||||
|
系统初始化不会因为参数错误而死机
|
||||||
|
2023.6.16
|
||||||
|
编译app自动生成boot.bin程序,可以用jlink或离线下载器下载到单片机
|
||||||
|
|
||||||
|
|
||||||
|
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2023-06-15 17:41:54"
|
#define BUILD_DATE "2023-06-16 17:58:34"
|
||||||
#define SOFT_VERSION "0.01"
|
#define SOFT_VERSION "0.01"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -513,6 +513,7 @@ void param_init(rom_head *h)
|
|||||||
else{
|
else{
|
||||||
// 填充默认配置
|
// 填充默认配置
|
||||||
if(pars.local_id==0xffffffff){
|
if(pars.local_id==0xffffffff){
|
||||||
|
memcpy(pars.pack_time,"initial app",12);
|
||||||
memcpy(pars.host_if,"uart4",6);
|
memcpy(pars.host_if,"uart4",6);
|
||||||
memcpy(pars.device_type,"coder",6);
|
memcpy(pars.device_type,"coder",6);
|
||||||
mac_init(pars.mac);
|
mac_init(pars.mac);
|
||||||
|
@@ -7,7 +7,7 @@ import prebuild as time
|
|||||||
|
|
||||||
# 定义app和boot文件路径(没有尾缀)
|
# 定义app和boot文件路径(没有尾缀)
|
||||||
APP_FILE_SRC = "./Objects/app/checker_gen1_app"
|
APP_FILE_SRC = "./Objects/app/checker_gen1_app"
|
||||||
BOOT_FILE_SRC = "./Objects/app/checker_gen1_boot"
|
BOOT_FILE_SRC = "./Objects/boot/checker_gen1_boot"
|
||||||
# APP_FILE_DST = "./Objects/checker_gen1_app"
|
# APP_FILE_DST = "./Objects/checker_gen1_app"
|
||||||
APP_FILE_DST = "./python/file/checker_gen1_app"
|
APP_FILE_DST = "./python/file/checker_gen1_app"
|
||||||
BOOT_FILE_DST = "./Objects/checker_gen1_boot"
|
BOOT_FILE_DST = "./Objects/checker_gen1_boot"
|
||||||
@@ -141,9 +141,23 @@ def main():
|
|||||||
data=head+data
|
data=head+data
|
||||||
with open(dst,"wb") as f:
|
with open(dst,"wb") as f:
|
||||||
f.write(data)
|
f.write(data)
|
||||||
print(dst+' File copy success.')
|
print(dst+' create app file success.')
|
||||||
|
boot=BOOT_FILE_SRC+".bin"
|
||||||
|
boot_dst=BOOT_FILE_DST+"_"+date+".bin"
|
||||||
|
if os.path.exists(boot):
|
||||||
|
d=bytearray()
|
||||||
|
with open(boot,"rb") as f:
|
||||||
|
d+=f.read()
|
||||||
|
d+=arr_byte_copy(0xff,0x20000-len(d))
|
||||||
|
with open(src,"rb") as f:
|
||||||
|
d+=f.read()
|
||||||
|
if os.path.exists(boot_dst):
|
||||||
|
os.remove(boot_dst)
|
||||||
|
with open(boot_dst,"wb") as f:
|
||||||
|
f.write(d)
|
||||||
|
print(boot_dst+" create boot file success.")
|
||||||
|
else:
|
||||||
|
print("please build bootloader to create boot file")
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
@@ -199,7 +199,10 @@ static void protu_set_endecode_fun(protu_def *u)
|
|||||||
static int protu_init(void)
|
static int protu_init(void)
|
||||||
{
|
{
|
||||||
const sys_param_def *par=sys_param();
|
const sys_param_def *par=sys_param();
|
||||||
protu_def *protu=protu_creat(dev_get(par->host_if));
|
const char *name="uart4";
|
||||||
|
if(strcmp((par->host_if),"utcp")==0)
|
||||||
|
name="utcp";
|
||||||
|
protu_def *protu=protu_creat(dev_get(name));
|
||||||
app_variable("protu",protu,0);
|
app_variable("protu",protu,0);
|
||||||
|
|
||||||
// 如果通信接口不是用的串口,则增加一个串口的通信
|
// 如果通信接口不是用的串口,则增加一个串口的通信
|
||||||
|
@@ -16,32 +16,64 @@
|
|||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
ucport_def u;
|
ucport_def u;
|
||||||
uint16_t addrs;
|
|
||||||
void (*doexert)(ucport_def *u);
|
void (*doexert)(ucport_def *u);
|
||||||
uint8_t ack_num;
|
uint8_t ack_num;
|
||||||
uint8_t ack_size;
|
int ret_skip;
|
||||||
|
int ack_size;
|
||||||
uint8_t ack[0];
|
uint8_t ack[0];
|
||||||
}check_def;
|
}check_def;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 判断检测数据是否超限,返回填充的字节个数
|
||||||
|
static int in_range(const uint8_t *src_data,uint8_t *range)
|
||||||
|
{
|
||||||
|
const scheme_def *s=check_scheme();
|
||||||
|
int temp;
|
||||||
|
for(int i=0;i<s->range_num;i++)
|
||||||
|
{
|
||||||
|
temp=src_data[i*2]|(src_data[i*2+1]<<8);
|
||||||
|
if(temp>=s->range[i].min&&temp<=s->range[i].max){
|
||||||
|
range[i/8]&=~(1<<(i%8));
|
||||||
|
}else{
|
||||||
|
range[i/8]|=(1<<(i%8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DBG_LOG("range_num=%d, ",s->range_num);
|
||||||
|
return (s->range_num+7)/8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 检测完成
|
// 检测完成
|
||||||
static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str)
|
static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str)
|
||||||
{
|
{
|
||||||
check_def *w=(check_def *)u;
|
check_def *w=(check_def *)u;
|
||||||
uint8_t addr=port_get_addr(src);
|
uint8_t addr=port_get_addr(src);
|
||||||
if(addr<=0||addr>10){
|
if(addr<=0||addr>20){
|
||||||
DBG_WARN("addr err:%d",addr);
|
DBG_WARN("addr err:%d",addr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int return_size=(check_scheme()->range_num*2+8);
|
int return_size=w->ret_skip;
|
||||||
uint8_t *ack_d=&w->ack[(addr-1)*return_size];
|
uint8_t *ack_d=&w->ack[(addr-1)*return_size];
|
||||||
if(return_size!=arr_length(data)){
|
if(ack==0)
|
||||||
DBG_WARN("data err:%d",addr);
|
{
|
||||||
return;
|
// 复制流程结果
|
||||||
|
memcpy(ack_d,arr_data(data),8);ack_d+=8;
|
||||||
|
// 返回参数校验,跳过8字节的流程执行位
|
||||||
|
ack_d+=in_range(arr_data(data)+8+8,ack_d);
|
||||||
|
// 复制返回参数,跳过8字节的流程执行位
|
||||||
|
memcpy(ack_d,arr_data(data)+8+8,check_scheme()->range_num*2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 复制为0xff 无效数据
|
||||||
|
memset(ack_d,0xff,return_size);
|
||||||
}
|
}
|
||||||
memcpy(ack_d,arr_data(data),return_size);
|
|
||||||
// TODO: 还有4字节数据
|
|
||||||
w->ack_num++;
|
w->ack_num++;
|
||||||
if(w->ack_num>=20)
|
if(w->ack_num>=20)
|
||||||
{
|
{
|
||||||
@@ -62,27 +94,23 @@ static void check_del(ucport_def *u)
|
|||||||
|
|
||||||
static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
if(arr_length(data)<7){
|
int return_size=(check_scheme()->range_num*2+8+(check_scheme()->range_num+7)/8);
|
||||||
DBG_WARN("cmd format err.");
|
check_def *u=calloc(1,sizeof(check_def)+return_size*20);
|
||||||
return 0;
|
u->ret_skip=return_size;
|
||||||
}
|
u->ack_size=return_size*20;
|
||||||
int return_size=(check_scheme()->range_num*2+8);
|
|
||||||
check_def *u=calloc(1,sizeof(check_def)+return_size*10);
|
|
||||||
u->ack_size=return_size*10;
|
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=check_del;
|
u->u.del=check_del;
|
||||||
u->u.doend=check_end;
|
u->u.doend=check_end;
|
||||||
|
DBG_LOG("check: skip=%d",u->ret_skip);
|
||||||
tran_set_busy(t,1);
|
tran_set_busy(t,1);
|
||||||
for(int i=0;i<20;i++)
|
for(int i=0;i<20;i++)
|
||||||
{
|
{
|
||||||
if(u->addrs&(1<<i)){
|
|
||||||
port_mcu *mcu=tran_get_portm(u->u.p,i);
|
port_mcu *mcu=tran_get_portm(u->u.p,i);
|
||||||
// 这里打开检测
|
// 这里打开检测
|
||||||
if(mcu){
|
if(mcu){
|
||||||
port_start(mcu,check_creat(check_scheme()));
|
port_start(mcu,check_creat(check_scheme()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
array_def *a=arr_creat();
|
array_def *a=arr_creat();
|
||||||
arr_append(a,0);
|
arr_append(a,0);
|
||||||
@@ -319,22 +347,52 @@ static void paraminfo_fill(paraminfo_def *p)
|
|||||||
|
|
||||||
|
|
||||||
// 保存配置项
|
// 保存配置项
|
||||||
static void paraminfo_save(paraminfo_def *p)
|
static int paraminfo_save(paraminfo_def *p)
|
||||||
{
|
{
|
||||||
|
int ret=0;
|
||||||
sys_param_def *spar=0;
|
sys_param_def *spar=0;
|
||||||
spar=calloc(1,sizeof(sys_param_def));
|
spar=calloc(1,sizeof(sys_param_def));
|
||||||
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
||||||
|
|
||||||
|
if(strcmp("coder",p->devicetype)==0||strcmp("checker",p->devicetype)==0)
|
||||||
memcpy(spar->device_type,p->devicetype,12);
|
memcpy(spar->device_type,p->devicetype,12);
|
||||||
|
else {
|
||||||
|
DBG_WARN("devicetype param must be \"coder\" or \"checker\"");
|
||||||
|
ret=1;return ret;}
|
||||||
|
if(strcmp("uart4",p->hostif)==0||strcmp("utcp",p->hostif)==0)
|
||||||
memcpy(spar->host_if,p->hostif,8);
|
memcpy(spar->host_if,p->hostif,8);
|
||||||
|
else {
|
||||||
|
DBG_WARN("host_if param must be \"uart4\" or \"utcp\"");
|
||||||
|
ret=2;return ret;}
|
||||||
|
if(memcmp(p->localip,(uint8_t []){0,0,0,0},4)!=0)
|
||||||
memcpy(spar->local_ip,p->localip,4);
|
memcpy(spar->local_ip,p->localip,4);
|
||||||
|
else {
|
||||||
|
DBG_WARN("localip param must not be all zero");
|
||||||
|
ret=3;return ret;}
|
||||||
|
if(memcmp(p->hostip,(uint8_t []){0,0,0,0},4)!=0)
|
||||||
memcpy(spar->host_ip,p->hostip,4);
|
memcpy(spar->host_ip,p->hostip,4);
|
||||||
|
else {
|
||||||
|
DBG_WARN("hostip param must not be all zero");
|
||||||
|
ret=4;return ret;}
|
||||||
spar->host_port=p->hostport;
|
spar->host_port=p->hostport;
|
||||||
spar->local_id=p->localid;
|
spar->local_id=p->localid;
|
||||||
|
if(p->uartbsp==115200||p->uartbsp==9600)
|
||||||
spar->uartbsp=p->uartbsp;
|
spar->uartbsp=p->uartbsp;
|
||||||
|
else {
|
||||||
|
DBG_WARN("uartbsp param must be 115200 or 9600");
|
||||||
|
ret=5;return ret;}
|
||||||
|
if(p->coder_return_mode==0||p->coder_return_mode==1)
|
||||||
spar->coder_ret_mode=p->coder_return_mode;
|
spar->coder_ret_mode=p->coder_return_mode;
|
||||||
|
else {
|
||||||
|
DBG_WARN("coder_return_mode param must be 0 or 1");
|
||||||
|
ret=6;return ret;}
|
||||||
|
if(p->slave_addr_start==0||p->slave_addr_start==1)
|
||||||
spar->slave_addr_start=p->slave_addr_start;
|
spar->slave_addr_start=p->slave_addr_start;
|
||||||
|
else {
|
||||||
|
DBG_WARN("slave_addr_start param must be 0 or 1");
|
||||||
|
ret=7;return ret;}
|
||||||
flash_save_param(spar);
|
flash_save_param(spar);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -378,16 +436,15 @@ static ucport_def *param(tran_def *t, uint8_t cmd,array_def *data)
|
|||||||
// 赋码仪添加通道数
|
// 赋码仪添加通道数
|
||||||
arr_append(a,10);
|
arr_append(a,10);
|
||||||
}
|
}
|
||||||
if(arr_length(data)<1+sizeof(paraminfo_def)){
|
if(arr_length(data)<1+off+sizeof(paraminfo_def)){
|
||||||
arr_append(a,1);
|
arr_append(a,0xff);
|
||||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||||
}else{
|
}else{
|
||||||
memcpy(&u->par,arr_data(data)+1,sizeof(paraminfo_def));
|
memcpy(&u->par,arr_data(data)+1,sizeof(paraminfo_def));
|
||||||
paraminfo_save(&u->par);
|
int ret=paraminfo_save(&u->par);
|
||||||
arr_append(a,0);
|
arr_append(a,ret);
|
||||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||||
}
|
}
|
||||||
paraminfo_save(&u->par);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "handle_for_checker.h"
|
#include "handle_for_checker.h"
|
||||||
#include "coder_lib.h"
|
#include "coder_lib.h"
|
||||||
#include "PSDGenerate.h"
|
#include "PSDGenerate.h"
|
||||||
|
#include "mystring.h"
|
||||||
|
|
||||||
// 这个文件解析跟赋码仪相关的命令
|
// 这个文件解析跟赋码仪相关的命令
|
||||||
|
|
||||||
@@ -389,6 +390,7 @@ static void live_send(void *p)
|
|||||||
arr_append(d,slave_online&0xff);// 在线的小板
|
arr_append(d,slave_online&0xff);// 在线的小板
|
||||||
arr_append(d,(slave_online>>8)&0xff);
|
arr_append(d,(slave_online>>8)&0xff);
|
||||||
emit coder2_live_send_signal(p,0x8a,arr_temp(d));
|
emit coder2_live_send_signal(p,0x8a,arr_temp(d));
|
||||||
|
//DBG_LOG("tcp liver:%s",str_temp(arr_string(d)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -405,6 +407,7 @@ static void init_for_tcp(void *t)
|
|||||||
connect(tcp,tcp_connect_signal,0,live,live_connect);
|
connect(tcp,tcp_connect_signal,0,live,live_connect);
|
||||||
connect(tcp,tcp_recv_signal,0,live,live_recv);
|
connect(tcp,tcp_recv_signal,0,live,live_recv);
|
||||||
connect(live,coder2_live_send_signal,0,protu,protu_send_call);
|
connect(live,coder2_live_send_signal,0,protu,protu_send_call);
|
||||||
|
DBG_LOG("tcp liver created");
|
||||||
}else{
|
}else{
|
||||||
DBG_WARN("can not fond variable \"tcp\" or/and \"protu\"");
|
DBG_WARN("can not fond variable \"tcp\" or/and \"protu\"");
|
||||||
}
|
}
|
||||||
@@ -421,6 +424,8 @@ static int init_live_keeper(void)
|
|||||||
if((strcmp(par->device_type,"coder")==0)&&(strcmp(par->host_if,"utcp")==0))
|
if((strcmp(par->device_type,"coder")==0)&&(strcmp(par->host_if,"utcp")==0))
|
||||||
{
|
{
|
||||||
app_valid_call("protu",init_for_tcp,0);
|
app_valid_call("protu",init_for_tcp,0);
|
||||||
|
}else{
|
||||||
|
DBG_LOG("tcp liver not created");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user