전기전자 찌릿/MCU

[MCU] MCUXpresso IDE, SDK, Configure the project - Components(LPC54605)설명-1

동그리의일상 2024. 2. 12. 23:43
반응형

SDK, Configure the project - Components(LPC54605) 설정하는 옵션에 대해서 알아보자.

 

 

SDK -Project에 어떤 옵션들이 있으면, 언제 사용하는지 알아보자!

SDK Wizard

Operating Systems (운영 체제)

- Device : Baremetal

  •  운영 체제 없이 하드웨어에 직접 프로그램을 실행한다.
  •  장점: 완전한 제어권, 효율성, 운영체제로 인한 오버 헤드가 없으므로 시스템 리소스를 최적으로 사용
  •  단점: 다중 작업 관리가 어려움, 하드웨어 관리와 멀티 태스킹 로직을 직접 구현

- RTOS : FreeRTOS kernel

  • 임베디드 시스템을 위한 실시간 운영 체제(RTOS),  작업(태스크)을 동시에 실행할 수 있는 멀티태스킹 환경 구성된다.
  • 장점: 리소스가 제한된 시스템에서 실시간 성능을 제공, 멀티태스킹, 타임 슬라이싱, 우선순위 기반 스케줄링 등의 기능을 통해 복잡한 애플리케이션과 실시간 작업을 효율적으로 관리
  • 단점: 추가적인 메모리와 처리 오버헤드가 발생, RTOS의 스케줄러와 서비스를 위해 시스템 리소스의 일부를 사용

Operating Systems

 

Drivers (드라이버)

- ADC(Analog-to-Digital Converter)

  • 아날로그 신호를 디지털 데이터로 변환하는 아날로그-디지털 컨버터를 제어. 
  • 센서 데이터(오디오, 온도 등등)를 디지털 값으로 읽기 위해 사용
  • ex) 온도센서 : 높은 온도를 감지하여  on/off 제어

- Clock 

  • 시스템의 시간을 추적하고 작업의 타이밍을 제어하는 클록 하드웨어를 관리(시스템의 클록 관련 기능을 제어)
  • 실시간 시스템에서 중요한 타이밍과 작업 스케줄링을 위해 사용.
  • 타임스탬프를 생성하거나 작업을 예약하는 데 사용

- COMMON 

  • 여러 하드웨어 구성 요소에 공통적으로 사용되는 기능을 제공
  • 여러 하드웨어 구성 요소에 걸쳐 공통적인 작업을 수행할 때 사용
  • 개발자는 이 드라이버를 통해 여러 드라이버 간에 코드 중복을 피하고, 공통 인터페이스를 통해 하드웨어 추상화 계층을 구축.

- CTimer

  • 타이밍 기능을 제공하는 카운트다운 타이머와 인터페이스.(내장된 타이머 기능을 제어.)
  • 일정 시간 후에 작업을 수행하거나 시간 간격을 측정, 지연을 생성하는 타이머 기반의 애플리케이션을 개발할 때 사용.

- DMA (Direct Memory Access)

  • CPU의 개입 없이 직접 메모리 간 데이터를 다른 하드웨어 사이에 데이터 전송 및 관리.
  • 대용량 데이터를 빠르게 이동해야 할 때, 예를 들어 오디오나 비디오 스트리밍에서 사용.
  • 이는 고성능이 필요하거나 CPU 부하를 최소화해야 하는 애플리케이션에서 중요.

- DMIC (Digital Microphone Interface Controller)

  • 시스템 내 디지털 마이크로폰과 인터페이스.( 디지털 마이크로폰을 제어)
  • 음성 인식 시스템이나 디지털 오디오 녹음 장치에서 사용.
  • 음성 인식이나 오디오 신호 처리 애플리케이션 개발 시 이 드라이버를 사용하여 디지털 마이크로폰에서 오디오 데이터를 취득.

- DMIC DMA

  • 디지털 마이크로폰을 통해 입력된 데이터를 메모리로 직접 전송하는 기능을 제어
  • 오디오 데이터의 고속 처리를 할 수 있으며, CPU의 부하를 줄임.

