S32DS使用JLINK编译调试问题点记录
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 报错
解决方法:说明程序已经在运行了,无法再次运行;正常是要先点击红色按钮;
点击之后没效果的话,把jlink调试器重新插拔一下;