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

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

3天内不再提示

以autosar为基础完成n32g45x的驱动,并适配内核为autosar的操作系统

海阔天空的专栏 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2022-05-26 19:27 次阅读

一、项目介绍

随着小米宣布造车,当下“软件定义汽车”的趋势如火如荼,autosar的全称Automotive Open System Architecture,即汽车开放软件架构,这正如TCP/IP对网络进行统一,autosar是对汽车软件技术的统一,TCP/IP制定的初衷是为统一网络标准从而诞生了今天的互联网,而AUTOSAR的制定是为实现汽车电子软件的统一从而实现汽车电子软件的复用。本项目是基于autosar3.1的开源代码arctic core,在此基础上,完成在n32g45x上的mcal驱动,适配RT-Thread内核为autosar的操作系统


目前已完成mcal的mcu驱动,autosar的osek操作系统已经能在n32g45x上正常调度,移植rtthread到arctic core,但是在适配OSEK/VDX的接口过程中,发现这个适配工作不是一两个月所能完成,因为osek/vdx的标准非常严格,如果对OSEK/VDX感兴趣的小伙伴可以一起加入rtthread对osek/vdx的适配。

二、简述AUTOSAR及OSEK/VDX

2.1 AUTOSAR的分层模型及各层简述

pYYBAGKPYqGAUa2kAAIl1Nb9WzQ491.png


AUTOSAR从上往下分为应用层、RTE层和基础软件层(BSW)。

应用层由多个软件组件SWC组成,每个SWC是具有一定功能的模块,如汽车发动机控制逻辑,这些模块可以由matlab的autosar软件包依据模型进行设计;RTE全称Runtime Environment,即运行时环境,它的内部是一条autosar框架定义的虚拟功能总线(VFB),SWC、BSW通过这条虚拟功能总线进行通信

BSW从上到下分为服务层、ECU抽象层、MCU抽象层,分层的目的是为了实现各层的复用和对下一层的隔离,这正如RT-Thread的分层思想那样,RT-Thread可以适配不同的MCU就是因为采用了驱动和设备分离的策略,RT-Thread的同一个设备因为注册了不同的驱动就可以驱动不同的MCU。在AUTOSAR中,和MCU有关的一层是MCU抽象层,及MCAL,用RTT的驱动和设备分离的思想来理解autosar的mcal就是同一个ECU抽象层因为注册了不同的MCU驱动就可以驱动不同的MCU。在autosar的成员中就有nxp这样的芯片原厂提供autosar的mcal。


2.2 简述OSEK/VDX接口api

在autosar的服务层中有一个符合OSEK/VDX标准的操作系统,负责内存管理、对各个功能的调度,api分为任务管理、中断处理、事件机制、资源管理、报警器。

2.2.1 任务管理api

1 StatusTypeActivateTask(TaskType)
2 将任务号为TaskID的任务由挂起态变为就绪态。
3 StatusTypeTerminateTask(void)
4 将任务由就绪态转为挂起态。
5 StatusTypeChainTask(TaskType)
6 将当前任务由就绪转为挂起,并将TaskID的任务由挂起转为就绪,相当于TerminateTask和ActivateTask的连用。
7 StatusTypeSchedule(void)
8 执行一次调度。
9

2.2.2 事件api

1 StatusTypeSetEvent(TaskTypeEventMaskType)
2 设置一个事件位,当执行SetEvent后等待该事件位的任务可以由等待态变为就绪态。
3 StatusTypeClearEvent(EventMaskType)
4 清楚事件位
5 StatusTypeGetEvent(TaskTypeEventMaskRefType)
6 返回TaskID任务的所有事件位
7 StatusTypeWaitEvent(EventMaskType)
8 等待事件位,等待事件位的任务由就绪态转为等待态。
9

2.2.3 报警器(闹钟)api

