NXP i.MX SoC Family/i.MX Linux Reference Manual

i.MX Linux Reference Manual - Introduction - Overview

까마귀75 2022. 6. 20. 13:47
728x90
반응형

1.1 Overview

i.MX 제품군 Linux BSP(Board Support Package)는 i.MX 애플리케이션 프로세서에서 Linux Operation System (OS)를 지원한다.

 

이 소프트웨어 패키지의 용도는 직접회로(IC : Integrated Circuits) i.MX 제품군과 그것과 관련된 플랫폼에서 Linux OS를 지원하는 것이다. 표준 open-source Linux Kerneli.MX 하드웨어에 인터페이스하는 데 필요한 소프트웨어를 제공한다. 목표는 i.MX를 사용하는 고객이 Linux OS를 사용하는 i.MX 디바이스 기반의 제품을 빠르게 구축할 수 있도록 하는 것이다.

 

BSP는 플랫폼이나 제품을 참조한 구현이 아니다. 여기에는 제품에 필요한 모든 제품별 드라이버, 하드웨어 독립 소프트웨어 스택, GUI (Graphic User Interface) 컴포넌트, JVM (Jave Virtual Machine), 애플리케이션이 포함되어 있지 않다. 이들 중 일부는 기본 커널의 일부로 original open-source에서 사용 가능하다.

 

BSP는 실리콘(silicon) 검증에 사용하기 위한 것이 아니다. 이것이 역할을 할 수 있지만, BSP 기능과 BSP에서 실행되는 테스트는 기존의 실리콘 검증 테스트 제품군을 대체하기에 충분한 커버리지가 없다.

 

1.1.1 Software Base

i.MX BSP는 공식 Linux Kernel 웹사이트(www.kernel.org)의 Linux Kernel 버전 5.4.70을 기반으로 한다. NXP에서 제공하는 기능으로 향상된다.

 

Linux에서 Yocto Project 환경의 메뉴 구성을 사용하여 구성을 변경하려면, 다음과 같이 bitbake를 사용한다 :

bitbake linux-imx -c menuconfig

 

1.1.2 Features

아래 테이블은 특정 플랫폼에 대해 BSP가 지원하는 기능을 설명한다.

Table 1. BSP Supported Features

Feature Description Chapter Source Applicable
Platform
Machine-Specific Layer
MSL MSL(Machine-Specific Layer)는 인터럽트, 타이머, 메모리 맵, GPIO/IOMUX, SPBA, SDMA를 지원한다.
  • Interrupts GIC : Linux Kernel에는 일반적인 Arm GIC 인터럽트 처리 코드가 포함되어 있다.
  • Timer (GPT) : GPT(General Purpose Timer)는 OS 틱 제공을 위해 프로그램된 대로 인터럽트를 생성하도록 설정한다. Linux OS는 타이밍 지연, 측정, 이벤트, 알람, 고해상도 타이머 기능을 통해 타이머 사용을 용이하게 한다. Linux OS는 OS-tick 타이머에 필요한 MSL timer API를 정의하고 커널 틱 구현 이상으로 노출하지 않는다.
  • GPIO/EDIO/IOMUX : MSL에서 GPIO, EDIO 컴포넌트는 GPIO, IOMUX, 외부 보드 I/O를 비롯한 다양한 드라이버와 시스템 구성/활용 사이의 추상화 레이어를 제공한다. IO 소프트웨어 모듈은 보드에 따라 다르며 MSL 레이어에 독립된 파일 세트로 존재한다. I/O 구성 변경은 GPIO 모듈에 집중되므로 다른 드라이버에서는 변경이 필요하지 않다. 
  • SPBA : SPBA(Shared Peripheral Bus Arbiter)는 공유되는 주변 디바이스에 액세스를 허용하기 위해 여러 마스터 사이에 중재 메커니즘을 제공한다. MSL에서 SPBA 구현은 공유되는 주변 디바이스의 소유권을 다른 마스터가 획득 또는 해제할 수 있도록 API를 정의한다.
