• 356查看
  • 0回复

[Autosar] AUTOSAR入门-工具链与方法论

[复制链接]


该用户从未签到

发表于 3-3-2024 09:01:49 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


AUTOSAR入门-工具链与方法论

AUTOSAR入门-工具链与方法论w1.jpg

    “方法论”这个词来源于哲学,感觉很高大上,我之前做软件都没听说过这个词,做汽车软件才听说。可见是被AUTOSAR工具链软件提供商包装出来的名词,高大上了不少。了解后发现这不就是个配置软件么?我们在AUTOSAR入门-AS平台工具命令和目录介绍中2. scons studio启动章节,介绍了AS代码中的这个配置软件,当然AS里面的这个工具链软件是比较简陋的,但是好处是开源的,你可以看到其完整的运行原理。本文就来说说这个配置软件怎么工作起来的。

     1. 方法论

        我们在汽车电子构架演进(二)AUTOSAR的组成和演进中3.AUTOSAR方法论

    中提到了AUTOSAR方法论。这里我们从非软件人员看下什么是方法论。

      1.1 方法论的哲学原理

    方法论是一个非常哲学化的词汇和概念,经常会在各类马克思政治理论中发现它的身影。以马克思主义哲学的观点来看,方法论和世界观是分不开的,人们关于“世界是什么、怎么样”的根本观点是世界观,用这种观点作为指导去认识世界,那么改造世界就需要使用到方法论。方法论是人们用什么样的方式、方法来观察事物和处理问题。概括地说,世界观主要说明世界“是什么”的问题,方法论主要说明“怎么办”的问题。

    定义:方法论是一种以解决问题为目标的理论体系或系统,通常涉及对问题阶段、任务、工具、方法技巧的论述。方法论会对一系列具体的方法进行分析研究、系统总结并最终提出较为一般性的原则。

1.2 方法论与客观世界的联系

AUTOSAR入门-工具链与方法论w2.jpg

    把一件事情从现象上升到逻辑,再上升到方法,再到一整套方法体系,这个过程,就是“方法论”。

    这4个层次分别为现象层,逻辑层,方法层和方法论层,4个层次是层层递进的过程。现象层就是直观看到的客观世界,从客观世界出发,经过观察和分析,我们能够获得其中的逻辑,此时就到了逻辑层面。当你经过客观世界到逻辑层面时,你会总结和发现其中的方法,并且方法只是孤立的方法,仅限于此时此地使用,这个方法不具备稳定的应用环境,此时我们已经处于方法层。那么,方法从何处来,他是从方法论中针对某个特定应用环境而推导出的一个方法,同时,你会在多个特定应用环境的方法中发现一些共通的规律和原则,在不断总结和提炼的过程中,形成了能够自成体系的集合,我们就到了方法论层。


    2. AUTOSAR方法论

AUTOSAR入门-工具链与方法论w3.jpg

    AUTOSAR设计和开发流程分为三个阶段:系统配置、ECU设计与配置阶段、代码生成阶段。

第一阶段:定义系统配置文件,这是系统设计者或架构师的任务。包括选择硬件和软件组件,定义整个系统的约束条件。AUTOSAR通过使用信息交换格式和模板描述文件来减少初始系统设计时的工作量。系统配置的输入是XML类型的文件,输出是系统配置描述文件,系统配置的主要作用是把软件组件的需求映射到ECU上。

第二阶段:根据系统配置描述文件提取单个ECU资源相关的信息,提取出来的信息生成ECU提取文件。根据这个提取文件对ECU进行配置,例如操作系统任务调度,必要的BSW模块及其配置,运行实体到任务的分配等,从而生成ECU配置描述文件。该描述文件包含了特定ECU的所有信息。

第三阶段:生成代码,是基于ECU配置描述文件指定的配置来产生代码、编译代码,并把相关代码链接起来形成可执行文件。


    3. 数据结构与算法

    看了上面说的,感觉被忽悠晕了不。在计算机科学里面的说法就接地气多了:程序=数据结构+算法。不管多么高深的哲学概念,就是数据和运算数据的算法就这么简单。

    这里的方法论扯了一大堆,其实就是把汽车的业务抽象成了程序中的数据模型,然后利用界面软件可以配置这些数据模型,高级一点的工具还可以做一些验证,比如配置是否冲突,是否正确,帮助人去检验配置。

    下面介绍点计算机专业本科四大专业课之一《数据结构》的知识,再回看这个方法论,真是玄而又玄,给外行看的玩意了。另外说一点,说嵌入式门槛高,就是这四大专业课的知识都不可缺少,而且需要基础打的很牢固,这一点就是科班和非科班的区别,你学透彻了这四门课,秒变科班,自行百度是那几门。

    下面带大家一块回顾学习下《数据结构》的基础知识,这在进行软件开发中是最基本的东西。

