0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用doxygen分析MCAL源碼的層次架構(gòu)

冬至子 ? 來源:安德魯?shù)脑O(shè)計筆記本 ? 作者:安德魯蘇 ? 2023-11-02 12:25 ? 次閱讀

引言

閱讀MCAL源碼包中的源碼,猜測MCAL可能只是MCU底層SDK向AutoSAR的一個適配接口。為了驗證這個猜測,比較直接的做法,就是通過源碼“逆向”出軟件包中函數(shù)的調(diào)用關(guān)系,試圖歸納出實際的源碼設(shè)計層次架構(gòu)。

為此,我想到多年前在CI服務(wù)器上生成SDK API手冊時,偶然發(fā)現(xiàn)的可以使用doxygen工具生成函數(shù)調(diào)用關(guān)系圖的方法,打算摩拳擦掌,“搞”它一下子。

準備和安裝軟件

doxygen 是跨平臺的工具,支持Linux、Windows、Mac OS X系統(tǒng)(本文將以Windows版本為例)。支持C語言在內(nèi)的多種語言的分析,生成的幫助文檔格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。

它是一款優(yōu)秀的文檔自動生成工具,可以將代碼中的注釋轉(zhuǎn)換成幫助文檔(注釋格式要符合 doxygen 要求才行,F(xiàn)Fmpeg API Documentation 就是用doxygen自動生成的)。

本文使用doxygen的主要目的是生成函數(shù)調(diào)用關(guān)系圖,也可以通過靜態(tài)分析代碼,生成「頭文件引用關(guān)系圖」、「函數(shù)調(diào)用關(guān)系圖」、「繼承圖」以及「協(xié)作圖」來可視化文檔之間的關(guān)系。

生成Call Graph

運行 doxywizard.exe。

配置Wizard > Project頁面

配置doxygen工程的目錄、即將掃描源碼的目錄、產(chǎn)生輸出文件的目錄等。

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

查看生成內(nèi)容

image.png

查看生成的調(diào)用流圖

以查看Mcu.c文件的包含關(guān)系為例:

image.png

以查看Mcu_ClockInit()函數(shù)的調(diào)用關(guān)系為例:

image.png

查看MCU驅(qū)動模塊與其他模塊的關(guān)聯(lián)關(guān)系:

image.png

總結(jié)

在doxygen生成的網(wǎng)站中大略過了一遍YTM32 MCAL的調(diào)用關(guān)系流圖,以MCU驅(qū)動模塊為例,做了簡要的架構(gòu)分析。MCU驅(qū)動模塊的實現(xiàn)源碼主要位于Mcu目錄中(另有Mcu_Cfg.h文件位于board目錄中),MCU驅(qū)動模塊還引用了RteDet目錄中的組件,以及Platform中關(guān)于硬件硬件的訪問。

根據(jù)AutoSAR MCAL的規(guī)范,McuDetRte等組件位于同一層次,并存在相互調(diào)用的關(guān)系。MCU驅(qū)動模塊為了區(qū)分MCAL的同層調(diào)用關(guān)系和面向硬件的調(diào)用關(guān)系,專門在Mcu.c文件和Mcu_Lld.c文件中分兩層實現(xiàn)了MCU驅(qū)動模塊的功能:

Mcu.c文件中,可以調(diào)用MCAL同層次組件的服務(wù),向AutoSAR的BSW提供底層服務(wù)。向下通過調(diào)用Mcu_Lld.c文件中函數(shù),實現(xiàn)對本組件專屬硬件的訪問。

Mcu_Lld.c文件中,不能調(diào)用MCAL層次上的服務(wù),僅能訪問MCU硬件資源,并僅能又Mcu.c文件中的函數(shù)調(diào)用。

類似地,其他的MCAL層的驅(qū)動模塊也是如此分層地設(shè)計和實現(xiàn)。

