为什么我遇到编译问题在多任务Polyspace Bug仪吗?

6视图(30天)
Polyspace Bug仪/我有一个现有的项目代码验证,完美运行,但当我使多任务在Os.h我遇到几个编译错误。为什么会发生这个我怎么解决?

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2020年8月31日
当使用多任务与AUTOSAR产品(MICROSAR等等),有一个ARXMLs manbetx 845或石油文件类型,使用关键词来控制多任务。几个ActiveTask等这些关键词,ISR等AUTOSAR产品功能而不是重复的关键词。s manbetx 845这对编译器和导致混乱导致编译错误。
有四个当前工作区:
1。第一个是添加一个宏观配置设置,或手动编辑的文件替换所有的名称与其他名称冲突。例如,添加配置设置的ActiveTask = MyActiveTask ' Target&Compiler >宏>预处理器定义ActiveTask删除任何问题或ActivateTask关键词。另外如果使用命令行运行Polyspace,使用- d ActiveTask = MyActiveTask旗帜。
2。第二个解决方案是避免使用关键字文件,手动设置多任务。信息可以找到不同的方法来建立多任务如下:
3所示。第三个方法是使用-post-preprocessing-command选项如下所示的一个Perl脚本:
#! / usr / bin / perl
#
binmodeSTDOUT;
(美元行= < STDIN >)
{
#评论StatusType OSEK_polyspace_ActivateTask (OSEK_task_polyspace_TaskType TaskID);
美元行= ~ s / (StatusType \ s + OSEK_polyspace_ActivateTask \ s * \ \ s * (. * \);) / \ \ * PS美元1 \ \ * / / g;
#评论StatusType OSEK_get_resource_polyspace_ResourceType渣油();
美元行= ~ s / (StatusType \ s + OSEK_get_resource_polyspace_ResourceType \ s +渣油\ \ s * \ \ s *;) / \ \ * PS美元1 \ \ * / / g;
#取代与StatusType StatusType OSEK_polyspace_TerminateTask OSEK_polyspace_TerminateTask_ps
美元= ~ s /行美元\ s * (StatusType \ s + OSEK_polyspace_TerminateTask) /美元1_ps / g;
打印行美元;
}
4所示。推荐(* *)最后的解决方法是使用“配置手动多任务”。
启动分析,在日志文件中,你下面可以看到以下信息吗,允许你帮助手动配置任务:
_*开始解析ARXML文件。
* *解析文件“C: \ myproject \ myarxml.arxml”
备注:多任务配置ARXML文件中找到
| *任务(入口点)Ts1100ms、Ts210ms Ts31ms TsInit
| * ISR(中断)Isr1、Isr2 irq11ms irqs2
|_
然后搜索在你的源代码的名字函数_Ts1100ms然后直接将它的名字添加选项的入口点。注意,函数名不是* Ts1100ms *但是类似T *问(Ts1100ms) *任务是一个宏,略有变化的函数的名称。
实例,在一些操作系统。h你会发现宏定义是这样的:
#定义任务(x) Task_# #x
意味着你将不得不添加真实姓名等选项的入口点Task_Ts1100ms。
是一样的ISR。
_

更多的答案(0)