AutoSar点灯1 - 工程配置

AutoSar点灯

各位一灯大师,还在打电动哦,点个灯吧

  • 硬件环境: S32K144Q176EVB

  • 软件环境:(App)->Vector Davinci Developer
    (BSW)->Vector Davinci Config
    (MCAL)->EB treos + S32K14X_MCAL_4.2_RTM_HF3_1.0.1
    如果你没有Vector工具链, 我也帮不了你 EB和MCAL可以在NXP官网免费下载安装激活
    这篇文章只记录我在配置第一个Autosar工程中遇到的问题,至于软件安装请参考其他地方,至于其中的原理我也不是很懂,我也是初学者,我是参考了Vector的例程和一些网上的资料

  • 1.MCAL配置
    打开EB,File->New->Config Proj
    新建工程
    这里注意选4.2.2,这里MCAL和EB已经关联起来
    在这里插入图片描述
    这里注意ECU ID应该和.dbc中对应 Target 选ARM/S32K14X 并勾选Auto add…(不勾选貌似会出错,我没勾选之后无法添加一些模块)
    在这里插入图片描述
    添加需要用到的MCAL模块,这里BASE和Resource默认添加就好,由于我们只需要点个灯所以Port和Dio是必要的,Mcu(时钟配置,电源模式配置)也是必要的,但是我不理解的是Can模块在例程中使用到了,为啥不在这里配置?
    在这里插入图片描述
    熟悉的界面兄弟们, 这里MCU这个模块就不配置了,因为现在还没仔细研究怎么配置,等会直接拷贝例程里面的Mcu_PBCfg.c就行,总之保持这里的默认配置待会肯定用不了会卡在时钟初始化
    在这里插入图片描述
    改一下名吧阿伟,EVB上LED GREEN对应引脚为PTE22
    在这里插入图片描述
    这里PCR = 32*PortE(4)+22
    在这里插入图片描述
    PortE对应ID=4
    在这里插入图片描述
    添加一个Ch 对应id为22 刚刚说了LED GREEN对应PTE22引脚
    Generate Project一下
    在这里插入图片描述
    新建一个文件夹如图,待会用来存放总的配置工程
    在这里插入图片描述
    右键这儿, 选Im- and Exporter到处MCAL的配置文件xx.arxml
    在这里插入图片描述
    导出到刚刚新建的文件夹, 在里面新建一个文件MCAL_Config.arxml并选择
    至此MCAL配置完成

  • 2.App配置
    这里先配置SWC这些
    但是这里呢新建工程要先在Davinci Config中新建

在这里插入图片描述
在Cfg中新建工程,目录选刚建好的文件夹
在这里插入图片描述
选single file,其他保持默认
在这里插入图片描述
编译器我选iar,因为我装的是iar
在这里插入图片描述
在这里找到input files导入DBC,不导入dbc貌似工程啥都没有,我的dbc是直接用的例程里面的里面包含了诊断和网络管理报文
在这里插入图片描述
可以看到解析dbc过后有三个ECU节点,这里我们的ECU命名为MyECU
在这里插入图片描述
导入过后可以看到一些模块就自动生成好了,但还有很多错误,待会解决,然后倒入MCAL配置
在这里插入图片描述
先把这里Mcu模块删了,待会导入MCAL时会重新生成,怎么删呢?
在这里插入图片描述
点setting进去就可以delete单独模块
在这里插入图片描述
选中点红叉就行
在这里插入图片描述
在这里插入图片描述
选择我们刚刚在EB中导出的MCAL_Config.arxml
在这里插入图片描述
大家注意看Import Mode是Add,如果是在EB里面做了修改,这里可以选Merge或者Replace
在这里插入图片描述
可以看到Davinci cfg 已经导入了MCAL
这里先不要关Cfg,打开Davinci Developer待会可以同步
在这里插入图片描述
developer里选open work
在这里插入图片描述
目录如下,这个是在CFG里面生成的
在这里插入图片描述
新建一个SWC Type
在这里插入图片描述
在这里插入图片描述
再新建一个
在这里插入图片描述
新建一个Interface

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的话IoHwAb 会有一个Runable(函数)SetLed(led_ch, led_state)供client调用,最终调用Dio驱动
在这里插入图片描述
双击编辑IoHwAb
在这里插入图片描述
在这里插入图片描述
新建一Pp供Rp调用,选择刚刚建立的Interface
Port Interface等概念呢只是抽象,最终要调用的是Runable
在这里插入图片描述
在IoHwAb SWC中新建Server Runable
在这里插入图片描述
好了兄弟们IoHwAb好了,那么Server通过Interface 端口 Pp提供给Client Rp Operations,那么这路就该配置Client LedBlinkSWC了
在这里插入图片描述
铁子们懂了吧
在这里插入图片描述
新建一个Runable 并设置Trig为周期性500ms触发
在这里插入图片描述
设置一下Access Point
在这里插入图片描述
新建个Irv用来记录LED 状态,是可以用Dio Flip来实现闪灯,但是我这里是在学习下Irv使用方法
在这里插入图片描述点击这玩意,这是工程自动创建的
在这里插入图片描述
拖过来吧阿伟
在这里插入图片描述
Graphic->Draw Connector