- DMIC HWVAD 

  • HWVAD : Hardware Voice Activity Detection ( 하드웨어 음성 활동 감지 )
  • 음성이나 오디오 신호의 존재를 감지하는 하드웨어 음성 활동 감지 기능 및 관리 
  • 이 기능은 배경 소음 중에서 음성을 감지하거나, 특정 명령어를 인식해야 하는 음성 인식 애플리케이션에 유용.
  • 예를 들어, 음성을 활성화하는 명령어를 기다리는 스마트 장치에서 사용.

- EEPROM (Electrically Erasable Programmable Read-Only Memory)

  • 데이터를 저장하는 EEPROM과 인터페이스.( 비휘발성 메모리인 EEPROM을 제어)
  • 설정이나 작은 데이터 조각을 전원이 꺼져도 유지해야 할 때 사용.
  • 개발자는 설정 값, 칼리브레이션 데이터(교정,보정데이터/초기화값) 또는 소량의 사용자 데이터를 저장할 때 이 드라이버를 사용.


- EMC (External Memory Controller)

  • 외부 메모리 인터페이스를 관리및 제어.
  • 추가 메모리가 필요한 대용량 데이터 처리 또는 고속 접근이 필요한 애플리케이션에서 사용
  • 개발자는 이 드라이버를 통해 추가 메모리 장치를 통합하고, 고속 데이터 액세스나 대용량 데이터 저장을 구현.


- FLASHIAP 

  • 애플리케이션이 실행 중인 동안 플래시 메모리 프로그래밍을 관리.
  • 펌웨어 업데이트 또는 실행 중인 애플리케이션에서 설정을 변경해야 할 때 사용. (In-Application Programming)
  • 예를 들어, 임베디드 장치가 작동 중일 때 새로운 기능을 추가하거나 버그를 수정하기 위해 펌웨어를 업데이트해야 하는 경우, 이 드라이버를 통해 장치를 리부팅하거나 중단하지 않고도 코드를 안전하게 업데이트 있음.

Drivers-1

- FLEXCOMM (Flexible Communication)

  • 유연한 커뮤니케이션 인터페이스를 제공하여 하나의 통합된 하드웨어 인터페이스를 통해 여러 종류의 통신 프로토콜을 지원.
  • 특히 한정된 핀 수를 가진 마이크로컨트롤러에서 유용하며, 개발자가 UART, SPI, I2C 등의 프로토콜을 동일한 물리적 라인을 공유하면서 사용.

- I2S (integrated Interchip Sound)

  • 디지털 오디오 신호의 전송을 위한 표준 인터페이스인 I2S(Inter-IC Sound) 프로토콜을 구현.
  • 오디오 코덱, 디지털 마이크로폰, 기타 오디오 장치와 통신할 때 사용
  • 개발자는 고해상도 오디오 스트리밍이나 녹음 기능을 구현하기 위해 이 드라이버를 사용.

- fmc (Flight Management Computer)

  • 플래시 메모리 컨트롤러 드라이버는 플래시 스토리지 장치의 관리.
  • 플래시 메모리의 읽기, 쓰기, 지우기 등의 작업을 제어하며, 데이터 저장 또는 펌웨어 저장 공간으로 사용되는 플래시 메모리를 효율적으로 관리를 위해서 필요.

- FMEAS(Frequency Measure) 

  • 주파수 측정 드라이버는 시스템 클록 또는 외부 신호의 주파수를 측정하는 데 사용.
  • 시스템의 타이밍을 정밀하게 조정하거나 주파수 의존적인 작업을 수행할 때 중요.
  • 개발자는 이 드라이버를 이용하여 시스템의 타이밍 분석, 성능 측정, 통신 프로토콜의 동기화 등을 수행함.

- FRO (Fixed-frequency Ring Oscillator)  calibration Lib: 

  • 고정 주파수 발진기의 보정을 위한 라이브러리는 온도 변화나 전압 변동에 따른 발진기의 주파수 변화를 보정
  • 시스템의 시간 관련 기능들이 정확하게 동작하도록 보장하는 데 필요.

