Version 1 (modified by 9 years ago) ( diff ) | ,
---|
シグナルデータの取り扱い
はじめに
- RTEから送信されるシグナルデータが、Comモジュール内でどのように使用されるかを説明する
- AUTOSARのComモジュールは、OSEK/COM仕様をベースにしており、一部の機能では仕様理解のためにOSEK/COM仕様書を参照する必要がある
データ内で使用されるビット
UINT8
- ComSignalType: UINT8
- ComBitSize: 3
- データ: 7(0x07)
| (byte 0) | bit | 7 6 5 4 3 2 1 0 | data | 0 0 0 0 0 1 1 1 | pack | * * * |
- 受信でIPDUから取り出す場合、0で符号拡張(0)される
UINT16
- ComSignalType:UINT16
- ComBitSize:13
- データ: 4369(0x1111)
| (byte 1) (byte 0) | bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | data | 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 | pack | * * * * * * * * * * * * * |
- 受信時処理は、UINT8と同様
SINT8
- ComSignalType: SINT8
- ComBitSize: 4
- データ: -4(0xFFFC)
| (byte 0) | bit | 7 6 5 4 3 2 1 0 | data | 1 1 1 1 1 1 0 0 | pack | * * * * |
- 符号有り整数(2の補数)において、ビットサイズ4ということは、-8~7まで格納できる
-8 1000 -7 1001 -6 1010 -5 1011 -4 1100 -3 1101 -2 1110 -1 1111 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111
- 受信側で符号拡張して取り出される
UINT8_N
- ComSignalType: UINT8_N(uint8[n])
- ComSignalLength: 3
- データ: {1,2,3}
| (byte 2) | (byte 1) | (byte 0) | bit | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | data | 0 0 0 0 0 0 1 1 | 0 0 0 0 0 0 1 0 | 0 0 0 0 0 0 0 1 | pack | * * * * * * * * | * * * * * * * * | * * * * * * * * |
- UINT8_Nの場合、シグナルサイズが必ず8の倍数とするため、
ComBitSize
でなくComSignalLength
で大きさを指定する
FLOAT32/FLOAT64
- 浮動小数点は部分的なビットでは意味がないため、
ComBitSize
は32か64である必要がある - R4.1では、FLOAT32/FLOAT64の場合、
ComBitSize
は無視されると書かれている
I-PDUへのパッキング
以下のデータを例にエンディアン毎のパッキング方法を図示する
- ComSignalType: UINT32
- ComBitSize: 12
- ComBitPosition: 13
ComBitPosition
は、リトルエンディアンではLSBを、ビッグエンディアンではMSBを示すので注意が必要- AUTOSAR_TPS_SystemTemplate.pdf(Figure 5.6)参照
- PduLength: 4
- データ: "101010101010"
リトルエンディアン
| (byte 3) | (byte 2) | (byte 1) | (byte 0) | bit | 31 30 29 28 27 26 25 24 | 23 22 21 20 19 18 17 16 | 15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0 | data | 0 0 0 0 0 0 0 1 | 0 1 0 1 0 1 0 1 | 0 1 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | pack | <------------------------------------* |
ビッグエンディアン
| (byte 0) | (byte 1) | (byte 2) | (byte 3) | bit | 7 6 5 4 3 2 1 0 | 15 14 13 12 11 10 9 8 | 23 22 21 20 19 18 17 16 | 31 30 29 28 27 26 25 24 | data | 0 0 0 0 0 0 0 0 | 0 0 1 0 1 0 1 0 | 1 0 1 0 1 0 0 0 | 0 1 0 1 0 0 0 0 | pack | *<---------------------------------- |
オペーク
- エンディアン変換がオペークに設定されている場合、(I-PDUに詰め込む)最初のバイトのビット0を
ComBitPosition
とする- つまり、
ComBitPosition
には、ビットの先頭となる8の倍数しか指定してはいけない
- つまり、
- 参考仕様
- 以下のデータを例にオペークのパッキング方法を図示する
- ComSignalType: UINT8_N
- ComSignalLength: 2
- ComBitPosition: 8
- PduLength: 3
- データ: {1,3}
| (byte 2) | (byte 1) | (byte 0) | bit | 23 22 21 20 19 18 17 16 | 15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0 | data | 0 0 0 0 0 0 1 1 | 0 0 0 0 0 0 0 1 | 0 0 0 0 0 0 0 0 | pack | <----------------------------------------------* |
Note:
See TracWiki
for help on using the wiki.