1 StatusTypeGetAlarmBase(AlarmType,AlarmBaseRefType)
2 获取报警器的时基
3 StatusTypeGetAlarm(AlarmTypeTickRefType)
4 获取闹钟当前的tick
5 StatusTypeSetRelAlarm(AlarmType,TickType,TickType)
6 设置相对闹钟
7 StatusTypeSetAbsAlarm(AlarmType,TickType,
8 TickType)
9 设置绝对闹钟
10 StatusTypeCancelAlarm(AlarmType)
11 取消闹钟
12

三、AUTOSAR开源代码arctic core软件框架和分析

3.1 相关资源链接

arctic core官网:


http://dev.arccore.com/public/user-doc/UD441x/Arctic-Core-4.0_9503291.html

arctic core源码获取 :


http://my.arccore.com/hg

源码构建说明:


http://dev.arccore.com/public/userdoc/UD441x/Makesystem_23789620.html

3.2 软件框架说明

pYYBAGKPYyWAAwU9AABrhQXpDRw558.png


在arch文件夹中的文件为MCU内核架构相关的文件,如cortex-m3,主要内容为M3的启动文件(见M3编程指南),MCU的固件库。


在boards文件夹中的文件为各个MCU的实现,包括对板子的配置。


system文件夹中包含了一个OSEK/VDX标准的操作系统。

四、在N32G45X上完成AUTOSAR的MCAL

以MCU驱动的时钟设置为例,static void SetClocks(Mcu_ClockSettingConfigType *clockSettingsPtr)是autosar的mcal定义的一个接口,用于设置MCU的时钟,在n32g45x的实现如下:


poYBAGKPY3uAacG7AAIghmZeWD0375.png

写好mcal的mcu后编译成可执行文件下载到板子上,AUTOSAR能够在n32g45x上正常运行,可以看到三个任务块在调度。下载工具用的是pyocd。

pYYBAGKPY4iAegTdAAB5EUamSiM932.png

五、RT-THREAD的移植

由于源码采用的构建工具是makefile,所以需要将rtthread的源码和头文件路径添加到makefile文件。编译下载到板子上可以看到rtthread正常运行。

图片

六、仓库地址

由于arctic core没有github,不能采用fork的方式协作开发,我的代码上传到gitee提示版权风险无法转为公开的仓库,对源码感兴趣的小伙伴可以在下方留下gitee账号或发邮件给我369247354@qq.com,我拉你到项目组。源码从附件下载:

n32g45x_arctic_core.zip

七、项目视频

https://www.bilibili.com/video/BV1Ma411b7kD/

八、总结和展望

本次移植过程中,mcal的移植较为轻松,适配n32g45x的寄存器花了不少时间,需要查看n32g45x的参考手册的寄存器定义一个一个的去改。移植rtthread到arctic core的源码比较简单,只是添加rtt的源码到arctic core的makefile。遗憾的是还没完成rtt适配OSEK/VDX的接口,希望对OSEK/VDX感兴趣的小伙伴加入进来,一起完成rtt对OESK/VDX的适配。

来源:RTThread物联网操作系统

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

    关注

    10

    文章

    345

    浏览量

    21438
