撰写毕业设计论文。
在之前的PP控制板上移植STM32duino-FreeRTOS,但是有几个问题:
(1) 创建message handle任务,发送消息回复deserialize error,如下图所示。报错类型是NoMemery,调用
Serial.println(getStr.c_str())
看传递到deserializeJson(jsonDoc,getStr)
的getStr参数,是正确的,如图中的[0,1,2,3,4,5]所示。(2) 创建message handle任务后无法debug,如下图所示。
正常状态下控制台信息应该是:
两者不同在于前者少了
.isr_vector
,.fini_array
等.elf文件中的信息。.pioinit:15:
表示platformIO给系统初始化失败,初步怀疑与DynamicJsonDocument jsonDoc(500)
有关。另外裸机系统也不存在这个问题,所以有可能与加入FreeRTOS组件后系统堆栈空间不足有关。更新:另外发现使用的芯片STM32F103C8T6的板载Flash仅64KB,而Debug模式下编译出的代码量超出64KB约2344Bytes,无法调试可能因为
.elf
文件中的.rodata
缺失一部分而无法完成初始化,使得初始化失败,调试终止。不调试时由于编译选项为release
,代码量约41KB。
本周末继续写毕业论文,准备毕业答辩等事情。
PP控制板那边暂时不修改,因为目前版本虽然基于裸机,但是仍有很好的运行效果,不继续折腾了。移植FreeRTOS为写论文使用,后续会搜集资料看该问题出现的真正原因。
采集卡相关:目前模块与FPGA间采用SPI通讯,需要先熟悉SPI协议的FPGA代码编写,否则无法读取数据。
本文章使用limfx的vscode插件快速发布