/* Dcm Example Initialise Routine. * 初始化Can、CanIf、PduR和DCM , * 需要使用“dcm_ex1.arxml”生成其相应配置文件。*/ void DcmEx1Init(void) { Can_Init(&Can_ConfigData); CanIf_Init(&CanIf_Config); CanTp_Init(); PduR_Init(&PduR_Config); Dcm_Init(); //启动配置的两个CAN通道 CAN_CTRL_0 和 CAN_CTRL_1 CanIf_SetControllerMode(vCanIf_Channel_0,CANIF_CS_STARTED); CanIf_SetControllerMode(vCanIf_Channel_1,CANIF_CS_STARTED); }
void StartupHook(void) { /* Add Code Here */ (void)SetRelAlarm(ID_vAlarmReceiver,50,10); (void)SetRelAlarm(ID_vAlarmSender,100,200); (void)SetRelAlarm(ID_vAlarmMainFunction,200,1); //so cyclic 1 Ticks = 4ms Can_Init(&Can_ConfigData); CanIf_Init(&CanIf_Config); CanNm_Init(&CanNm_Config); CanSM_Init(&CanSM_Cfg); Nm_Init(&Nm_Config); ComM_Init(&ComM_Cfg); CanIf_SetControllerMode(vCanIf_Channel_0,CANIF_CS_STARTED); CanIf_SetControllerMode(vCanIf_Channel_1,CANIF_CS_STARTED); Nm_PassiveStartUp(vNm_Channel_0); ComM_RequestComMode(vComM_User_0,COMM_FULL_COMMUNICATION); CanNm_NetworkRequest(vCanNm_Channel_0); }
void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr) { (void)ConfigPtr; #if defined(USE_SPI) // Setup SPI Spi_Init(ConfigPtr->SpiConfig); #endif #if defined(USE_EEP) // Setup EEP NO_DRIVER(Eep_Init(ConfigPtr->EepConfig)); #endif #if defined(USE_FLS) // Setup Flash NO_DRIVER(Fls_Init(ConfigPtr->FlashConfig)); #endif #if defined(USE_FEE) // Setup FEE NO_DRIVER(Fee_Init()); #endif #if defined(USE_EA) // Setup EA NO_DRIVER(Ea_Init()); #endif #if defined(USE_NVM) // Setup NVRAM Manager and start the read all job NO_DRIVER(NvM_Init()); NO_DRIVER(NvM_ReadAll()); #endif #if defined(USE_LIN) // Setup Lin driver Lin_Init(ConfigPtr->LinConfig); #endif #if defined(USE_LINIF) // Setup LinIf LinIf_Init(ConfigPtr->LinIfConfig); #endif #if defined(USE_LINSM) // Setup LinSM LinSM_Init(ConfigPtr->LinSMConfig); #endif // Setup CAN tranceiver // NOTE: Add when adding supoprt for CanTranceiver #if defined(USE_CAN) // Setup Can driver Can_Init(ConfigPtr->CanConfig); #endif #if defined(USE_CANIF) // Setup CanIf NO_DRIVER(CanIf_Init(ConfigPtr->PostBuildConfig->CanIf_ConfigPtr)); #endif #if defined(USE_CANTP) // Setup CAN TP NO_DRIVER(CanTp_Init(ConfigPtr->PostBuildConfig->CanTp_ConfigPtr)); #endif #if defined(USE_CANSM) NO_DRIVER(CanSM_Init(ConfigPtr->CanSMConfig)); #endif #if defined(USE_J1939TP) // Setup J1939Tp NO_DRIVER(J1939Tp_Init(ConfigPtr->J1939TpConfig)); #endif #if defined(USE_PDUR) // Setup PDU Router NO_DRIVER(PduR_Init(ConfigPtr->PostBuildConfig->PduR_ConfigPtr)); #endif #if defined(USE_CANNM) // Setup Can Network Manager NO_DRIVER(CanNm_Init(ConfigPtr->PostBuildConfig->CanNm_ConfigPtr)); #endif #if defined(USE_UDPNM) // Setup Udp Network Manager NO_DRIVER(UdpNm_Init(ConfigPtr->UdpNmConfig)); #endif #if defined(USE_NM) // Setup Network Management Interface NO_DRIVER(Nm_Init()); #endif #if defined(USE_COM) // Setup COM layer NO_DRIVER(Com_Init(ConfigPtr->PostBuildConfig->ComConfigurationPtr)); #endif #if defined(USE_DCM) // Setup DCM NO_DRIVER(Dcm_Init(ConfigPtr->DcmConfig)); #endif #if defined(USE_IOHWAB) // Setup IO hardware abstraction layer IoHwAb_Init(); #endif #if defined(USE_XCP) // Setup XCP NO_DRIVER(Xcp_Init(ConfigPtr->XcpConfig)); #endif }
void EcuM_Callout_DriverInitListTwo(void) { /* status of NvM initialization */ NvM_RequestResultType Result; BswM_Init(BswM_ConfigPtr); Fls_Init(NULL_PTR); #ifdef BASE_EA_ENABLED EA_INIT_FUNC(); #endif #ifdef BASE_FEE_ENABLED FEE_INIT_FUNC(); /* wait for FEE to complete the init sequence */ do { Fee_MainFunction(); Fls_MainFunction(); } while (MEMIF_IDLE != Fee_GetStatus()); #endif #ifdef BASE_NVM_ENABLED NVM_INIT_FUNC(); NvM_ReadAll(); /* wait for the NvM_ReadAll() to complete - some of the remaining modules need valid NvRam data... */ do { NvM_MainFunction(); Fee_MainFunction(); Fls_MainFunction(); (void)NvM_GetErrorStatus(NvMConf_NvMBlockDescriptor_NvMBlock_ConfigID, &Result); } while (Result == NVM_REQ_PENDING); #endif LinEmuUart_Init(); Can_InitMemory(); Can_Init(&CanConfigSet); CanIf_InitMemory(); CanIf_Init(&CanIf_Config); //CanNm_Init(&CanNmGlobalConfig); //Nm_Init(&Nm_Configuration0); PduR_InitMemory(); PduR_Init(&PduRGlobalConfig); Com_InitMemory(); Com_Init(&ComConfig); CanSM_InitMemory(); CanSM_Init(); CanTp_InitMemory(); CanTp_Init(); ComM_InitMemory(); ComM_Init(&ComMConfig); Xcp_Init(NULL); FiM_Init(&FiM_Config_0); DiagMeas_Init(); DiagCtrl_Init(); SCI_B6Bridge_Init(); SCI_Pfc_Init(); SCI_IOHW_Init(); #ifdef BASE_DEM_ENABLED DEM_INIT_FUNC(); /* start the standard operation cycle */ /* (void) Dem_SetOperationCycleState(DEM_OPCYC_POWER, DEM_CYCLE_STATE_START); */ #endif Dcm_Init(); }
void CAN_InterfaceTest(const char* driverName, int sendcountmax, int baud, int config) { int cnt; sendcount = 0; recvcount = 0; time_t t_start, t_end; Std_ReturnType std_ret; /* CanIf_ConfigTypeはAUTOSARの仕様に準拠したため、本バージョンでは未使用。NULLを指定する */ CanIf_Init(NULL); /* AUTOSARの仕様に準拠し、各種設定は静的なデータとしてコンパイル時に確定させる。 本サンプルプログラムでは、テストのため内部設定を直接書き換える。 CanIfConfigurationsは、CanIf_Initの実行後に修正する必要がある */ /* ドライバ名の設定 */ CanIfConfigurations.initConfiguration[RECVCFG].ConfigSet.driverName = driverName; CanIfConfigurations.initConfiguration[SENDCFG].ConfigSet.driverName = driverName; /* ボーレートの設定 */ CanIfConfigurations.initConfiguration[RECVCFG].ConfigSet.baudRate = baud; CanIfConfigurations.initConfiguration[SENDCFG].ConfigSet.baudRate = baud; /* Acceptフィルタの設定 */ CanIfConfigurations.initConfiguration[RECVCFG].ConfigSet.acceptCode = 0x00000000; CanIfConfigurations.initConfiguration[RECVCFG].ConfigSet.acceptMask = 0xffffffff; CanIfConfigurations.initConfiguration[SENDCFG].ConfigSet.acceptCode = 0x00000000; CanIfConfigurations.initConfiguration[SENDCFG].ConfigSet.acceptMask = 0xffffffff; /* PDU-IDの登録 */ CanIfConfigurations.initConfiguration[RECVCFG].CanIfNumberOfCanRxPduIds = 1; CanIfConfigurations.initConfiguration[RECVCFG].CanIfRxPduConfigList[0].CanIfCanRxPduCanId = RECV_PDUID; CanIfConfigurations.initConfiguration[RECVCFG].CanIfRxPduConfigList[0].CanIfCanRxPduId = RECV_PDUID; CanIfConfigurations.initConfiguration[RECVCFG].CanIfNumberOfCanTxPduIds = 0; CanIfConfigurations.initConfiguration[RECVCFG].CanIfNumberOfDynamicCanTxPduIds = 0; CanIfConfigurations.initConfiguration[SENDCFG].CanIfNumberOfCanTxPduIds = 1; CanIfConfigurations.initConfiguration[SENDCFG].CanIfTxPduConfigList[0].CanIfTxPduIdCanId = SEND_PDUID; CanIfConfigurations.initConfiguration[SENDCFG].CanIfTxPduConfigList[0].CanIfCanTxPduId = SEND_PDUID; CanIfConfigurations.initConfiguration[SENDCFG].CanIfNumberOfCanRxPduIds = 0; CanIfConfigurations.initConfiguration[SENDCFG].CanIfNumberOfDynamicCanTxPduIds = 0; /* 受信コールバックの設定 */ CanIfConfigurations.initConfiguration[RECVCFG].CanIfRxPduConfigList[0].CanIfRxUserType = CANIF_CAN_NM; if(config == 0) { CanIfConfigurations.initConfiguration[RECVCFG].CanIfRxPduConfigList[0].CanIfUserRxIndication = CanRxCallback; CanIfConfigurations.initConfiguration[SENDCFG].CanIfTxPduConfigList[0].CanIfUserTxConfirmtion = CanTxCallback; } else { CanIfConfigurations.initConfiguration[RECVCFG].CanIfRxPduConfigList[0].CanIfUserRxIndication = NULL; CanIfConfigurations.initConfiguration[SENDCFG].CanIfTxPduConfigList[0].CanIfUserTxConfirmtion = NULL; } /* コントローラの初期化 */ CanIf_InitController(sendController, SENDCFG); CanIf_InitController(recvController, RECVCFG); if (CanIf_SetControllerMode(sendController, CANIF_CS_STARTED) != E_OK) { printf("CanIf_SetControllerMode(0, CANIF_CS_STARTED) failed\n"); return; } if (CanIf_SetControllerMode(recvController, CANIF_CS_STARTED) != E_OK) { printf("CanIf_SetControllerMode(1, CANIF_CS_STARTED) failed\n"); return; } time(&t_start); for(cnt = 0; (cnt < (sendcountmax * 5) && recvcount < sendcountmax); ++cnt) { Dem_Sleep(1000); /* 送信テスト */ if(sub_loop_trg == 0 && sendcount < sendcountmax) { PduInfoType pduInfo; uint8 buf[8]; sprintf((char*)buf, "UU%4.4d*", cnt); buf[7] = 0x00; pduInfo.SduDataPtr = buf; pduInfo.SduLength = 8; do{ /* エラーの時はリトライして待つ */ std_ret = CanIf_Transmit(SEND_PDUID, &pduInfo); printf("CanIf_Transmit std_ret = %d, cnt = %d\n",std_ret ,cnt); }while(std_ret != E_OK); printf("Transmit ch:%d to ch:%d: ID:%x '%8.8s'\n", sendController, recvController, SEND_PDUID, pduInfo.SduDataPtr); ++sendcount; } // ヒステリシスを持った、送信の制御 if(sub_loop_trg == 0) { if((sendcount - recvcount) >= sub_loop_limit) sub_loop_trg = 1; } else { if((sendcount - recvcount) < (sub_loop_limit / 4)) sub_loop_trg = 0; } if (config == 1) { /* 受信テスト */ if (CanIf_ReadRxPduData(RECV_PDUID, &recvData) == E_OK) { /* 受信データあり */ printf("Receive ch:%d ID:%x '%8.8s'\n", recvController, RECV_PDUID, recvData.SduDataPtr); ++recvcount; } } } if (recvcount == sendcountmax) { printf("All data received. (%d/%d)\n", recvcount, sendcountmax); } else { printf("%d data lost.(%d/%d)\n", sendcountmax - recvcount, recvcount, sendcountmax); } time(&t_end); printf("Total time: %d [Sec]\n", (t_end - t_start)); /* 終了処理の追加 */ CanIf_Deinit(); }
void EcuM_AL_DriverInitTwo(const EcuM_ConfigType* ConfigPtr) { (void)ConfigPtr; //lint --e{715} PC-Lint (715) - ConfigPtr usage depends on configuration of modules // VALIDATE_STATE(ECUM_STATE_STARTUP_TWO); #if defined(USE_ETH) buffer_init(); Eth_Init(); #endif //#undef USE_USB #if defined(USE_USB) // usb_heap_init(); // mailboxInit(); // usb_sem_init(); usbinit(); #endif #if defined(USE_SPI) // Setup SPI Spi_Init(ConfigPtr->SpiConfig); #endif #if defined(USE_EEP) // Setup EEP NO_DRIVER(Eep_Init(ConfigPtr->EepConfig)); #endif #if defined(USE_FLS) // Setup Flash NO_DRIVER(Fls_Init(ConfigPtr->FlashConfig)); #endif #if defined(USE_FEE) // Setup FEE NO_DRIVER(Fee_Init()); #endif #if defined(USE_EA) // Setup EA NO_DRIVER(Ea_Init()); #endif #if defined(USE_NVM) // Setup NVRAM Manager and start the read all job NO_DRIVER(NvM_Init()); NO_DRIVER(NvM_ReadAll()); #endif #if defined(USE_LIN) // Setup Lin driver Lin_Init(ConfigPtr->LinConfig); #endif #if defined(USE_LINIF) // Setup LinIf LinIf_Init(ConfigPtr->LinIfConfig); #endif #if defined(USE_LINSM) // Setup LinSM LinSM_Init(ConfigPtr->LinSMConfig); #endif // Setup CAN tranceiver // TODO #if defined(USE_CAN) // Setup Can driver Can_Init(ConfigPtr->CanConfig); #endif #if defined(USE_CANIF) // Setup CanIf NO_DRIVER(CanIf_Init(ConfigPtr->PostBuildConfig->CanIf_ConfigPtr)); #endif #if defined(USE_CANTP) // Setup CAN TP NO_DRIVER(CanTp_Init(ConfigPtr->PostBuildConfig->CanTp_ConfigPtr)); #endif #if defined(USE_CANSM) NO_DRIVER(CanSM_Init(ConfigPtr->CanSMConfig)); #endif #if defined(USE_J1939TP) // Setup J1939Tp NO_DRIVER(J1939Tp_Init(ConfigPtr->J1939TpConfig)); #endif // Setup LIN // TODO #if defined(USE_PDUR) // Setup PDU Router NO_DRIVER(PduR_Init(ConfigPtr->PostBuildConfig->PduR_ConfigPtr)); #endif #if defined(USE_CANNM) // Setup Can Network Manager NO_DRIVER(CanNm_Init(ConfigPtr->PostBuildConfig->CanNm_ConfigPtr)); #endif #if defined(USE_UDPNM) // Setup Udp Network Manager NO_DRIVER(UdpNm_Init(ConfigPtr->UdpNmConfig)); #endif #if defined(USE_NM) // Setup Network Management Interface NO_DRIVER(Nm_Init()); #endif #if defined(USE_COM) // Setup COM layer NO_DRIVER(Com_Init(ConfigPtr->PostBuildConfig->ComConfigurationPtr)); #endif #if defined(USE_DCM) // Setup DCM NO_DRIVER(Dcm_Init(ConfigPtr->DcmConfig)); #endif #if defined(USE_IOHWAB) // Setup IO hardware abstraction layer IoHwAb_Init(); #endif }