- GINT(Grouped Interrupt)

  • 드라이버는 여러 외부 핀으로부터 발생하는 인터럽트를 그룹화하여 관리.
  • 이 개발자는 인터럽트 핸들링 로직을 효율적으로 구현할 수 있으며, 시스템의 인터럽트 관리를 간소화.

- GPIO General-Purpose Input/Output)

  • 마이크로컨트롤러의 핀을 통해 디지털 신호를 읽고 쓰기 위해 사용.
  • 예를 들어, 버튼이 눌렸는지 감지하거나 LED를 켜고 끄는 등의 작업에 활용.
  • 개발자는 이 드라이버를 사용하여 핀 모드(입력, 출력, 인터럽트 모드 등)를 설정하고, 핀 상태를 제어하는 코드를 작성함
  • GPIO 드라이버는 인터페이스가 간단하고, 다양한 하드웨어와의 상호작용에 있어 가장 기본이 되는 드라이버 중 하나.

- I2C ( (Inter-Integrated Circuit) )

  • 마이크로컨트롤러와 I2C를 지원하는 다른 디바이스들 간의 통신을 가능.
  • I2C 통신은 주로 저속 데이터 전송에 사용되며, 클록 라인(SCL)과 데이터 라인(SDA)의 두 가지 선만을 사용
  • 개발자는 이 드라이버를 통해 주소 설정, 데이터 읽기/쓰기, 버스 오류 처리 등을 수행.(센서/ OLED 디스플레이 등등)

- I2C FreeRTOS Driver

  • FreeRTOS 드라이버는 실시간 운영 체제 환경에서 I2C 통신을 위해 사용.
  • FreeRTOS는 멀티태스킹을 지원하므로, I2C 드라이버는 스레드 안전하고, 여러 태스크에서 동시에 I2C 디바이스에 접근할 때 발생할 수 있는 충돌을 관리.
  • 개발자는 이 드라이버를 사용하여 태스크 간의 통신을 조정하고, I2C 통신을 수행하는 동안 태스크가 다른 중요한 작업을 계속할 수 있음.

- IAP (In-Application Programming) 

  • 애플리케이션 실행 중에 내부 플래시 메모리에 프로그램을 쓰거나 수정함.
  • 펌웨어 업데이트를 애플리케이션 내부에서 직접 처리할 수 있게 하여, 디바이스가 새로운 펌웨어로 "자가 업데이트"를 할 수 있도록 함.
  • 개발자는 이 드라이버를 사용하여 안전한 펌웨어 업데이트 루틴을 구현하고, 장치의 다운타임을 최소화하면서 업데이트를 수행.

- INPUTMUX (Input Multiplexer)

  • 입력 멀티플렉서 드라이버로, 소프트웨어 개발자가 하드웨어에서 발생하는 다양한 입력 신호를 특정한 하드웨어 블록이나 처리 유닛으로 동적으로 라우팅함.
  • 개발자는 특정 핀에 여러 가지 다른 신호원을 할당할 수 있으며, 이를 통해 보다 유연한 하드웨어 디자인이 가능
  • 예를 들어, 개발자가 여러 개의 센서에서 오는 신호를 같은 ADC 채널로 라우팅 하고자 할 때 INPUTMUX 드라이버를 사용하여 이를 구현.

Drivers-2

- IOCON

  • 핀 컨트롤 드라이버로, 마이크로컨트롤러의 각각의 핀에 대한 다양한 설정을 구성.
  • 개발자는 이 드라이버를 사용하여 핀의 모드를 변경가능.
  • 예를 들어, 디지털 입력, 디지털 출력, 아날로그 입력, 풀업 저항 사용, 풀다운 저항 사용, 오픈 드레인 설정 등을 구성하고, 이러한 구성은 센서나 다른 주변 장치들이 특정한 전기적 요구사항을 가질 때 매우 중요.
  • 개발자는 해당 핀이 올바른 전기적 조건을 충족하도록 설정하여 효율적인 신호 전송과 정확한 데이터 수집을 보장함.

