1:变量不能设置太大

测试发现当变量大于100byte时候,会有报错;

test_buff	uint8 [512]		
	[0...99]		Error: Multiple errors reported.\ Failed to execute MI command: -var-create - * *((test_buff)+0)@100 Error message from debugger back end: Can't take address of "test_buff" which isn't an lvalue.\ Unable to create variable object\ Failed to execute MI command: -data-evaluate-expression *((test_buff)+0)@100 Error message from debugger back end: Can't take address of "test_buff" which isn't an lvalue.\ Failed to execute MI command: -var-create - * *((test_buff)+0)@100 Error message from debugger back end: Can't take address of "test_buff" which isn't an lvalue.

这个是因为S32DS默认安装的编译器,优化选项为 -Os,会限制目标代码大小;

解决方法:参考如下修改优化等级即可

2:部分代码无法打断点运行

比如如下部分代码,打断点时候无法停止,会直接跳过;

同样是优化等级的问题,IDE默认使用 -Os优化等级,为了提高代码运行速度;会对部分代码进行优化,可通过汇编代码对比查看区别;

解决方法:修改优化等级即可;

3:task任务栈增加之后,某个任务无法运行

解决方法:修改任务堆大小,初始化的时候会先malloc申请总大小,然后再一次分配给各个task

#define configTOTAL_HEAP_SIZE                       (( size_t ) 16384 )

4:already started. Terminate the first one before restarting 报错

解决方法:说明程序已经在运行了,无法再次运行;正常是要先点击红色按钮;

或者点击一下console的停止按钮;

点击之后没效果的话,把jlink调试器重新插拔一下;

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