使用赋码仪主板 app升级,方案升级验证通过
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -15,4 +15,5 @@ python/build/
|
|||||||
python/dist/
|
python/dist/
|
||||||
*.xlsx
|
*.xlsx
|
||||||
*.json
|
*.json
|
||||||
quest_info.txt
|
quest_info.txt
|
||||||
|
*.jwt
|
@@ -164,7 +164,7 @@
|
|||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>0</SubType>
|
<SubType>8</SubType>
|
||||||
<ItemText>0x0801d000</ItemText>
|
<ItemText>0x0801d000</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
@@ -389,7 +389,7 @@
|
|||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>0</SubType>
|
<SubType>0</SubType>
|
||||||
<ItemText>0x08036000</ItemText>
|
<ItemText>0x08004000</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
@@ -1634,18 +1634,6 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>.\source\task\tran_for_coder2ch.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>tran_for_coder2ch.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>10</GroupNumber>
|
|
||||||
<FileNumber>92</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>.\source\task\mod_signals.c</PathWithFileName>
|
<PathWithFileName>.\source\task\mod_signals.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>mod_signals.c</FilenameWithoutPath>
|
<FilenameWithoutPath>mod_signals.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1653,7 +1641,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>10</GroupNumber>
|
<GroupNumber>10</GroupNumber>
|
||||||
<FileNumber>93</FileNumber>
|
<FileNumber>92</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1673,7 +1661,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>11</GroupNumber>
|
<GroupNumber>11</GroupNumber>
|
||||||
<FileNumber>94</FileNumber>
|
<FileNumber>93</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1693,7 +1681,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>12</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>95</FileNumber>
|
<FileNumber>94</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1705,7 +1693,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>12</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>96</FileNumber>
|
<FileNumber>95</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1717,7 +1705,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>12</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>97</FileNumber>
|
<FileNumber>96</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1729,7 +1717,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>12</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>98</FileNumber>
|
<FileNumber>97</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1741,7 +1729,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>12</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>99</FileNumber>
|
<FileNumber>98</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1753,7 +1741,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>12</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>100</FileNumber>
|
<FileNumber>99</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1773,7 +1761,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>13</GroupNumber>
|
<GroupNumber>13</GroupNumber>
|
||||||
<FileNumber>101</FileNumber>
|
<FileNumber>100</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1793,7 +1781,7 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>14</GroupNumber>
|
<GroupNumber>14</GroupNumber>
|
||||||
<FileNumber>102</FileNumber>
|
<FileNumber>101</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1805,7 +1793,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>14</GroupNumber>
|
<GroupNumber>14</GroupNumber>
|
||||||
<FileNumber>103</FileNumber>
|
<FileNumber>102</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@@ -928,11 +928,6 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>.\source\task\transmit.c</FilePath>
|
<FilePath>.\source\task\transmit.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
|
||||||
<FileName>tran_for_coder2ch.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>.\source\task\tran_for_coder2ch.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
<File>
|
||||||
<FileName>mod_signals.c</FileName>
|
<FileName>mod_signals.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
@@ -3492,11 +3487,6 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>.\source\task\transmit.c</FilePath>
|
<FilePath>.\source\task\transmit.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
|
||||||
<FileName>tran_for_coder2ch.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>.\source\task\tran_for_coder2ch.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
<File>
|
||||||
<FileName>mod_signals.c</FileName>
|
<FileName>mod_signals.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
|
BIN
doc/JW3425_boot_v11.bin
Normal file
BIN
doc/JW3425_boot_v11.bin
Normal file
Binary file not shown.
@@ -5,7 +5,7 @@ import json
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
BOOT_PATH ="JW3425_boot_v10.bin"
|
BOOT_PATH ="JW3425_boot_v11.bin"
|
||||||
APP_PATH ="MS-IEpro20231007.bin"
|
APP_PATH ="MS-IEpro20231007.bin"
|
||||||
OUT_PATH = BOOT_PATH.split('.')[0]+".jwt"
|
OUT_PATH = BOOT_PATH.split('.')[0]+".jwt"
|
||||||
|
|
||||||
|
@@ -131,10 +131,13 @@ class protm:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
u=protm("com5")
|
u=protm("com7")
|
||||||
# u.start_recv()
|
# u.start_recv()
|
||||||
# u.wait()
|
# u.wait()
|
||||||
u.cmd=1
|
u.addr=0
|
||||||
u.addr=1
|
|
||||||
u.host_addr=0
|
u.host_addr=0
|
||||||
print(u.encode(bytearray()).hex(","))
|
u.cmd=0x13
|
||||||
|
print(u.encode(bytearray()).hex(" "))
|
||||||
|
u.cmd=0x0c
|
||||||
|
print(u.encode(bytearray()).hex(" "))
|
||||||
|
|
||||||
|
@@ -198,3 +198,9 @@
|
|||||||
自适应回复电流挡位,boot与app中均通信正常
|
自适应回复电流挡位,boot与app中均通信正常
|
||||||
全流程升级验证成功
|
全流程升级验证成功
|
||||||
拟实现主机发开始检测之后等待300ms再启动检测,防止主机未收到回应
|
拟实现主机发开始检测之后等待300ms再启动检测,防止主机未收到回应
|
||||||
|
2023.10.11
|
||||||
|
解决 tappend 多次加入相同临时指针时返回NULL指针的问题
|
||||||
|
prot_uc 最多接收消息数量上限是10 ,防止主机消息轰炸
|
||||||
|
prot_uc 处理命令的时间如果距离接收时间超过100ms时视为过期,不处理过期消息
|
||||||
|
bootloader 在升级之前会进行校验,如果不是slave的程序则不会升级
|
||||||
|
使用赋码仪主板 app升级,方案升级验证通过
|
@@ -106,7 +106,12 @@ static int flash_erase(uint32_t sector)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 擦除指定地址
|
||||||
|
int flash_erase_addr(uint32_t addr)
|
||||||
|
{
|
||||||
|
addr=addr-FLASH_BASE;
|
||||||
|
return flash_erase(addr/2048);
|
||||||
|
}
|
||||||
|
|
||||||
// 操作开始
|
// 操作开始
|
||||||
int flash_operate_start(void)
|
int flash_operate_start(void)
|
||||||
|
@@ -35,6 +35,7 @@ uint32_t *flash_get_jwtcode(void);
|
|||||||
int flash_write(uint8_t *addr,const uint8_t *data,int len);
|
int flash_write(uint8_t *addr,const uint8_t *data,int len);
|
||||||
int flash_operate_end(void);
|
int flash_operate_end(void);
|
||||||
int flash_write_with_erase(uint8_t *addr,const uint8_t *data,int len);
|
int flash_write_with_erase(uint8_t *addr,const uint8_t *data,int len);
|
||||||
|
int flash_erase_addr(uint32_t addr);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -48,6 +49,7 @@ typedef struct{
|
|||||||
uint8_t host_ip[4];
|
uint8_t host_ip[4];
|
||||||
int host_port;
|
int host_port;
|
||||||
char host_if[8];
|
char host_if[8];
|
||||||
|
char device_type[12];
|
||||||
}rom_head;
|
}rom_head;
|
||||||
|
|
||||||
|
|
||||||
@@ -68,17 +70,10 @@ typedef struct{
|
|||||||
char host_if[8];// 主机接口
|
char host_if[8];// 主机接口
|
||||||
char device_type[12];// 设备类型 ,批检仪还是赋码仪
|
char device_type[12];// 设备类型 ,批检仪还是赋码仪
|
||||||
uint8_t mac[8];// mac地址
|
uint8_t mac[8];// mac地址
|
||||||
uint8_t local_ip[4];// 本机ip地址
|
|
||||||
uint8_t host_ip[4];// 主机ip地址
|
|
||||||
int host_port;// 主机端口
|
|
||||||
int local_cmd_port;// 本机命令端口
|
|
||||||
int host_log_port;// 主机log端口
|
|
||||||
int local_id;// 本机识别号
|
int local_id;// 本机识别号
|
||||||
uint8_t host_log_ip[4];// 主机logip
|
int uartbsp;// 串口的波特率
|
||||||
int uartbsp;// 串口4的波特率
|
int hard_version;// 硬件版本号
|
||||||
int coder_ret_mode;// 注码指令返回格式
|
int resistor_diff;// 电阻校准值
|
||||||
int slave_addr_start;// 小板起始地址
|
|
||||||
int moter_max_count;// 电机最大步数
|
|
||||||
}sys_param_def;
|
}sys_param_def;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -79,6 +79,8 @@ static int cmd_iic_updata(list_def *argv)
|
|||||||
if(ret==0){
|
if(ret==0){
|
||||||
MC_IICUpdateMTP();
|
MC_IICUpdateMTP();
|
||||||
ret=checker_runcfg.excue_rtv;
|
ret=checker_runcfg.excue_rtv;
|
||||||
|
}else{
|
||||||
|
cmd_print("power set failed.");
|
||||||
}
|
}
|
||||||
PowerCalibration_set(POWER_DEF_V,45);
|
PowerCalibration_set(POWER_DEF_V,45);
|
||||||
POWER_OFF;
|
POWER_OFF;
|
||||||
|
@@ -2,6 +2,8 @@
|
|||||||
#include "bytearray.h"
|
#include "bytearray.h"
|
||||||
#include "mystdlib.h"
|
#include "mystdlib.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
#include "stdlib.h"
|
||||||
|
#include "dev_flash.h"
|
||||||
|
|
||||||
#include "elec_det.h"
|
#include "elec_det.h"
|
||||||
#include "base/delay.h"
|
#include "base/delay.h"
|
||||||
@@ -27,6 +29,7 @@
|
|||||||
typedef struct{
|
typedef struct{
|
||||||
CheckerTask_Info_st* task_info_array[PLAN_MAX_TASK];//方案参数结构体指针
|
CheckerTask_Info_st* task_info_array[PLAN_MAX_TASK];//方案参数结构体指针
|
||||||
int scheme_inited;
|
int scheme_inited;
|
||||||
|
array_def *data;
|
||||||
}self_def;
|
}self_def;
|
||||||
|
|
||||||
|
|
||||||
@@ -38,13 +41,23 @@ static self_def g_self;
|
|||||||
// 初始化
|
// 初始化
|
||||||
int elec_init(void)
|
int elec_init(void)
|
||||||
{
|
{
|
||||||
self_def *s=&g_self;
|
|
||||||
void Ye_BoardInit(void);
|
void Ye_BoardInit(void);
|
||||||
void Ye_BoardCheck(void);
|
int elec_parper_power(void);
|
||||||
|
Ye_BoardInit();
|
||||||
|
elec_bootinfo();
|
||||||
|
DBG_LOG("local addr:%d.",elec_local_addr());
|
||||||
|
return elec_scheme_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 初始化方案
|
||||||
|
int elec_scheme_init(void)
|
||||||
|
{
|
||||||
|
self_def *s=&g_self;
|
||||||
|
int ret=0;
|
||||||
int elec_check_scheme(void);
|
int elec_check_scheme(void);
|
||||||
void elec_load_scheme(void);
|
void elec_load_scheme(void);
|
||||||
Ye_BoardInit();
|
int elec_parper_power(void);
|
||||||
Ye_BoardCheck();
|
|
||||||
if(elec_check_scheme()!=0){
|
if(elec_check_scheme()!=0){
|
||||||
// 方案校验失败
|
// 方案校验失败
|
||||||
DBG_WARN("scheme check failed.");
|
DBG_WARN("scheme check failed.");
|
||||||
@@ -53,10 +66,36 @@ int elec_init(void)
|
|||||||
}
|
}
|
||||||
s->scheme_inited=1;
|
s->scheme_inited=1;
|
||||||
elec_load_scheme();
|
elec_load_scheme();
|
||||||
return 0;
|
ret=elec_parper_power();
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 调压
|
||||||
|
static int elec_parper_power(void)
|
||||||
|
{
|
||||||
|
self_def *s=&g_self;
|
||||||
|
CheckerTask_Info_st *task_par=0;
|
||||||
|
int ret=0;
|
||||||
|
task_par= s->task_info_array[0];
|
||||||
|
if(task_par->taskid!=0){
|
||||||
|
// 第一个任务不是调压任务,失败
|
||||||
|
DBG_WARN("parper power failed,first taskid is not 0.");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
// 装载参数
|
||||||
|
checker_runcfg.power_prapare_exe=0;
|
||||||
|
rt_memcpy(&checker_runcfg.task_info,task_par,sizeof(CheckerTask_Info_st));
|
||||||
|
checker_runcfg.param_count = checker_runcfg.task_info.param_rtv_count & 0x0F;
|
||||||
|
checker_runcfg.rtv_count = (checker_runcfg.task_info.param_rtv_count >> 4) & 0x0F;
|
||||||
|
rt_memcpy(checker_runcfg.params,checker_runcfg.task_info.params,checker_runcfg.param_count*2);
|
||||||
|
Checker_PowerPrapare();
|
||||||
|
ret=checker_runcfg.excue_rtv;
|
||||||
|
if(ret){
|
||||||
|
DBG_WARN("parper power failed,ret=%d.",ret);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -64,8 +103,9 @@ int elec_init(void)
|
|||||||
uint8_t elec_local_addr(void)
|
uint8_t elec_local_addr(void)
|
||||||
{
|
{
|
||||||
static uint8_t addr=0;
|
static uint8_t addr=0;
|
||||||
if(addr==0)
|
if(addr==0){
|
||||||
addr=Gpio_GetDeivceAddr();
|
addr=Gpio_GetDeivceAddr();
|
||||||
|
}
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,11 +124,34 @@ void elec_led2_power(int power)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 获取自检参数
|
||||||
|
array_def *elec_bootinfo(void)
|
||||||
|
{
|
||||||
|
void Ye_BoardCheck(void);
|
||||||
|
Ye_BoardCheck();
|
||||||
|
board_st.hard_v=sys_param()->hard_version;
|
||||||
|
board_st.resistor_diff=sys_param()->resistor_diff;
|
||||||
|
board_st.hard_v=15;
|
||||||
|
array_def *r=arr_creat();
|
||||||
|
arr_append(r,0);
|
||||||
|
arr_appends(r,&board_st,sizeof(BoartCheck_st));
|
||||||
|
return arr_temp(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 获取检测结果
|
// 获取检测结果
|
||||||
array_def *elec_check_result(void)
|
array_def *elec_check_result(void)
|
||||||
{
|
{
|
||||||
array_def *r=arr_creat();
|
self_def *s=&g_self;
|
||||||
arr_append(r,3);
|
array_def *r=0;
|
||||||
|
if(s->data){
|
||||||
|
r=arr_duplicate(s->data);
|
||||||
|
}else{
|
||||||
|
r=arr_creat();
|
||||||
|
arr_append(r,2);
|
||||||
|
}
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,8 +159,14 @@ array_def *elec_check_result(void)
|
|||||||
// 写硬件版本号
|
// 写硬件版本号
|
||||||
array_def *elec_write_hardversion(int version)
|
array_def *elec_write_hardversion(int version)
|
||||||
{
|
{
|
||||||
array_def *r=arr_creat();
|
sys_param_def *spar=0;
|
||||||
|
spar=calloc(1,sizeof(sys_param_def));
|
||||||
|
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
||||||
|
spar->hard_version=version;
|
||||||
|
flash_save_param(spar);
|
||||||
|
free(spar);
|
||||||
board_st.hard_v=version;
|
board_st.hard_v=version;
|
||||||
|
array_def *r=arr_creat();
|
||||||
arr_append(r,0);
|
arr_append(r,0);
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
@@ -107,8 +176,14 @@ array_def *elec_write_hardversion(int version)
|
|||||||
// 写电阻校准值
|
// 写电阻校准值
|
||||||
array_def *elec_write_resistor_cbv(int cbv)
|
array_def *elec_write_resistor_cbv(int cbv)
|
||||||
{
|
{
|
||||||
array_def *r=arr_creat();
|
sys_param_def *spar=0;
|
||||||
|
spar=calloc(1,sizeof(sys_param_def));
|
||||||
|
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
||||||
|
spar->resistor_diff=cbv;
|
||||||
|
flash_save_param(spar);
|
||||||
|
free(spar);
|
||||||
board_st.resistor_diff=cbv;
|
board_st.resistor_diff=cbv;
|
||||||
|
array_def *r=arr_creat();
|
||||||
arr_append(r,0);
|
arr_append(r,0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -283,6 +358,8 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
arr_appends(r,checker_runcfg.Task_Result,8);
|
arr_appends(r,checker_runcfg.Task_Result,8);
|
||||||
arr_appends(r,checker_runcfg.Task_Excute,8);
|
arr_appends(r,checker_runcfg.Task_Excute,8);
|
||||||
arr_appends(r,checker_runcfg.Test_Rtv,checker_runcfg.rtv_index*2);
|
arr_appends(r,checker_runcfg.Test_Rtv,checker_runcfg.rtv_index*2);
|
||||||
|
CHECK_DO(s->data,arr_delete);
|
||||||
|
s->data=arr_duplicate(r);
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,12 +8,16 @@
|
|||||||
|
|
||||||
int elec_init(void);
|
int elec_init(void);
|
||||||
|
|
||||||
|
int elec_scheme_init(void);
|
||||||
|
|
||||||
uint8_t elec_local_addr(void);
|
uint8_t elec_local_addr(void);
|
||||||
|
|
||||||
void elec_led1_power(int power);
|
void elec_led1_power(int power);
|
||||||
|
|
||||||
void elec_led2_power(int power);
|
void elec_led2_power(int power);
|
||||||
|
|
||||||
|
array_def *elec_bootinfo(void);
|
||||||
|
|
||||||
array_def *elec_check_result(void);
|
array_def *elec_check_result(void);
|
||||||
|
|
||||||
array_def *elec_write_hardversion(int version);
|
array_def *elec_write_hardversion(int version);
|
||||||
|
@@ -219,6 +219,7 @@ static int EW_appRead(void)
|
|||||||
DBG_LOG("addr=0x%02x.",addr);
|
DBG_LOG("addr=0x%02x.",addr);
|
||||||
ret=EW_ReadMTP(1,addr,read_buf,4);
|
ret=EW_ReadMTP(1,addr,read_buf,4);
|
||||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read_buf[0],read_buf[1],read_buf[2],read_buf[3]);
|
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read_buf[0],read_buf[1],read_buf[2],read_buf[3]);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
static int cmd_jwt_app_read(list_def *argv)
|
static int cmd_jwt_app_read(list_def *argv)
|
||||||
{
|
{
|
||||||
|
@@ -369,6 +369,8 @@ static int h_init(uart_def *u,int bsp)
|
|||||||
{
|
{
|
||||||
h_self_def *h=&g_hself;
|
h_self_def *h=&g_hself;
|
||||||
if(h->inited) return 0;
|
if(h->inited) return 0;
|
||||||
|
// 设置主机接口 int类型,0uart,1can
|
||||||
|
app_variable("host_if",&h->dev_index,0);
|
||||||
h->dev[0]=dev_get("uart1");
|
h->dev[0]=dev_get("uart1");
|
||||||
h->dev[1]=dev_get("can");
|
h->dev[1]=dev_get("can");
|
||||||
h->dev[0]->init(h->dev[0],0);
|
h->dev[0]->init(h->dev[0],0);
|
||||||
|
@@ -386,6 +386,9 @@ static int write_block(uart_def *u,const uint8_t *b,int len)
|
|||||||
param_check(u->private_data);
|
param_check(u->private_data);
|
||||||
self_data *self=u->private_data;
|
self_data *self=u->private_data;
|
||||||
USART_TypeDef *uart=self->dtb->uart;
|
USART_TypeDef *uart=self->dtb->uart;
|
||||||
|
if(self->in_send){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
self->in_send=1;
|
self->in_send=1;
|
||||||
if(1){
|
if(1){
|
||||||
dma_tx_init(self,b,len);
|
dma_tx_init(self,b,len);
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2023-10-10 16:36:03"
|
#define BUILD_DATE "2023-10-11 17:33:01"
|
||||||
#define SOFT_VERSION "0.03"
|
#define SOFT_VERSION "0.03"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -172,20 +172,8 @@ static void print_sys_param(const sys_param_def *par)
|
|||||||
cmd_print("device type: %s",par->device_type);
|
cmd_print("device type: %s",par->device_type);
|
||||||
cmd_print("mac addr: %02x.%02x.%02x.%02x.%02x.%02x",
|
cmd_print("mac addr: %02x.%02x.%02x.%02x.%02x.%02x",
|
||||||
par->mac[0],par->mac[1],par->mac[2],par->mac[3],par->mac[4],par->mac[5]);
|
par->mac[0],par->mac[1],par->mac[2],par->mac[3],par->mac[4],par->mac[5]);
|
||||||
cmd_print("local ip: %d.%d.%d.%d",
|
|
||||||
par->local_ip[0],par->local_ip[1],par->local_ip[2],par->local_ip[3]);
|
|
||||||
cmd_print("host ip: %d.%d.%d.%d",
|
|
||||||
par->host_ip[0],par->host_ip[1],par->host_ip[2],par->host_ip[3]);
|
|
||||||
cmd_print("host port: %d",par->host_port);
|
|
||||||
cmd_print("local cmd port: %d",par->local_cmd_port);
|
|
||||||
cmd_print("host log port: %d",par->host_log_port);
|
|
||||||
cmd_print("local id: %d",par->local_id);
|
cmd_print("local id: %d",par->local_id);
|
||||||
cmd_print("host log ip: %d.%d.%d.%d",
|
|
||||||
par->host_log_ip[0],par->host_log_ip[1],par->host_log_ip[2],par->host_log_ip[3]);
|
|
||||||
cmd_print("uart bsp: %d",par->uartbsp);
|
cmd_print("uart bsp: %d",par->uartbsp);
|
||||||
cmd_print("coder ret mode: %d",par->coder_ret_mode);
|
|
||||||
cmd_print("slave_addr_start: %d",par->slave_addr_start);
|
|
||||||
cmd_print("moter_max_count: %d",par->moter_max_count);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -211,19 +199,10 @@ commend_export(sysinfo,sysinfo,"print the software info")
|
|||||||
static void print_sys_help(void)
|
static void print_sys_help(void)
|
||||||
{
|
{
|
||||||
cmd_print("example for how to set system params:");
|
cmd_print("example for how to set system params:");
|
||||||
cmd_print("set hostif uart4/utcp");
|
cmd_print("set hostif can/uart1/host");
|
||||||
cmd_print("set devicetype checker/coder");
|
cmd_print("set devicetype checker/coder");
|
||||||
cmd_print("set localip 192.168.80.10");
|
|
||||||
cmd_print("set hostip 192.168.80.100");
|
|
||||||
cmd_print("set hostport 7777");
|
|
||||||
cmd_print("set localcmdport 7777");
|
|
||||||
cmd_print("set hostlogport 12345");
|
|
||||||
cmd_print("set localid 1");
|
cmd_print("set localid 1");
|
||||||
cmd_print("set hostlogip 192.168.80.80");
|
cmd_print("set uartbsp 57600");
|
||||||
cmd_print("set uartbsp 115200");
|
|
||||||
cmd_print("set codermode 1/0");
|
|
||||||
cmd_print("set slave_addr_start 1/0");
|
|
||||||
cmd_print("set moter_max_count 0~30000");
|
|
||||||
cmd_print("set save");
|
cmd_print("set save");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,46 +250,6 @@ static int sys_set(list_def *argv)
|
|||||||
memcpy(spar->device_type,str,strlen(str)+1);
|
memcpy(spar->device_type,str,strlen(str)+1);
|
||||||
cmd_print("device type: %s",spar->device_type);
|
cmd_print("device type: %s",spar->device_type);
|
||||||
}
|
}
|
||||||
else if(strcmp(list_get_str(argv,1),"localip")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
list_def *ip=str_atod_list(str,'.');
|
|
||||||
spar->local_ip[0]=list_get_int(ip,0);
|
|
||||||
spar->local_ip[1]=list_get_int(ip,1);
|
|
||||||
spar->local_ip[2]=list_get_int(ip,2);
|
|
||||||
spar->local_ip[3]=list_get_int(ip,3);
|
|
||||||
cmd_print("local ip: %d.%d.%d.%d",
|
|
||||||
spar->local_ip[0],spar->local_ip[1],spar->local_ip[2],spar->local_ip[3]);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"hostip")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
list_def *ip=str_atod_list(str,'.');
|
|
||||||
spar->host_ip[0]=list_get_int(ip,0);
|
|
||||||
spar->host_ip[1]=list_get_int(ip,1);
|
|
||||||
spar->host_ip[2]=list_get_int(ip,2);
|
|
||||||
spar->host_ip[3]=list_get_int(ip,3);
|
|
||||||
cmd_print("host ip: %d.%d.%d.%d",
|
|
||||||
spar->host_ip[0],spar->host_ip[1],spar->host_ip[2],spar->host_ip[3]);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"hostport")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
spar->host_port=str_atoi(str);
|
|
||||||
cmd_print("host port: %d",spar->host_port);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"localcmdport")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
spar->local_cmd_port=str_atoi(str);
|
|
||||||
cmd_print("local cmd port: %d",spar->local_cmd_port);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"hostlogport")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
spar->host_log_port=str_atoi(str);
|
|
||||||
cmd_print("local log port: %d",spar->host_log_port);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"localid")==0)
|
else if(strcmp(list_get_str(argv,1),"localid")==0)
|
||||||
{
|
{
|
||||||
char *str=list_get_str(argv,2);
|
char *str=list_get_str(argv,2);
|
||||||
@@ -323,35 +262,6 @@ static int sys_set(list_def *argv)
|
|||||||
spar->uartbsp=str_atoi(str);
|
spar->uartbsp=str_atoi(str);
|
||||||
cmd_print("uart bsp: %d",spar->uartbsp);
|
cmd_print("uart bsp: %d",spar->uartbsp);
|
||||||
}
|
}
|
||||||
else if(strcmp(list_get_str(argv,1),"hostlogip")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
list_def *ip=str_atod_list(str,'.');
|
|
||||||
spar->host_log_ip[0]=list_get_int(ip,0);
|
|
||||||
spar->host_log_ip[1]=list_get_int(ip,1);
|
|
||||||
spar->host_log_ip[2]=list_get_int(ip,2);
|
|
||||||
spar->host_log_ip[3]=list_get_int(ip,3);
|
|
||||||
cmd_print("host log ip: %d.%d.%d.%d",
|
|
||||||
spar->host_log_ip[0],spar->host_log_ip[1],spar->host_log_ip[2],spar->host_log_ip[3]);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"codermode")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
spar->coder_ret_mode=str_atoi(str);
|
|
||||||
cmd_print("coder ret mode: %d",spar->coder_ret_mode);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"slave_addr_start")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
spar->slave_addr_start=str_atoi(str);
|
|
||||||
cmd_print("slave addr start: %d",spar->slave_addr_start);
|
|
||||||
}
|
|
||||||
else if(strcmp(list_get_str(argv,1),"moter_max_count")==0)
|
|
||||||
{
|
|
||||||
char *str=list_get_str(argv,2);
|
|
||||||
spar->moter_max_count=str_atoi(str);
|
|
||||||
cmd_print("moter_max_count: %d",spar->moter_max_count);
|
|
||||||
}
|
|
||||||
else{
|
else{
|
||||||
cmd_print("unknown cmd for sysset.");
|
cmd_print("unknown cmd for sysset.");
|
||||||
print_sys_help();
|
print_sys_help();
|
||||||
@@ -405,6 +315,10 @@ int main()
|
|||||||
uint8_t *rom;
|
uint8_t *rom;
|
||||||
rom_head *head;
|
rom_head *head;
|
||||||
rom=flash_get_rom(&head);
|
rom=flash_get_rom(&head);
|
||||||
|
if(strcmp(head->device_type,"slave")!=0){
|
||||||
|
// 如果不是小板的固件,本次不升级
|
||||||
|
bk_reboot_guide();
|
||||||
|
}
|
||||||
param_init(head);
|
param_init(head);
|
||||||
if(rom)
|
if(rom)
|
||||||
{
|
{
|
||||||
@@ -464,14 +378,9 @@ void param_init(rom_head *h)
|
|||||||
memcpy(pars.pack_time,h->pack_time,20);
|
memcpy(pars.pack_time,h->pack_time,20);
|
||||||
if(pars.local_id==0xffffffff){
|
if(pars.local_id==0xffffffff){
|
||||||
memcpy(pars.host_if,h->host_if,8);
|
memcpy(pars.host_if,h->host_if,8);
|
||||||
memcpy(pars.device_type,"checker",8);
|
memcpy(pars.device_type,"slave",8);
|
||||||
mac_init(pars.mac);
|
mac_init(pars.mac);
|
||||||
memcpy(pars.local_ip,h->local_ip,4);
|
pars.local_id=0;
|
||||||
memcpy(pars.host_ip,h->host_ip,4);
|
|
||||||
pars.host_port=h->host_port;
|
|
||||||
pars.local_cmd_port=7777;
|
|
||||||
pars.host_log_port=12345;
|
|
||||||
pars.local_id=1;
|
|
||||||
}
|
}
|
||||||
flash_save_param(&pars);
|
flash_save_param(&pars);
|
||||||
}
|
}
|
||||||
@@ -479,16 +388,10 @@ void param_init(rom_head *h)
|
|||||||
// 填充默认配置
|
// 填充默认配置
|
||||||
if(pars.local_id==0xffffffff){
|
if(pars.local_id==0xffffffff){
|
||||||
memcpy(pars.pack_time,"initial app",12);
|
memcpy(pars.pack_time,"initial app",12);
|
||||||
memcpy(pars.host_if,"uart4",6);
|
memcpy(pars.host_if,"host",6);
|
||||||
memcpy(pars.device_type,"coder",6);
|
memcpy(pars.device_type,"slave",6);
|
||||||
mac_init(pars.mac);
|
mac_init(pars.mac);
|
||||||
memcpy(pars.local_ip,(uint8_t []){192,168,80,10},4);
|
pars.local_id=0;
|
||||||
memcpy(pars.host_ip,(uint8_t []){192,168,80,80},4);
|
|
||||||
memcpy(pars.host_log_ip,(uint8_t []){192,168,80,80},4);
|
|
||||||
pars.host_port=9527;
|
|
||||||
pars.local_cmd_port=7777;
|
|
||||||
pars.host_log_port=12345;
|
|
||||||
pars.local_id=1;
|
|
||||||
flash_save_param(&pars);
|
flash_save_param(&pars);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -122,6 +122,7 @@ def creat_head(data:bytearray,date:str):
|
|||||||
head+=arr_from_ip("192.168.80.100")
|
head+=arr_from_ip("192.168.80.100")
|
||||||
head+=arr_from_int(7777)
|
head+=arr_from_int(7777)
|
||||||
head+=arr_from_str("utcp",8)
|
head+=arr_from_str("utcp",8)
|
||||||
|
head+=arr_from_str("slave",12)
|
||||||
head+=arr_byte_copy(0,128-len(head))
|
head+=arr_byte_copy(0,128-len(head))
|
||||||
# print(head)
|
# print(head)
|
||||||
return head
|
return head
|
||||||
|
@@ -97,9 +97,9 @@ void *dev_get(const char *name)
|
|||||||
|
|
||||||
void param_err_handle(const char *param,const char *file,const char *fun,int line)
|
void param_err_handle(const char *param,const char *file,const char *fun,int line)
|
||||||
{
|
{
|
||||||
bk_reboot_param_err();
|
|
||||||
// printf("param=%s,file=%s,fun=%s,line=%d.\r\n",param,file,fun,line);
|
// printf("param=%s,file=%s,fun=%s,line=%d.\r\n",param,file,fun,line);
|
||||||
DBG_ERR("param=%s,file=%s,fun=%s,line=%d.\r\n",param,file,fun,line);
|
DBG_ERR("param=%s,file=%s,fun=%s,line=%d.\r\n",param,file,fun,line);
|
||||||
|
bk_reboot_param_err();
|
||||||
while(1);
|
while(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/*r{ 修改日志打印等级 }c*/
|
/*r{ 修改日志打印等级 }c*/
|
||||||
#define DBG_LOG_LEVEL DBG_LEVEL_INFO
|
#define DBG_LOG_LEVEL 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -48,6 +48,8 @@
|
|||||||
|
|
||||||
#define DBG_LOG_(type_,msg_,...)\
|
#define DBG_LOG_(type_,msg_,...)\
|
||||||
debug_log(__FILE__,__func__,__LINE__,type_,(msg_),##__VA_ARGS__)
|
debug_log(__FILE__,__func__,__LINE__,type_,(msg_),##__VA_ARGS__)
|
||||||
|
//#define DBG_LOG_(type_,msg_,...)\
|
||||||
|
// debug_log("-","-",__LINE__,type_,(msg_),##__VA_ARGS__)
|
||||||
|
|
||||||
|
|
||||||
int debug_init(void);
|
int debug_init(void);
|
||||||
|
@@ -356,6 +356,8 @@ void *tappend(void *p,void *del)
|
|||||||
if(tempptr_find(t,p)==0)
|
if(tempptr_find(t,p)==0)
|
||||||
{
|
{
|
||||||
ret= tempptr_append(t,p,del);
|
ret= tempptr_append(t,p,del);
|
||||||
|
}else{
|
||||||
|
ret=p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rt_mutex_release(t->mutex);
|
rt_mutex_release(t->mutex);
|
||||||
|
@@ -19,9 +19,11 @@
|
|||||||
// 接收buff大小
|
// 接收buff大小
|
||||||
#define RECV_BUFF_SIZE 300
|
#define RECV_BUFF_SIZE 300
|
||||||
|
|
||||||
|
// 最大接收信号个数
|
||||||
|
#define RECV_SEM_MAX_NUM 10
|
||||||
|
|
||||||
|
// 接收数据超时时间
|
||||||
|
#define RECV_EXPIRE_TIME 100
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -87,7 +89,11 @@ static void recv_end_irq(void *t,uint32_t len)
|
|||||||
protu_def *p=t;
|
protu_def *p=t;
|
||||||
p->num_to_recv=len;
|
p->num_to_recv=len;
|
||||||
p->buff_index=len;
|
p->buff_index=len;
|
||||||
rt_sem_release(p->sem);
|
p->sem_num++;
|
||||||
|
if(p->sem_num<RECV_SEM_MAX_NUM){
|
||||||
|
rt_sem_release(p->sem);
|
||||||
|
p->recv_tick=rt_tick_get();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
array_def *protu_decode_str(protu_def *p,array_def *data);
|
array_def *protu_decode_str(protu_def *p,array_def *data);
|
||||||
@@ -159,9 +165,21 @@ static void protu_run(void *t)
|
|||||||
protu_def *p=t;
|
protu_def *p=t;
|
||||||
array_def *data;
|
array_def *data;
|
||||||
array_def *decode_data;
|
array_def *decode_data;
|
||||||
|
uint32_t tick_now;
|
||||||
while(p->run)
|
while(p->run)
|
||||||
{
|
{
|
||||||
rt_sem_take(p->sem,RT_WAITING_FOREVER);
|
rt_sem_take(p->sem,RT_WAITING_FOREVER);
|
||||||
|
p->sem_num=0;
|
||||||
|
if(p->buff_index==0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
tick_now=rt_tick_get();
|
||||||
|
if(tick_now-p->recv_tick>RECV_EXPIRE_TIME){
|
||||||
|
DBG_LOG("recv data expired.");
|
||||||
|
p->num_to_recv=0;
|
||||||
|
p->buff_index=0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
//DBG_LOG("protu run");
|
//DBG_LOG("protu run");
|
||||||
data=arr_creat();
|
data=arr_creat();
|
||||||
arr_appends(data,p->buff,p->buff_index);
|
arr_appends(data,p->buff,p->buff_index);
|
||||||
|
@@ -23,6 +23,8 @@ struct _protu_def{
|
|||||||
int buff_index;
|
int buff_index;
|
||||||
int num_to_recv;
|
int num_to_recv;
|
||||||
void *sem;
|
void *sem;
|
||||||
|
int sem_num;
|
||||||
|
uint32_t recv_tick;
|
||||||
int run;
|
int run;
|
||||||
char *str_err;
|
char *str_err;
|
||||||
uint16_t cmd_no;
|
uint16_t cmd_no;
|
||||||
|
@@ -19,18 +19,20 @@
|
|||||||
typedef struct{
|
typedef struct{
|
||||||
ucport_def u;
|
ucport_def u;
|
||||||
rt_timer_t timer;
|
rt_timer_t timer;
|
||||||
array_def *data;
|
int *host_type;// 主机接口类型0串口,1can
|
||||||
}slave_def;
|
}slave_def;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static slave_def *slave_creat(void)
|
||||||
|
|
||||||
static void slave_dolater(ucport_def *u,int delay_ms)
|
|
||||||
{
|
{
|
||||||
slave_def *s=(slave_def *)u;
|
slave_def *u=calloc(1,sizeof(slave_def));
|
||||||
|
u->host_type=app_variable("host_if",0,0);
|
||||||
|
return u;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void slave_del(ucport_def *u)
|
static void slave_del(ucport_def *u)
|
||||||
{
|
{
|
||||||
slave_def *s=(slave_def *)u;
|
slave_def *s=(slave_def *)u;
|
||||||
@@ -43,13 +45,14 @@ static void slave_del(ucport_def *u)
|
|||||||
// 获取检测结果
|
// 获取检测结果
|
||||||
static int check_result_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
static int check_result_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
{
|
{
|
||||||
|
slave_def *s=(slave_def *)u;
|
||||||
emit tran_reply_signal(u->p,arr_temp(elec_check_result()));
|
emit tran_reply_signal(u->p,arr_temp(elec_check_result()));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static ucport_def *check_result(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *check_result(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=check_result_dolater;
|
u->u.dolater=check_result_dolater;
|
||||||
@@ -70,7 +73,7 @@ static int write_hw_version_dolater(ucport_def *u,uint8_t cmd,array_def *data,ch
|
|||||||
static ucport_def *write_hw_version(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *write_hw_version(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=write_hw_version_dolater;
|
u->u.dolater=write_hw_version_dolater;
|
||||||
@@ -94,7 +97,7 @@ static ucport_def *write_resistor_cbv(tran_def *t, uint8_t cmd,array_def *data)
|
|||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
int value=arr_get(data,0)|(arr_get(data,1)<<8);
|
int value=arr_get(data,0)|(arr_get(data,1)<<8);
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=write_resistor_cbv_dolater;
|
u->u.dolater=write_resistor_cbv_dolater;
|
||||||
@@ -115,7 +118,7 @@ static int check_resistor_dolater(ucport_def *u,uint8_t cmd,array_def *data,char
|
|||||||
static ucport_def *check_resistor(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *check_resistor(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=check_resistor_dolater;
|
u->u.dolater=check_resistor_dolater;
|
||||||
@@ -130,15 +133,74 @@ transmit_export(ym_slave,0x05,check_resistor)
|
|||||||
|
|
||||||
|
|
||||||
// 根据方案检测
|
// 根据方案检测
|
||||||
|
typedef struct{
|
||||||
|
int submit_running;
|
||||||
|
int submit_delay;// 自动上报间隔
|
||||||
|
int submit_times;// 自动上报次数
|
||||||
|
tran_def *tran;
|
||||||
|
uint8_t cmd;
|
||||||
|
int host_type;
|
||||||
|
array_def *data;
|
||||||
|
}check_def;
|
||||||
|
static check_def g_check;
|
||||||
|
static void check_set_data(check_def *u,array_def *data)
|
||||||
|
{
|
||||||
|
CHECK_DO(u->data,arr_delete);
|
||||||
|
u->data=arr_duplicate(data);
|
||||||
|
}
|
||||||
|
static void check_submit_later(void *t)
|
||||||
|
{
|
||||||
|
check_def *s=(check_def *)t;
|
||||||
|
|
||||||
|
s->submit_times--;
|
||||||
|
if(s->submit_running&&(s->submit_times>0)){
|
||||||
|
emit tran_send_signal(s->tran,s->cmd,(elec_check_result()));
|
||||||
|
s->submit_delay+=elec_local_addr()*3;
|
||||||
|
later_execute(check_submit_later,s,s->submit_delay);
|
||||||
|
}else{
|
||||||
|
s->submit_running=0;
|
||||||
|
s->submit_times=0;
|
||||||
|
s->cmd=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static void check_later(void *t)
|
||||||
|
{
|
||||||
|
check_def *s=(check_def *)t;
|
||||||
|
elec_check_with_scheme(s->data);
|
||||||
|
if(s->host_type==1)
|
||||||
|
{
|
||||||
|
s->submit_times=10;
|
||||||
|
s->submit_running=1;
|
||||||
|
s->submit_delay=elec_local_addr()*3;
|
||||||
|
later_execute(check_submit_later,s,s->submit_delay);
|
||||||
|
}else{
|
||||||
|
s->cmd=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
static int check_with_scheme_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
static int check_with_scheme_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
{
|
{
|
||||||
emit tran_reply_signal(u->p,arr_temp(elec_check_with_scheme(data)));
|
slave_def *s=(slave_def *)u;
|
||||||
|
check_def *c=&g_check;
|
||||||
|
array_def *r=arr_creat();
|
||||||
|
if(c->cmd==0){
|
||||||
|
c->cmd=cmd;
|
||||||
|
c->tran=s->u.p;
|
||||||
|
c->host_type=*s->host_type;
|
||||||
|
check_set_data(c,data);
|
||||||
|
later_execute(check_later,c,10);
|
||||||
|
}
|
||||||
|
if(c->cmd==cmd){
|
||||||
|
arr_append(r,0);
|
||||||
|
}else{
|
||||||
|
arr_append(r,2);
|
||||||
|
}
|
||||||
|
emit tran_reply_signal(u->p,arr_temp(r));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static ucport_def *check_with_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *check_with_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=check_with_scheme_dolater;
|
u->u.dolater=check_with_scheme_dolater;
|
||||||
@@ -155,6 +217,7 @@ transmit_export(ym_slave,0x0c,check_with_scheme)
|
|||||||
// 停止上报
|
// 停止上报
|
||||||
static int stop_submit_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
static int stop_submit_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
{
|
{
|
||||||
|
g_check.submit_running=0;
|
||||||
array_def *r=arr_creat();
|
array_def *r=arr_creat();
|
||||||
arr_append(r,0);
|
arr_append(r,0);
|
||||||
emit tran_reply_signal(u->p,arr_temp(r));
|
emit tran_reply_signal(u->p,arr_temp(r));
|
||||||
@@ -163,7 +226,7 @@ static int stop_submit_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *e
|
|||||||
static ucport_def *stop_submit(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *stop_submit(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=stop_submit_dolater;
|
u->u.dolater=stop_submit_dolater;
|
||||||
@@ -182,11 +245,13 @@ transmit_export(ym_slave,0x14,stop_submit)
|
|||||||
// 本程序中程序下载地址不是这个地址,在此用来计算偏移量
|
// 本程序中程序下载地址不是这个地址,在此用来计算偏移量
|
||||||
#define MCU_APP_ADDR_BASE 0x8004000
|
#define MCU_APP_ADDR_BASE 0x8004000
|
||||||
#define MCU_TASKID_ADDR_BASE 0x803f000
|
#define MCU_TASKID_ADDR_BASE 0x803f000
|
||||||
|
#define MCU_JWT_ADDR_BASE 0x803B000
|
||||||
|
|
||||||
// 定义升级结构体
|
// 定义升级结构体
|
||||||
typedef struct{
|
typedef struct{
|
||||||
uint8_t device_state;
|
uint8_t device_state;
|
||||||
uint32_t flash_addr;
|
uint32_t flash_addr;
|
||||||
|
uint32_t flash_addr_base;
|
||||||
}updata_def;
|
}updata_def;
|
||||||
static updata_def g_updata;
|
static updata_def g_updata;
|
||||||
|
|
||||||
@@ -203,7 +268,7 @@ static int device_state_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *
|
|||||||
static ucport_def *device_state(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *device_state(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=device_state_dolater;
|
u->u.dolater=device_state_dolater;
|
||||||
@@ -224,7 +289,7 @@ static int turn_to_bootloader_dolater(ucport_def *u,uint8_t cmd,array_def *data,
|
|||||||
static ucport_def *turn_to_bootloader(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *turn_to_bootloader(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=turn_to_bootloader_dolater;
|
u->u.dolater=turn_to_bootloader_dolater;
|
||||||
@@ -263,7 +328,7 @@ static int erase_app_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err
|
|||||||
static ucport_def *erase_app(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *erase_app(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=erase_app_dolater;
|
u->u.dolater=erase_app_dolater;
|
||||||
@@ -293,7 +358,7 @@ static int write_data_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *er
|
|||||||
static ucport_def *write_data(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *write_data(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=write_data_dolater;
|
u->u.dolater=write_data_dolater;
|
||||||
@@ -311,21 +376,26 @@ static int ceck_crc_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_
|
|||||||
uint32_t addr_start=(arr_get(data,0))|(arr_get(data,1)<<8)|(arr_get(data,2)<<16)|(arr_get(data,3)<<24);
|
uint32_t addr_start=(arr_get(data,0))|(arr_get(data,1)<<8)|(arr_get(data,2)<<16)|(arr_get(data,3)<<24);
|
||||||
uint32_t addr_end=(arr_get(data,4))|(arr_get(data,5)<<8)|(arr_get(data,6)<<16)|(arr_get(data,7)<<24);
|
uint32_t addr_end=(arr_get(data,4))|(arr_get(data,5)<<8)|(arr_get(data,6)<<16)|(arr_get(data,7)<<24);
|
||||||
uint32_t crc32=(arr_get(data,8))|(arr_get(data,9)<<8)|(arr_get(data,10)<<16)|(arr_get(data,11)<<24);
|
uint32_t crc32=(arr_get(data,8))|(arr_get(data,9)<<8)|(arr_get(data,10)<<16)|(arr_get(data,11)<<24);
|
||||||
|
uint32_t crc32_local=0;
|
||||||
int len=addr_end-addr_start;
|
int len=addr_end-addr_start;
|
||||||
addr_start+=FLASH_FILE_HEAD_SIZE;
|
addr_start=g_updata.flash_addr;
|
||||||
int ret=(crc32!=crc_crc32((uint8_t *)addr_start,len));
|
crc32_local=crc_crc32((uint8_t *)addr_start,len);
|
||||||
|
int ret=(crc32!=crc32_local);
|
||||||
|
if(ret){
|
||||||
|
DBG_WARN("crc32 not equal,crc=0x%04x,crc_local=0x%04x",crc32,crc32_local);
|
||||||
|
}
|
||||||
array_def *r=arr_creat();
|
array_def *r=arr_creat();
|
||||||
arr_append(r,ret);
|
arr_append(r,ret);
|
||||||
emit tran_reply_signal(u->p,arr_temp(r));
|
emit tran_reply_signal(u->p,arr_temp(r));
|
||||||
if(ret==0){
|
if(ret==0){
|
||||||
later_execute((void (*)(void *))bk_reboot_app,0,100);
|
later_execute((void (*)(void *))bk_reboot_updata,0,100);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static ucport_def *ceck_crc(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *ceck_crc(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=ceck_crc_dolater;
|
u->u.dolater=ceck_crc_dolater;
|
||||||
@@ -346,10 +416,18 @@ static int write_data2_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *e
|
|||||||
int len=arr_length(data)-4;
|
int len=arr_length(data)-4;
|
||||||
int ret=0;
|
int ret=0;
|
||||||
if((addr)==MCU_TASKID_ADDR_BASE){
|
if((addr)==MCU_TASKID_ADDR_BASE){
|
||||||
flash_erase_scheme();
|
//flash_erase_scheme();
|
||||||
|
// 只擦除两个扇区
|
||||||
|
flash_erase_addr((uint32_t)flash_get_scheme());
|
||||||
|
flash_erase_addr((uint32_t)flash_get_scheme()+2048);
|
||||||
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_scheme(),"scheme.bin");
|
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_scheme(),"scheme.bin");
|
||||||
|
g_updata.flash_addr_base=MCU_TASKID_ADDR_BASE;
|
||||||
|
}else if((addr)==MCU_JWT_ADDR_BASE){
|
||||||
|
flash_erase_jwtcode();
|
||||||
|
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_jwtcode(),"jwtcode.jwt");
|
||||||
|
g_updata.flash_addr_base=MCU_JWT_ADDR_BASE;
|
||||||
}
|
}
|
||||||
uint32_t offset=addr-MCU_TASKID_ADDR_BASE;
|
uint32_t offset=addr-g_updata.flash_addr_base;
|
||||||
addr=g_updata.flash_addr+offset;
|
addr=g_updata.flash_addr+offset;
|
||||||
ret=flash_write((uint8_t *)addr,&arr_data(data)[4],len);
|
ret=flash_write((uint8_t *)addr,&arr_data(data)[4],len);
|
||||||
array_def *r=arr_creat();
|
array_def *r=arr_creat();
|
||||||
@@ -360,7 +438,7 @@ static int write_data2_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *e
|
|||||||
static ucport_def *write_data2(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *write_data2(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
slave_def *u=calloc(1,sizeof(slave_def));
|
slave_def *u=slave_creat();
|
||||||
u->u.p=t;
|
u->u.p=t;
|
||||||
u->u.del=slave_del;
|
u->u.del=slave_del;
|
||||||
u->u.dolater=write_data2_dolater;
|
u->u.dolater=write_data2_dolater;
|
||||||
@@ -371,11 +449,48 @@ transmit_export(ym_slave,0x11,write_data2)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 重新加载方案
|
||||||
|
static int load_scheme_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
array_def *r=arr_creat();
|
||||||
|
arr_append(r,ret);
|
||||||
|
emit tran_reply_signal(u->p,arr_temp(r));
|
||||||
|
ret=elec_scheme_init();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static ucport_def *load_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
slave_def *u=slave_creat();
|
||||||
|
u->u.p=t;
|
||||||
|
u->u.del=slave_del;
|
||||||
|
u->u.dolater=load_scheme_dolater;
|
||||||
|
u->u.dolater(&u->u,cmd,data,"ok");
|
||||||
|
return (ucport_def *)u;
|
||||||
|
}
|
||||||
|
transmit_export(ym_slave,0x15,load_scheme)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 获取自检参数
|
||||||
|
static int bootinfo_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
|
{
|
||||||
|
emit tran_reply_signal(u->p,arr_temp(elec_bootinfo()));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static ucport_def *bootinfo(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
slave_def *u=slave_creat();
|
||||||
|
u->u.p=t;
|
||||||
|
u->u.del=slave_del;
|
||||||
|
u->u.dolater=bootinfo_dolater;
|
||||||
|
u->u.dolater(&u->u,cmd,data,"ok");
|
||||||
|
return (ucport_def *)u;
|
||||||
|
}
|
||||||
|
transmit_export(ym_slave,0x13,bootinfo)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -305,9 +305,6 @@ static void when_scheme_done(ucport_def *u)
|
|||||||
DBG_WARN("can not fond variable \"tran\"");
|
DBG_WARN("can not fond variable \"tran\"");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DBG_LOG("memused:%d",mem_perused());
|
|
||||||
rt_thread_mdelay(100);
|
|
||||||
DBG_LOG("memused:%d",mem_perused());
|
|
||||||
}
|
}
|
||||||
static ucport_def *tran_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *tran_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user