+ Most concrete linkage of setup, integration, and tests.
- Version-specific names and examples appear authoritative.
an AUTOSAR Software Module Developer. You are experienced in automotive software engineering, specializing in AUTOSAR development using ETAS RTA-CAR a
| Category | Development › Coding |
|---|---|
| Tags | DraftingDeveloperCode |
Act as an AUTOSAR Software Module Developer. You are experienced in automotive software engineering, specializing in AUTOSAR development using ETAS RTA-CAR and EB tresos tools. Your primary focus is on developing software modules for the TC377 MCU. Your task is to: - Develop and integrate AUTOSAR-compliant software modules. - Use ETAS RTA-CAR for configuration and code generation. - Utilize EB tresos for configuring MCAL. - Ensure software meets all specified requirements and standards. - Debug and optimize software for performance and reliability. Rules: - Adhere to AUTOSAR standards and guidelines. - Maintain clear documentation of the development process. - Collaborate effectively with cross-functional teams. - Prioritize safety and performance in all developments.
Useful for setting the context for automotive software module development. It specifies AUTOSAR compliance, documentation, collaboration, and prioritizing safety and performance.
ChatGPT is the most reliable because it qualifies tool-dependent details. Claude is the most specific but overconfident, while Gemini is clear yet contains questionable technical details.
+ Most concrete linkage of setup, integration, and tests.
- Version-specific names and examples appear authoritative.
+ Most accurate and cautious about version differences.
- Repetition makes it longer than the task requires.
+ Clearly traces the data flow and implementation.
- Some pin, timing, and TDC advice is too definitive.
| Criterion | ChatGPT | Claude | Gemini | Leader |
|---|---|---|---|---|
| Instruction following | 9 | 10 | 9 | Claude +11% |
| Accuracy | 9 | 7 | 7 | ChatGPT +29% |
| Specificity | 9 | 10 | 9 | Claude +11% |
| Structure | 9 | 10 | 9 | Claude +11% |
| Right length | 7 | 7 | 7 | Tie |
Scored 1–10 by gpt-5.6-sol with model names hidden (2026-09-24). This is an AI review, not a measurement.
We gave three models the same input and copied their answers unedited. Each ran in its CLI (an agent harness), and answers in the ChatGPT or Claude apps or on the web may differ. Outputs are in Korean.
[Pasted material] TC377 기반 파워트레인 ECU에서 CAN FD 통신으로 배터리 SOC 데이터를 100ms 주기로 송신하는 AUTOSAR 소프트웨어 컴포넌트를 설계하려고 합니다. RTA-CAR로 SWC 인터페이스를 구성하고 EB tresos에서 MCAL CAN 드라이버 설정하는 절차를 순서대로 알려주세요.
아래는 TC377 기반 파워트레인 ECU에서 배터리 SOC를 CAN FD로 100 ms 주기 송신하는 일반적인 AUTOSAR Classic 절차입니다. 실제 메뉴명과 설정 가능 범위는 사용 중인 RTA-CAR·EB tresos 버전에 따라 다를 수 있습니다.
먼저 CAN 매트릭스와 시스템 요구사항을 확정합니다.
예시:
| 항목 | 예시 |
|---|---|
| 메시지 | BMS_SOC |
| CAN ID | 0x180 |
| 주기 | 100 ms |
| 데이터 길이 | 8 bytes |
| SOC 신호 | Byte 0~1, UInt16 |
| 변환식 | Physical SOC = Raw × 0.01 % |
| CAN 형식 | CAN FD, 500 kbit/s / 2 Mbit/s |
RTA-CAR에서 배터리 SOC 송신용 Application SWC를 생성합니다.
예:
BatterySocSenderBatterySocSender_100ms100 msRunnable에서는 SOC 값을 직접 측정하거나, 별도 Battery Management SWC의 SOC 데이터를 RTE Client/Server 또는 Sender/Receiver 인터페이스로 수신합니다.
권장 구조는 다음과 같습니다.
BatterySocProvider SWC
│
│ RTE Sender/Receiver
▼
BatterySocSender SWC
│
│ RTE
▼
COM → PduR → CanIf → Can → CanDrv → CAN FD Controller
SOC 신호에 맞는 AUTOSAR Data Type을 정의합니다.
예:
uint16필요하면 다음을 정의합니다.
BatterySocRawTypeBatterySocPercentTypeSOC를 다른 SWC에서 받아오는 경우:
BatterySocuint16예를 들어 다음과 같이 구성합니다.
BatterySocProvider → BatterySocSender
BatterySocProvider.BatterySoc → BatterySocSender.BatterySocInput
SOC가 애플리케이션 내부에서 계산되는 경우에는 입력 포트 없이 송신 Runnable에서 값을 생성할 수도 있습니다.
BatterySocSender_100ms Runnable에 100 ms Timing Event를 연결합니다.
Runnable의 일반적인 처리 순서는 다음과 같습니다.
일반적으로 Application SWC가 직접 Can_Write()를 호출하지 않고, RTE 또는 COM 신호 API를 사용해야 합니다.
void BatterySocSender_100ms(void)
{
uint16 socRaw;
socRaw = Rte_IRead_BatterySocSender_100ms_BatterySocInput();
if (socRaw > 10000u) {
socRaw = 10000u;
}
Rte_Write_BatterySocTx_BatterySoc(socRaw);
}
실제 API 이름은 RTA-CAR에서 생성된 포트와 Runnable 설정에 따라 달라집니다.
RTA-CAR 또는 통합 BSW 설정 환경에서 CAN 신호를 COM에 매핑합니다.
BMS_SOC 송신용 I-PDU를 생성합니다.
BmsSocTxIpduCAN FD에서는 실제 데이터 길이에 따라 DLC가 결정되므로 8, 12, 16, 20, 24, 32, 48, 64 bytes 중 하나를 사용합니다. 예를 들어 8-byte 메시지는 Classical CAN과 동일한 DLC 8을 사용할 수 있습니다.
SOC 신호를 COM Signal로 등록합니다.
예:
BmsSocSignalSOC 신호를 I-PDU에 매핑합니다.
BmsSocSignal
└── BmsSocTxIpdu
└── CanIf Tx PDU
필요하면 다음도 함께 매핑합니다.
E2E 보호가 요구되는 경우, 일반적으로 COM 직접 처리 또는 E2E Transformer 구성을 시스템 아키텍처에 맞춰 선택합니다.
RTA-CAR에서 SWC의 Sender Port를 COM 신호 또는 관련 BSW 통신 객체에 연결합니다.
일반적인 데이터 경로는 다음과 같습니다.
Rte_Write()
→ COM signal buffer
→ COM I-PDU
→ PduR_ComTransmit
→ CanIf_Transmit
→ Can_Write
주기 송신은 다음 두 방식 중 하나로 구성할 수 있습니다.
대부분의 경우 COM의 주기 송신을 사용하고, Runnable은 데이터를 갱신하는 역할만 담당하는 구성이 명확합니다.
다음 BSW 모듈 간 연결을 확인합니다.
RTE
└── COM
└── PduR
└── CanIf
└── Can
└── CanTrcv
필요한 주요 설정은 다음과 같습니다.
CAN FD 송신은 Classical CAN 프레임과 구분되는 설정이 필요하므로 CanIfTxPduCanIdType, FD frame 허용 여부, bitrate switching 여부를 확인해야 합니다.
EB tresos에서는 TC377용 MCAL을 설정합니다.
먼저 MCU 및 포트 설정을 확인합니다.
TC377 보드에서 외부 CAN transceiver의 STB/EN 핀이 별도 GPIO로 연결되어 있다면 Dio 또는 Port 설정도 함께 구성해야 합니다.
CanGeneral에서 다음을 설정합니다.
프로젝트의 안전 요구사항에 따라 DET, DEM, 오류 알림을 개발 단계에서는 활성화하는 것이 일반적입니다.
사용할 CAN controller를 설정합니다.
예:
Nominal bitrate : 500 kbit/s
Data bitrate : 2 Mbit/s
CAN FD : Enabled
BRS : Enabled
실제 bit timing은 네트워크 전체 노드와 CAN transceiver 사양에 맞춰 계산해야 합니다. 단순히 nominal/data bitrate만 맞추는 것으로 충분하지 않을 수 있습니다.
송신용 Hardware Object를 생성합니다.
예시:
HTH: CanHTH_BmsSoc
Controller: CanController_0
ID type: Standard
CAN ID: 0x180
Direction: Tx
Frame: CAN FD
CAN ID와 DLC는 CanIf 및 시스템 CAN 매트릭스 설정과 반드시 일치해야 합니다.
CanConfigSet에 다음을 연결합니다.
생성된 설정에서 다음 API와 구조체가 정상적으로 생성되는지 확인합니다.
Can_Init()Can_SetControllerMode()Can_Write()Can_MainFunction_Write() 또는 Tx interrupt 처리EB tresos 및 RTA-CAR에서 생성된 설정을 통합하면서 다음 ID를 일치시킵니다.
| 계층 | 확인 항목 |
|---|---|
| SWC/RTE | Port, Data Element, Runnable |
| COM | Signal, I-PDU, Tx mode |
| PduR | COM Tx PDU → CanIf Tx PDU |
| CanIf | Tx PDU ID, HTH reference |
| Can | HOH, Controller, CAN ID |
| MCU/Port | Clock, CAN pin, transceiver pin |
특히 아래 값이 서로 어긋나면 송신이 되지 않습니다.
설정 완료 후 다음 순서로 코드를 생성합니다.
100 ms Runnable이 실제 OS Task에서 실행되는지 확인합니다.
OsTask_10ms
└── Rte scheduled event
└── BatterySocSender_100ms
100 ms 정확도가 중요하다면 10 ms 또는 100 ms 기본 스케줄링 주기와 Runnable 실행 오프셋을 검토해야 합니다.
CAN 분석기를 사용해 다음을 확인합니다.
Rte_Write() 호출과 값 확인PduR_ComTransmit() 호출 확인CanIf_Transmit() 호출 확인Can_Write() 결과 확인Can_Write()를 직접 호출하지 않습니다.| 12-Month AI and Computer Vision Roadmap for Defense Applications | |
| 2046 Puzzle Game Challenge | |
| 21st.dev component prompt | |
| 3D FACTORY | |
| 3D FPS Game |