Index: firmware/App/BLCommon.h =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/App/BLCommon.h (.../BLCommon.h) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/App/BLCommon.h (.../BLCommon.h) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -12,12 +12,18 @@ // ********** version ********** +/* + * TD = 0 + * DD = 1 + * RO = 2 + */ +#define BL_STACK_ID 0 // TODO de we need to check the value to make sure it is range (e.g. it is not set to 20?) + #define BL_VERSION_MAJOR 0 #define BL_VERSION_MINOR 0 #define BL_VERSION_MICRO 0 #define BL_VERIOSN_BUILD 0 - // **** Types **** typedef float F32; ///< 32-bit floating point type Index: firmware/App/Services/CommBuffers.c =================================================================== diff -u --- firmware/App/Services/CommBuffers.c (revision 0) +++ firmware/App/Services/CommBuffers.c (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -0,0 +1,111 @@ +/* + * CommBuffers.c + * + * Created on: Aug 2, 2024 + * Author: fw + */ + +#include "string.h" // For memset +#include "can.h" + +#include "CommBuffers.h" + +#define NUM_OF_FW_STACKS 3 +#define CAN_MESSAGE_PAYLOAD_SIZE 8 + +typedef struct +{ + U32 SWUpdateFrameCount; + BOOL isUpdateBufferReady; + U08 SWUpdateBuffer[ SW_UPDATE_BUFFER_SIZE ]; +} SW_UPDATE_STATUS_T; + +static const SW_UPDATE_CAN_MAIL_BOXES_T RECEIVE_MSG_ID[ NUM_OF_FW_STACKS ] = +{ + SW_UPDATE_TD_UPDATE, + SW_UPDATE_DD_UPDATE, + SW_UPDATE_RO_UPDATE +}; + +static const U32 NUM_OF_CAN_FRAMES_TO_UPDATE = SW_UPDATE_BUFFER_SIZE / CAN_MESSAGE_PAYLOAD_SIZE; + + +static SW_UPDATE_STATUS_T SWUpdateStatus; + +static void resetSWUpdateVariables( void ); +static void consumeReceivedCANFrame( U08* data ); + +void initCommBuffers( void ) +{ + resetSWUpdateVariables(); +} + +BOOL isSWUpdateBufferReady( void ) +{ + return SWUpdateStatus.isUpdateBufferReady; +} + + +void handleCANMsgInterrupt( SW_UPDATE_CAN_MAIL_BOXES_T MailBox ) +{ + // TODO do we need check the range of the messages? + + if ( SW_UPDATE_RESP == MailBox ) + { + // transmit + } + else if ( SW_UPDATE_COMMAD == MailBox ) + { + + } + else + { + SW_UPDATE_CAN_MAIL_BOXES_T thisStackMailBox = RECEIVE_MSG_ID[ BL_STACK_ID ]; + + if ( thisStackMailBox == MailBox ) + { + U08 data[ CAN_MESSAGE_PAYLOAD_SIZE ]; + + if ( FALSE != canIsRxMessageArrived( canREG1, MailBox ) ) + { + U32 result = canGetData( canREG1, MailBox, data ); + + if ( result != 0 ) + { + consumeReceivedCANFrame( data ); + } + } + } + } +} + +static void resetSWUpdateVariables( void ) +{ + SWUpdateStatus.SWUpdateFrameCount = 0; + SWUpdateStatus.SWUpdateFrameCount = FALSE; + + memcpy( SWUpdateStatus.SWUpdateBuffer, 0x0, SW_UPDATE_BUFFER_SIZE ); +} + +static void consumeReceivedCANFrame( U08* data ) +{ + if ( SWUpdateStatus.SWUpdateFrameCount <= NUM_OF_CAN_FRAMES_TO_UPDATE ) + { + U32 currentBufferIndex = SWUpdateStatus.SWUpdateFrameCount * CAN_MESSAGE_PAYLOAD_SIZE; + + memcpy( SWUpdateStatus.SWUpdateBuffer + currentBufferIndex, data, CAN_MESSAGE_PAYLOAD_SIZE ); + + SWUpdateStatus.isUpdateBufferReady = ( NUM_OF_CAN_FRAMES_TO_UPDATE == SWUpdateStatus.SWUpdateFrameCount ? TRUE : FALSE ); + + // TODO test code remove + //if (TRUE == SWUpdateStatus.isUpdateBufferReady) + if ( NUM_OF_CAN_FRAMES_TO_UPDATE == SWUpdateStatus.SWUpdateFrameCount ) + { + BOOL test = FALSE; + } + // TODO remove + + SWUpdateStatus.SWUpdateFrameCount++; + } +} + Index: firmware/App/Services/CommBuffers.h =================================================================== diff -u --- firmware/App/Services/CommBuffers.h (revision 0) +++ firmware/App/Services/CommBuffers.h (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -0,0 +1,33 @@ +/* + * CommBuffers.h + * + * Created on: Aug 2, 2024 + * Author: fw + */ + +#ifndef __COMMBUFFERS_H__ +#define __COMMBUFFERS_H__ + +#include "BLCommon.h" + +#define SW_UPDATE_BUFFER_SIZE 136 + +typedef enum SW_Update_CAN_Mail_Boxes +{ + SW_UPDATE_NOT_USED = 0, + SW_UPDATE_COMMAD , + SW_UPDATE_TD_UPDATE , + SW_UPDATE_DD_UPDATE , + SW_UPDATE_RO_UPDATE , + SW_UPDATE_RESP , + NUM_OF_SW_UPDATE_MBOXES, +} SW_UPDATE_CAN_MAIL_BOXES_T; + + +void initCommBuffers( void ); + +void handleCANMsgInterrupt( SW_UPDATE_CAN_MAIL_BOXES_T MailBox ); + +BOOL isSWUpdateBufferReady( void ); + +#endif Index: firmware/App/Services/Interrupts.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -10,6 +10,8 @@ #include "sci.h" #include "sys_dma.h" +#include "BLCommon.h" +#include "CommBuffers.h" #include "TaskGeneral.h" #include "TaskPriority.h" #include "TaskTimer.h" @@ -48,6 +50,6 @@ { if ( node == canREG1 ) { - // TODO receive CAN and put it in a queue + handleCANMsgInterrupt( (SW_UPDATE_CAN_MAIL_BOXES_T)messageBox ); } } Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -5,9 +5,10 @@ * Author: fw */ +#include "BLCommon.h" #include "TaskGeneral.h" void taskGeneral( void ) { - + BOOL test; } Index: firmware/App/Tasks/TaskPriority.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/App/Tasks/TaskPriority.c (.../TaskPriority.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -5,10 +5,11 @@ * Author: fw */ +#include "BLCommon.h" #include "TaskPriority.h" void taskPriority( void ) { - + BOOL test; } Index: firmware/App/Tasks/TaskTimer.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/App/Tasks/TaskTimer.c (.../TaskTimer.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/App/Tasks/TaskTimer.c (.../TaskTimer.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -5,11 +5,12 @@ * Author: fw */ +#include "BLCommon.h" #include "TaskTimer.h" void taskTimer( void ) { - + BOOL tst; } Index: firmware/BL.dil =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/BL.dil (.../BL.dil) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/BL.dil (.../BL.dil) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -1,4 +1,4 @@ -# RM46L852PGE 08/01/24 15:58:42 +# RM46L852PGE 08/02/24 13:47:04 # ARCH=RM46L852PGE # @@ -3311,7 +3311,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_37_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_6_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_RAM_PARITY_ENA.VALUE=0x00000005 +DRIVER.CAN.VAR.CAN_1_RAM_PARITY_ENA.VALUE=0x0000000A DRIVER.CAN.VAR.CAN_1_MESSAGE_59_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_64_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_56_DLC.VALUE=8 @@ -3787,7 +3787,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_37_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_29_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_TQ.VALUE=250.000 +DRIVER.CAN.VAR.CAN_1_TQ.VALUE=500.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_63_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_55_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_47_RTR.VALUE=0x00000000 @@ -3956,7 +3956,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_11_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_3_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT_REFERENCE.VALUE=75 -DRIVER.CAN.VAR.CAN_1_PROPAGATION_DELAY.VALUE=700 +DRIVER.CAN.VAR.CAN_1_PROPAGATION_DELAY.VALUE=1050 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_51_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_50_INT_ENA_REF.VALUE=0x00000000 @@ -3982,7 +3982,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_1_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_11_ID.VALUE=11 -DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=16 +DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_45_INT_ENA_REF.VALUE=0x00000000 @@ -4086,7 +4086,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_28_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_28_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_SHIFT.VALUE=0 +DRIVER.CAN.VAR.CAN_1_SHIFT.VALUE=18 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_56_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_50_MASK.VALUE=0x000007FF @@ -4104,7 +4104,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_14_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_9_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_BRPE.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MASK.VALUE=0x1FFFFFFF +DRIVER.CAN.VAR.CAN_1_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_45_INT_LEVEL.VALUE=0x00000000 @@ -4148,8 +4148,8 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_37_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=4.000 -DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=4.000 +DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=2.000 +DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=2.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_12_EOB.VALUE=0x00000000 @@ -4268,7 +4268,7 @@ DRIVER.CAN.VAR.CAN_1_PORT_TX_DIR.VALUE=1 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_DIR.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_INT_ENA_REF.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_INT_ENA_REF.VALUE=0x00000001 DRIVER.CAN.VAR.CAN_3_MESSAGE_1_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_RAM_PARITY_ENA.VALUE=0x00000005 DRIVER.CAN.VAR.CAN_3_PHASE_SEG.VALUE=2 @@ -4420,7 +4420,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_19_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_BRP.VALUE=25 +DRIVER.CAN.VAR.CAN_1_BRP.VALUE=51 DRIVER.CAN.VAR.CAN_3_MESSAGE_7_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_3_PROP_SEG.VALUE=3 DRIVER.CAN.VAR.CAN_2_MESSAGE_21_INT_ENA.VALUE=0x00000000 @@ -4609,7 +4609,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_35_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_27_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_19_BOOL_ENA.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_INT_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_INT_ENA.VALUE=0x00000400 DRIVER.CAN.VAR.CAN_2_PORT_TX_DOUT.VALUE=1 DRIVER.CAN.VAR.CAN_2_MESSAGE_31_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_23_RTR.VALUE=0x00000000 @@ -4706,7 +4706,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_6_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_57_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_49_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=6 +DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_30_ID.VALUE=30 DRIVER.CAN.VAR.CAN_3_MESSAGE_22_ID.VALUE=22 DRIVER.CAN.VAR.CAN_3_MESSAGE_14_ID.VALUE=14 @@ -4931,7 +4931,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_9_ID.VALUE=9 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_59_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_SJW.VALUE=4 +DRIVER.CAN.VAR.CAN_1_SJW.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_EOB.VALUE=0x00000000 @@ -4963,7 +4963,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_37_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_9_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_IDENTIFIER_MODE.VALUE=0x40000000 +DRIVER.CAN.VAR.CAN_1_IDENTIFIER_MODE.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_41_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_33_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_25_INT_LEVEL.VALUE=0x00000000 @@ -4988,7 +4988,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_7_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_59_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_2_BOOL_ENA.VALUE=1 -DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_ENA.VALUE=0x00000400 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_ID.VALUE=50 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_ID.VALUE=42 DRIVER.CAN.VAR.CAN_3_MESSAGE_34_ID.VALUE=34 @@ -5119,7 +5119,7 @@ DRIVER.CAN.VAR.CAN_1_SYNC.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_11_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_SHIFT.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_ENA_REF.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_ENA_REF.VALUE=0x00000001 DRIVER.CAN.VAR.CAN_3_PORT_RX_PULDIS.VALUE=0 DRIVER.CAN.VAR.CAN_3_MESSAGE_60_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_3_MESSAGE_52_BOOL_ENA.VALUE=0 @@ -5214,7 +5214,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_8_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_DIR.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=62.500 +DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=75.000 DRIVER.CAN.VAR.CAN_2_MESSAGE_51_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_43_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_35_BOOL_ENA.VALUE=0 Index: firmware/include/can.h =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/include/can.h (.../can.h) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/include/can.h (.../can.h) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -632,12 +632,12 @@ /* Configuration registers initial value for CAN1*/ #define CAN1_CTL_CONFIGVALUE ((uint32)0x00000000U \ | (uint32)0x00000000U \ - | (uint32)((uint32)0x00000005U << 10U) | 0x00020002U) + | (uint32)((uint32)0x0000000AU << 10U) | 0x00020002U) #define CAN1_ES_CONFIGVALUE 0x00000007U #define CAN1_BTR_CONFIGVALUE ((uint32)((uint32)0U << 16U) \ - | (uint32)((uint32)(6U - 1U) << 12U) \ - | (uint32)((uint32)((3U + 6U) - 1U) << 8U) \ - | (uint32)((uint32)(4U - 1U) << 6U) | (uint32)25U) + | (uint32)((uint32)(2U - 1U) << 12U) \ + | (uint32)((uint32)((3U + 2U) - 1U) << 8U) \ + | (uint32)((uint32)(2U - 1U) << 6U) | (uint32)51U) #define CAN1_TEST_CONFIGVALUE 0x00000080U #define CAN1_ABOTR_CONFIGVALUE ((uint32)(0U)) #define CAN1_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ Index: firmware/source/can.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/source/can.c (.../can.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/source/can.c (.../can.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -106,7 +106,7 @@ */ canREG1->CTL = (uint32)0x00000000U | (uint32)0x00000000U - | (uint32)((uint32)0x00000005U << 10U) + | (uint32)((uint32)0x0000000AU << 10U) | (uint32)0x00020043U; /** - Clear all pending error flags and reset current status */ @@ -196,9 +196,9 @@ } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x601U & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x601U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 1U; @@ -215,9 +215,9 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x602U & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x602U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 2U; @@ -234,8 +234,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x603U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x603U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 3U; @@ -253,8 +253,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x604U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x604U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 4U; @@ -272,8 +272,8 @@ { } /* Wait */ - canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x605U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x605U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 5U; @@ -291,8 +291,8 @@ { } /* Wait */ - canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x1FFFFFFFU) << (uint32)0U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x40000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)8U & (uint32)0x1FFFFFFFU) << (uint32)0U); + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)8U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 8U; @@ -325,10 +325,10 @@ * - Setup baud rate prescaler */ canREG1->BTR = (uint32)((uint32)0U << 16U) | - (uint32)((uint32)(6U - 1U) << 12U) | - (uint32)((uint32)((3U + 6U) - 1U) << 8U) | - (uint32)((uint32)(4U - 1U) << 6U) | - (uint32)25U; + (uint32)((uint32)(2U - 1U) << 12U) | + (uint32)((uint32)((3U + 2U) - 1U) << 8U) | + (uint32)((uint32)(2U - 1U) << 6U) | + (uint32)51U; /** - CAN1 Port output values */ Index: firmware/source/sys_link.cmd =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/source/sys_link.cmd (.../sys_link.cmd) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/source/sys_link.cmd (.../sys_link.cmd) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -64,6 +64,14 @@ } /* USER CODE BEGIN (3) */ +/* IGNORE the generated Sections code, overridden below */ +ECC +{ + algoL2R4F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */ + hamming_mask = R4 /* Use R4/R5 build in Mask */ + parity_mask = 0x0c /* Set which ECC bits are Even and Odd parity */ + mirroring = F021 /* RM57Lx and TMS570LCx are build in F021 */ +} /* USER CODE END */ /*----------------------------------------------------------------------------*/ Index: firmware/source/sys_main.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/source/sys_main.c (.../sys_main.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -61,6 +61,7 @@ #include "rti.h" #include "BLCommon.h" +#include "CommBuffers.h" #include "Interrupts.h" #include "TaskBG.h" #include "Timers.h" @@ -101,6 +102,7 @@ static void initSoftware( void ) { + initCommBuffers(); initInterrupts(); initTimers(); } Index: firmware/source/sys_startup.c =================================================================== diff -u -rabb9687e52d9db5df1abe7626ba04a6d431ba823 -r850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f --- firmware/source/sys_startup.c (.../sys_startup.c) (revision abb9687e52d9db5df1abe7626ba04a6d431ba823) +++ firmware/source/sys_startup.c (.../sys_startup.c) (revision 850f8042a02fd17ee53b8db24bc2e3d17bbb9c7f) @@ -616,11 +616,11 @@ // Shuffle IRQ priorities per design requirements vimChannelMap( 3, 40, &rtiCompare1Interrupt ); vimChannelMap( 5, 64, &rtiCompare3Interrupt ); - vimChannelMap( 13, 5, &linHighLevelInterrupt ); - vimChannelMap( 16, 15, &can1HighLevelInterrupt ); + vimChannelMap( 13, 3, &linHighLevelInterrupt ); + vimChannelMap( 16, 16, &can1HighLevelInterrupt ); vimChannelMap( 29, 13, &can1LowLevelInterrupt ); - vimChannelMap( 40, 10, &dmaBTCAInterrupt ); - vimChannelMap( 64, 16, &sciHighLevelInterrupt ); + vimChannelMap( 40, 5, &dmaBTCAInterrupt ); + vimChannelMap( 64, 29, &sciHighLevelInterrupt ); /* USER CODE END */ /* Configure system response to error conditions signaled to the ESM group1 */