808 lines
52 KiB
C
808 lines
52 KiB
C
/**********************************************************************************************************************
|
|
* COPYRIGHT
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|
* \verbatim
|
|
* Copyright (c) 2025 by Vector Informatik GmbH. All rights reserved.
|
|
*
|
|
* This software is copyright protected and proprietary to Vector Informatik GmbH.
|
|
* Vector Informatik GmbH grants to you only those rights as set out in the license conditions.
|
|
* All other rights remain with Vector Informatik GmbH.
|
|
* \endverbatim
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|
* FILE DESCRIPTION
|
|
* -----------------------------------------------------------------------------------------------------------------*/
|
|
/** \file File: BrsMain.h
|
|
* Project: Vector Basic Runtime System
|
|
* Module: BrsMain
|
|
*
|
|
* \brief Description: Main header of BRS contains
|
|
* - Main function (called from StartUpCode and calls stack entry EcuM_Init())
|
|
* - Call of BrsHw HW initialization routines
|
|
* - 1ms handler, with support of cycle functions with several cycle times
|
|
* - Default_Init_Task, Main and Background Task which can be used by the operating system
|
|
*
|
|
* \attention Please note:
|
|
* The demo and example programs only show special aspects of the software. With regard to the fact
|
|
* that these programs are meant for demonstration purposes only, Vector Informatik liability shall be
|
|
* expressly excluded in cases of ordinary negligence, to the extent admissible by law or statute.
|
|
*********************************************************************************************************************/
|
|
|
|
/**********************************************************************************************************************
|
|
* REVISION HISTORY
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|
* Version Date Author Change Id Description
|
|
* -------------------------------------------------------------------------------------------------------------------
|
|
* 01.00.00 2018-03-20 visbwa Initial creation of new BRS code basis
|
|
* 2018-03-27 visbwa Renamed BrsAsrStartup into BrsStartup, added version check, reworked
|
|
* includes, added example code text in BrsMainStartup.c
|
|
* 2018-05-08 visbwa Introduced support for Generic Testsuite
|
|
* (BRS_ENABLE_TESTSUITE_SUPPORT), removed support for all other
|
|
* testsuites, introduced BRS_ENABLE_1MS_HANDLER and
|
|
* brsMain_CallCounter1sec
|
|
* 2018-05-16 visbwa Added extern declaration of brsHwZeroRamAreaSet and
|
|
* brsHwInitRamAreaSet in BrsMainStartup.c
|
|
* 01.00.01 2018-06-22 visbwa Added CAN stack exclusive area workaround from former
|
|
* BswInit_Callout_Stubs.c
|
|
* 01.00.02 2018-06-25 visbwa Added configuration check for OS_MS2TICKS_SystemTimer into BrsMain.h
|
|
* 01.00.03 2018-07-02 visces Removed outdated brsHwZeroRamAreaSet and brsHwInitRamAreaSet in
|
|
* BrsMainStartup.c
|
|
* 01.00.04 2018-07-18 visbwa Moved BrsHwDisableInterruptAtPowerOn() from BrsMainInit() into main()
|
|
* (OS specifies, this has to be called before Os_Init() and for every
|
|
* Core)
|
|
* 01.00.05 2018-07-26 visbwa No changes in sourcecode, only within ALM package
|
|
* 01.00.06 2018-07-30 visbwa Encapsuled call of BrsHwDisableInterruptAtPowerOn() with
|
|
* usecase != VTT
|
|
* 01.01.00 2018-08-16 visbwa Replaced include of RamInitSections.h by vLinkGen_RamInitSections.h in
|
|
* BrsMainStartup.c to support vLinkGen
|
|
* 01.02.00 2018-10-04 visbwa No changes in sourcecode, only within ALM package
|
|
* 01.03.00 2018-10-08 visbwa Changed include of BrsCfg.h into vBrsCfg.h (vBaseEnv 1.1.0)
|
|
* 01.03.01 2018-10-10 visbwa Moved BrsTestsuiteInit() from BrsMainInit() into Default_Init_Task(),
|
|
* removed usage of BRS_ENABLE_HLPTEST_SUPPORT
|
|
* (generic Testsuite concept!)
|
|
* 01.03.02 2018-11-05 visbwa Fixed include order (Can.h previous to BrsTestsuite.h)
|
|
* 01.03.03 2018-11-13 visbwa Implemented Default_Init_Tasks for projects with up to 6 Cores,
|
|
* fixed VTT support within IdleTasks (CANoeAPI_ConsumeTicks)
|
|
* 01.04.00 2018-11-21 visbwa Added testsuite callouts into every function
|
|
* 01.04.01 2018-11-30 visbwa Removed include of Rte_Main.h (Rte_Start() not called any more)
|
|
* 01.05.00 2018-12-21 visbwa Added call of new API Os_InitialEnableInterruptSources() within every
|
|
* core Default_Init_Task
|
|
* 01.05.01 2019-03-06 visbwa Added hint for DrvCan using infix, added wrapper for Can_30_Mcan
|
|
* 01.06.00 2019-05-06 visbwa Support for vLinkGen 1.04; renamed struct names of vlinkGen areas in
|
|
* BrsMainStartup.c
|
|
* - added support for zero init blocks
|
|
* - renamed Brs_RamZeroInit() to Brs_MemoryZeroInit() and
|
|
* Brs_RomToRamInit() to Brs_MemoryInit()
|
|
* - check for missing hard reset detection
|
|
* 01.06.01 2019-05-10 visbwa Changed include of vLinkGen header to support new vLinkGen file
|
|
* structure in BrsMainStartup.c
|
|
* 01.06.02 2019-06-13 vismaa Added additional Default_Init_Task_Core6
|
|
* 01.06.03 2019-06-26 visbwa Moved call of BrsMainInit() previous to call of Os_Init()
|
|
* 01.07.00 2019-07-02 visbwa Enhanced FBL support (encapsulations, call of fblmain())
|
|
* 01.07.01 2019-07-22 visbwa Added check for VLINKGEN_ZERO_INIT_BLOCK_COUNT_HARD_RESET in
|
|
* BrsMainStartup.c
|
|
* 01.07.02 2019-07-29 visbwa Added implementation of BrsMainExceptionStartup() for calls from
|
|
* assembly StartUpCode
|
|
* 01.08.00 2019-08-08 visbwa Implemented support for different FBL usecases Legacy,
|
|
* WithoutOSScheduling and OSScheduling, added BrsMainExceptionHandler
|
|
* module code for BrsMainStartup, changed FBL call from fblmain() to
|
|
* FblMain() for legacy mode, removed include of fbl_main.h,
|
|
* added InitPattern parameter to Brs_MemoryZeroInit() and added the
|
|
* new configuration values for the init pattern to the depending calls
|
|
* in BrsMainStartup.c, added sample implementation for Hard-reset blocks
|
|
* and areas in BrsMainStartup.c
|
|
* 01.09.00 2019-08-28 visbwa Changed encapsulation of task implementations (not used for FBL
|
|
* usecases Legacy and WithoutOSScheduling any more)
|
|
* 2019-10-07 visbwa Added support of platform individual ZeroInit function
|
|
* BrsHw_AsmMemoryZeroInitLoop() in Brs_MemoryZeroInit() in
|
|
* BrsMainStartup.c
|
|
* 2019-10-09 visbwa Enhanced support for VTT platform
|
|
* 01.09.01 2019-11-04 visbwa Changed include of Can.h into CanIf.h (get rid of DrvCan with infix
|
|
* (Can_30_Mcan.h)), enhanced MemMap + SchM exclusive area abstraction
|
|
* for Mcan driver (uses infixes)
|
|
* 01.09.02 2020-11-04 visbwa No changes in sourcecode, only within ALM package
|
|
* 01.10.00 2019-11-25 visbwa Implemented Default_Init_Task_Trusted and
|
|
* Default_Init_Task_Corex_Trusted to allow the SafeContext partitioning
|
|
* UseCase
|
|
* 2019-11-27 visbwa Changed include structure for vBrsCfg.h in BrsMain.h (does now also
|
|
* exist for VTT)
|
|
* 2019-11-29 visbwa Enhanced encapsulation with _MICROSOFT_C_VTT_ for DualTarget UseCase
|
|
* (no BrsHw!)
|
|
* 2019-12-04 visbwa Fixed encapsulation of DrvCan parts
|
|
* 01.11.00 2020-02-11 visbwa Support for UseCase HSM (BRS_ENABLE_HSM_SUPPORT, no EcuM),
|
|
* added filtering of MultiCore parts through
|
|
* C_BRSASR_USECASE_SINGLECORE_COMMENT,
|
|
* support for generated DrvCan macros to support modules with infix
|
|
* names, removed error directive at usage of BrsHwGetResetReason() in
|
|
* BrsMainStartup.c
|
|
* 01.12.00 2020-03-12 visbwa Encapsulation of SchM implementation with MemMap defines for UseCase
|
|
* FBL, encapsulation of struct brsMain_Cyclic_Callbacks with MemMap and
|
|
* 1ms-handler defines
|
|
* 01.12.01 2020-04-22 visbwa Added conditional call of BrsHwDisableEccErrorReporting() for FBL
|
|
* UseCase
|
|
* 02.00.00 2020-05-29 visbwa Major updates for vBaseEnv 2.0.0
|
|
* - added BrsMainTogglePin() (moved from BrsHw.c BrsHwTogglePin())
|
|
* - introduction of BrsMain_Callout_Stubs.c
|
|
* - updated vLinkGen define and struct names to new vLinkGen 2.0 naming
|
|
* schema, added version check for vLinkGen version in BrsMainStartup.c
|
|
* 02.01.00 2020-06-29 visbwa Added support for preferred PLL and Watchdog init in BrsMainInit() and
|
|
* BrsMain_MemoryInit_StageOne_Hook(), reduced calls of BrsHw_GetCore()
|
|
* inside Brs_PreMainStartup() of BrsMainStartup.c to a single call
|
|
* 02.01.01 2020-07-24 visbwa Soft increase for FBL_Legacy support
|
|
* 02.02.00 2020-08-10 visbwa Support for FBL Legacy UseCase w/o OS, usage of new FBL UseCase
|
|
* defines;
|
|
* MemMap encapsulation of BrsMainExceptionHandler(), enabled 1ms handler
|
|
* also for FBL, BrsMainCyclic1ms() usable from extern, removed usage of
|
|
* BrsAsrApplCanInterruptLockCtr for FBL (FBL is always in polling mode),
|
|
* added BrsMain_SoftwareResetECU_Hook() in BrsMain_Callout_Stubs.c,
|
|
* encapsuled memPtr in Brs_MemoryZeroInit() of BrsMainStartup.c
|
|
* (compiler warnings)
|
|
* 02.02.01 2020-10-29 visbwa No changes in sourcecode, only within ALM package
|
|
* 02.02.02 2020-10-29 visbwa No changes in sourcecode, only within ALM package
|
|
* 02.02.03 2020-10-30 visbwa Added include of Os.h for VTT (usage of ShutdownOS()), removed
|
|
* AUTHOR IDENTITY
|
|
* 02.02.04 2020-12-07 visbwa Increased for loop variable in Brs_MemoryZeroInit() and
|
|
* Brs_MemoryInit() from uint8
|
|
* to uint32 (depending datatypes are increased in vLinkGen) in
|
|
* BrsMainStartup.c
|
|
* 02.02.05 2021-01-14 visbwa Adapted main() to also call Os_Init() for FBL with VTT
|
|
* 02.03.00 2021-03-17 visbwa Moved revision history of all .c and .h files into BrsMain.h,
|
|
* elimination of BrsMainStartup.h, added support for new OS
|
|
* UseCase INTERRUPT_ONLY and call of BrsMainExceptionHandler() at the
|
|
* end of main() for IllegalReturnFromMain
|
|
* 02.03.01 2021-03-22 visbwa Added definition of _BRSMAIN_C_ in BrsMain.c, to solve issues in
|
|
* vBrsCfg.h if DIO
|
|
* channels are used for TogglePin functionality
|
|
* 02.04.00 2021-04-07 visbwa Added implementation of BrsMainSuspendAllInterrupts() and
|
|
* BrsMainResumeAllInterrupts() for new OS UseCase INTERRUPT_ONLY
|
|
* 02.04.01 2021-04-13 visbwa Encapsulation of int main(void) declaration to not appear for VTT, as
|
|
* VTT expects void main(void)
|
|
* 02.05.00 2021-07-02 visbwa Added support for upcoming Brs_Template 1.03:
|
|
* - call of BrsHw_ExceptionTable_Init() in main()
|
|
* - introduction of BrsMain_Types.h
|
|
* - new MainExceptionHandler ErrorCode kBrsInvalidCoreConfig
|
|
* 02.05.01 2021-07-19 visbwa ESCAN00109765 Fixed VTT encapsulation in main() to solve compiler error
|
|
* 02.05.02 2021-08-02 visbwa Fixed BrsHw_ExceptionTable_Init() call in main() for FBL Ram exception
|
|
* table
|
|
* 02.05.03 2021-08-02 visbwa Fixed BRSMAIN_BUGFIX_VERSION in several files of the package
|
|
* 02.06.00 2021-08-05 visjhr HALBE-5072 In BrsMain_Types.h: Renamed StartupStackLabel -> StartupStackEndLabel,
|
|
* added StartupStackSize
|
|
* 2021-10-11 visbwa Introduction of Brs_ApplicationEntry(), BRS_FIRST_INSTANCE usage and
|
|
* MemMap concept in BrsMainStartup.c; brsMain_ResetReasonType in
|
|
* BrsMain_Types.h;
|
|
* moved BrsMainExceptionStartup() from BrsMain.c into BrsMainStartup.c
|
|
* and map it into StartupCode section; swap order of HardResetOnly and
|
|
* InitOne in BrsMainStartup.c, moved preferred PLL and Watchdog init
|
|
* from InitOne hook into HardResetOnly hook to fit with vLinkGen 2.04;
|
|
* several small adaptions to reduce compiler warnings;
|
|
* introduction of Brs_memMap.h
|
|
* 02.06.01 2021-10-20 visbwa Brs_memMap.h fix for GHS
|
|
* 02.06.02 2021-10-28 visbwa Encapsulation of _Brs_ExcVectRam_START extern declaration, for better
|
|
* VTT support
|
|
* 02.07.00 2021-11-09 visbwa Encapsulation of BrsHw_ExceptionTable_Init() in main() for FBL UseCase
|
|
* with new parameter BRS_FBL_EXCEPTIONTABLE_IN_RAM
|
|
* (vBRSFblSupportExceptionTableInRam);
|
|
* use DrvCan MemMap for mapping of BrsAsrApplCanInterruptLockCtr and
|
|
* module specific MemMap sections for exclusive area implementation in
|
|
* BrsMain.c (including CAN driver name infix wrapper, provided by vBRS
|
|
* generator in vBrsCfg.h)
|
|
* 02.07.01 2021-11-25 virjas Added missing function prototypes
|
|
* 02.07.02 2021-12-02 visbwa Added support for Arm6/TI and warning for GccGnu/Generic compiler in
|
|
* Brs_MemMap.h
|
|
* 02.08.00 2022-01-12 visbwa Changed call of BrsHw_ExceptionTable_Init() in main() for FBL UseCase
|
|
* (_Brs_ExcVectRam_START is now generated into BrsMain_CoreConfig),
|
|
* added a check for the vBrs generator version
|
|
* (BRS_GENERATED_HW_CONFIG_VERSION)
|
|
* 02.08.01 2022-02-04 visrgm Added support for Renesas compiler in Brs_MemMap.h
|
|
* 02.08.02 2022-02-18 visbwa Enhanced encapsulation of uint32 i in main() to prevent compiler
|
|
* warnings
|
|
* 02.08.03 2022-02-18 visbwa Added encapsulation to BrsMainExceptionStartup() (1st execution
|
|
* instance)
|
|
* 02.08.04 2022-03-23 visbpz Added support for Microchip compiler in Brs_MemMap.h
|
|
* 02.08.05 2022-03-23 visbpz Incrementing software version
|
|
* 02.08.06 2022-03-30 visbwa Added _BRSMAINSTARTUP_C_ to BrsMainStartup.c
|
|
* 02.08.07 2022-04-06 visjhr HALBE-6489 Added Default_Init_Task_Core0 and Default_Init_Task_Core0_Trusted
|
|
* 02.08.08 2022-05-12 visbwa Added functionality to override BRSMAIN_CYCLIC_MAX_CALLBACKS in
|
|
* BrsMain.c
|
|
* 02.09.00 2022-05-05 visbwa Added sections for mapping of exception table const/code in
|
|
* Brs_MemMap.h
|
|
* 2022-05-30 visbwa Added support for LlvmDiab/LlvmTI compiler and fixed support for
|
|
* GccGnu (to allow at least correct mapping for all brsExcVect) in
|
|
* Brs_MemMap.h
|
|
* 02.09.01 2022-05-31 visbwa Fixed LlvmDiab support in Brs_MemMap.h
|
|
* 02.09.02 2022-07-04 visbwa Removed call of BrsHwDisableEccErrorReporting() in BrsMainInit()
|
|
* (is called from FBL)
|
|
* 02.09.03 2022-07-07 visbwa Readded call of BrsHwDisableEccErrorReporting() and adapted
|
|
* encapsulation of BrsHw
|
|
* init function calls for FBL UseCases in BrsMainInit()
|
|
* 02.10.00 2022-07-14 visbwa Changes in ALM content settings only (usage type partly set to
|
|
* external)
|
|
* 02.10.01 2022-08-04 visbwa Added LlvmHightec support in Brs_MemMap.h
|
|
* 02.11.00 2022-12-07 visbwa Removed support for BrsHw packages with
|
|
* BRSHW_SOURCECODE_TEMPLATE_VERSION < 0x0103u;
|
|
* brsMain_ResetReason in Brs_PreMainStartup() only set by initCore;
|
|
* introduction of BrsMain_Appl.c, call of BrsMain_Appl_Init() from
|
|
* BrsMainInit(), moved UserDefined ExclusiveArea handling for CAN
|
|
* channels into BrsMain_Appl.c, implementation of FBL Instance Presence
|
|
* Pattern in BrsMain_Appl.c;
|
|
* support for Ansi/Gnu compiler with VTT/CANoeEmu in Brs_MemMap.h
|
|
* 2022-12-13 visdri Fixed LlvmTI compiler support in Brs_MemMap.h
|
|
* 02.11.01 2023-01-11 visbwa Fixed single core platform support in Brs_PreMainStartup() of
|
|
* BrsMainStartup.c
|
|
* 02.11.02 2023-01-11 visbwa Fixed MemMap defines for initialized variables in BrsMainTogglePin()
|
|
* 02.12.00 2023-02-16 visjhr HALBE-8511 Removed unused IdleTask{_CoreX},removed filtering ifdefs for
|
|
* C_BRSASR_USECASE_STARTAPPLICATION_COMMENT and C_BSWMODULE_ASR_*
|
|
* 2023-02-24 visbwa Introduction of BRS_MEMMAP_INLINE_ASSEMBLER_USED in Brs_MemMap.h for
|
|
* GHS compiler
|
|
* 2023-02-27 visbwa Added call to BrsHwApplicationInit() at beginning of
|
|
* Brs_ApplicationEntry() in
|
|
* BrsMainStartup.c, to support platform specific initialization per
|
|
* execution instance
|
|
* 2023-03-07 visbwa Added usage of BrsMain_Appl for UseCase VTT as well
|
|
* 02.13.00 2023-03-08 visjhr Added BRS_START/STOP_SEC_BRSAPPLENTRY_CODE for locating
|
|
* Brs_ApplicationEntry() to
|
|
* the new section "brsApplicationEntry"
|
|
* 02.13.01 2023-05-10 sgj Introduction of BRS_MEMMAP_INLINE_ASSEMBLER_USED in Brs_MemMap.h for
|
|
* DIAB compiler
|
|
* 02.13.02 2023-05-17 visbwa Fixed MemMap defines of brsMain_CallCounter1ms,
|
|
* brsMain_CallCounter1sec and brsMain_SuspendAllCounter
|
|
* 02.14.00 2023-05-17 visbwa Support of new execution instance HSM_Updater
|
|
* (BRS_ENABLE_HSM_UPDATER_SUPPORT)
|
|
* 02.14.01 2023-06-02 visbwa Added a check an valid Brs_Template version for USeCase HSM_Updater
|
|
* 02.15.00 2023-06-28 visbwa Changed implementation of BrsMainTask (from extended to basic task),
|
|
* setting of BrsCyclicAlarm_1ms moved into Default_Init_Task; small
|
|
* fixes for HSM-Updater support
|
|
* 2023-07-14 visbwa Fixed BRS_START_SEC_EXCVECTRAM_CONST in Brs_MemMap.h
|
|
* 02.15.01 2023-07-21 visjhr Added support for CCAC compiler (Brs_MemMap.h)
|
|
* 02.15.02 2023-09-13 visbwa Fixed include of CANoeApi.h, to support key sensitive environments (Linux)
|
|
* 02.16.00 2023-09-27 visbwa Support for new Can_30_Core and vCan drivers in BrsMain_Appl.c
|
|
* 02.16.01 2023-10-25 visbwa Fixed DrvCan header include encapsulation in BrsMain_Appl.c
|
|
* 02.16.02 2023-11-13 visbwa Fixed DrvCan header include encapsulation in BrsMain_Appl.c
|
|
* 02.16.03 2023-11-28 visbwa Introduction of BRSMAINAPPL_DISABLE_CAN_EXCLUSIVEAREA_HANDLING to
|
|
* disable CAN exclusive area handling in BrsMain_Appl.c
|
|
* visbwa BASEENV-10659 Added support for Can_30_Core_MemMap.h in BrsMain_Appl.c
|
|
* 02.17.00 2023-11-20 visjhr BASEENV-10133 Add support for multiple DrvCan instances in BrsMain_Appl.c
|
|
* 2023-11-21 visbwa Added "Change Id" to revision history
|
|
* 2023-12-05 visbwa BASEENV-11107 Added sample implementation of DrvCan HardwareCancelByAppl
|
|
* functionality to BrsMain_Appl.c as new default, as a replacement of
|
|
* the custom defined exclusive area handlings (still available as
|
|
* sample, but with danger notice)
|
|
* 02.17.01 2024-02-12 vissgj Fixed section pragma of brsSharedVar for DIAB (istring "" ,
|
|
* ustring "uninitialised section") in Brs_MemMap.h
|
|
* 02.17.02 2024-02-23 vissgj Added pragmas ghs start/enddata of brsSharedVar for GHS in
|
|
* Brs_MemMap.h to force variables to data area bss
|
|
* (excludes data from a special data area sda)
|
|
* Added section encapsulation of extern volatile brsMain_ResetReasonType
|
|
* brsMain_ResetReason in BrsMain.c
|
|
* 02.17.03 2024-02-29 visjhr BASEENV-11377 Changed IAR pragma used for BRS_START/STOP_SEC_FBL_PP_CONST
|
|
* (FblPresencePatternSection)
|
|
* 02.17.04 2024-03-06 visbwa BASEENV-3450 Added support for QNX QCC compiler in Brs_MemMap.h
|
|
* 02.17.05 2024-04-16 visbwa BASEENV-11813 Added BRSMAIN_POSTBRSMAININIT_CALLOUT
|
|
* BrsTestsuite_BrsMain_PostBrsMainInit()
|
|
* 02.17.06 2024-04-24 vissgj Changed alignment for brsSharedVar section for GccHightec from 8 to 4
|
|
* (else additional space is consumed)
|
|
* 02.18.00 2024-06-24 visbwa BASEENV-11442 Fixed Brs_MemoryInit() mechanism in BrsMainStartup.c, to better work
|
|
* with vLinkGenVarSectionGroupEndAlignment;
|
|
* BASEENV-11563 Enhanced Brs_MemoryZeroInit() mechanism in BrsMainStartup.c, to work
|
|
* with different ECC alignment values and implemented 8-Byte aligned
|
|
* initailization in Brs_MemoryInit(), encapsulated with
|
|
* BRSMAINSTARTUP_64BIT_MEMORYINIT;
|
|
* BASEENV-12149 Updated BrsMain_Appl.c for better FBL usage (Appl_30_CoreCanTimer*
|
|
* APIs already implemented by fbl_cw)
|
|
* 02.19.00 2024-07-08 kal BASEENV-11508 Replaced all _MICROSOFT_C_VTT_ defines with newer VVIRTUALTARGET, to
|
|
* also support VTT with GccGnu and CLANG compiler
|
|
* 02.19.01 2024-07-29 visbwa Introduced BRS_DUMMY_STATEMENT and usage in BrsMainExceptionHandler()
|
|
* 02.20.00 2024-08-06 mna BASEENV-12327 Updated main() for HypervisorMaster support
|
|
* 2024-08-19 mna BASEENV-12265 Update Brs_ApplicationEntry() for initialization of groups in new init
|
|
* stage POWER_ON
|
|
* 2024-08-21 mna BASEENV-12285 Update main() for support of non-Autosar Cores
|
|
* 02.20.01 2024-08-29 visbwa ESCAN00118129 Added workaround for vLinkGen Tasking linker issue of empty ROM blocks
|
|
* for ROM to RAM copy groups, which triggers error checks in
|
|
* Brs_MemoryInit()
|
|
* 02.20.02 2024-08-30 visbwa Fix for VTTonly in main(), as BrsMain_NonAsrCore_Hook() not available
|
|
* for VTTonly
|
|
* 02.21.00 2024-09-02 visbwa BASEENV-12323 Enhanced support for Hypervisor, introduction of BRS_DISABLE_OS_USAGE
|
|
* 2024-09-04 mna BASEENV-12291 Enhanced support for non-Autosar cores
|
|
* 2024-09-12 visbwa TAR-61084 Fixed RamConstSection for IAR compiler in Brs_MemMap.h
|
|
* 2024-09-13 visbwa Added support for new DrvCanGen3_Core@Implementation[4.00.00]
|
|
* (CAN_30_CORE_SW_MAJOR_VERSION) in BrsMain_Appl, introduction of
|
|
* BRSMAIN_CAN_30_CORE_SPECIFIC_MEMMAP
|
|
* 2024-09-17 visbwa TAR-57340 Added workaround for usage of CanGen3 HW driver with CanGen2 VTT
|
|
* driver in Dualtarget setups in BrsMain_Appl
|
|
* 02.21.01 2024-10-23 visbwa TAR-62725 Fixed vCan header include in BrsMain_Appl.h
|
|
* 02.21.02 2024-11-28 kal TAR-68820 Added prototype for local function BrsHw_AsmMemoryZeroInitLoop_64bit()
|
|
* 02.22.00 2024-11-22 mna BASEENV-12737 MemoryInit to support 64bit addressing
|
|
* 2024-12-09 visrgm BASEENV-12889 Fixed MemMap encapsulation for BrsAsrApplCanTimerCount in
|
|
* BrsMain_Appl.c
|
|
* 2024-12-11 sgj BASEENV-12534 Removed workaround for ESCAN00118129 Tasking compiler (requires
|
|
* vLinkGen >= 15)
|
|
* 2025-01-10 visbwa BASEENV-9206 Introduction of BRSMAIN_MEMINIT_FUNC_PREFIX and BrsMain_Cfg.h,
|
|
* removed include of BrsHw.h in BrsMain_Callout_Stubs.c as its redundant
|
|
* 2025-01-15 mna BASEENV-13024 Hypervisor Multicore support in BrsMain_Appl_HypervisorApi();
|
|
* Conditional presence and call of BrsHw_UnlockCores() with
|
|
* Brs_Template 1.03.13
|
|
* 2025-01-23 visbwa BASEENV-13024 Introduction of BrsMain_Appl_HypervisorStartCoreApi()
|
|
* 02.22.01 2025-02-20 visbwa Fixed ALM compiler filter rule for Brs_MemMap.h with VTT DualTarget
|
|
* environments
|
|
* 02.22.02 2025-02-21 visbwa Fixed definition of BRSMAIN_CAN_30_CORE_SPECIFIC_MEMMAP in
|
|
* BrsMain_Appl.h for newer DrvCanGen3_Core versions
|
|
* 02.23.00 2025-03-21 vismaa BASEENV-13397 Introduced BRS_DISABLE_MEMORY_INIT_GLOBALLY in Brs_ApplicationEntry()
|
|
* 02.23.01 2025-05-27 kal BASEENV-13873 Added support for ArmTfE compiler (Brs_MemMap.h)
|
|
* 02.24.00 2025-06-24 kal BASEENV-13740 Revision according to C coding guidelines and improved MISRA-C
|
|
* BASEENV-13830 compliance
|
|
* 2025-07-22 visbwa Removed outdated hint for ESCAN00078832 in Default_Init_Task()
|
|
* 02.24.01 2025-07-23 visbwa TAR-91131 Enhanced support for new Gen3 Vtt DrvCan in BrsMain_Appl.c
|
|
* 02.25.00 2025-08-29 visjhr BASEENV-14263 Introduction of BrsMain_Appl_SuspendAllInterrupts() and
|
|
* BrsMain_Appl_ResumeAllInterrupts() in BrsMain_Appl.c for changed
|
|
* functionality of vBrs generated SchM stub
|
|
* 02.26.00 2025-10-27 sgj BASEENV-14708 Added support for RiscV Tasking compiler (Brs_MemMap.h)
|
|
* 02.27.00 2025-11-20 visbwa BASEENV-14777 Added compiler check (DaVinci config to buildenvironment) in
|
|
* BrsMain_Appl.c
|
|
*********************************************************************************************************************/
|
|
|
|
#ifndef _BRSMAIN_H_
|
|
#define _BRSMAIN_H_
|
|
|
|
/**********************************************************************************************************************
|
|
* INCLUDES
|
|
*********************************************************************************************************************/
|
|
#include "Compiler.h"
|
|
|
|
#include "vBrsCfg.h"
|
|
|
|
#if !defined (VVIRTUALTARGET)
|
|
#include "BrsMain_Cfg.h"
|
|
|
|
#include "BrsMain_Types.h"
|
|
|
|
#include "BrsHw.h"
|
|
#endif
|
|
|
|
#if defined (BRS_ENABLE_FBL_SUPPORT) || defined (BRS_ENABLE_HSM_UPDATER_SUPPORT) || \
|
|
defined (BRS_ENABLE_HYPERVISOR_SUPPORT)
|
|
#define BRS_DISABLE_OS_USAGE
|
|
#else
|
|
#include "Os.h"
|
|
#endif
|
|
|
|
#if defined (BRS_ENABLE_HSM_SUPPORT) || defined (BRS_ENABLE_HSM_UPDATER_SUPPORT)
|
|
#include "vHsm.h"
|
|
#elif defined (BRS_ENABLE_HYPERVISOR_SUPPORT)
|
|
#include "vHyp.h"
|
|
#else
|
|
# if !defined (BRS_FBL_NO_ECUMINIT)
|
|
/* Ecu State Manager has to be available in system (BSW module or BRS Stub) */
|
|
#include "EcuM.h"
|
|
# endif
|
|
#endif
|
|
|
|
/**********************************************************************************************************************
|
|
* MODULE VERSION
|
|
*********************************************************************************************************************/
|
|
/*
|
|
* Description: This is the BrsMain major, minor and patch version. The version numbers are decimally encoded.
|
|
* E.g. a version of 02.23.01 is encoded with major 2u, minor 23u and patch version 1u.
|
|
* No leading zeroes shall be used, as they would be treated as octal numbers.
|
|
*/
|
|
#define BRSMAIN_MAJOR_VERSION 2u
|
|
#define BRSMAIN_MINOR_VERSION 27u
|
|
#define BRSMAIN_PATCH_VERSION 0u
|
|
|
|
#define BRSMAIN_VERSION_COMBINED ((BRSMAIN_MAJOR_VERSION) * 10000 + (BRSMAIN_MINOR_VERSION) * 100 + \
|
|
(BRSMAIN_PATCH_VERSION))
|
|
|
|
/*
|
|
* Description: This is the legacy BrsMain main and bug fix version. The version numbers are BCD encoded.
|
|
* Nothing to do here, as the version numbers will be generated by macro.
|
|
*/
|
|
#define BRSMAIN_VERSION (((BRSMAIN_MAJOR_VERSION / 10u) << 12u) | ((BRSMAIN_MAJOR_VERSION % 10u) << 8u) | \
|
|
((BRSMAIN_MINOR_VERSION / 10u) << 4u) | ((BRSMAIN_MINOR_VERSION % 10u)))
|
|
#define BRSMAIN_BUGFIX_VERSION (((BRSMAIN_PATCH_VERSION / 10u) << 4u) | (BRSMAIN_PATCH_VERSION % 10u))
|
|
|
|
/**********************************************************************************************************************
|
|
* CONFIGURATION CHECK
|
|
*********************************************************************************************************************/
|
|
|
|
/**********************************************************************************************************************
|
|
* GLOBAL TYPE DEFINITIONS
|
|
*********************************************************************************************************************/
|
|
#if defined (BRS_ENABLE_TESTSUITE_SUPPORT) || defined (BRS_ENABLE_SUPPORT_LEDS) || \
|
|
defined (BRS_ENABLE_SUPPORT_TOGGLE_WD_PIN) || defined (BRS_ENABLE_SUPPORT_TOGGLE_CUSTOM_PIN)
|
|
#define BRS_ENABLE_1MS_HANDLER
|
|
#endif
|
|
|
|
#if defined (BRS_ENABLE_1MS_HANDLER)
|
|
typedef enum
|
|
{
|
|
BRSMAIN_CYCLETIME_BACKGROUND,
|
|
BRSMAIN_CYCLETIME_1MS,
|
|
BRSMAIN_CYCLETIME_10MS,
|
|
BRSMAIN_CYCLETIME_100MS,
|
|
BRSMAIN_CYCLETIME_250MS,
|
|
BRSMAIN_CYCLETIME_500MS,
|
|
BRSMAIN_CYCLETIME_1000MS
|
|
}brsMain_Cyclic_Cycletime;
|
|
#endif
|
|
|
|
/**********************************************************************************************************************
|
|
* GLOBAL CONSTANT MACROS
|
|
*********************************************************************************************************************/
|
|
/*
|
|
* Expression that is used to determine whether the current core requires re-programming of the Exception Table.
|
|
* For application cores, Exception Table shall be re-programmed only for cores configured as AUTOSAR.
|
|
*/
|
|
#if defined (BRS_DISABLE_OS_USAGE)
|
|
#define BRS_EXCEPTIONTABLE_INIT_NEEDED(i, coreID) (BrsMain_CoreConfig[(i)].PhysicalCoreId == (coreID))
|
|
#else
|
|
#define BRS_EXCEPTIONTABLE_INIT_NEEDED(i, coreID) ((BrsMain_CoreConfig[(i)].CoreIsAsr == ASR) && \
|
|
(BrsMain_CoreConfig[(i)].PhysicalCoreId == (coreID)))
|
|
#endif
|
|
|
|
/* Expression that is used for dummy statements to avoid compile warnings about unused identifiers */
|
|
#define BRS_DUMMY_STATEMENT(x) (void)(x)
|
|
|
|
/*******************************************************************************
|
|
* ModuleCode for BrsMainExceptionHandler
|
|
******************************************************************************/
|
|
#define BRSERROR_MODULE_BRSHW 0x01u
|
|
#define BRSERROR_MODULE_BRSMAIN 0x02u
|
|
#define BRSERROR_MODULE_BRSSTARTUP 0x03u
|
|
#define BRSERROR_MODULE_BRSMAINSTARTUP 0x04u
|
|
|
|
/*******************************************************************************
|
|
* ErrorCodes for BrsMainExceptionHandler
|
|
* 0x00 to 0x7f are assigned to the BRS
|
|
* 0x80 to 0xff are assigned to the application
|
|
******************************************************************************/
|
|
/* General error which is not assigned to a special error class */
|
|
#define kBrsUndefinedError 0x00u
|
|
|
|
/* No handler is installed in interrupt vector table for given interrupt */
|
|
#define kBrsInterruptHandlerNotInstalled 0x01u
|
|
|
|
/* A GenTool setting is different to the excepted value */
|
|
#define kBrsWrongGenToolSettings 0x02u
|
|
|
|
/* BrsHwRestoreInterrupt is called more often than BrsHwDisableInterrupt */
|
|
#define kBrsIllegalInterruptRestoration 0x03u
|
|
|
|
/* Hardware configuration like clock setting is wrong */
|
|
#define kBrsIllegalHardwareConfiguration 0x04u
|
|
|
|
/* Illegal parameter used like wrong channel parameter */
|
|
#define kBrsIllegalParameter 0x05u
|
|
|
|
/* Illegal TCC channel used */
|
|
#define kBrsTccChannelOutOfRange 0x06u
|
|
|
|
/* Interrupt from unknown source occurred */
|
|
#define kBrsUnknownInterrupt 0x07u
|
|
|
|
/* CAN1 and CAN2 interrupts cannot be distinguished from each other */
|
|
#define kBrsAmbiguousInterruptSource 0x08u
|
|
|
|
/* Execution of library version check in Common_SipVersionCheck failed */
|
|
#define kBrsLibraryVersionCheckFailed 0x09u
|
|
|
|
/* OS ErrorHook called */
|
|
#define kBrsOsErrorHookCall 0x0Au
|
|
|
|
/* BRS not properly initialized */
|
|
#define kBrsConfigUninit 0x0Bu
|
|
|
|
/* Application software returned to main */
|
|
#define kBrsIllegalReturnFromMain 0x0Cu
|
|
|
|
/* Assembler code reached, which should never be handled */
|
|
#define kBrsIllegalAssemblerReached 0x0Du
|
|
|
|
/* No Core config found for actual physical core */
|
|
#define kBrsInvalidCoreConfig 0x0Eu
|
|
|
|
/* Configuration is using a functionality, that is not supported yet */
|
|
#define kBrsMissingFunctionality 0x0Fu
|
|
|
|
/* A non-Autosar-Core could not be started although it is configured */
|
|
#define kBrsFailedNonAsrCoreStart 0x10u
|
|
|
|
/**********************************************************************************************************************
|
|
* GLOBAL VARIABLES
|
|
*********************************************************************************************************************/
|
|
|
|
/**********************************************************************************************************************
|
|
* GLOBAL FUNCTION PROTOTYPES
|
|
*********************************************************************************************************************/
|
|
#if !defined (VVIRTUALTARGET)
|
|
#define BRS_START_SEC_STARTUP_CODE
|
|
#include "Brs_MemMap.h"
|
|
/*****************************************************************************/
|
|
/* @brief Unified routine for Pre Main() Startup.
|
|
* @pre Stack pointer needs to be initilialized in StartUpCode before.
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from assembler startup code.
|
|
* Called by all cores from the booting execution instance.
|
|
* Through Brs_MemMap.h, the API is mapped into section
|
|
* brsMainStartup, which allows a fix memory allocation.
|
|
*****************************************************************************/
|
|
void Brs_PreMainStartup(void); /* implemented in BrsMainStartup.c */
|
|
#define BRS_STOP_SEC_STARTUP_CODE
|
|
#include "Brs_MemMap.h"
|
|
|
|
#define BRS_START_SEC_BRSAPPLENTRY_CODE
|
|
#include "Brs_MemMap.h"
|
|
/*****************************************************************************/
|
|
/* @brief Unified application entry for Pre Main() Startup.
|
|
* @pre Stack pointer needs to be initilialized in StartUpCode before,
|
|
* brsMain_ResetReason needs to be initialized by booting execution
|
|
* instance (see Brs_PreMainStartup()).
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_PreMainStartup() of the booting
|
|
* execution instance or is the direct application entry of
|
|
* non-booting execution instances (e.g. FBL, with a previously
|
|
* running BootManager). Through Brs_MemMap.h, the API is mapped
|
|
* into section brsApplicationEntry, which allows a fix memory
|
|
* allocation. All APIs are called with current Core ID.
|
|
*****************************************************************************/
|
|
void Brs_ApplicationEntry(void); /* implemented in BrsMainStartup.c */
|
|
#define BRS_STOP_SEC_BRSAPPLENTRY_CODE
|
|
#include "Brs_MemMap.h"
|
|
|
|
# if defined (BRS_ENABLE_SUPPORT_LEDS)
|
|
void BrsMainWrapperTogglePinLED(void); /* implemented in BrsMain.c */
|
|
# endif
|
|
# if defined (BRS_ENABLE_SUPPORT_TOGGLE_WD_PIN)
|
|
void BrsMainWrapperTogglePinWD(void); /* implemented in BrsMain.c */
|
|
# endif
|
|
# if defined (BRS_ENABLE_SUPPORT_TOGGLE_CUSTOM_PIN)
|
|
void BrsMainWrapperTogglePinCustom(void); /* implemented in BrsMain.c */
|
|
# endif
|
|
#endif /* !VVIRTUALTARGET */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief Main initialization routine.
|
|
* Contains configuration specific initialization of BrsHw parts
|
|
* and BrsMain specific mechanisms.
|
|
* @pre -
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from main
|
|
*****************************************************************************/
|
|
void BrsMainInit(void);
|
|
|
|
#if !defined (VVIRTUALTARGET)
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* previous to the memory initialization, stage zero.
|
|
*****************************************************************************/
|
|
void BrsMain_MemoryInit_StageZero_Hook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* previous to the memory initialization, stage hard reset.
|
|
*****************************************************************************/
|
|
void BrsMain_MemoryInit_StageHardReset_Hook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* previous to the memory initialization, stage one.
|
|
*****************************************************************************/
|
|
void BrsMain_MemoryInit_StageOne_Hook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* previous to the memory initialization, stage two.
|
|
*****************************************************************************/
|
|
void BrsMain_MemoryInit_StageTwo_Hook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* previous to the memory initialization, stage three.
|
|
*****************************************************************************/
|
|
void BrsMain_MemoryInit_StageThree_Hook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* previous to the memory initialization, stage Power_On.
|
|
*****************************************************************************/
|
|
void BrsMain_MemoryInit_StagePowerOn_Hook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] coreID must declare the ID of the actual running core
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from Brs_ApplicationEntry() during StartUp,
|
|
* after the memory initialization was done.
|
|
*****************************************************************************/
|
|
void BrsMain_PreMainHook(uint32 coreId); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is an optional callout
|
|
* @pre -
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from BrsHwSoftwareResetECU(), before a
|
|
* SW reset is triggered. Implement code here to also reset
|
|
* peripherals, if necessary for your UseCase.
|
|
*****************************************************************************/
|
|
void BrsMain_SoftwareResetECU_Hook(void); /* implemented in BrsMain_Callout_Stubs.c */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief This API is mandatory callout, if non-ASR cores are configured in OS.
|
|
* Project specific implementation for non-ASR cores should be added here.
|
|
* @pre non-ASR cores are configured in OS
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from main() for non-Autosar-cores.
|
|
*****************************************************************************/
|
|
void BrsMain_NonAsrCore_Hook(void); /* implemented in BrsMain_Callout_Stubs.c */
|
|
#endif /* !VVIRTUALTARGET */
|
|
|
|
#if defined (BRS_ENABLE_1MS_HANDLER)
|
|
/*****************************************************************************/
|
|
/* @brief Routine to register cyclic callbacks.
|
|
* @pre Initialization of BrsMain was done threw call of BrsMainInit().
|
|
* @param[in] FunctionPointer has to be a pointer to a function of type
|
|
* void function(void).
|
|
* @param[in] Cycletime described the cycletime, the callback should be triggered.
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from modules that need cyclic callbacks.
|
|
*****************************************************************************/
|
|
void BrsMainRegisterCyclic(void (*FunctionPointer)(void), brsMain_Cyclic_Cycletime Cycletime);
|
|
|
|
/*****************************************************************************/
|
|
/* @brief One millisecond handler for BrsMain
|
|
* - Executes retransmission of BRS TCC messages
|
|
* - Toggling of LED (alive signal)
|
|
* - BRS Test code (1s cyclic negative TCC response message)
|
|
* @pre Initialization of BrsMain was done threw call of BrsMainInit().
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called each millisecond either from the main loop
|
|
* or from the BRS main task (TASK(mainTask))
|
|
*****************************************************************************/
|
|
void BrsMainCyclic1ms(void);
|
|
|
|
# if !defined (BRS_DISABLE_OS_USAGE) && (!defined (BRS_ENABLE_OS_INTERRUPT_ONLY))
|
|
TASK(BrsMainTask);
|
|
TASK(BrsMainBackgroundTask);
|
|
# endif
|
|
#endif
|
|
|
|
#if !defined (BRS_DISABLE_OS_USAGE) && (!defined (BRS_ENABLE_OS_INTERRUPT_ONLY))
|
|
TASK(Default_Init_Task);
|
|
TASK(Default_Init_Task_Trusted);
|
|
|
|
#endif /* !BRS_DISABLE_OS_USAGE && !BRS_ENABLE_OS_INTERRUPT_ONLY */
|
|
|
|
#if defined (BRS_ENABLE_SUPPORT_LEDS) || \
|
|
defined (BRS_ENABLE_SUPPORT_TOGGLE_WD_PIN) || \
|
|
defined (BRS_ENABLE_SUPPORT_TOGGLE_CUSTOM_PIN)
|
|
typedef enum
|
|
{
|
|
BRSMAIN_TOGGLEPIN_LED,
|
|
BRSMAIN_TOGGLEPIN_WD,
|
|
BRSMAIN_TOGGLEPIN_CUSTOM
|
|
} brsMain_TogglePin;
|
|
|
|
# if defined (BRS_ENABLE_FBL_SUPPORT)
|
|
#define BRS_START_SEC_RAM_CODE
|
|
#include "Brs_MemMap.h"
|
|
# endif
|
|
/*****************************************************************************/
|
|
/* @brief This API is used to toggle a PortPin.
|
|
* Per default, the following parameters are available:
|
|
* BRSMAIN_TOGGLEPIN_LED
|
|
* BRSMAIN_TOGGLEPIN_WD
|
|
* BRSMAIN_TOGGLEPIN_CUSTOM
|
|
* Depending pins must be configured and initialized within BrsHw.
|
|
* @pre -
|
|
* @param[in] Pin to be toggled
|
|
* @param[out] -
|
|
* @return -
|
|
* @context Function is called from all modules to set or clear a PortPin
|
|
*****************************************************************************/
|
|
void BrsMainTogglePin(brsMain_TogglePin Pin);
|
|
# if defined (BRS_ENABLE_FBL_SUPPORT)
|
|
#define BRS_STOP_SEC_RAM_CODE
|
|
#include "Brs_MemMap.h"
|
|
# endif
|
|
#endif /* BRS_ENABLE_SUPPORT_LEDS || BRS_ENABLE_SUPPORT_TOGGLE_WD_PIN || BRS_ENABLE_SUPPORT_TOGGLE_CUSTOM_PIN */
|
|
|
|
#if defined (BRS_ENABLE_FBL_SUPPORT) || defined (BRS_ENABLE_HSM_UPDATER_SUPPORT)
|
|
#define BRS_START_SEC_RAM_CODE
|
|
#include "Brs_MemMap.h"
|
|
#endif
|
|
void BrsMainExceptionHandler(uint8 ErrorCode, uint8 ModuleCode, uint16 LineNumber);
|
|
#if defined (BRS_ENABLE_FBL_SUPPORT) || defined (BRS_ENABLE_HSM_UPDATER_SUPPORT)
|
|
#define BRS_STOP_SEC_RAM_CODE
|
|
#include "Brs_MemMap.h"
|
|
#endif
|
|
|
|
#if !defined (VVIRTUALTARGET)
|
|
# if defined (BRS_FIRST_EXECUTION_INSTANCE)
|
|
/* This code is only needed for the first instance in the system */
|
|
#define BRS_START_SEC_STARTUP_CODE
|
|
#include "Brs_MemMap.h"
|
|
/*****************************************************************************/
|
|
/* @brief This is the central exeption/issue handler of BRS, in startup
|
|
* phase.
|
|
* @pre -
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return -
|
|
* @context This function implements an endless loop. The recommendation is
|
|
* to set a breakpoint on top of this function to see if any check
|
|
* has failed during the startup code execution.
|
|
*****************************************************************************/
|
|
void BrsMainExceptionStartup(void);
|
|
#define BRS_STOP_SEC_STARTUP_CODE
|
|
#include "Brs_MemMap.h"
|
|
# endif /* BRS_FIRST_EXECUTION_INSTANCE */
|
|
|
|
/*****************************************************************************/
|
|
/* @brief Get reset reason
|
|
* @pre BrsHwGetResetReasonStartup() is called first and the rest reason
|
|
* is saved in global variable brsMain_ResetReason.
|
|
* @param[in] -
|
|
* @param[out] -
|
|
* @return Reset reason
|
|
* @context This is a wrapper function for previous BrsHwGetResetReason().
|
|
* This is to prevent multiple selection of reset reason
|
|
* registers, as this is not supported on all platforms.
|
|
* The HW registers for the reset reason are evaluated via a call
|
|
* of BrsHwGetResetReasonStartup() in Brs_PreMainStartup().
|
|
* The result is stored by BrsMainStartup in the global variable
|
|
* brsMain_ResetReason.
|
|
*****************************************************************************/
|
|
brsMain_ResetReasonType BrsMainGetResetReason(void);
|
|
|
|
int main(void);
|
|
#endif /* !VVIRTUALTARGET */
|
|
|
|
#if defined (BRS_ENABLE_OS_INTERRUPT_ONLY)
|
|
void BrsMainSuspendAllInterrupts(void);
|
|
void BrsMainResumeAllInterrupts(void);
|
|
#endif
|
|
|
|
#endif /* _BRSMAIN_H_ */
|