Testbed问题记录
1. 编译器选择问题
问题描述
静态分析时默认编译器为 F28335,但工程实际编译环境需确认(MinGW200 GCC v3.2 或 F28335 CCS)。官方指导文档为MinGW。
解决方案
根据工程代码的实际编译环境选择编译器:F28335 Code Composer Studio。
2. 头文件路径未识别
问题描述
配置了头文件路径,但静态分析仍无法识别头文件(报错 #include <DSP2833x_Device.h>
未找到)。
解决方案
- 在
Static Analysis Options
中正确配置头文件路径; - 删除
sysearch.dat
文件里的300开头的行(如300: #include <DSP2833x_Device.h>
)。 - 其他原因造成则继续排查
3. 宏定义未生效
问题描述
在 sysppvar.dat
中添加宏定义(如 #define TARGET 1
),但静态分析未识别。
解决方案
- 检查宏定义格式是否标准(如
-D TARGET=1
); - 优先通过头文件路径解决:若路径配置正确且工程能正常编译,无需额外添加宏。
4. 结构体变量识别失败
问题描述
静态分析无法识别 FLASH_ST
结构体(定义于 Flash2833x_API_Library.h
)。
FLASH_ST变量所在文件路径D:\DSP\ZDBJ_DSP_5CH_2.00.01\INCLUDE\Flash2833x_API_Library.h
typedef struct {Uint32 FirstFailAddr;Uint16 ExpectedData;Uint16 ActualData;
} FLASH_ST;
是否需要手动在用户全局变量里添加?
解决方案
根本原因为头文件未展开,需在 Static Analysis Options
中确保头文件路径完整覆盖。
5. OBJ 文件缺失
问题描述
执行测试时报错 Cannot find file for xxx.obj
。
解决方案
因静态分析阶段编译未成功导致 OBJ 未生成,需检查 Static Analysis Options
配置(路径、宏等)。
6. 多文件头文件识别不全
问题描述
多文件分析时,部分头文件状态为 Unresolved
(应显示 Include File
或 Checked
)。
解决方案
检查静态分析配置,确保:
- 所有头文件路径正确;
- 依赖文件均被加入工程。
7. 函数符号缺失
问题描述
输入输出均为 void
的函数(如 InitSystem()
)报错 Cannot find symbol
。
解决方案
在 Call Views
中手动将未解析函数设为桩函数(Create Managed Stubs)。
8. 链接错误(变量未定义)
问题描述
链接阶段报错 Undefined: CpuTimer0Regs
(变量定义于 DSP2833x_GlobalVariableDefs.c
)。
解决方案
- 确认该.c文件已加入测试工程;
- 若仍缺失,在
Global Variables
中手动添加该变量。
检查静态分析配置,确保:
- 所有头文件路径正确;
- 依赖文件均被加入工程。
9. 输入参数识别错误
问题描述
函数输入参数被误识别为 code
(实际应为 org
),导致测试失败。
解决方案
原因是软件识别错误
- 在创建测试用例时,不要勾选 软件自动打桩。
- 将该函数设为桩函数;
- 在这个CodeToAngle函数的参数设置中:
- 选择 Specify 模式;
- 手动输入参数名
org
并指定类型。
10. 汇编指令导致卡死/崩溃
问题描述
执行测试时输出 ILLEGAL INSTRUCTION TRAP
或卡死在 while(1)
。
解决方案
-
定位
imain.c
文件(通过Explore Source File Directory
);
-
注释掉
__asm
等嵌入式汇编指令; -
替换
while(1)
为有限循环(如for(int i=0; i<100; i++)
)。
11. 中断函数未识别
问题描述
interrupt void
类型函数(如 Cpu_Timer1_Isr()
)在 Call Views
中状态为 Unresolved
。
解决方案
- 手动将其设为桩函数;
- 在桩函数中模拟中断上下文(如寄存器值)。
13. 指针/数组/结构体输入配置
问题描述
测试含复杂数据类型(指针、数组、结构体)的函数时如何设置输出输出元素?
解决方案
在新建测试用例,若该函数运行时涉及指针/数组等元素,那么
- 如需显示在测试用例的结果里,则要勾选“Assign input pointer in IO View” 或者“Add all elements to the test case” 或者“Add multiple elements to the test case”
- 如果不显示在测试用例的结果里,要勾选“Remove all elements from the test case”
14. FLASH 空间不足
问题描述
链接报错 program will not fit into available memory
(FLASHH 空间不足)。
报错为
"C:/LDRA_Toolsuite_C_CPP_10.3.0/Tif28335/F28335_Flash.cmd", line 130: error #10099-D: program will not fit into available memory. placement with alignment/blocking fails for section ".text" size 0x731b page 0. Available memory ranges:FLASHH size: 0x7ffe unused: 0x8e8 max hole: 0x8e8
error #10010: errors encountered during linking; "FindFrame.out" not built>> Compilation failure
解决方案
-
减少测试用例输入数据量(如勾选
Add Multiple elements to the test case All items selected
时精简字段); -
扩展
.cmd
文件中FLASHH
段大小(需硬件支持)。
15. 变量类型识别错误
问题描述
工具将输入变量误识别为输出(如 AdcData
应为输入但标记为输出)。
解决方案
在 Variable I/O View
标签页手动修正变量的Use
(Input/Output)。
16. 头文件嵌套报错
问题描述
静态分析时报错 Cannot find DSP2833x_Gpio.h
(实际路径已配置)。
解决方案
如 AdcData
应为输入但标记为输出)。
解决方案
在 Parameters
标签页手动修正变量方向(Input/Output)。
[外链图片转存中…(img-SHQAhSHj-1749636680269)]
16. 头文件嵌套报错
问题描述
静态分析时报错 Cannot find DSP2833x_Gpio.h
(实际路径已配置)。
解决方案
临时方案:打开当前测试的文件 ixxx.c
中注释掉冲突的 #include
语句。