0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用doxygen分析MCAL源码的层次架构

冬至子 来源:安德鲁的设计笔记本 作者:安德鲁苏 2023-11-02 12:25 次阅读

引言

阅读MCAL源码包中的源码,猜测MCAL可能只是MCU底层SDK向AutoSAR的一个适配接口。为了验证这个猜测,比较直接的做法,就是通过源码“逆向”出软件包中函数的调用关系,试图归纳出实际的源码设计层次架构。

为此,我想到多年前在CI服务器上生成SDK API手册时,偶然发现的可以使用doxygen工具生成函数调用关系图的方法,打算摩拳擦掌,“搞”它一下子。

准备和安装软件

doxygen 是跨平台的工具,支持Linux、Windows、Mac OS X系统(本文将以Windows版本为例)。支持C语言在内的多种语言的分析,生成的帮助文档格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。

它是一款优秀的文档自动生成工具,可以将代码中的注释转换成帮助文档(注释格式要符合 doxygen 要求才行,FFmpeg API Documentation 就是用doxygen自动生成的)。

本文使用doxygen的主要目的是生成函数调用关系图,也可以通过静态分析代码,生成「头文件引用关系图」、「函数调用关系图」、「继承图」以及「协作图」来可视化文档之间的关系。

生成Call Graph

运行 doxywizard.exe。

配置Wizard > Project页面

配置doxygen工程的目录、即将扫描源码的目录、产生输出文件的目录等。

image.png

配置Wizard > Mode页面

选定目标源码的编程语言,为C语言。

image.png

配置Expert > Project页面

可以选择生成中文文档。

image.png

配置Expert > Build页面

配置引用的对象类型。

image.png

配置Expert > Dot页面

启用DOT,启用生成CALL_GRAPH,配置生成DOT的工具路径。

image.png

分析并生成源码

image.png

查看生成内容

image.png

查看生成的调用流图

以查看Mcu.c文件的包含关系为例:

image.png

以查看Mcu_ClockInit()函数的调用关系为例:

image.png

查看MCU驱动模块与其他模块的关联关系:

image.png

总结

在doxygen生成的网站中大略过了一遍YTM32 MCAL的调用关系流图,以MCU驱动模块为例,做了简要的架构分析。MCU驱动模块的实现源码主要位于Mcu目录中(另有Mcu_Cfg.h文件位于board目录中),MCU驱动模块还引用了RteDet目录中的组件,以及Platform中关于硬件硬件的访问。

根据AutoSAR MCAL的规范,McuDetRte等组件位于同一层次,并存在相互调用的关系。MCU驱动模块为了区分MCAL的同层调用关系和面向硬件的调用关系,专门在Mcu.c文件和Mcu_Lld.c文件中分两层实现了MCU驱动模块的功能:

Mcu.c文件中,可以调用MCAL同层次组件的服务,向AutoSAR的BSW提供底层服务。向下通过调用Mcu_Lld.c文件中函数,实现对本组件专属硬件的访问。

Mcu_Lld.c文件中,不能调用MCAL层次上的服务,仅能访问MCU硬件资源,并仅能又Mcu.c文件中的函数调用。

类似地,其他的MCAL层的驱动模块也是如此分层地设计和实现。

如此,可以推断,本文分析的YTM32B1ME05的MCAL软件包为代表,若在YTM32B1MD14芯片(或其他车规MCU)的MCAL软件包中,在基于这个层次架构实现MCAL软件包中,需要适配的,也仅仅是Mcu_Lld.c文件这个层级上的源码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7534

    浏览量

    128844
  • AUTOSAR
    +关注

    关注

    9

    文章

    330

    浏览量

    21138
  • 驱动模块
    +关注

    关注

    0

    文章

    57

    浏览量

    14004
  • MCU控制
    +关注

    关注

    0

    文章

    45

    浏览量

    6651
  • BSW
    BSW
    +关注

    关注

    0

    文章

    15

    浏览量

    3478