- LCDC

  • GUI(Graphical User Interface)를 갖는 임베디드 시스템에서 LCD 화면을 제어하기 위해 사용. 
  • 개발자는 이 드라이버를 통해 화면에 텍스트, 이미지 등을 표시하고, 사용자 인터페이스를 구현.

- CRC 

  • 데이터 무결성 검사에 사용
  • 데이터 전송이나 저장 전에 데이터 무결성 검증이 필요할 때 사용.
  • 네트워크 통신 또는 저장 매체에 데이터를 기록하기 전에 오류를 검출하기 위해 CRC 체크섬을 계산하는데 이 드라이버를 활용.

- ENET 

  • 네트워크 통신을 위해 Ethernet 인터페이스를 사용하는 장치에서 필수.
  • 개발자는 TCP/IP와 같은 네트워크 프로토콜을 사용하여, 네트워크 패킷의 송수신, 네트워크 설정 및 관리, 속도 조절 등의 기능을 소프트웨어적으로 구현.

- RTC(Real-Time Clock)

  • 실시간 시계 드라이버로, 현재 시간을 추적하고 유지하는 데 사용.
  • 시간 기반의 작업 스케줄링이 필요할 때 사용
  • 개발자는 RTC 드라이버를 사용하여 현재 시간 읽기, 알람 설정, 시간 업데이트 등의 기능을 구현.

- MCAN ( CAN(Controller Area Network) )

  • 주로 자동차와 같은 차량 내부 네트워크 또는 산업 자동화 시스템에서 통신을 위해 사용.
  • 개발자는 데이터 패킷의 송수신, 네트워크 오류 관리, 통신 속도 조절 등의 CAN 통신 관련 기능을 구현.

- MRT  (Multi-Rate Timer)

  • 다양한 속도로 작동할 수 있는 타이머 기능을 제어하는 드라이버.( 여러 타이밍 작업을 동시에 관리)
  • 타이머 기반의 여러 작업을 스케줄링할 때 유용하며, 정밀한 시간 지연, 시간 기반의 작업 스케줄링, 성능 측정 등 다양한 시간 관련 기능을 구현할 때 활용.
  • 개발자는 MRT 드라이버를 사용하여 다중 속도로 타이머를 설정하고, 특정 시간 간격으로 인터럽트를 발생시키거나, 작업을 스케줄링하는 데 사용.

- OTP  (One-Time Programmable )

  • 한 번만 프로그래밍할 수 있는 메모리 영역
  • 이 메모리는 주로 비밀번호, 고유 식별자, 제품 라이선스 키 등 변경되지 않아야 하는 정보를 저장
  • 일회용 프로그래밍 메모리(OTP)에 데이터를 저장할 때 사용됩니다. 일반적으로 펌웨어, 보안 키, 구성 데이터 등을 기기에 영구적으로 저장할 필요.

- PINT (Pin Interrupt)

  • GPIO (General-Purpose Input/Output) 핀에서 발생하는 인터럽트를 관리.
  • 특정 핀의 상태 변화(예: 높음에서 낮음으로)를 감지하고, 이에 대한 인터럽트를 처리함.
  • 개발자는 인터럽트 우선순위, 디바운싱(debouncing) 메커니즘, 인터럽트 서비스 루틴(ISR)의 설계 및 최적화에 대해 깊이 이해하고, 버튼 클릭, 센서 신호 등 외부 이벤트에 반응하는 응용 프로그램을 구현.

- Power Driver

  • 시스템의 전력 관리 기능을 제어.( 시스템의 에너지 효율성과 배터리 수명에 직접적인 영향)
  • 개발자는 절전 모드 설정, 전력 소비 모니터링, 전력 공급 관리 등의 기능을 구현.
  • 개발자는 다양한 전력 소비 모드(예: 액티브 모드, 슬립 모드, 딥 슬립 모드)와 이들 사이의 전환 메커니즘을 설계할 때, 시스템의 성능 요구사항과 전력 소비 최적화 사이의 균형을 맞춰함.

