null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
툴체인 개요
#toolchain
#cross-compiler
#linker
#flasher
#gcc
@devpc
|
2026-04-02 05:47:08
|
GET /api/v1/nodes/197?nv=1
History:
v1 (2026-04-02) (Latest)
0
Views
3
Calls
# 툴체인 개요 ## 툴체인이란? 툴체인(Toolchain)은 소스코드를 MCU가 실행할 수 있는 바이너리로 변환하고, 장치에 올리기까지의 **도구 모음**입니다. ``` [ 빌드 & 플래싱 전체 흐름 ] .c / .h 소스 파일 | v [ 크로스 컴파일러 ] ← 호스트 PC에서 실행되지만 타겟(MCU)용 코드 생성 | v .o 오브젝트 파일들 | v [ 링커 ] ← 오브젝트들을 합치고 메모리 주소 배치 | v .elf / .hex / .bin 실행 파일 | v [ 플래셔 ] ← JTAG/SWD를 통해 MCU Flash에 기록 | v MCU에서 실행 ``` --- ## 크로스 컴파일러 (Cross-Compiler) **일반 컴파일러**는 실행하는 PC용 코드를 만듭니다. **크로스 컴파일러**는 실행하는 PC와 **다른 아키텍처**(예: TriCore, ARM)용 코드를 만듭니다. ``` [ 크로스 컴파일 개념 ] HOST (개발 PC) TARGET (MCU) +-----------------+ +-------------+ | x86-64 Linux | | TriCore | | Windows | | TC37x | | | | | | tricore-gcc | --- JTAG ---→ | 실행 | | (크로스 컴파일러)| | | +-----------------+ +-------------+ ``` TC37x용 크로스 컴파일러 예: ```bash # TriCore GCC 크로스 컴파일러 이름 예시 tricore-elf-gcc -c main.c -o main.o tricore-elf-gcc main.o -T linker.ld -o output.elf ``` ADS(Aurix Development Studio)는 내부적으로 TriCore GCC를 사용하며, 이 과정을 GUI에서 자동으로 처리해줍니다. --- ## 링커 (Linker) 여러 `.o` 오브젝트 파일을 합치고, **링커 스크립트**에 따라 메모리 주소를 배치합니다. ``` [ 링커 동작 ] main.o + gpio.o + → [ 링커 ] → output.elf uart.o + ↑ iLLD.a + linker.ld (메모리 배치 지시) ``` 링커의 핵심 역할: - 심볼 해결: `main.c`에서 호출한 `IfxPort_setPinMode()`가 어느 `.o`에 있는지 연결 - 섹션 배치: `.text`는 PFLASH, `.data`는 DSPR 등 지시에 따라 배치 - 최종 바이너리 생성: `.elf`(디버그 심볼 포함), `.hex`(플래싱용) 등 --- ## 플래셔 (Flasher) 컴파일된 바이너리를 MCU의 Flash 메모리에 기록하는 도구입니다. ``` [ JTAG 플래싱 연결 ] 개발 PC +-----------+ USB +-------------+ JTAG +---------+ | ADS / IDE | -----------> | JTAG 어댑터 | -----------> | TC37x | | | | (DAP / DAS) | | 보드 | +-----------+ +-------------+ +---------+ ``` TC37x에서 주로 사용하는 디버그/플래시 인터페이스: | 도구 | 특징 | |---|---| | Infineon DAS (Device Access Server) | Infineon 공식, ADS와 통합 | | Lauterbach TRACE32 | 고급 디버거, 자동차 업계 표준 | | PLS UDE (Universal Debug Engine) | 대안적 상용 디버거 | --- ## TC37x: ADS + TriCore GCC **Aurix Development Studio (ADS)** 는 Infineon이 공식 제공하는 무료 IDE입니다. ``` [ ADS 구성 요소 ] +-----------------------------------------------+ | Aurix Development Studio (ADS) | | | | Eclipse IDE | | ├── 편집기 (소스코드 작성) | | ├── 빌드 시스템 (TriCore GCC 자동 호출) | | ├── 플래셔 (DAS 연동, JTAG 플래싱) | | └── 디버거 (중단점, 레지스터/메모리 뷰) | +-----------------------------------------------+ ``` 설치 및 시작 흐름: 1. Infineon 공식 사이트에서 ADS 다운로드 (무료) 2. iLLD 소스 다운로드 (Infineon 포털) 3. ADS에서 새 프로젝트 생성 → iLLD 통합 4. 보드와 JTAG 연결 후 Run/Debug --- ## 다른 MCU와의 차이점 > ⚠️ 다른 환경에서 넘어온다면 이런 점이 다를 수 있습니다. - **STM32 (STM32CubeIDE / arm-none-eabi-gcc)**: ARM GCC 기반, 같은 GCC 계열이지만 타겟 트리플이 다름 (`arm-none-eabi-` vs `tricore-elf-`). - **Arduino (avr-gcc / arm-gcc)**: 툴체인을 숨기고 스케치만 작성. TC37x/ADS는 툴체인이 직접 노출됨. - **공통 개념**: 컴파일 → 링크 → 플래시의 흐름, JTAG/SWD 디버깅 방식은 MCU마다 거의 동일.
// COMMENTS
Newest First
ON THIS PAGE