ES400A_TunSelnMngt_MDD

Module Design Document

For

TunSelnMngt

August 29, 2016

Prepared For:

Software Engineering

Nexteer Automotive,

Saginaw, MI, USA

Prepared By:

Kevin Smith,

Nexteer Automotive,

Saginaw, MI, USA
Change History

DescriptionAuthorVersionDateApproved By
Initial VersionK. Smith107-Apr-16
Updated program flow diagramsN. Saxton206-May-16
Updates to flow charts for anomaly EA4#6672 correctionsK. Smith329-Aug-16


Table of Contents

1 Introduction 5

1.1 Purpose 5

1.2 Scope 5

2 TunSelnMngt & High-Level Description 6

3 Design details of software module 7

3.1 Graphical representation of TunSelnMngt 7

3.2 Data Flow Diagram 7

3.2.1 Component level DFD 7

3.2.2 Function level DFD 7

4 Constant Data Dictionary 8

4.1 Program (fixed) Constants 8

4.1.1 Embedded Constants 8

4.2 Variable Data Dictionary 8

4.2.1 User Defined Typedef Definition/Declaration 8

4.2.1.1 Static Structures 8

4.2.1.2 Dynamic Structures and Enums 9

4.2.2 User Defined Enumerated Types 10

5 Software Component Implementation 11

5.1 Sub-Module Functions 11

5.1.1 Init: TunSelnMngtInit1 11

5.1.2 Per: TunSelnMngtPer1 13

5.2 Server Runnables 15

5.2.1 CopyCalPageReq 15

5.2.2 GetCalPageReq 16

5.2.3 GetSegInfoReq 17

5.2.4 OnlineTunRamAdrMpg 18

5.2.5 SetCalPageReq 19

5.3 Interrupt Functions 20

5.4 Module Internal (Local) Functions 20

5.4.1 SwtCalIdx 20

5.4.2 IdxChgMngt 21

5.4.3 MemCopy32Bit 23

5.4.4 MemCopy8Bit 24

5.4.5 SegModAdrInfo 25

5.4.6 SegModStdInfo 26

5.4.7 SegModAdrMpg 27

5.5 GLOBAL Function/Macro Definitions 28

6 Known Limitations with Design 29

7 UNIT TEST CONSIDERATION 30

Appendix A Abbreviations and Acronyms 31

Appendix B Glossary 32

Appendix C References 33

Introduction

Purpose

This MDD aids in documenting the implementation of ES400A Tuning Selection Management.

Scope

The following definitions are used throughout this document:

  • Shall: indicates a mandatory requirement without exception in compliance.

  • Should: indicates a mandatory requirement; exceptions allowed only with documented justification.

  • May: indicates an optional action.

TunSelnMngt & High-Level Description

Tuning Selection Management (TunSelnMngt) provides the ability to change run-time calibrations during operation. The component also provides a RAM buffer for online calibration changes over XCP for tuning processes.

Design details of software module

Graphical representation of TunSelnMngt

Data Flow Diagram

None

Component level DFD

None

Function level DFD

None

Constant Data Dictionary

Program (fixed) Constants

Embedded Constants

Local Constants

Values between the brackets [] are the ranges that the configurable constants could be defined as for a given integration. These values are generated by Configurator before the software build.

Constant NameResolutionUnitsValue
MAXINITIDXCNT_CNT_U08Uint8Cnt[0-255]
MAXRTIDXCNT_CNT_U08Uint8Cnt[0-255]
MAXONLINECALCFGCNT_CNT_U08Uint8Cnt[0-255]
ONLINECALGROUPS_CNT_U08Uint8Cnt[0-255]
ONLINECALRAMTBL_CNT_U16Uint16Cnt[0-65535]
PRMPTRTBLSIZEINWORD_CNT_U16Uint16Cnt[0-65535]

Variable Data Dictionary

The following type definitions are found in the private header of this component.

User Defined Typedef Definition/Declaration

Static Structures

The following table contains structures are static in their definition. However, internal elements may change based on the configuration of the project but the high level content is the same. These elements are described at the bottom of the table.

