4个2243级联的板卡上,我想要实现通过网口来修改idleTimeConst、adcStartTimeConst、rampEndTime、numLoops、numAdcSamples、digOutSampleRate、freqSlopeConst这7个变量,达到实时修改板卡的最大探测距离。这7个变量都在rlProfileCfg结构体里。
1、已经实现的
我目前已经在代码中做到通过串口UART方式,实现修改这个7个变量,达到修改板卡的最大探测范围。方法是在函数Chains_cascadeRadarOd(位置H:\PROCESSOR_SDK_RADAR_03_08_00_00\vision_sdk\apps\src\rtos\radar\src\usecases\cascade_radar_object_detect\chains_cascadeRadarOd.c)里,接收串口指令和这7个参数数据,然后将这7个参数数据写入chainsObj.ar12xxCfg.radarParams[ii].ar12xxConfig.profileCfgArgs->idleTimeConst,chainsObj.ar12xxCfg.radarParams[ii].ar12xxConfig.profileCfgArgs->adcStartTimeConst,chainsObj.ar12xxCfg.radarParams[ii].ar12xxConfig.profileCfgArgs->rampEndTime等这7个变量,然后再发送串口指令重启下雷达板卡,即可实现更改这7个变量,从而实现更改最大探测距离。
typedef struct rlProfileCfg
{
...
rlUInt32_t startFreqConst;
rlUInt32_t idleTimeConst;
rlUInt32_t adcStartTimeConst;
rlUInt32_t rampEndTime;
rlInt16_t freqSlopeConst;
rlInt16_t txStartTime;
rlUInt16_t numAdcSamples;
...
} rlProfileCfg_t;
2、想要实现的
现在的需求就是通过网口来接收参数,实现修改7个变量的参数,从而实现修改最大探测距离。
在代码中我找到了network_ctrl_tsk.c(位置H:\PROCESSOR_SDK_RADAR_03_08_00_00\vision_sdk\apps\src\rtos\modules\network_ctrl\network_ctrl_tsk.c),这个组件开启了雷达板卡的5000端口号。
(1)功能1:客户端只需要连接雷达板卡IP地址(192.168.1.200)的5000端口号,然后发送定义好的命令sys_reset,就可以让雷达板卡重启,这个我已经测试通过了。
(2)功能2:客户端只需要连接雷达板卡IP地址(192.168.1.200)的5000端口号,然后发送读取固定内容地址中的数据命令,如 mem_rd 0x86d69c68 16,读取地址为0x86d69c68 后的16个地址单元的数据。发送命令,执行后的结果是:(1)地址:0x86d69c68 数据:2乘以10的8次方(0xbebc200)等
我现在想如果我知道了idleTimeConst、adcStartTimeConst、rampEndTime、numLoops、numAdcSamples、digOutSampleRate、freqSlopeConst这7个变量的内存地址,我通过连接雷达板卡IP地址(192.168.1.200)的5000端口号,发送定义的指令,在network_ctrl_tsk.c修改下已知的内存地址里面的数据,这样,我就可以达到修改这7个变量的数据,从而达到修改最大探测范围的目的。
问题1:我如何固定这7个变量的内存地址呢?如果是链接link.ld的方法,link.ld不知道写在哪里?
如果问题1解决了,固定了7个变量的内存地址,我就可以在network_ctrl_tsk.c(位置H:\PROCESSOR_SDK_RADAR_03_08_00_00\vision_sdk\apps\src\rtos\modules\network_ctrl\network_ctrl_tsk.c)中接收到要更改最大探测距离命令的时候,修改这个7个变量地址中的数据,从而实现修改最大探测距离的目的。
问题2:要是network_ctrl_tsk.c(位置H:\PROCESSOR_SDK_RADAR_03_08_00_00\vision_sdk\apps\src\rtos\modules\network_ctrl\network_ctrl_tsk.c)能发送命令System_sendLinkCmd和数据给chains_cascadeRadarOd.c(H:\PROCESSOR_SDK_RADAR_03_08_00_00\vision_sdk\apps\src\rtos\radar\src\usecases\cascade_radar_object_detect\chains_cascadeRadarOd.c),这样也好啊,但是好像不行,都相互不知道link_ID,network_ctrl_tsk.c也没加进入link。这个好像有点难