目录
前言
汽车电子嵌入式(公众号/CSDN)开始更新全新的AUTOSAR项目实战专栏内容,从0到1搭建一个AUTOSAR工程,内容会覆盖AUTOSAR通信协议栈、存储协议栈、诊断协议栈、MCAL、系统服务、标定、Bootloader、复杂驱动、功能安全等所有常见功能和模块,全网同步更新开发设计文档(后期也会更新视频内容)。本文为前期基础工程搭建过程遇到的问题分析-OsCounter访问权限问题分析。
AUTOSAR BSW Tool:Vector
AUTOSAR MCAL Tool:EB
Hardware Platform: Infineon Tricore TC387
Build Tool: Tasking
Debug Tool: UDE
系列文章:
AUTOSAR项目实战(1)-数据地址访问对齐问题分析
AUTOSAR项目实战(2)-内存访问异常问题分析
注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!
正文
问题描述:Os_Task_Default_Init_Task在运行过程中调用CanLL_SetAllRegister后发生发生Error, OS检测到Error后调用ErrorHook进入While(1)循环。
通过Os_ErrorInformationType CurrentError;信息分析,是CanLL_SetAllRegister执行过程中调用了Os的GetCounterValue发生了Error, Error类型是访问权限(Access Right)问题。
那么调用GetCounterValue为什么会产生访问权限的问题了?
查看GetCounterValue的手册描述:
1.Os Counter所属的Os Application是不可访问的 或者
2.调用者(函数)所在的Os Application没有该Os Counter的访问权限。
都会造成GetCounterValue返回E_OS_ACCESS异常。
关于OsCounter可以参考:
《【OS】AUTOSAR OS Counter实现原理(上篇)》
《【OS】AUTOSAR OS Counter实现原理(下篇)》
《符合AUTOSAR标准的RTAOS--Counters详解》
本文的问题原因就很清楚了,就是Os_Task_Default_Init_Task所在的OS Application没有所使用的Os Counter的访问权限。
Can Driver所在的Task是Os_Task_Default_Init_Task,
Os_Task_Default_Init_Task所在的Os Application是OsApplication_NoTrusted_Core0,
Can Driver需要使用的OsCounter是SystemTimer,
也就是给SystemTimer配置OsApplication_NoTrusted_Core0的访问权限。
Can Driver之所以会使用GetCounterValue, 那是因为我们配置了Hardware Loop Check功能, 我们可以把Hardware Loop Check配置去掉,Can Driver就不会使用GetCounterValue了,这样也不会产生Os Error.
1.调用GetCounterValue接口的函数所属的OsApplication需要有对该OsCounter的访问权限,否则GetCounterValue会返回E_OS_ACCESS的Error,从而导致程序调用ErrorHook进入While(1)循环。
2.如果配置了CAN模块的Hardware Loop Check参数,Can Driver会调用GetCounterValue实现一些特殊功能,那么注意要把Can Driver所属的OsApplication配置上OsCounter的访问权限。
End
「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」
点击文章最后左下角的阅读原文可以获取更多信息
或者复制如下链接到浏览器获取更多信息
https://blog.csdn.net/qq_36056498/article/details/132125693
文末福利
2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;
注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!
推荐阅读
汽车电子嵌入式精彩文章汇总第一期:20210530-20230703
汽车电子嵌入式精彩文章汇总第2期
汽车电子嵌入式精彩文章汇总第3期
【OS】AUTOSAR OS Event实现原理
【OS】AUTOSAR OS Spinlock实现原理(下篇)
【OS】AUTOSAR OS Spinlock实现原理(上篇)
CanNm处于PBS状态下接收到一帧诊断报文DCM会响应吗
TC3xx芯片CAN模块详解
AUTOSAR OS Alarm实现原理
AUTOSAR OsTask切换原理
TC3xx 芯片SPI模块详解
AUTSOAR ComStack如何实现PDU只收不发的
AUTOSAR OsStack监控原理
AUTOSAR架构下ICU唤醒详解
CanNm报文的触发发送详解
Can报文能发不能收问题分析
TC3xx芯片PFlash的ECC校验问题补充
AUTOSAR架构下唤醒源检测函数EcuM_CheckWakeup详解
什么是Copy Table及如何使用Copy Table
AUTOSAR架构下EcuM_StartupTwo函数功能详解
符合AUTOSAR标准的RTAOS-Schedule Tables详解(上篇)
AUTOSAR OS Schedule Table实现原理
符合AUTOSAR标准的RTAOS-Schedule Tables详解(下篇)
TJA1145收发器重要功能介绍
AUTOSAR架构下基于TJA1145收发器通信丢失问题分析
End
欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!
汽车电子嵌入式
微信扫描二维码,关注我的公众号