如此,可以推斷,本文分析的YTM32B1ME05的MCAL軟件包為代表,若在YTM32B1MD14芯片(或其他車規(guī)MCU)的MCAL軟件包中,在基于這個層次架構(gòu)實現(xiàn)MCAL軟件包中,需要適配的,也僅僅是Mcu_Lld.c文件這個層級上的源碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134053
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    339

    瀏覽量

    21357
  • 驅(qū)動模塊
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    14079
  • MCU控制
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    6704
  • BSW
    BSW
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    3498
收藏 人收藏

    評論

    相關(guān)推薦

    層次分析法.pdf

    層次分析法.pdf
    發(fā)表于 09-15 12:54

    層次分析法的應(yīng)用與實現(xiàn)

    數(shù)學建模算法:層次分析法之如何選擇旅游目的地
    發(fā)表于 06-03 17:31

    Linux內(nèi)核源碼之我見——內(nèi)核源碼分析方法

    達到如下效果:1.基本弄清了源碼中代碼元素存在的含義。2.找出了該模塊所涉及的基本上全部的關(guān)鍵源碼文件。結(jié)合之前搜集到的信息和資料對該待分析代碼的整體或者架構(gòu)描述,我們可以將
    發(fā)表于 05-11 07:00

    EMC分析設(shè)計層次的講解

    來源:互聯(lián)網(wǎng)EMC,大家在熟悉不過了,就是常說的電磁兼容,此次只要是對EMC分析設(shè)計層次的講解,避免這些小細節(jié)可以少走彎路。電磁兼容包括兩個方面的要求:一方面是電磁干擾;另一方面是電磁敏感性。
    發(fā)表于 10-22 13:35

    層次分析法是什么

    1、層次分析法AHP2、單片機學習層次分析法AHP將半定性,半定量的問題轉(zhuǎn)化為定量計算的一種行之有效的方法。成對比較矩陣和正互反矩陣設(shè)要比較n個因素C1,C2,……Cn對目標O的影響,
    發(fā)表于 07-19 06:19

    一文幫助初學者理解RTT設(shè)備架構(gòu)層次關(guān)系

    粗略地畫了一個圖,主要針對設(shè)備這塊,能幫助初學者理解設(shè)備架構(gòu)層次關(guān)系。下圖所示為RTT設(shè)備層次關(guān)系。(1)STM32為例使用 cubemx 配置的外設(shè),點擊生成代碼之后,外設(shè)的初始化代碼會更新
    發(fā)表于 05-31 15:08

    如何在RT-THREAD上生成doxygen

    這個插件一共有兩種操作在源碼文件中頭部輸入·/** ,然后直接按回車鍵,你可以看到自動生成的注釋了。在寫好的函數(shù)的上面輸入/** , 然后也是按回車鍵,你就看也看到效果了。doxygen文件生成只要
    發(fā)表于 08-09 10:50

    RT-studio使用doxygen生成代碼文檔經(jīng)驗分享

    在RT-studio使用doxygen生成代碼文檔時,遇到了一些問題,解決完后作為經(jīng)驗分享。Build Doxygenfile時,并沒有出現(xiàn)對應(yīng)的文檔。最大的可能是在使用doxygen生成代碼文檔
    發(fā)表于 11-23 15:54

    層次分析

    層次分析法:層次分析法:椅子的問題,席位分配問題,行走步長問題,實物交換模型。
    發(fā)表于 09-15 12:43 ?9次下載

    層次分析法的改進及應(yīng)用

    本文基于對層次分析法在處理多目標決策問題時計算量較大、易出現(xiàn)誤差的情況提出改進的目的,采用修改標度值和簡化判斷矩陣的方法,有效地解決了層次分析法在處理多目標決策問
    發(fā)表于 08-15 09:46 ?0次下載
    <b class='flag-5'>層次</b><b class='flag-5'>分析</b>法的改進及應(yīng)用

    uboot源碼分析,思路還算清晰

    uboot源碼分析,思路還算清晰
    發(fā)表于 10-24 15:25 ?19次下載
    uboot<b class='flag-5'>源碼</b><b class='flag-5'>分析</b>,思路還算清晰

    分享一個超級實用的源碼閱讀小技巧

    工欲善其事必先利其器; 我發(fā)現(xiàn)函數(shù)調(diào)用圖可以讓我們更加直觀地了解到源碼函數(shù)直接的調(diào)用和層次關(guān)系,提高閱讀源碼的效率 。 1 前言 看源碼的時候,心血來潮想弄一下函數(shù)之前的調(diào)用關(guān)系,想起
    的頭像 發(fā)表于 05-29 11:50 ?1904次閱讀
    分享一個超級實用的<b class='flag-5'>源碼</b>閱讀小技巧

    AUTOSAR MCAL軟件的開發(fā)

      我們?yōu)槲覀兊腁UTOSAR MCAL軟件支持“實現(xiàn)汽車所需的行駛、轉(zhuǎn)向、停車和連接”和“實現(xiàn)安全便捷的社會”而感到自豪。我們將繼續(xù)為AUTOSAR MCAL軟件提供更好的質(zhì)量和性能。
    的頭像 發(fā)表于 04-24 14:44 ?4414次閱讀

    從手寫代碼到AUTOSAR工具鏈_MCAL應(yīng)用篇

    在AUTOSAR分層架構(gòu)中,MCAL是最基礎(chǔ)的一層。由于該層直接和單片機打交道,在整個開發(fā)流程中往往最靠前,在PCB測試過程中也發(fā)揮著至關(guān)重要的作用。
    的頭像 發(fā)表于 05-30 09:07 ?1.1w次閱讀
    從手寫代碼到AUTOSAR工具鏈_<b class='flag-5'>MCAL</b>應(yīng)用篇

    AUTOSAR架構(gòu)MCAL、服務(wù)層、ECU抽象層介紹

    1 微控制器抽象層(MCAL) AUTOSAR CP的微控制器抽象層(MCAL)是AUTOSAR軟件架構(gòu)中的一個重要組成部分,它提供了對底層硬件的抽象和訪問接口,以實現(xiàn)軟件與硬件之間的解耦和可移植性
    的頭像 發(fā)表于 10-27 15:36 ?5554次閱讀