- Reset

  • 시스템의 안정성과 복구 기능을 강화하기 위해, 시스템 리셋 기능을 제어.
  • 소프트웨어, 하드웨어, 와치독 타이머 등 다양한 리셋 소스를 지원해야 됨.
  • 소프트웨어적으로 시스템을 재시작하거나 특정 상태로 초기화하는 기능을 구현할 때 사용.
  • 개발자는 이리셋 이벤트가 시스템에 미치는 영향을 정확히 이해하고, 리셋 후 시스템의 상태 복구 메커니즘을 설계해야 됨. 이는 시스템의 안정적인 작동을 보장하는 데 필수.

- RIT  (Repetitive Interrupt Timer )

  • 반복적인 인터럽트를 생성할 수 있는 타이머 기능을 제어( 정밀 타이밍과 반복적인 작업 수행을 위해 설계 사용)
  • 고정된 시간 간격으로 작업을 수행해야 할 때 유용하며, 예를 들어 주기적인 데이터 샘플링, 시간 기반의 작업 실행 등에 사용.
  • 개 잘 자는 타이머의 해상도, 정밀도, 그리고 오버헤드를 최소화하는 방법을 알아야 되며, 시스템의 다양한 타이밍 요구사항을 만족시키기 위해, 다중 타이머 인스턴스의 관리와 타이머 이벤트의 정밀한 스케줄링 기능을 제공하여 구현.

- RNG (Random Number Generator)

  • 하드웨어 기반의 랜덤 넘버 생성기를 제어.( 암호화와 보안 애플리케이션에서 중요한 역할/ 보안 강화 및 알고리즘의 무작위성을 보장 )
  • 암호화, 보안 통신, 시뮬레이션 등에서 요구되는 고품질의 무작위 수를 생성하는 데 필수.
  • 개발자는 랜덤 넘버 생성기의 알고리즘, 엔트로피 소스, 랜덤성 테스트 방법 등에 대해 깊은 지식을 가지고 있어야 하며, 고품질의 랜덤 수를 신속하게 생성할 수 있어야 하며, 보안 요구사항을 충족시키는 데 필요한 인증 및 검증 메커니즘을 포함하여 구현.

- SCT (State Configurable Timer )

  • 고도로 구성 가능한 타이머/카운터 기능을 제공.( 타이머의 동작을 세밀하게 제어)
  • 복잡한 타이밍 요구 사항, PWM (Pulse Width Modulation) 신호 생성, 이벤트 기반의 시퀀싱 등 다양한 응용 프로그램에서 사용됨.
  • 개발자는 타이머의 상태 기계, 이벤트 트리거 메커니즘, PWM 신호 생성 등에 대한 깊은 이해를 바탕으로 드라이버를 설계해야 되며, 유연성과 정밀도를 동시에 제공하여, 다양한 응용 프로그램의 요구사항을 충족시켜야 됨.

Drivers-3

 

 

- SDIF (Secure Digital Interface )

  • SD 카드와 같은 보안 디지털 저장 매체를 제어. ( SD 카드와 같은 보안 디지털 저장 장치와 통신하기 위한 인터페이스를 제공)
  • 데이터의 읽기 및 쓰기 연산, 카드 초기화, 에러 처리 등의 기능을 담당.
  • 종종 임베디드 시스템, 카메라, 모바일 기기 등에서 사용.
  • 개발자는 파일 시스템을 통한 데이터 저장 및 검색, SD 카드의 초기화 및 구성, 데이터 전송 속도 최적화 등의 작업을 구현.

- SHA (Secure Hash Algorithm)

  • 암호화 해시 함수인 SHA(Secure Hash Algorithm)를 구현한 드라이버( 암호화 해시 함수를 구현하는 하드웨어 모듈을 제어)
  • 데이터의 무결성을 검증하거나, 디지털 서명 과정에서 해시를 생성하는 기능을 소프트웨어에 통합할 수 있음.
  • 보안이 중요한 애플리케이션, 특히 블록체인 기술이나 안전한 통신이 필요한 경우에 사용.
  • 개발자는 SHA 드라이버를 통해 다양한 버전의 SHA 알고리즘(SHA-1, SHA-256 등)을 지원하고, 고속 처리와 보안을 위한 최적화를 수행해야 구현.

