The Basic Software can be divided in terms of stacks based on the basic services provided, like Communication Stack(includes Communication drivers, Communication Interface and Communication Services), Memory Stack(includes Memory drivers, Memory Interface and Memory Services), I/O Stack(includes I/O drivers and I/O Abstraction layer).
Layered Architecture of AUTOSAR
There are different types of Interfaces through which the modules communicate or exchange data with each other:
1. AUTOSAR Interfaces : Defines the information exchanged between the software component and the BSW modules. AUTOSAR interfaces are independent of a programming language, underlying hardware and network technology. AUTOSAR interfaces are used to define ports through the software component and the basic software exchange data.
2. Standardized AUTOSAR Interfaces : is an AUTOSAR interface whose syntax and semantics are defined by AUTOSAR. These are used to provide the Standardized AUTOSAR Services of the basic software to application software component.
3. Standardized Interfaces : These are the interfaces which are defined in a specific programming language and mostly used between modules based on the same ECU. Modules in the basic software interact with each other using Standardized Interfaces.
Configuration Classes in AUTOSAR :
1. Pre-compile time : Configuration is used to include or exclude parts of the source code which are not needed during runtime. Pre-compile time configurations are static wherein the software modules will be effective, based on configuration, after compile time. It results in optimization of code size and performance. Pre-compile time configurations are done in file *_Cfg.c and *_Cfg.h, ‘*’ specifies the module name.
2. Link time : This type of configuration is used when the configuration files are available as object code. The object code of the software receives parts of the configuration from other object code file or it is defined by linker options. Configuration is selected after compilation and before linking. Configuration available in separate files are referred as external constants. Link time configurations are done in files *_Lcfg.c and *_Lcfg.h, ‘*’ specifies the module name.
3. Post-build time : Configuration of software module is possible after building the complete software. A reference to the configuration is available and the actual configuration is available during ECU flashing. This increases the re-usability such that the same ECU can be reused in a different car by providing a different set of ECU configuration. Post-build time configurations are done in files *_PBcfg.c and *_PBcfg.h, ‘*’ specifies the module name.
Post-build Loadable : In this configuration set, one configuration structure is available and individual members of the structure can be modified but the completely different structure cannot be selected.
Post-build Selectable : In this configuration set, ‘n’ configuration sets might be available and one complete set can be selected during ECU flashing. These are mostly available as array of structures wherein one set is selected during ECU flashing.