Machine-Specific Layer (MSL) All
General Drivers
Thermal Driver Thermal 드라이버는 SoC를 보호하기 위해 특정 주파수에서 SoC의 온도를 모니터링한다. critical, hot, active의 세 가지 트립 포인트를 정의한다. Thermal Driver All
OProfile OProfile은 Linux 시스템용 system-wide 프로파일러로, 낮은 오버헤드로 실행중인 모든 코드를 프로파일링할 수 있다. OProfile All
Pulse Width Modulator PWM에는 16비트 카운터가 있으며 저장된 샘플 오디오 이미지에서 사운드를 생성하고 톤을 생성하도록 최적화되어 있다. Pulse-Width Modulator (PWM) All
Sensors 센서에는 accelerometer, ambient light, magnetometer 센서가 포함된다. Sensors All
Watchdog Watchdog Timer 모듈은 예기치 않은 중단이나 무한 루프 상황 또는 프로그램 오류로부터 탈출을 제공하여 시스템 오류에서 보호한다. Watchdog All
DMA Engine
SDMA API SDMA(Smart Direct Memory Access) API 드라이버는 SDMA 하드웨어를 컨트롤하고, MCU, DSP, 주변 디바이스 사이에 데이터를 전송하기 위해 다른 드라이버에 API를 제공한다. Smart Direct Memory Access(SDMA) API All
APBH-Bridge-DMA AHB-to-APBH와 AHB-to-APBX DMA는 모두 구성가능한 DMA descript chain을 지원한다. AHB-to-APBH Bridge with DMA(APBH-Bridge-DMA) All
Power Management Drivers
Low-level Power Management 저수준의 전원 관리 드라이버는 전원 요구 사항과 전원 절약을 충족하도록 하드웨어별로 작업을 구현한다. 드라이버 구현은 플랫폼마다 다른 경우가 많다. DPM 레이어에서 사용된다. Low-level Power Management(PM) Driver All
Dynamic Bus Frequency 버스 주파수 드라이버는 전력 소비를 개선하기 위해 다양한 시스템 주파수를 동적으로 관리한다. Dynamic Bus Frequency Driver i.MX 6, i.MX 7
CPU Freq CPU 주파수 조정으로 CPU의 clock 속도를 변경할 수 있다. CPUFreq All
PMIC PF Regulator PF 레귤레이터 드라이버는 전원 공급 레귤레이터의 저수준 컨트롤, 전압 레벨 선택, 레귤레이터 활성화/비활성화를 제공한다. PF_Regulator All
Anatop Regulator Anatop 레귤레이터 드라이버는  전원 공급 레귤레이터의 저수준 컨트롤을 제공한다. Anatop Regulator i.MX 6, i.MX 7
Connectivity Drivers
ENET 1588 Stack IEEE 표준 1588에 따라 Precision Time Protocol(PTP) 구현. Fast Ethernet Controller(FEC) Driver All
Fast Ethernet Controller ENET 드라이버는 IEEE 802.3/Ethernet CSMA/CD 미디어 액세스 제어와 채널 인터페이스 기능 전체를 수행한다. Fast Ethernet Controller(FEC) Driver All
FlexCAN FlexCAN 드라이버는 CAN 메세지를 송수신하는 인터페이스를 제공한다. FlexCAN Driver i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite, i.MX 6Solo, i.MX 6UltraLite, i.MX 6SoloX
MediaLB MediaLB는 MOST Network 데이터에 애플리케이션이 액세스하거나 다른 애플리케이션이 통신할 수 있도록 하는 on-PCB나 inter-chip 통신 버스이다. MediaLB i.MX 6SoloX, i.MX 6Quad, i.MX 6Dual
PCIe PCI Express 하드웨어 모듈은 Root Complex나 PCIe Endpoint로 작동하도록 구성할 수 있다. PCIe All
Video
Capture 카메라와 캡쳐 인터페이스를 위한 카메라 개요 Capture Overview All
Display 디스플레이 개요 Display Overview All
VPU VPU(Video Processing Unit)은 다양한 비디오 포맷의 디코딩/인코딩을 수행할 수 있는 multistandard 비디오 인코더/디코더이다. Video Processing Unit(VPU) Driver i.MX 6QuadPlus/Quad/Dual/Solo, i.MX 8
JPEGENC/JPEGDEC JPEG-E-X와 JPEF-D-X core 는 독립 실행형 8비트 12비트 고성능 JPEG 인코더이고 각각 스틸 이미지와 비디오 압축/압축 해제 애플리케이션용 디코더이다. JPEG Encoder and Decoder i.MX 8QuadXPlus, 8QuadMax
Audio Drivers
ALSA Sound ALSA(Advanced Linux Sound Architecture)는 사운드 드라이버이다. 이는 오디오 재생 및 녹음 기능의 수행 방법을 ALSA와 OSS 호환 애플리케이션에 제공한다. ALSA Sound Driver All
ASRC ASRC(Asynchronous Sample Rate Converter) 드라이버는 비동기 샘플레이트 변환 모듈에 액세스하는 인터페이스를 제공한다. Asynchronous Sample Rate Converter(ASRC) All
S/PDIF S/PDIF 드라이버는 Linux ALSA 서브시스템에서 설계되었다. Tx용 재생 디바이스 하나와 Rx용 캡쳐 디바이스 하나를 구현한다. The Sony/Philips Digital Interface(S/PDIF) Driver All
Storage MTD Drivers
SPI NOR MTD SPI NOR MTD 드라이버는 SPI 인터페이스를 사용하여 Atmel data Flash를 지원한다, SPI NOR Flash Memory Technology Device(MTD) Driver All
NAND MTD NAND MTD 드라이버는 통합 NAND 컨트롤러와 인터페이스한다. 이는 UBIFS, CRAMFS, JFFS2UBI, UBIFSCRAMFS, JFFS2 파일 시스템을 지원한다. NAND GPMI Flash Driver i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite, i.MX 6Solo, i.MX 6UltraLite, i.MX 7Dual
SATA SATA AHCI 드라이버는 Linux Kernel의 블록 디바이스 인프라의 LIBATA 레이어을 기반으로 한다. SATA Driver i.MX 6QuadPlus, i.MX 6Quad, i.MX 6Dual, i.MX 8QuadMax, i.MX 8QuadXPlus
Bus Drivers
I2C 저전력 I2C 버스 드라이버는 I2C 버스와 인터페이스하여 I2C 버스를 통해 데이터를 전송한다. Inter-IC (I2C) Driver All
eCSPI 저수준 ECSPI(Enhanced Configurable Serial Peripheral Interface) 드라이버는 두 ECSPI 모듈에 대한 사용자 지정 커널 영역 API 인터페이스를 제공한다. Enhanced Configurable Serial Peripheral Interface (ECSPI) Driver All
MMC/SD/SDIO/uSDHC MMC/SD/SDIO 호스트 드라이버는 eSDHC에 대한 표준 Linux 드라이버 인터페이스를 구현한다. MMC/SD/SDIO Host Driver All
Connectivity Drivers
UART UART(Universal Asynchronous Receiver/Transmitter) 드라이버는 모든 UART 포트로 시리얼 드라이버 API를 인터페이스한다. Universal Asynchronous Receiver/Transmitter (UART) Driver All
USB USB 드라이버는 ARC USB-OTG 컨트롤러와 인터페이스한다. CHIPIDEA USB All

 

728x90
반응형