Ok, so, Where can i find the information about configuring the MCAL drivers, its provided by Elektrobit, NXP or AUTOSAR?. Well let me tell you something is pretty much the three of them. In the lines down below i would try to explain where to find and get the best information possible with the goal to get you enough expertise to make self aware of not only where but how find the right information that allow you to successfully configure any AUTOSAR SW unit

Elektrobit EB Tresos

Tresos is only an Eclipse base tool to allows you to configure the Autosar SW unit in a graphical way, the only documentation you will find will be regarding on how to use the tool but no on how to configure the SW units. This is applicable specially for the MCAL drivers, like the ones provided by NXP. In upper layers things could change a little.

AUTOSAR SWS

AUTOSAR is the official website of the AUTOSAR consortium and the place to find all the official documentation ( that by the way is a lot!! ), but be aware this documentation is mainly focus on develop the software units. Lets take the Port as an example If you look for Port documentation in the portal you will immediately discover there are two different documents.

The SRS version is a list of the actual requirements for this driver and the SWS are the software specification extracted from the SRS, therefore we are only interested in the second one. Besides the Introduction there are another three chapter we are interested starting with the:

Functional specification

All the information in here is very useful in the case of developing your own driver but, it is worthy to read since explain the functionality for the entire driver, you don’t need to understand 100% of what is been written here, but special attention must be pay to the development error detection section 7.3 because it tells you the error values for the DET module, or at least some of them.

API specification

Within a nice tables and some extra requirements you will find in this section all the new types and functions the Port drivers has, be aware these are not the only ones, for some modules the manufacturer adds extra functions an types, and the complete list shall be included in its corresponding user manual. For instance in case of S32K144, the driver user manuals comes with the same library code in a couple of pdfs called RTD_PORT_IM and RTD_PORT_UM. Don not expected a terrific information, neither great examples because this is a documentation written by engineers. Here is the list of AUTOSAR functions for the Port driver found in this section:

void Port_Init( const Port_ConfigType ∗ConfigPtr );
void Port_SetPinDirection( Port_PinType Pin, Port_PinDirectionType Direction );
void Port_SetPinMode( Port_PinType Pin, Port_PinModeType Mode );
void Port_GetVersionInfo( Std_VersionInfoType ∗versioninfo );
void Port_RefreshPortDirection( void  );

Configuration specification

The third and the most important for a AUTOSAR user, it tells you the configuration parameter that should come in this piece of code and therefore the different options to configure in the AUTOSAR tool you have been using. The information is group in as a series of tables and divided and what is called “Containers”, you can easily get lost trying to navigate this containers, but let me give you a clue, just write the most important info from this tables in a YAML notation.

Port: # Configuration of the Port module.
  PortConfigSet: # This container contains the configuration parameters and sub containers of the AUTOSAR Port module.
    PortContainer: # Container collecting the PortPins.
      PortNumberOfPortPins: # The number of specified PortPins in this PortContainer.
    PortPin: # Configuration of the individual port pins.
  
  PortPin: # Configuration of the individual port pins.
    PortPinDirection: # The initial direction of the pin (IN or OUT). If the direction is not changeable, the value configured here is 
                      # fixed. The direction must match the pin mode. E.g. a pin used for an ADC must be configured to be an in port. Implementation 
                      # Type: Port_PinDirectionType
    PortPinDirectionChangeable: # Parameter to indicate if the direction is changeable on a port pin during runtime. true: Port Pin 
                                # direction changeable enabled. false: Port Pin direction changeable disabled.
    PortPinId: # Pin Id of the port pin. This value will be assigned to the symbolic name derived from the port pin container short name.
    PortPinInitialMode: # Port pin mode from mode list for use with Port_Init() function.
    PortPinLevelValue: # Port Pin Level value from Port pin list.
    PortPinMode:  # Port pin mode from mode list. Note that more than one mode is allowed by default. That way it is e.g. possible to combine DIO with 
                  # another mode such as ICU.
    PortPinModeChangeable:  # Parameter to indicate if the mode is changeable on a port pin during runtime. True: Port Pin mode changeable allowed. 
                            # False: Port Pin mode changeable not permitted.
    PortPinEcucPartitionRef:  # Maps the Port pin to zero a multiple ECUC partitions. The ECUC partitions referenced are a subset of the ECUC partitions 
                              # where the Port driver is mapped to.
  
  PortGeneral: # Module wide configuration parameters of the PORT driver.
    PortDevErrorDetect: # Switches the development error detection and notification on or off. True: detection and notification is enabled. False: detection
                        # and notification is disabled.
    PortSetPinDirectionApi: # Pre-processor switch to enable / disable the use of the function Port_SetPinDirection(). TRUE: Enabled - 
                            # Function Port_SetPinDirection() is available. FALSE: Disabled - Function Port_SetPinDirection() is not available.
    PortSetPinModeApi: # Pre-processor switch to enable / disable the use of the function Port_SetPinMode(). True: Enabled - Function Port_SetPinMode() 
                        # is available. false: Disabled - Function Port_SetPinMode() is not available.
    PortVersionInfoApi: # Pre-processor switch to enable / disable the API to read out the modules version information. true: Version info API enabled. 
                        # false: Version info API disabled.
    PortEcucPartitionRef: # Maps the Port driver to zero a multiple ECUC partitions to make the modules API available in this partition.