收藏 人收藏

    评论

    相关推荐

    层次分析法.pdf

    层次分析法.pdf
    发表于 09-15 12:54

    层次分析法的应用与实现

    数学建模算法:层次分析法之如何选择旅游目的地
    发表于 06-03 17:31

    Linux内核源码之我见——内核源码分析方法

    达到如下效果:1.基本弄清了源码中代码元素存在的含义。2.找出了该模块所涉及的基本上全部的关键源码文件。结合之前搜集到的信息和资料对该待分析代码的整体或者架构描述,我们可以将
    发表于 05-11 07:00

    EMC分析设计层次的讲解

    来源:互联网EMC,大家在熟悉不过了,就是常说的电磁兼容,此次只要是对EMC分析设计层次的讲解,避免这些小细节可以少走弯路。电磁兼容包括两个方面的要求:一方面是电磁干扰;另一方面是电磁敏感性。
    发表于 10-22 13:35

    层次分析法是什么

    1、层次分析法AHP2、单片机学习层次分析法AHP将半定性,半定量的问题转化为定量计算的一种行之有效的方法。成对比较矩阵和正互反矩阵设要比较n个因素C1,C2,……Cn对目标O的影响,
    发表于 07-19 06:19

    一文帮助初学者理解RTT设备架构层次关系

    粗略地画了一个图,主要针对设备这块,能帮助初学者理解设备架构层次关系。下图所示为RTT设备层次关系。(1)STM32为例使用 cubemx 配置的外设,点击生成代码之后,外设的初始化代码会更新
    发表于 05-31 15:08

    如何在RT-THREAD上生成doxygen

    这个插件一共有两种操作在源码文件中头部输入·/** ,然后直接按回车键,你可以看到自动生成的注释了。在写好的函数的上面输入/** , 然后也是按回车键,你就看也看到效果了。doxygen文件生成只要
    发表于 08-09 10:50

    RT-studio使用doxygen生成代码文档经验分享

    在RT-studio使用doxygen生成代码文档时,遇到了一些问题,解决完后作为经验分享。Build Doxygenfile时,并没有出现对应的文档。最大的可能是在使用doxygen生成代码文档
    发表于 11-23 15:54

    层次分析

    层次分析法:层次分析法:椅子的问题,席位分配问题,行走步长问题,实物交换模型。
    发表于 09-15 12:43 9次下载

    层次分析法的改进及应用

    本文基于对层次分析法在处理多目标决策问题时计算量较大、易出现误差的情况提出改进的目的,采用修改标度值和简化判断矩阵的方法,有效地解决了层次分析法在处理多目标决策问
    发表于 08-15 09:46 0次下载
    <b class='flag-5'>层次</b><b class='flag-5'>分析</b>法的改进及应用

    Matlab-层次分析

    matlab层次分析法 老师上课时给编的
    发表于 12-08 18:03 0次下载

    分享一个超级实用的源码阅读小技巧

    工欲善其事必先利其器; 我发现函数调用图可以让我们更加直观地了解到源码函数直接的调用和层次关系,提高阅读源码的效率 。 1 前言 看源码的时候,心血来潮想弄一下函数之前的调用关系,想起
    的头像 发表于 05-29 11:50 1756次阅读
    分享一个超级实用的<b class='flag-5'>源码</b>阅读小技巧

    AUTOSAR MCAL软件的开发

      我们为我们的AUTOSAR MCAL软件支持“实现汽车所需的行驶、转向、停车和连接”和“实现安全便捷的社会”而感到自豪。我们将继续为AUTOSAR MCAL软件提供更好的质量和性能。
    的头像 发表于 04-24 14:44 4045次阅读

    从手写代码到AUTOSAR工具链_MCAL应用篇

    在AUTOSAR分层架构中,MCAL是最基础的一层。由于该层直接和单片机打交道,在整个开发流程中往往最靠前,在PCB测试过程中也发挥着至关重要的作用。
    的头像 发表于 05-30 09:07 7574次阅读
    从手写代码到AUTOSAR工具链_<b class='flag-5'>MCAL</b>应用篇

    AUTOSAR架构MCAL、服务层、ECU抽象层介绍

    1 微控制器抽象层(MCAL) AUTOSAR CP的微控制器抽象层(MCAL)是AUTOSAR软件架构中的一个重要组成部分,它提供了对底层硬件的抽象和访问接口,以实现软件与硬件之间的解耦和可移植性
    的头像 发表于 10-27 15:36 3325次阅读