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

一、项目介绍
  随着小米宣布造车,当下“软件定义汽车”的趋势如火如荼,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的分层模型及各层简述
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 statustype activatetask ( tasktype  )
2 将任务号为taskid的任务由挂起态变为就绪态。
3 statustype terminatetask ( void )
4 将任务由就绪态转为挂起态。
5 statustype chaintask ( tasktype  )
6 将当前任务由就绪转为挂起,并将taskid的任务由挂起转为就绪,相当于terminatetask和activatetask的连用。
7 statustype schedule ( void )
8 执行一次调度。
9
2.2.2 事件api 1 statustype setevent ( tasktype  eventmasktype  )
2 设置一个事件位,当执行setevent后等待该事件位的任务可以由等待态变为就绪态。
3 statustype clearevent ( eventmasktype  )
4 清楚事件位
5 statustype getevent ( tasktype  eventmaskreftype  )
6 返回taskid任务的所有事件位
7 statustype waitevent ( eventmasktype  )
8 等待事件位,等待事件位的任务由就绪态转为等待态。
9
2.2.3 报警器(闹钟)api 1 statustype getalarmbase ( alarmtype , alarmbasereftype  )
2 获取报警器的时基
3 statustype getalarm ( alarmtype  tickreftype )
4 获取闹钟当前的tick
5 statustype setrelalarm ( alarmtype , ticktype , ticktype  )
6 设置相对闹钟
7 statustype setabsalarm ( alarmtype , ticktype , 
8 ticktype  )
9 设置绝对闹钟
10 statustype cancelalarm ( 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 软件框架说明
在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的实现如下:
写好mcal的mcu后编译成可执行文件下载到板子上,autosar能够在n32g45x上正常运行,可以看到三个任务块在调度。下载工具用的是pyocd。
五、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物联网操作系统

IT工程师中的Github是什么样子?
ST亮相2023国际物联网展:NFC及STM32WL系列 ,精彩等你来
紫光建广半导体科技园/12英寸晶圆生产线...一批半导体产业项目迎来新进展
Bel Power Solutions RDT-6Y系列DC-DC转换器,轻松hold住轨交应用中的严苛要求
VR技术模拟系统在消防安全培训中的应用
以autosar为基础完成n32g45x的驱动,并适配内核为autosar的操作系统
用MAX2742构建GPS接收机
虹科资讯|PEAK官网最新动态速递
FPC电路板有哪些分类
简单的220V调光器电路
松下TC2150RS彩电特殊的关机故障检修
Micro LED是否将会代替OLED成为VR显示屏的最终选择?
浅谈ADAS高级驾驶辅助系统功能
土壤温湿度测量仪主机的介绍及其作用的详解
OpenCV边缘检测算子Laplace、LoG详解
鸿蒙系统基于什么开发
带有温度检测算法、数码管显示语音ic,WTV380
教你选用汽车防盗产品
【蜂窝物联】福州永鑫隆家庭农场智能水肥一体机农业物联网建成,让灌溉更高效便捷!
关于油烟监测系统与油烟监测过程存在的问题