前言
看了一下基本的配置,发现Autosar的DataType的内容比较多,也比较复杂,所以单独开一章来记录一下
Autosar DataType介绍
一.基本数据类型
1.1基本类型
Autosar的基本数据类型按照等级划分为三种:
- Application Data Types(只是在Dev软件的图形界面上使用的类型,只存在于概念中,不会在代码中体现)
- Implementation Data Types(是对Base Types改了个名字,方便代码生成时阅读的,比如我们经常做这么一件事typedef uint8 Std_ReturnType)
- Base Types(常用到的int、bool、float、uint16这样的基础类型)
1.2其他类型
Units:就是数据的单位,比如km、h和kg等
Compu Method:计算方法,比如我采样到的ADC是0-4095,那么如何转换成真实的电压值,可以在这里定义一个转换的计算方法。该计算方法可以是线性的,非线性的,基于查表的等等。这个计算方法会在代码中生成一个宏定义#define
Data Contraints:数据约束,就是对数据进行最大、最小值约束等操作
Constants:常量,比如#define LED_ON 1
二,详细数据介绍
2.1 新建数据类型的具体类型
我们新建一个应用数据类型时,有一下几种类型,我们详细看一下:
1. Boolean:bool类型
2. Value:值类型
3. String:字符串类型
4. Array:数组类型
5. Record:包含不同类型的数组(类似结构体)
6. Characteristic Table:键值表
7. Axis:角度值(分为线[x]、面[x:y]、立体[x:y:z])
8. Type Reference:类型参考
9. Data Reference:数据参考
10.union:联合体
2.2 详细举例介绍
2.2.1 创建一个Record类型的Application Data Types
// 例如我们要创建一个类似AdcKeyInfo的结构体
typedef struct{
uint8_t KeyState; //按键状态
uint8_t KeyCode; //按键值
}AdcKeyInfo_t;
- 首先我们要分别创建KeyState,KeyCode的值类型,我已经创建了几个类型,如下图所示:
- 创建ADTAdcKeyInfo,具体步骤如下图所示:
这样我们就创建了一个ADTAdcKeyInfo的Record数据类型,包含了ADTAdcKeyState、ADTAdcKeyCode两个元素。
2.2.2 创建一个Record类型的Implementation Data Types
由于Implementation Data Types可以直接使用Base Type里面的基本类型,所以我们就不需要创建类似ADTAdcKeyState的类型了,而是直接创建IDTAdcKeyInfo,包含两个uint8_t的数据类型的(IDTAdcKeyState,IDTAdcKeyCode),如下图:
这样我们就分别创建了application data type和Implementation Data Types,但是要在DEV中使用他们还需要把这两个数据关联起来,就是把工具使用的类型与生存代码的类型关联起来。
2.2.3 创建Data Map关联数据
创建关联数据Maps如下图流程:
需要注意的是,关联的数据类型必须保持一值(类型、元素个数、元素类型等),不然会报错。
结束语
至此,一个包含两个元素(KeyState、KeyCode)的KeyInfo数据类型就基本创建成功了,具体里面的一些配置信息需要根据具体情况来设置,由于本人也是初次使用,不是很熟悉。