数据的逻辑结构:元素之间的相互联系为逻辑结构。

四种类型:集合、线性结构、树形结构、图状结构或网状结构。

数据的逻辑结构有两种形式:线性结构和非线性结构。线性结构有一个前驱和后继,非线性则有多个。

AUTOSAR入门-工具链与方法论w4.jpg

数据的物理结构:数据元素在计算机中的存储及其逻辑关系的表现。

包括顺序存储结构和链式存储结构。

    逻辑结构和物理结构的区别和联系:逻辑结构是从逻辑关系角度观察数据,与数据从存储无关,是独立于计算机的。存储结构是逻辑结构在计算机内存中的实现,是计算机处理的逻辑。

AUTOSAR入门-工具链与方法论w5.jpg

数据的运算:

建立、消除、访问

插入、删除、修改、查找、排序

算法特性:有穷性、确定性、可行性、输入、输出。

不是所有的计算机程序都是算法,一个程序是对一个算法的具体语言实现。

一个好算法的标准:正确性,可读性,健壮性,通用性,效率与存储量需求。

效率就是算法的时间复杂度,存储量就是算法的空间复杂度。

算法的时间复杂度:算法中基本操作重复执行的次数是问题规模n的某个函数,其时间度量记做T(n)=O(f(n))

多项式:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)

指数:O(2^n)<O(n!)<(n^n)

指数远远大于多项式级别的复杂度

算法的空间复杂度:是指算法编写成程序后,在计算机中运行所需存储空间大小的度量。记作:S(n)=O(f(n)),一般的算法的空间复杂度是指的辅助空间。


    4. AS中工具链

    AUTOSAR入门-工具链与方法论w6.jpg


    商业的工具链比如Vector的比较复杂,而且我们看不到其源码,不过从其生成的代码来看,那叫一个糟糕,简直不是人看的,生成的代码乱七八糟,但是目前市场上商用比较成熟可靠的就是Vector的,我猜这东西就是靠测试,经验修正的。就是车上用的越多,出现问题越多,修正问题越多,越稳定,商业上是成功的,但是由于软件不开源不知道里面是否用了形式化验证的科学东西,还是就是纯经验编程,拆东墙补西墙搞的。反正看生成的代码是乱成一锅粥了,到后期会越来越难维护。

    商业的工具链像是一个航空母舰,但是我们看不到源码。我们有一个小破船,就是AS里面的scons stuio这个工具,虽然简单,但是可以用。尽管功能不强大,但是核心的界面显示和生成代码机制很值得学习借鉴。

4.1 界面显示

    我们运行scons studio的时候,见AUTOSAR入门-AS平台工具命令和目录介绍中2. scons studio启动分析,python+QT的代码会根据as.application/common/autosar.arxml 来生成代码,例如在PduR中

AUTOSAR入门-工具链与方法论w7.jpg

跟界面是对应的

AUTOSAR入门-工具链与方法论w8.jpg

4.2 修改生成代码

点击Generate

AUTOSAR入门-工具链与方法论w9.jpg

查看代码,在studio.py中

AUTOSAR入门-工具链与方法论w10.jpg

mGen函数如下:

AUTOSAR入门-工具链与方法论w11.jpg

在studio.py的开头有:from argen.ArGen import *

在ArGen.py中有:

AUTOSAR入门-工具链与方法论w12.jpg

这里可以参考AUTOSAR入门-AS开源代码编译过程详解中2.3 arxml生成LCfg文件

4.3 arxml生成LCfg文件

具体到PduR模块,会调用

as/com/as.tool/config.infrastructure.system/argen/GenPduR.py

生成PduR_PbCfg.c和PduR_PbCfg.h和PduR_Cfg.h,生成的位置在:

as/build/posix/x86/ascore/config