Typedef NameElement NameUser Defined Type

Legal Range

(min)

Legal Range

(max)

TunSelnRamTblRec1PrmRefTblPtrRte_ParameterRefTabTypeN/AN/A
PrmTblCrc_u32Uint3204294967295
TunSelnIdxTblRec1SrcIdx_u16Uint16065535
DestIdx_u16Uint16065535
SigIdx_u08Uint80255
TunSelnOnlineCalIdxTblRec1RamStructPtr_u08UInt8*0255
StructSize_u16Uint16065535
TblIdx_u16Uint16065535
GroupIdx_u08Uint80255

Rte_ParameterRefTabType is a structure of void pointers that point to the various calibration component structures. This type is generated by the RTE based on the configuration of the integration.

Dynamic Structures and Enums

The following table contains structures are dynamic in their definition. The contents contained will vary from project to project. The intent of this table is to document their purpose.

Entry TypeTypedef NameExample Element(s)Variable TypeValueComment
EnumOnlineCalGroup1GroupAN/A0This enum contains a number representation for each calibration group that is generated for online calibration from A=0 to Z=26. Groups are defined by a letter suffix.
GroupBN/A1
Struct

<GroupName>Typ

GroupATyp

<Cal Region><Cal Cmp Name><Online Group>

CalRegn01CmnGroupA

RTE GeneratedN/AThis structure is generated based on the online groups configured. Each group will generate a structure and contain all calibration software components within that group.
UnionOnlineCalTblRec1Byte[<RAM Size>]Unit8N/AThis structure combines all the online calibration groups into data type for assignment to the RAM buffer. The ‘byte’ element is used to access the entire buffer on a byte-by-byte basis and ensure that the RAM is properly sized.
<GroupName><GroupName>TypN/A

User Defined Enumerated Types

Enum NameElement NameValue
GetSegModeSegInfo1GETSEGMODSEGINFO_ADR0
GETSEGMODSEGINFO_LEN1
GetSegModeMpgIdx1GETSEGMODMPGIDX_SRCADR0
GETSEGMODMPGIDX_DESTADR1
GETSEGMODMPGIDX_LEN2

Software Component Implementation

Sub-Module Functions

Init: Init1

Design Rationale

The initialization function creates two copies of the RTE generated flash table in to RAM. A CRC is performed on each of the copies to ensure that they match. The function also adjusts the tables to load the appropriate initialization and run-time calibrations indexes that are required by the application.

Processing

Module Outputs

None

Per: Per1

Design Rationale

Processing

Module Outputs

None

Server Runnables

CopyCalPageReq

Design Rationale

This function is called by the XCP master and queues the copy of the calibrations contained in the selected group, or segment, into the RAM buffer. The actual copy is performed by TunSelnMngt’s main periodic function, but this runnable logs the current state of TunSelnMngt and marks the copy in progress.

(Processing of function)………

Module Outputs

None

GetCalPageReq

Design Rationale

This function is called by the XCP master and returns the page with the request XCP and ECU access for a given segment.

(Processing of function)………

Module Outputs

None

GetSegInfoReq

Design Rationale

This function is called by the XCP master and returns the requested information for the provided segment.

(Processing of function)………

Module Outputs

None

OnlineTunRamAdrMpg

Design Rationale

This function is called by the XCP master. During tuning, tools such as eTool and CANape will read calibration values from their flash addresses because that is how the A2L file is defined. However, when the calibrations are access from RAM, the user does not always know the exact address the calibration is located. This function calculates the RAM address for a given calibration to the XCP function for reading and writing.

(Processing of function)………

Module Outputs

None

SetCalPageReq

Design Rationale

This function is called by the XCP master. This function will set the status of the calibration page for a given segment.

(Processing of function)………

Module Outputs

None

Interrupt Functions

None

Module Internal (Local) Functions

SwtCalIdx

Function NameSwtCalIdxTypeMinMax
Arguments PassedN/A
Return ValueN/A

Design Rationale

This function manages the RAM buffer access and switches the calibration index between the two copies in RAM.