在这里插入图片描述
developer 点一下保存
在这里插入图片描述

CFG就可以同步,App设计就完成,现在配置BSW

  • 3.BSW配置
    兄弟们,我是初学者我现在也不是很懂怎么配,所以大多数参考例程
    在这里插入图片描述

可以看到Task没有,需要自己创建
在这里插入图片描述
先配置Isr好了,为啥是这几个Isr呢(根据导入的DBC生成,或许MCAL也会影响这里的生成),因为我们用了Can 然后SysTimer提供必要的Systick(心跳),为Alarm提供基准,所以也是默认生成的
这里的interrupt source
在这里插入图片描述
在这里插入图片描述
对比startup.s 和例程中的Os_Hal_Entry_Lcfg.c就可以看出中断源分别为94 97 98
在这里插入图片描述
优先级设为小于32(数字大于32,数字越高,优先级越低,比如NMI的优先级为0),因为这里是CAT2中断,优先级高于32的是CAT1不受OS管理,没有统一的入口函数,低于32的为CAT2受OS管理,入口统一,中断下半部都放到一个Thread中跑
在这里插入图片描述

为BSW搞一个Task吧,具体怎么配现在不知道
在这里插入图片描述
再搞一个Task 跑LED灯吧
在这里插入图片描述
再搞一个InitTask吧,里面要进行EcuM_StartupToo 进行BSW初始化和RteStart, 当时调试发现如果不调用SchM_Init 和 Rte_Start 配置好的Alarm没有被设置周期,也就不会周期性触发事件,Task得不到运行
待会再回来配置OS,这个Task搞成Basic(只调用一次),并且要AutoStart(不然不会加入Schedule),由于它优先级比较高,所以会在StartOS后首先被调用并执行一次
在这里插入图片描述
在这里插入图片描述
直接根据提示设置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里要把Entry 改为 Reset_Handler 因为在Os_Hal_Entry_Lcfg.c中会重建中断向量表,这个函数定义在Startup.s
在这里插入图片描述
在这里插入图片描述
这里SysTimer的 Tick Per Base设置为8000(参考例程) 否则这个定时器中断太快,会发生Overload(来不及处理,当时我没配置这里在Error_Hook里面发现了这个问题)
在这里插入图片描述
Can里面添加Clock Ref
在这里插入图片描述
波特率按照推荐配置
在这里插入图片描述
添加Counter Ref
在这里插入图片描述
由于闪个灯不需要网络管理,所以这里直接删除CanNm 和Nm模块,由于诊断功能这里也不配置,删除CanTp和Dcm
在这里插入图片描述
由于删除了Nm所以这里改为NONE
在这里插入图片描述
可以看到I-PDU里面很多消息没有被匹配(网络管理和诊断),在EcuC 和PduR中删除即可
在这里插入图片描述
PduR就保留这么几帧消息
在这里插入图片描述
Rte里面把BSW Runable map到Task中去
在这里插入图片描述
在这里插入图片描述
验证通过了,表示可以生成代码了,其实中间还有一些步骤主要是根据CFG提升修改,为什么这么修改我现在也不是很懂,这篇文章只是做一下笔记,记录我遇到的问题,下篇文章将用IAR进行工程集成,编译,调试

  • 14
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值