其中PduR_PbCfg.c是一个全局变量,

AUTOSAR入门-工具链与方法论w13.jpg

两个.h文件里面是一堆的宏定义和函数声明:

AUTOSAR入门-工具链与方法论w14.jpg

4.4 代码中引用

    代码里面会用到生成的文件,这里看下这个全局变量,算是配置。就作为一个全局结构体变量在代码里面直接使用,例如在PduR模块中接收SoAd模块的报文要传给Dcm的时候会去全局变量找目的地,代码如下:

AUTOSAR入门-工具链与方法论w15.jpg

这个PduRconfig就是全局变量。

4.5 数据结构分析

    可见我们上面说的数据结构知识基本都没有用上,用的编程技能很少。生成的代码主要分为两部分:宏和全局变量。宏在编译的时候预处理生效,就相当于简单的字符串替换。全局变量主要为结构体数组,然后结构体套结构体,嵌套很多层。逻辑上是线性结构,物理上是顺序存储。

下面分析下其优缺点:

    全部的配置都要常驻内存,都是全局变量,不是动态生成释放的,造成内存空间的浪费。但是另一个角度看,越浪费越稳定,都是独占的资源,随时用随时有,不会因为动态分配造成无法分配的风险,也增加了值的可靠性。

    所有的数据都是直接按照线性结构直接存放的,这样在编译之后,烧录到板子上,这些配置数据也是在一块的,可以实现PostBuild configuration,就是可以用工具直接改存储里面的配置数据,因为可以定位到其位置。这里也没有数据库的概念,也没有配置管理的概念,程序里面的全局变量直接就是配置,真是豪横的浪费啊。浪费硬盘也就算了,那玩意不值钱,这还直接要浪费内存,这东西可贵了去了。很多产品做cost down主要就是挤压内存。

    这里我想起来一个概念操作系统:操作系统(OS)是一个软件,它帮助用户和应用程序使用和管理计算机的资源。换句话就是要榨干电脑的所有资源,提高资源利用率就是OS的重要目的。可惜这个AUTOSAR CP算是一个单片机程序,里面还没有严格意义上的OS。目前AS中的代码,工具链将内存资源都是预先分配好,以全局变量的形式存在的。

    见汽车电子构架演进(二)AUTOSAR的组成和演进中4. AUTOSAR从CP到AP过渡 中静态和动态的说明。鱼与熊掌不可兼得,静态就是稳定,动态就是节省资源。两手都要抓,两手都要硬。有一种高级境界叫做:动中有静,静中有动,就是Hypervisor虚拟化,如下实现了动静共存:

AUTOSAR入门-工具链与方法论w16.jpg

后记:

    AUTOSAR开源代码的学习,还得靠各位读者自己调试打log学习了,目前先写到这里,后面要拓展下OS方面的研究,敬请期待。如果对汽车软件感兴趣的朋友,这里可以加我微信thatway1989,备注进群。然后拉你进本公众号的交流群:OS与AUTOSAR研究-交流群,可以讨论汽车软件最新技术,一起学习。

    Talk is cheap,show me the code,后续会继续更新,纯干货分析,无广告,不打赏,欢迎转载,欢迎评论交流!

往期见话题:AUTOSAR入门


该用户从未签到

发表于 14-3-2025 15:42:07 | 显示全部楼层
作为汽车工程师,对于AUTOSAR工具链的理解如下:

“方法论”在汽车软件开发中指的是一套系统的、指导开发过程的原则和方法。在AUTOSAR环境中,工具链的“方法论”可以理解为一种基于配置的软件开发管理思想,通过标准化的工具和方法进行软件配置和开发。如你所提到的SCons Studio启动章节中的配置软件,正是工具链的重要组成部分。该工具基于开源思想设计,具有简洁明了的特点,其工作原理涉及代码编译、构建和测试等多个环节。通过理解并掌握这一工具链的工作机制,开发者能更高效地运用AUTOSAR平台资源进行软件开发,从而提升软件开发的效率和标准化程度。更多技术细节和深入解读建议查阅专业书籍或资料。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 14-3-2025 15:42:05 | 显示全部楼层
作为汽车工程师,对于AUTOSAR工具链的理解如下:

“方法论”在汽车软件开发中指的是一套系统的、指导开发过程的原理和方法。在AUTOSAR工具链中,方法论尤为重要,因为它涉及软件架构的构建和配置。你所提到的配置软件实际上是工具链中的一部分,它负责管理和配置AUTOSAR架构中的各个模块。比如SCons Studio这个工具,它基于开源的SCons构建系统,能够帮助开发者管理和配置AS代码中的各个组件。通过这个过程,开发者能更深入地理解软件运行原理,从而更有效地进行软件开发和调试。总之,方法论和工具链的结合,有助于提高汽车软件的开发效率和品质。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 14-3-2025 15:42:06 | 显示全部楼层
对于初学者而言,了解AUTOSAR入门中关于工具链和方法论的基础知识是非常重要的。关于方法论,在AUTOSAR环境中,它确实涉及软件开发的流程、标准和规范。你提到的配置软件是整个AUTOSAR体系中的关键环节,它的作用在于根据设定的规范和流程,进行软件的配置和编译。而关于配置软件的工作原理,它主要通过解析特定的配置文件,如SCons脚本等,进行软件的构建和配置管理。这个过程涉及复杂的逻辑和流程设计,以确保软件开发的规范性和一致性。至于你提到的工具链软件相对简陋但开源的问题,这意味着开发者可以深入了解其运行原理,从而更好地进行二次开发和优化。总之,理解并掌握AUTOSAR工具链和方法论是汽车软件开发的基础,需要投入时间和精力去学习和实践。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 14-3-2025 15:42:07 | 显示全部楼层
作为汽车工程师,对于AUTOSAR入门和工具链有着深入的理解。你提到的“方法论”在汽车软件开发领域有着重要性和实用性。实际上,方法论是一个关于问题解决的理论指导和方法,有助于更高效地运用工具链进行软件配置和开发。在AUTOSAR平台中,SCons Studio作为配置工具的核心部分,扮演着极其重要的角色。它的工作流程不仅包括创建构建脚本和环境配置,还涉及到项目管理等重要环节。通过掌握SCons Studio的工作原理和流程,可以深入理解其背后的机制和方法论思想,进而更加高效地进行汽车软件开发。这些工具虽然初始看起来相对简单和开源,但它们能够显著提升开发效率和软件质量。未来随着汽车行业的发展,其重要性将不断提升。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 14-3-2025 15:42:06 | 显示全部楼层
作为一名汽车工程师,对AUTOSAR工具链有所了解。对于上述关于“方法论”在AUTOSAR工具链中的描述,确实它扮演着重要的角色。方法论是一个指导我们如何思考和行动的哲学原理。在AUTOSAR工具链中,它更多地体现了开发流程和操作方式的一种标准指南。尽管听起来很专业,但其实并非仅仅被包装出来的概念。实际上,它的应用配置工作可以帮助工程师高效地组织和管理代码结构,实现代码的统一管理,促进项目的开发和维护。对于你提到的SCons Studio,它在AUTOSAR中的工具链也确实较基础且开源,正因如此我们可以了解整个系统的运作机制并自由扩展功能,这为开发人员带来了便捷性和灵活度。接下来的分享将持续详细介绍这一配置软件的工作原理及其在AUTOSAR工具链中的实际应用。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 14-3-2025 15:42:06 | 显示全部楼层
作为一名汽车工程师,对AUTOSAR工具链的入门和深入学习十分重要。你提到的工具链中的配置软件涉及到的方法论确实是指导实践的指导性原则和原理,但其功能与应用范围不应被简单理解为“高大上”的概念包装。实际上,方法论在软件开发中扮演着至关重要的角色,确保软件开发的流程、方法和步骤都是经过深思熟虑和验证的。在AUTOSAR平台中,工具链的配置软件基于方法论指导进行操作,这些配置软件不仅仅帮助配置参数、处理项目命令,还能够启动不同开发任务如生成代码框架等。这些功能使得开发过程更加高效和标准化。至于你提到的SCons Studio启动章节中的配置软件工作原理,它主要基于构建系统原理进行工作,通过自动化脚本和工具来管理项目构建过程。至于其开源性,确实为开发者提供了深入了解其运行原理的机会。总之,方法论指导下的配置软件是确保AUTOSAR软件开发质量的关键一环。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 10:53 , Processed in 0.284964 second(s), 40 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.