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

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

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

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

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

引言

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

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

準(zhǔn)備和安裝軟件

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

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

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

生成Call Graph

運(yùn)行 doxywizard.exe。

配置Wizard > Project頁(yè)面

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

image.png

配置Wizard > Mode頁(yè)面

選定目標(biāo)源碼的編程語(yǔ)言,為C語(yǔ)言。

image.png

配置Expert > Project頁(yè)面

可以選擇生成中文文檔。

image.png

配置Expert > Build頁(yè)面

配置引用的對(duì)象類(lèi)型。

image.png

配置Expert > Dot頁(yè)面

啟用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ū)動(dòng)模塊與其他模塊的關(guān)聯(lián)關(guān)系:

image.png

總結(jié)

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

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

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

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

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

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

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

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136839
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    362

    瀏覽量

    21588
  • 驅(qū)動(dòng)模塊
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

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

    關(guān)注

    0

    文章

    48

    瀏覽量

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

    關(guān)注

    0

    文章

    15

    瀏覽量

    3512
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    層次分析法.pdf

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

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

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

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

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

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

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

    層次分析法是什么

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

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

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

    如何在RT-THREAD上生成doxygen

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

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

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

    層次分析

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

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

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

    使用Doxygen工具時(shí)的七個(gè)關(guān)鍵提示

    Doxygen對(duì)于有紀(jì)律的嵌入式軟件開(kāi)發(fā)人員來(lái)說(shuō)是一個(gè)了不起的工具,他們希望快速生成與代碼保持同步的軟件手冊(cè)。它會(huì)掃描您的代碼,解析開(kāi)發(fā)人員的注釋?zhuān)⒆⑨屌c軟件對(duì)象和功能相關(guān)聯(lián)。結(jié)果輸出可以是鏈接的HTML,rtf或LaTex文件,然后作為應(yīng)用程序的知識(shí)體。
    的頭像 發(fā)表于 08-09 14:51 ?2625次閱讀

    分享一個(gè)超級(jí)實(shí)用的源碼閱讀小技巧

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

    AUTOSAR MCAL軟件的開(kāi)發(fā)

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

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

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

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

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