- SPI (Serial Peripheral Interface)

  • SPI 버스를 통한 장치 간 직렬 통신을 제어.( SPI 통신 프로토콜을 사용하는 하드웨어 장치들 사이의 데이터 전송을 관리)
  • 고속의 데이터 전송을 위한 인터페이스로, 센서, 메모리 칩, 디스플레이 모듈 등 다양한 주변 장치와 통신하는 데 사용.
  • 개발자는 SPI 드라이버를 통해  마스터/슬레이브 구성, 데이터 전송 속도, 클록 신호 관리 등을 설정하며,  드라이버를 통해 동시에 여러 SPI 장치들과의 통신을 관리하고, 통신 중 충돌을 방지하는 메커니즘을 개발하여 구현.

- SPIFI (Serial Peripheral Flash Interface )

  • 직렬 플래시 메모리와의 통신을 제어.(  SPI 플래시 메모리와의 인터페이스를 제공)
  • SPIFI는 SPI와 유사하지만, 주로 NOR 플래시 메모리에 최적화되어 있으며, 코드 저장 및 실행, 빠른 읽기/쓰기 연산을 지원하며, 특히 코드 저장소로서의 플래시 메모리에 접근할 때 사용.
  • 개발자는 이 드라이버를 통해 부트로더, 리소스 저장소 등을 구현.

-USART (Universal Synchronous/Asynchronous Receiver/Transmitter)

  • 직렬 통신을 위한 USART 하드웨어를 제어.
  • 동기 및 비동기 모드의 직렬 데이터 전송을 지원하며, 컴퓨터, 통신 장비, 네트워크 하드웨어 간의 데이터 교환에 사용.
  • 개발자는 데이터 전송 속도, 패리티 비트 설정, 인터럽트 기반 통신 등을 구현.

- UTICK (Micro Tick Timer )

  • 고해상도의 마이크로초 단위 타이머 기능을 제공. 
  • 짧은 시간 간격의 정밀한 타이밍이 요구되는 작업에 적합.
  • 예를 들어, 특정 작업을 매우 정밀한 주기로 반복 실행하거나, 특정 이벤트 후에 매우 짧은 지연을 필요로 할 때 사용됨.
  • 개발자는 UTICK Driver를 사용하여 고정된 시간 간격으로 인터럽트를 발생시키고, 이를 기반으로 타임 슬롯 관리, 작업 스케줄링, 정밀한 성능 측정 등을 구현.
  • 마이크로컨트롤러 기반 시스템에서 이러한 정밀 타이밍은 센서 데이터 수집, 통신 프로토콜 타이밍 제어, 애니메이션 또는 UI 갱신 등의 작업에 필수.

- WWDT (Windowed Watchdog Timer)

  • 윈도우드 와치독 타이머(Windowed Watchdog Timer)'의 기능을 제어.
  • 시스템이 정상적으로 작동 중인지를 감시하는 하드웨어 타이머로, 소프트웨어가 일정 시간 내에 정해진 작업(예: 타이머 리셋)을 수행하지 않으면 시스템 리셋을 발생시키는 기능.
  • 이는 시스템이 예기치 못한 상태에 빠졌을 때 자동으로 복구할 수 있도록 해줌.
  • WWDT는 일반적인 WDT(Watchdog Timer)와 다르게 '윈도'라는 개념을 가지고 있는데, 이는 타이머를 리셋할 수 있는 시간 범위를 정확히 지정하여, 너무 일찍 또는 너무 늦게 타이머를 리셋하는 경우를 감지할 수 있게 함.
  • 이를 통해 소프트웨어 개발자는 보다 안전한 시스템 감시 메커니즘을 구현하고, WWDT는 특히 임베디드 시스템이나 안전이 중요한 응용 분야에서 시스템의 신뢰성을 높이기 위해 사용.

 

마무리

Drivers에 대해서 간략하게 개발자의 입장에서 설명하였다.

다음 시간에는  CMSIS에 대해서 이여서 설명하겠다.

개발자라면 꼭 어떤 드라이버 인지 알고는 넘어가자.

반응형