You can match the yaml file above with the options you will find in the Tresos tool. Just like the functions and types, every manufacturer adds its own options but at least they comply on what it's written in the AUTOSAR documentation, again the extra options shall be described in the MCAL official documentation.

NXP MCAL UM and IM

Ok, these are the official documents written by NXP where its document all the interfaces in their corresponding MCAL drivers including the option you have to use to successfully compile them. But do not expect a great documentation, just a list of functions, types and defines, you pretty much know what the main functions does by reading the AUTOSAR SWS documents, and the examples, well, good look with that. Sorry not much to say. here is the list of the extra functions added by NXP for the S32K1xx family and that are not part of the AUTOSAR specification ( RTD_PORT_UM page 51 )

void Port_Set2PinsDirection( Port_PinType Pin1, Port_PinType Pin2, Port_PinDirectionType Direction );
void Port_SetAsUnusedPin( Port_PinType Pin );
void Port_SetAsUsedPin( Port_PinType Pin );
void Port_ResetPinMode( Port_PinType Pin );

MCU Reference Manual

This is by far the most important document you have to read since describe the characteristics of every peripheral in our microcontroller and therefore tells you of what is capable of, register to configure and from there you can deduce the some of the parameters to configure in the AUTOSAR tool, for instance in Chapter 12, page 205 you can find the section dedicate to Port peripheral where you can found each Port has up to 32 pins, but not all of them are available ion every port

Keep reading and you will discover each port has available Filters, Interrupts, DMA support and each can be configure to work in differences modes ( section 12.2.2 Features, page 208 ). Also starting in page number 213 there is a figure and a series of tables showing the control registers assigned to each pin or ports where you can find the main configuration options, for instance this is the Pin control Register

Configuration

Lets see how all this information can be use to configure the Port MCAL driver in EB Tresos, getting back to AUTOSAR PORT SWS document section 10 Configuration specific we can see the contents of container PortGeneral in YAML notation

PortDevErrorDetect: # Switches the development error detection and notification on or off. True: detection and notification is enabled. False: detection
                    # and notification is disabled.
PortSetPinDirectionApi: # Pre-processor switch to enable / disable the use of the function Port_SetPinDirection(). TRUE: Enabled - 
                        # Function Port_SetPinDirection() is available. FALSE: Disabled - Function Port_SetPinDirection() is not available.
PortSetPinModeApi: # Pre-processor switch to enable / disable the use of the function Port_SetPinMode(). True: Enabled - Function Port_SetPinMode() 
                   # is available. false: Disabled - Function Port_SetPinMode() is not available.
PortVersionInfoApi: # Pre-processor switch to enable / disable the API to read out the modules version information. true: Version info API enabled. 
                    # false: Version info API disabled.
PortEcucPartitionRef: # Maps the Port driver to zero a multiple ECUC partitions to make the modules API available in this partition.

In EB Tresos highlighted in yellow we can see these options, while the rest of them can be found in the RTD_PORT_UM section 4.37 Container PortGeneral, page 37.

and for the PortPin container the options in AUTOSAR docs says:

PortPinDirection: # The initial direction of the pin (IN or OUT). If the direction is not changeable, the value configured here is 
                  # fixed. The direction must match the pin mode. E.g. a pin used for an ADC must be configured to be an in port. Implementation 
                  # Type: Port_PinDirectionType
PortPinDirectionChangeable: # Parameter to indicate if the direction is changeable on a port pin during runtime. true: Port Pin 
                            # direction changeable enabled. false: Port Pin direction changeable disabled.
PortPinId: # Pin Id of the port pin. This value will be assigned to the symbolic name derived from the port pin container short name.
PortPinInitialMode: # Port pin mode from mode list for use with Port_Init() function.
PortPinLevelValue: # Port Pin Level value from Port pin list.
PortPinMode:  # Port pin mode from mode list. Note that more than one mode is allowed by default. That way it is e.g. possible to combine DIO with 
              # another mode such as ICU.
PortPinModeChangeable:  # Parameter to indicate if the mode is changeable on a port pin during runtime. True: Port Pin mode changeable allowed. 
                        # False: Port Pin mode changeable not permitted.
PortPinEcucPartitionRef:  # Maps the Port pin to zero a multiple ECUC partitions. The ECUC partitions referenced are a subset of the ECUC partitions 
                          # where the Port driver is mapped to.

In tresos these options are

And the rest of them can be found of course in the RTD_PORT_UM pdf, but details are in the Reference Manual for instance for containers PortPin PE and PortPin PS the information is in PORT_PCR register, bits 0 and 1 ( page 215 )

In general words you need to mainly understand two main things how the microcontroller peripheral works and the AUTOSAR requirements to handle it