Processing

IdxChgMngt

Function NameIdxChgMngtTypeMinMax
Arguments PassedSeldIdx_Cnt_T_u08Uint80255
GendCalTblSize_Cnt_T_u08Uint80255
GendCalTbl_T_recTunSelnIdxTblRec1*04294967295
Return ValueIdxFound_Cnt_T_loglBooleanFALSETRUE

Design Rationale

Processing

MemCopy32Bit

Function NameMemCopy32BitTypeMinMax
Arguments PassedDes_ArgVoid04294967295
Src_ArgVoid04294967295
Len_ArgUint16065535
Return ValueN/A

Design Rationale

The 32-bit mem copy function is used to move calibration pointers from flash to RAM. The void pointers are internally assigned to a uint32 pointer before the processing loop begins.

Processing

MemCopy8Bit

Function NameMemCopy8BitTypeMinMax
Arguments PassedDes_ArgVoid04294967295
Src_ArgVoid04294967295
Len_ArgUint16065535
Return ValueN/A

Design Rationale

The 8-bit mem copy function is used to move calibration segments into the RAM space. Since the length of the segments is not guaranteed to be a 32-bit even address, 8-bit was selected to ensure that only the bytes required to be moved are performed. The void pointers are internally assigned to a uint8 pointer before the processing loop begins.

Processing

SegModAdrInfo

Function NameSegModAdrInfoTypeMinMax
Arguments PassedSeg_ArgUInt80255
SegInfo_ArgGetSegModSegInfo101
Resp_ArgUint8*0255
RespLen_ArgUint8*88
Return ValueRtn_Cnt_T_u08Uint80255

Design Rationale

Processing

SegModStdInfo

Function NameSegModStdInfoTypeMinMax
Arguments PassedSeg_ArgUint80255
Resp_ArgUint8*0255
RespLen_ArgUInt8*66
Return Value<Hard Coded>UInt811

Design Rationale

Processing

SegModAdrMpg

Function NameSegModAdrMpgTypeMinMax
Arguments PassedSeg_ArgUint80255
MpgIdxInfo_ArgGetSegModMpgIdx102
MpgIdx_ArgUint80255
Resp_ArgUInt8*04294967295
RespLen_ArgUint8*88
Return ValueRtn_Cnt_T_u08Uint80255

Design Rationale

Processing

TunSelnMngt_ChkXcpWrAcs

Function NameTunSelnMngt_ChkXcpWrAcsTypeMinMax
Arguments PassedReqAdr_Cnt_T_u32Uint3204294967296
Return ValueRtn_Cnt_T_loglBooleanFALSETRUE

Design Rationale

This function is generated based on the configured access regions in Configurator. Below is just a high level overview of the function. The conditions in the if statements are logically OR’d together to form the tests.

Processing


GLOBAL Function/Macro Definitions

None

Known Limitations with Design

  1. None

UNIT TEST CONSIDERATION

None

Abbreviations and Acronyms

Abbreviation or AcronymDescription

Glossary

Note: Terms and definitions from the source “Nexteer Automotive” take precedence over all other definitions of the same term. Terms and definitions from the source “Nexteer Automotive” are formulated from multiple sources, including the following:

  • ISO 9000

  • ISO/IEC 12207

  • ISO/IEC 15504

  • Automotive SPICE® Process Reference Model (PRM)

  • Automotive SPICE® Process Assessment Model (PAM)

  • ISO/IEC 15288

  • ISO 26262

  • IEEE Standards

  • SWEBOK

  • PMBOK

  • Existing Nexteer Automotive documentation

TermDefinitionSource
MDDModule Design Document
DFDData Flow Diagram

References

Ref. #TitleVersion
1AUTOSAR Specification of Memory Mapping (Link:AUTOSAR_SWS_MemoryMapping.pdf)v1.3.0 R4.0 Rev 2
2MDD GuidelineEA4 01.00.01
3Software Naming Conventions.doc1.0
4Software Design and Coding Standards.doc2.1
Last modified October 12, 2025: Initial commit (1fadfc4)