收藏 人收藏

    评论

    相关推荐

    【设计技巧】基于AUTOSAR的电机驱动系统报告

    有重要意义。本报告电动汽车用驱动电机作为研究对象, AUTOSAR 开发架构基础,对电机驱动
    发表于 07-27 08:00

    介绍一种适配RT-Thread内核autosar操作系统

    目是基于autosar3.1的开源代码arctic core,在此基础上,完成n32g45x上的mcal驱动适配RT-Thread
    发表于 05-19 15:40

    国民技术MCU应用笔记连载(4)——N32G45x系列USB自定义HID设备的实现

    了HID设备的驱动程序,因而无需用户自己开发驱动程序,对于一些数据量较少的场合(例如按键输入、LED显示或一些小容量的芯片烧录器等),使用用户自定义HID设备是很合适的。本文主要介绍N32G45x USB自定义HID设备的实现。
    发表于 07-05 11:58

    基于RT-Thread内核AUTOSARn32g上的实现方案

    操作系统。目前已完成mcal的mcu驱动autosar的osek操作系统已经能在n32g45x
    发表于 07-27 14:30

    N32G45x/G4FRx/N32WBx系列触控设计指南

    本应用笔记主要针对 N32G45x/G4FRx/N32WBx 系列 MCU 在智能门锁、智能家居等触控产品上提供完整的触控解决方案及典型触控应用的详细说明,开发者提供技术支持。
    发表于 11-02 06:12

    面向汽车应用的AUTOSAR设计技巧

    面向汽车应用的AUTOSAR设计技巧 汽车OEM正在开发基于AUTOSAR的电子系统应对当代汽车中日益复杂的软件。AUTOSAR简化了
    发表于 01-15 10:46 1137次阅读

    AUTOSAR和OSEK网络管理比较

    AUTOSAR与OSEK二者都是汽车电子软件的标准。OSEK/VDX是基于ECU开发的操作系统标准,AUTOSAR基于整体汽车电子开发的功能标准。
    发表于 09-16 09:42 1657次阅读

    N32G45x系列用户手册

    N32G45x系列用户手册
    发表于 11-10 19:50 2次下载
    <b class='flag-5'>N32G45x</b>系列用户手册

    N32G45x系列用户手册

    N32G45x系列用户手册
    发表于 11-10 19:50 0次下载
    <b class='flag-5'>N32G45x</b>系列用户手册

    N32G45x系列用户手册

    N32G45x系列用户手册
    发表于 11-10 19:50 0次下载
    <b class='flag-5'>N32G45x</b>系列用户手册

    基于AUTOSAR规范的操作系统知识

    汽车电子控制器中目前基本遵循AUTOSAR规范,而其中操作系统作为BSW的重头戏,始终让学习AUTOSAR的同学望而生畏,进而望而却步。所以,今天整理下基于AUTOSAR规范的
    的头像 发表于 02-13 14:03 1563次阅读
    基于<b class='flag-5'>AUTOSAR</b>规范的<b class='flag-5'>操作系统</b>知识

    经纬恒润AUTOSAR成功适配智芯科技国产车规级芯片

    近日,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适配智芯半导体的Z20K14x产品家族。同时,经纬恒润完成了对智芯半导体Z20K14
    的头像 发表于 05-30 09:31 895次阅读
    经纬恒润<b class='flag-5'>AUTOSAR</b>成功<b class='flag-5'>适配</b>智芯科技国产车规级芯片

    AUTOSAR OS操作系统功能特性

    按照预定的时间要求执行。 2. 时钟和定时器管理:AUTOSAR OS可以管理系统时钟和定时器,提供精确的时间基准和定时功能,支持任务和中断的时
    的头像 发表于 10-27 16:55 2015次阅读

    经纬恒润AUTOSAR成功适配曦华科技国产车规级芯片

    近日,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适配曦华科技的蓝鲸CVM014x系列车规级MCU芯片。同时,经纬恒润完成了对曦华科技开发板的MCAL软件
    的头像 发表于 12-19 08:00 516次阅读
    经纬恒润<b class='flag-5'>AUTOSAR</b>成功<b class='flag-5'>适配</b>曦华科技国产车规级芯片

    经纬恒润AUTOSAR产品成功适配芯来RISC-V车规内核

    近日,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS(ECUAUTOSARSoftware,以下简称EAS)在芯来提供的HP060开发板上成功适配芯来科技的RISC-V处理器NA内核
    的头像 发表于 03-29 08:00 393次阅读
    经纬恒润<b class='flag-5'>AUTOSAR</b>产品成功<b class='flag-5'>适配</b>芯来RISC-V车规<b class='flag-5'>内核</b>