SDK, Configure the project 설정하는 옵션에 대해서 알아보자.(Middleware)
Middleware
- Middleware 은 NXP 하드웨어와 AWS IoT 서비스 간의 중간다리 역할을 합니다.
장치 데이터의 수집, 변환, 전송을 담당하고, 특히 다양한 프로토콜과 데이터 포맷을 지원하며, 장치와 클라우드 간의 원활한 통신을 가능하게 해줍니다. 미들웨어는 장치 관리, 보안, 데이터 처리 로직을 구현하여 IoT 솔루션의 복잡성을 추상화합니다.
AWS IOT
- backoffalgorithm
- 네트워크 요청이 실패했을 때 다시 시도하기 전에 대기하는 시간을 동적으로 조정하는 알고리즘.
- 네트워크 요청 실패시 즉시 재시도하는 대신 점진적 또는 지수적으로 대기 시간을 늘리는 데 사용.
- 네트워크 혼잡이나 일시적인 연결 문제가 해결될 때까지 부하를 분산시킴.
- corejson
- JSON 형식의 데이터를 파싱하고 생성하는 기능을 제공.
- IoT 디바이스는 종종 JSON을 사용하여 클라우드 서비스와 데이터를 교환하므로, 이 라이브러리는 데이터 처리 및 통신에 필수적.
- coremqtt / coremqtt-agent
- MQTT 프로토콜을 사용하여 메시지를 게시하고 구독하는 기능을 제공.
- MQTT는 IoT에서 널리 사용되는 경량 메시징 프로토콜로, 네트워크 대역폭이 제한적인 환경에서도 효율적인 통신을 가능하게 함.
- corepkcs11
- 암호화와 관련된 작업을 위한 API를 제공.
- PKCS#11은 하드웨어 보안 모듈(HSM)과 같은 암호화 토큰에 접근하는 표준 인터페이스.
- corepkcs11 mbedtls / corepkcs11 mbedtls_utils
- 이 라이브러리들은 mbedTLS 라이브러리와 함께 사용되어 PKCS#11 표준을 구현.
- mbedTLS는 임베디드 시스템을 위한 경량 SSL/TLS 라이브러리.
- device_shadow
- 디바이스 쉐도우 서비스와의 통신을 관리.
- 디바이스 쉐도우는 디바이스의 최신 상태 정보를 유지하고, 디바이스가 오프라인일 때도 상태 변경을 요청할 수 있는 AWS IoT의 기능.
- logging
- 디버깅 및 운영 모니터링을 위한 로깅 기능을 제공.
- 이 라이브러리는 시스템의 다양한 포인트에서 발생하는 이벤트를 기록하는 데 사용.
- mqtt_agent
- MQTT 메시지를 관리하는 더 고급 기능을 제공.
- 더 복잡한 메시징 시나리오를 위한 추상화 및 관리 기능을 추가.
- transport_mbedtls / transport_mbedtls_wifi_serial
- 이 라이브러리들은 mbedTLS를 사용하여 네트워크 트랜스포트 계층을 구현.
- 디바이스가 인터넷과 안전하게 통신할 수 있게 해주며, WiFi 또는 시리얼 연결을 통한 데이터 전송을 지원.
- OASIS PKCS #11 / pkcs11
- 암호화 토큰에 대한 표준 인터페이스를 제공.
- 이 인터페이스를 사용하여, 소프트웨어는 키 생성, 암호화, 디지털 서명과 같은 암호화 작업을 하드웨어 보안 모듈(HSM)이나 스마트카드 같은 토큰에 위임할 수 있음.
- lhttp / lhttp
- 'lhttp'는 경량 HTTP 클라이언트 라이브러리.
- IoT 디바이스가 웹 서버와의 HTTP 통신을 할 때 사용.
File System
- fatfs, mmc, ram, sd, usb
- fatfs: FAT 파일 시스템의 핵심 구현체.
- mmc: 멀티미디어 카드(MMC) 형식의 메모리 카드를 위한 파일 시스템 드라이버.
- ram: 램디스크 또는 RAM에 파일 시스템을 구현하기 위한 드라이버.
- sd: SD(Secure Digital) 카드에 파일 시스템을 구현하기 위한 드라이버.
- usb: USB 스토리지 장치에 대한 파일 시스템 지원을 제공.
FreeMaster
- FreeMASTER
- NXP Semiconductors가 제공하는 실시간 디버깅과 데이터 시각화 도구
- 주로 NXP 마이크로컨트롤러에서 실행되는 애플리케이션을 모니터링하고 조정하는 데 사용.
Graphics
- Graphics
- Embedded Wizard는 임베디드 시스템을 위한 그래픽 사용자 인터페이스(GUI) 개발 툴.
- 이를 사용하여 터치스크린 인터페이스와 같은 고급 GUI를 만들 수 있음.
- emWin graphics library
- emWin은 Segger에서 제공하는 임베디드 장치용 그래픽 라이브러리
- 다양한 화면 크기와 색상 깊이를 가진 장치에서 사용자 인터페이스를 구현하기 위한 컴포넌트와 도구를 제공합니다.
- lvgl graphics library
- LittlevGL(lvgl)은 오픈소스의 경량 그래픽 라이브러리,
- 특히 메모리와 CPU 자원이 제한된 임베디드 시스템을 위해 설계됨.
Memories
- MMC
- MMC는 멀티미디어 카드(MultiMediaCard)를 말함.
- MMC 메모리 카드에 접근하고 제어하는 데 사용되는 드라이버와 라이브러리를 포함.
- SD
- SD(Secure Digital) 카드와의 인터페이스를 위한 드라이버를 포함.
- SDIO
- SDIO(Secure Digital Input Output)는 SD 카드 슬롯을 통해 다양한 입출력 기능을 제공하는 표준.
- WiFi, Bluetooth 모듈 같은 주변기기에 사용.
- sdmmc_host_sdif / sdmmc_host_sdif_freertos, sdmmc_host_sdif_interrupt/ sdmmc_host_sdif_polling
- SD/MMC 카드와의 통신을 위한 호스트 인터페이스(즉 SD Interface(SDIF) 드라이버)
- 각 각의 FreeRTOS, interrupt, polling 기반 사용 가능
- sdmmc_osa_bm/ sdmmc_osa_freertos
- FreeRTOS 운영 체제 or Bare Metal(운영 체제 없이) 환경에서 사용할 수 있는 SD/MMC 추상화 계층을 제공
Network
-lwIP(Lightweight IP)
- 스택의 일부로, 네트워크 프로토콜을 구현하는 데 필요한 기능들을 담고 있음.
- lwIP는 제한된 자원을 가진 임베디드 시스템을 위해 설계된 TCP/IP 스택
-lwIP_HTTPD
- lwIP에서 HTTP 서버를 구현하기 위한 코드를 포함.
- 이 코드를 사용하면 임베디드 시스템에서 HTTP 프로토콜을 사용하여 웹 페이지를 제공하거나, RESTful API를 통해 서비스를 제공
-lwIP_HTTPD_support
- HTTPD 서버의 추가 기능을 지원하는 모듈로, 더 많은 웹 서버 기능을 구현하고자 할 때 확장성을 제공.
- 예를 들어, 동적 웹 페이지 생성, 고급 인증 메커니즘, 다양한 컨텐츠 타입 지원 등의 기능을 추가할 수 있음.
-lwIP_HTTPS_srv
- HTTPS는 HTTP에 SSL/TLS 보안 프로토콜을 추가한 것.
- 이 폴더는 임베디드 시스템에서 보안 웹 서비스를 구현하기 위한 코드를 담고 있으며, 암호화된 데이터 전송을 지원합니다.
-lwIP_HTTP_srv
- HTTP 서버의 기본 기능을 제공하는 모듈.
- 이 모듈을 사용하여 간단한 웹 인터페이스나 컨트롤 패널을 구현.
-lwIP_IPERF
- IPERF는 네트워크의 성능을 테스트하는 도구로, 대역폭, 지연시간, 데이터 손실률 등을 측정할 수 있음.
- 임베디드 시스템이 네트워크에 연결될 때 이러한 성능 지표를 확인하고 문제를 진단하는 데 유용함.
-lwIP_MDNS
- 멀티캐스트 DNS는 네트워크 상에서 장치를 자동으로 발견하고 이름을 할당하는 프로토콜.
- 이 모듈은 장치가 네트워크에 자동으로 참여하고, 사용자가 IP 주소를 몰라도 장치에 접근.
-lwIP_MQTT
- MQTT는 경량 메시징 프로토콜로, IoT 장치가 메시지 브로커와 통신하는 데 사용.
- 코드를 이용하여, 장치가 브로커에 메시지를 게시하거나 특정 토픽을 구독하여 메시지를 받을수 있음.
-lwIP_SNTP
- SNTP는 네트워크 시간 프로토콜의 간단한 형태로, 장치의 시계를 인터넷 시간 서버와 동기화.
- 정확한 타임스탬프는 데이터 로깅이나 시간 기반의 작업을 수행할 때 중요.
-lwIP_ping
- 네트워크 상의 호스트가 살아 있는지 (reachability) 확인하고, 그들 사이의 네트워크 지연(latency)을 측정하기 위한 도구.
- 네트워크의 문제를 진단하는 기본적인 수단으로 사용.
-lwIP_tcpecho / lwIP_tcpecho_raw
- TCP 에코 서버는 받은 데이터를 보낸 클라이언트에게 그대로 반환.
- 'raw' 버전은 lwIP의 낮은 레벨 API를 사용하여 구현되며, 일반 버전보다 더 직접적인 네트워크 제어를 가능.
-lwIP_udpecho
- UDP 에코 서버는 UDP를 통해 데이터그램을 받고, 그 데이터그램을 송신한 곳으로 다시 보내는 기능을 제공.
- UDP 네트워크의 테스트와 디버깅에 유용.
- Enet ethernet interface
- 이이더넷 기반의 네트워크 통신을 위한 인터페이스 드라이버가 포함
- 물리적 이더넷 하드웨어와 소프트웨어 스택 간의 통신을 구현.
- lwIP
- lwIP 네트워킹 스택의 핵심 코드.
- lwIP는 임베디드 시스템에서 사용하기 위해 설계된 경량의 TCP/IP 프로토콜 스택.
- lwIP_usb_ethernetif
- USB를 통한 이더넷 인터페이스 지원을 위한 코드.
- USB 네트워크 어댑터를 통한 연결을 lwIP 스택과 통합.
Security
- mbedtls
- mbedTLS 라이브러리의 코드를 포함.
- mbedTLS는 임베디드 시스템을 위한 경량의 SSL/TLS 라이브러리로, 보안 네트워크 통신을 위해 사용.
- mbedtls_ksdk
- mbedTLS 라이브러리를 NXP의 Kinetis Software Development Kit(KSDK)와 통합하기 위한 코드.
- Kinetis 마이크로컨트롤러에서도 TLS 기능을 사용.
TinyCBOR
-tinycbor
- CBOR(Concise Binary Object Representation) 데이터 형식을 인코딩하고 디코딩하기 위한 코드.
- 임베디드 시스템에서 JSON과 같은 텍스트 기반 형식보다 더 효율적인 바이너리 형식을 다루기 위해 사용.
USB
- USB Device Audio
- USB 오디오 디바이스를 위한 드라이버 코드. 스피커, 마이크, 또는 음악 인터페이스와 같은 오디오 장치에 사용
-USB Device CCID
- 카드 리더기와 같은 USB Chip/Smart Card Interface Devices(CCID)를 위한 드라이버 코드.
-USB Device CDC
- Communication Device Class(CDC)를 위한 코드로, USB를 통한 네트워크 카드나 시리얼 통신과 같은 통신 장치에 사용.
USB Device CDC RNDIS
- Remote Network Driver Interface Specification(RNDIS)는 USB 네트워크 장치를 위한 Microsoft 프로토콜로, 주로 USB를 통한 이더넷 장치에 사용.
USB Device Common Controller
- 여러 USB 디바이스 컨트롤러와 공통적으로 사용되는 기능들을 위한 드라이버 코드.
USB Device Common Header
- 다양한 USB 디바이스 드라이버 모듈 간의 공통 헤더 및 정의를 담고 있는 파일들.
-USB Device DFU
- Device Firmware Upgrade(DFU) 클래스를 위한 드라이버 코드로, 디바이스의 펌웨어를 USB를 통해 업그레이드하기 위해 사용.
-USB Device HID
- Human Interface Device(HID) 클래스를 위한 코드로, 마우스나 키보드와 같은 입력 장치에 사용.
-USB Device IP3511FS Controller Driver(FS)
- Full-Speed(FS) USB 컨트롤러 IP3511을 위한 드라이버 코드.
-USB Device IP3511HS Controller Driver(HS)
- High-Speed(HS) USB 컨트롤러 IP3511을 위한 드라이버 코드.
-USB Device MSD
- Mass Storage Device(MSD) 클래스를 위한 드라이버 코드로, USB 스토리지 디바이스, 예를 들어 플래시 드라이브 또는 외장 하드 드라이브에 사용.
-USB Device PHDC
- Personal Healthcare Device Class(PHDC)를 위한 코드로, 의료 기기와 같은 헬스케어 장치에서 사용.
-USB Device Printer
- USB 프린터 장치를 위한 드라이버 코드.
* 위의 과 비슷하며, USB 디바이스를 호스트할 수 있도록 지원을 하는 역할함. 해당 장치의 통신 및 데이터 전송 프로토콜을 관리.
'전기전자 찌릿 > MCU' 카테고리의 다른 글
[MCU] MCUXpresso IDE, SDK, Configure the project - Components(LPC54605)설명-3 (0) | 2024.03.05 |
---|---|
[MCU] MCUXpresso IDE, SDK, Configure the project - Components(LPC54605)설명-2 (0) | 2024.03.03 |
[MCU] MCUXpresso IDE, SDK, Configure the project - Components(LPC54605)설명-1 (1) | 2024.02.12 |
[MCU] MCUXpresso IDE에 SDK 설치하는 법 (0) | 2024.02.04 |
[ MCU ] NXP, MCUXpresso IDE, SDK 다운로드하는 법 (0) | 2024.01.28 |