Raspberry Pi 3을 사용한 신속한 개발(희소 Raspberry Pi Zero와 비교)

Digi-Key 북미 편집자 제공

Raspberry Pi 기판은 모든 버전이 전문 개발자와 아마추어 개발자 모두에게 아주 유익한 도구로 사용되었습니다. Raspberry Pi Zero 같은 경우는 많은 관심을 얻기는 했으나 제품을 구하기가 어려웠습니다. 다행히도 설계자는 Pi 제품군 안에서 응용 제품 요구 사항을 충족하는 뛰어난 기능을 제공하는 여러 다양한 기판을 사용할 수 있습니다.

쿼드 코어 프로세서를 장착한 Raspberry Pi 3은 단일 코어 Pi Zero보다 두 배 더 많은 메모리를 제공합니다. 작은 설계 실장 면적을 원하지만, Pi Zero의 성능에 실망한 개발자라면, Raspberry Pi Compute Module 3(CM3)에서 제공하는, Pi 3의 고성능과 Pi Zero에서 경험했던 신용 카드 크기의 실장 면적, 이 두 가지 기능에 만족할 것입니다. 광범위한 애드온 하드웨어 기판과 쉽게 구할 수 있는 소프트웨어를 활용하면, 개발자는 Pi 3과 CM3을 가지고 다양한 응용 제품 요구 사항을 충족할 수 있는 충분한 준비를 갖추게 됩니다.

Raspberry Pi 구동 시작하기

Raspberry Pi 시스템은 공급업체, 제3자 개발업체, 사용자 자신이 점점 더 풍부한 소프트웨어 및 하드웨어 생태계를 활용하고 기여할 수 있도록 하는 강력한 오픈 소스 기반을 제공하고 있습니다. 처음에 Raspberry Pi 재단이 컴퓨팅 교육을 위한 저비용 플랫폼으로 개발한 Pi 하드웨어는 신속한 시제품 제작에 적합하고 또한 점점 내장형 컴퓨팅 플랫폼의 형태로 발전하며 저비용의 강력한 플랫폼으로 진화해 왔습니다.

Pi 소프트웨어는 비슷한 수준의 성능과 접근성을 제공합니다. Pi 기판은 Raspbian을 실행합니다. Raspbian은 Raspberry Pi 기판용으로 최적화된 GNU/Linux 운영 체제(OS)의 한 버전입니다. 개발자는 Raspbian 설치 프로그램인 눕스(NOOBS)가 포함된 SD 카드를 Pi 기판의 SD 인터페이스에 삽입하고 단 몇 초 안에 익숙한 Linux 환경에서 시스템을 가동할 수 있습니다.

활동이 왕성한 Raspberry Pi 커뮤니티 덕분에, 특정 요구 사항을 가진 개발자는 여러 OS 중에서 데스크톱 Ubuntu, Ubuntu Core, Windows 10 IoT Core, Linux 기반 오픈 소스 미디어 센터(Open Source Media Center, OSMC) 및 RISC OS 등의 대체 OS를 선택할 수 있습니다. 이러한 배포판의 경우 개발자는 SD 카드에 다운로드한 이미지로 시스템을 로드하기만 하면 됩니다. 마지막으로, 소프트웨어 엔지니어는 다양한 프로그래밍 언어로 개발을 지원하는 풍부한 소프트웨어 라이브러리 세트를 활용할 수 있습니다.

Pi 슬라이스

하드웨어 레벨에서 Pi 하드웨어는 성능, 크기, 기능 면에서 몇 가지 주목할 만한 차이점을 보여주는 세 가지 주요 갈래로 발전했습니다(표 1). 최근에 채택된 작은 크기로 유명한 Pi Zero는 입문 단계의 기판으로 사용되며 저비용과 더 작은 실장 면적을 실현하기 위해 일부 기능적 요소를 포기했습니다. 대조적으로, Pi 3 및 내장형 버전 CM3은 고성능 쿼드 코어 프로세서와 대용량 메모리를 갖추고 있어 내장형 응용 제품에 필요한 견고한 하드웨어 플랫폼을 제공합니다. 게다가 CM3은 성능이나 기능을 그대로 유지하면서 Pi Zero와 거의 동일한 실장 면적을 제공합니다.

Pi 프로세서 메모리 크기 IO
Pi 3 BCM2837(1.2 GHz 64비트 쿼드 코어 ARM Cortex-A53, 이중 코어 VideoCore IV GPU 포함)

1GB RAM

NVM: 마이크로 SD 카드 슬롯

85mm x 56mm

Pi 40핀 헤더

40 GPIO

802.11n Wi-Fi

Bluetooth 4.1

이더넷

USB

HDMI

AV 포트

카메라 인터페이스(CSI)

디스플레이 인터페이스(DSI)

Pi CM3 Pi 3과 동일

1GB RAM

NVM: 4GB eMMC 플래시 온 보드

67.6mm x 31mm

200핀 SODIMM

48 GPIO

2x I2C

2x SPI

2x UART

2x SD/SDIO

HDMI

USB

DPI, SMI, CSI, DSI

Pi Zero BCM2835(1GHz 단일 코어 ARM1176)

512MB RAM

NVM: 마이크로 SD 카드 슬롯

65mm x 30mm

Pi 40핀 스루홀

HDMI

USB

HAT 호환 헤더

복합 비디오 및 리셋 헤더

CSI 카메라 커넥터

표 1: Raspberry Pi 3, Compute Module 3(CM3), Pi Zero 사양 비교(출처: Digi-Key Electronics, Raspberry Pi 재단의 데이터에서 편집)

표준 하드웨어 인터페이스는 Raspberry Pi와 같은 플랫폼의 성공에 중요한 요소입니다. Pi 3 및 Pi Zero를 포함한 최근의 Pi 기판은 동일한 40핀 인터페이스를 제공하며 그중 28개가 GPIO 핀으로 제공되고 다른 일부는 I2C, SPI 및 UART 연결(그림 1)을 위해 이중으로 제공됩니다. GPIO 핀과 함께 이 Pi 표준 인터페이스는 3.3V, 5V, 접지, EEPROM ID와 같은 다른 라인을 제공합니다. 이렇게 공동으로 적용된 핀 배열 덕분에 Pi 사용자는 이 표준 인터페이스에 맞추어 제품을 개발하고 있는 제3자 공급업체의 광범위한 애드온 기판 세트를 구매할 수 있습니다.

Pi 3 및 Pi Zero를 비롯한 Pi 기판의 구성도

그림 1 : Pi 3 및 Pi Zero를 포함한 Pi 기판에 공통 적용된 40핀 인터페이스는 기판 호스트 프로세서와 관련 부품에서 GPIO 및 다른 라인을 가져옵니다. (이미지 출처: Raspberry Pi 재단)

그러나 Pi Zero 사용자의 경우 이 40핀 인터페이스가 PCB 상에 도금된 스루홀 형태로 제공되므로 사용자는 스루홀 커넥터 헤더에 압착 또는 납땜을 수행해야 합니다. Pi 3의 경우, Pi Zero에서 지원하지 않는 Wi-Fi 및 이더넷 같은 용도의 커넥터와 마찬가지로 커넥터 헤더 자체가 표준이며(그림 2), 이는 표에 설명되어 있습니다.

Pi Zero 및 Pi 3 기판의 이미지

그림 2 : Pi 표준 40핀 인터페이스를 제공하는 경우, Pi Zero (a)는 스루홀 연결만 제공하지만 Pi 3 (b)는 HAT(상단에 부착된 하드웨어, Hardware Attached on Top)라는 애드온 기판을 수용할 수 있는 40핀 커넥터를 포함하고 있습니다. (이미지 출처: Raspberry Pi 재단)

애드온 하드웨어

Pi 인터페이스는 전력, 접지, GPIO를 제공하기 때문에 개발자는 개별 회로를 Pi 3 GPIO 인터페이스 핀에 직접 연결할 수 있습니다. 그러나 처음부터 회로를 배선하는 대신 Pi 플랫폼은 Pi 3 시스템의 기능을 확장하는 더 효과적인 방법을 제공합니다. 여기서 Pi 3에 있는 40핀 헤더를 사용하여 HAT(Hardware Attached on Top, 상단 부착형 하드웨어) 형식으로 구성된 애드온 기판과 연결하는 표준 인터페이스를 제공합니다. 이 간단한 전기/기계적 인터페이스를 이용하여 개발자는 개별 응용 제품에 특화된 기능을 기본 Pi 3 기판에 신속하게 장착함으로써 그 성능을 향상시킬 수 있습니다. 개발자는 Pi 호환 애드온 HAT를 40핀 커넥터에 눌러 끼워 넣기만 하면 되고 심지어 이러한 단일 인터페이스를 모두 공유하는 애드온 기판의 스택을 만들 수도 있습니다.

개발자는 상당한 양의 애드온 기판 풀을 이용할 수 있습니다. 예를 들어, Pi Sense HAT에는 방향 감지 또는 환경 감지 응용 분야에 필요한 모든 센서 세트가 포함되어 있습니다. 추가적으로, 사용자 피드백과 상호 작용을 위한 LED 매트릭스 및 5 버튼 조이스틱도 제공됩니다(그림 3).

Pi Sense HAT 이미지

그림 3 : 개발자는 이러한 Pi Sense HAT와 같은 HAT를 단순히 연결함으로써 Pi 기판에 기능을 추가하며, 이를 통해 LED 매트릭스나 5 버튼 조이스틱뿐만 아니라 사용자 상호 작용을 위한 다중 센서를 제공하게 됩니다. (이미지 출처: Raspberry Pi 재단)

Sense HAT는 그 자체로 정교한 서브 시스템입니다. 기본으로 장착된 Microchip Technology의 8bit ATtiny MCU(ATTINY88)와 더불어, 이 애드온 기판은 STMicroelectronics의 LSM9DS1 관성 측정장치(IMU), STMicroelectronics의 HTS221 습도/온도 센서, STMicroelectronics의 LPS25HBTR 압력 센서를 포함하고 있습니다.

간단한 전개

다른 Pi 호환 애드온 기판과 마찬가지로 개발자는 Pi 3의 40핀 헤더에 HAT 기판을 쉽게 눌러 끼워 Sense HAT를 Pi 3 시스템에 연결합니다. 소프트웨어 인터페이스는 정말 간단합니다. 공식적으로 지원되는 Python sense-hat 라이브러리는 저레벨 하드웨어 상호 작용을 단순하고 직관적인 호출 뒤로 숨깁니다(목록 1).

from sense_hat import SenseHat

 

sense = SenseHat()

 

temp = sense.get_temperature()

print("Temperature: %s C" % temp)

 

humidity = sense.get_humidity()

print("Humidity: %s %%rH" % humidity)

 

# get_orientation_degrees returns a Python dictionary

# with keys pitch, roll, and yaw

orientation = sense.get_orientation_degrees()

print("p: {pitch}, r: {roll}, y: {yaw}".format(**orientation))

목록 1: Raspberry Pi Sense HAT 라이브러리를 사용하면 소프트웨어 개발자는 몇 가지 직관적인 호출을 사용하여 Sense HAT 하드웨어로부터 데이터를 수집할 수 있습니다. (코드 출처: Raspberry Pi 재단)

Pi Sense HAT 외에도 가장 일반적인 응용 제품 요구 사항을 해결하는 타사 HAT를 찾을 수 있습니다. 예를 들어, Seeed Technology114990831은 선택적으로 8개의 단일 종단 또는 4개의 차동 입력 채널과 함께 2채널 16비트 디지털 아날로그 컨버터(DAC) 및 24비트 아날로그 디지털 컨버터(ADC)를 제공합니다. 개발자는 여러 다른 제품 중에서도 Seeed의 GPS부터 DFRobot의 초음파 거리 측정 센서, 그리고 Adafruit의 스테퍼 모터 등 다양한 추가 애드온 제품을 찾을 수 있습니다.

기존의 애드온 기판으로는 충족할 수 없는 요구 사항을 가진 개발자를 위해 Seeed Technology는 P-MOS, N-MOS, NPN 및 PNP 트랜지스터를 비롯한 몇 가지 내장 부속품이 포함된 브레이크아웃 기판 HAT를 제공합니다.

HAT를 사용할 경우 개발자는 Raspberry Pi 재단, 공급업체 및 기타 Pi 커뮤니티 회원이 제공하는 여러 가지 소프트웨어 도구를 활용할 수 있습니다. 예를 들어, Raspberry Pi raspi-gpio 도구를 사용하여 개발자는 GPIO의 상태를 보고 동작을 수정할 수 있습니다. 프로그래머는 이 도구의 오픈 소스 C 코드를 자체 GPIO 제어 소프트웨어 루틴을 작성하기 위한 모델로 사용할 수도 있습니다.

개발자는 또한 Python과 같은 고급 언어용 GPIO 라이브러리를 찾을 수도 있습니다. RPi.GPIO Python 모듈을 사용하면 개발자는 GPIO 핀 값을 읽기 위해 GPIO.input(channel)과 같은 호출이나 특정한 GPIO 핀을 특정한 상태에 지정하기 위해 GPIO.output(channel, state)과 같은 호출을 사용하여 핀 레벨에서 GPIO 기능의 모든 측면을 제어할 수 있습니다.

gpiozero Python 라이브러리는 MotionSensor, LightSensor, LED, Motor 및 다른 더 높은 수준의 추상적 개념과 함께 GPIO 프로그래밍의 수준을 높여 줍니다. 이런 접근 방식을 통해 프로그래머는 기본 GPIO 트랜잭션을 관리하는 라이브러리에 의존하면서, 예를 들어 LED를 켜기 위해 led.on()과 같은 명령을 사용하는 것처럼 더 직관적인 명령을 사용하여 시스템 상태를 읽거나 원하는 상태를 설정함으로써 기본 하드웨어를 다룹니다.

Grove 활용하기

Pi HAT 인터페이스 표준은 제3자 개발업체를 위한 매력적인 토대를 제공하기는 하지만 Pi 플랫폼에만 국한되어 있습니다. 이와는 대조적으로 Grove 인터페이스는 하드웨어 플랫폼을 교차하는 단일 표준 기반을 제공하면서 훨씬 더 많은 애드온 기판 개발자를 매혹합니다. Seeed Technology의 Grove 시험용 키트는 여러 Grove 호환 커넥터가 있는 Pi 호환 HAT 기판을 제공합니다. 다른 HAT와 마찬가지로 Grove HAT는 Pi 3 40핀 커넥터에 장착됩니다(그림 4).

Seeed Technology의 Grove 시험용 키트 이미지

그림 4 : Seeed Technology의 Grove 시험용 키트는 Pi 표준 40핀 커넥터에 부착되어 개발자가 광범위한 Grove 호환 주변 장치 세트를 사용하여 Pi 시스템을 향상시킬 수 있도록 합니다. (이미지 출처: Seeed Technology)

Grove HAT를 사용하면 개발자는 Pi 3의 단순성과 성능을 유지하면서 액추에이터, 가스 센서, 모터 제어 장치, 스피커, 무선 송수신기 등 다양한 Grove 호환 애드온에 액세스할 수 있습니다. 애드온 기능을 Pi 3 40핀 커넥터에 직접 연결하는 대신 개발자는 Grove HAT 상단에 장착된 Grove 소켓 중 하나에 이 제품과 함께 제공되는 Grove 커넥터를 연결합니다(그림 4).

개발자는 C, Java, Node.js, Python용 Grove 소프트웨어 라이브러리와 이와 유사하게 Grove 기능을 자신의 응용 제품에 연결할 수 있는 기타 Grove 소프트웨어 라이브러리를 찾을 수 있습니다. 여기서 라이브러리의 하위 레벨 루틴을 사용하여 상응하는 비트 레벨 트랜잭션(목록 3)을 실행하는 동시에 개발자는 상위 레벨 루틴을 사용하여 아날로그 데이터를 수집(목록 2)하는 방법도 생각할 수 있습니다.

# Tweet the temperature, light, and sound levels with our Raspberry Pi

# http://www.dexterindustries.com/GrovePi/projects-for-the-raspberry-pi/raspberry-pi-twitter-sensor-feed/

 

import twitter

import time

import grovepi

import math

 

# Connections

sound_sensor = 0        # port A0

light_sensor = 1        # port A1

temperature_sensor = 2  # port D2

led = 3                 # port D3

 

intro_str = "DI Lab's"

 

# Connect to Twitter

api = twitter.Api(

    consumer_key='YourKey',

    consumer_key='YourKey',

    access_token_key='YourKey',

    access_token_secret='YourKey'

    )

 

grovepi.pinMode(led,"OUTPUT")

grovepi.analogWrite(led,255)  #turn led to max to show readiness

 

while True:

    # Error handling in case of problems communicating with the GrovePi

    try:

        # Get value from temperature sensor

        [t,h] = grovepi.dht(temperature_sensor,0)

 

        # Get value from light sensor

        light_intensity = grovepi.analogRead(light_sensor)

 

        # Give PWM output to LED

        grovepi.analogWrite(led,light_intensity/4)

 

        # Get sound level

        sound_level = grovepi.analogRead(sound_sensor)

 

        # Post a tweet

        out_str ="%s Temp: %d C, Humidity: %d, Light: %d, Sound: %d" %(intro_str,t,h,light_intensity/10,sound_level)

        print (out_str)

        api.PostUpdate(out_str)

        time.sleep(60)

    except IOError:

        print("Error")

    except KeyboardInterrupt:

        exit()

    except:

        print("Duplicate Tweet or Twitter Refusal")

목록 2 : 개발자는 Pi 기판, Grove 애드온 및 Grove 소프트웨어 라이브러리를 사용하여 이 예제와 같이 환경 데이터를 호스트 서비스(이 경우에는 트위터)에 전송하는 사물 인터넷과 유사한 프로세스를 모방하는 정교한 응용 제품을 신속하게 구현할 수 있습니다. (코드 출처: Dexter Industries)

# Read analog value from Pin

def analogRead(pin):

      write_i2c_block(address, aRead_cmd + [pin, unused, unused])

      read_i2c_byte(address)

      number = read_i2c_block(address)

      return number[1] * 256 + number[2]

목록 3 : Grove 소프트웨어 라이브러리는 하드웨어 주변 장치에 액세스하는 데 필요한 비트 레벨 조작을 처리하므로 개발자는 대신에 analogRead(pin)과 같은 더 직관적인 호출로 작업할 수 있습니다. (코드 출처: Dexter Industries)

단순화된 구성

과거에는 새로운 하드웨어를 시스템에 추가하려면 여러 면에서 문제를 야기했습니다. 하드웨어 엔지니어는 적절한 기계 및 전기 인터페이스를 설계해야 했고, 응용 제품 개발자는 생산성을 극대화하는 데 필요한 추상 개념 유형을 제공할 수 있는 적합한 소프트웨어 라이브러리를 찾아야 했습니다. Pi 3과 이를 지원하는 에코시스템은 Pi 표준 40핀 커넥터와 위에서 기술한 상용화된 소프트웨어 라이브러리를 통해 이러한 문제를 해결합니다. 더 나아가 Pi 아키텍처는 개발자가 하드웨어 전용 기판 지원 패키지(BSP)를 찾고 로드해야 하는 추가적인 노력을 4분의 3 정도 덜어 줍니다. BSP는 일반적으로 OS와 애드온 하드웨어 사이의 인터페이스를 완성하는 데 필요한 하위 레벨 코드를 제공합니다.

Pi 아키텍처를 사용하면 Pi 사용자가 다른 하드웨어 장치에 BSP를 설치하고 구성할 필요가 대체로 없어집니다. 대신 Pi 시스템은 동일한 리소스에 대해 경쟁하는 여러 소프트웨어 모듈 간의 충돌을 피하기 위해 모듈을 로드하고 리소스 할당을 관리하는 메커니즘을 제공하는 장치 트리를 사용합니다. 하드웨어 장치에 특수한 소프트웨어가 필요한 경우 Pi 사용자는 몇 가지 구성 항목만 설정하면 됩니다. OS 커널은 해당 하드웨어 장치와 관련된 모듈을 자동으로 찾아서 로드합니다. 예를 들어, Pi 시스템의 I2C 기능은 기본적으로 비활성화되어 있습니다. 개발자는 구성 파일인 config.txt를 편집하여 다음과 같은 한 줄의 주석을 제거하면 됩니다.

#dtparam=i2c_arm=on

Pi 플랫폼은 그 단계까지도 단순화합니다. Raspbian은 처음 부팅할 때 다양한 인터페이스를 구현할 수 있는 기능을 포함하여 구성 항목 메뉴를 사용자에게 제공하는 구성 도구를 실행합니다.

I2C 기반 하드웨어에 의존하는 응용 제품의 경우 앞에서 설명한 것과 같은 상위 레벨 라이브러리를 사용하면 개발자가 I2C 트랜잭션 레벨에서 코드를 작성해야 할 필요가 없습니다. 개발자가 특수한 I2C 작업을 위한 코드를 정말로 개발해야 하는 경우, 직접 사용할 수 있거나 사용자 정의 I2C 소프트웨어를 작성하는 예제로 사용되는 Linux 용 I2C 도구 와 같은 소프트웨어를 찾을 수 있습니다.

내장형 Pi

Pi 시스템을 제품에 내장하고자 하는 설계자를 위해 최근 발표된 CM3은 소형 드롭인 Pi 솔루션을 제공합니다(그림 5). Pi 3과 동일한 쿼드 코어 프로세서를 기반으로 CM3은 또한 Pi 3과 동일한 특징과 기능을 제공합니다. 또한 CM3 기판에는 4GB의 eMMC 플래시가 포함되어 있습니다. 다른 Pi 기판은 외장 플래시 메모리 카드를 추가하기 위한 마이크로 SD 슬롯을 제공합니다. Raspberry Pi는 또한 기판 실장형 플래시를 제외한 해당 제품의 모든 것을 포함하는 CM3의 'Lite' 버전인 CM3L을 제공합니다.

Raspberry Pi Compute Module 3(CM3)의 이미지

그림 5: Raspberry Pi Compute Module 3(CM3)은 Pi Zero의 작은 크기와 Pi 3의 성능을 제공하며 동시에 두 모델보다 더 많은 핀을 제공합니다. 또한 4GB 플래시 모듈(기판 뒷면에 있음)도 포함되어 있습니다. (이미지 출처: Raspberry Pi 재단)

CM3은 Pi 3 및 Pi Zero에서 사용되는 40핀 IO 인터페이스에서 벗어납니다. 대신 CM3은 기판 가장자리에 200핀 SODIMM(소형 아웃라인 듀얼 인라인 메모리 모듈) 커넥터로 확장된 인터페이스를 제공합니다(그림 6). 실제로 전체 CM3 기판은 DDR2 SODIMM 폼 팩터와 호환되므로 개발자는 표준 DDR2 SODIMM 커넥터를 통해 CM3을 대상 시스템에 연결할 수 있습니다.

Raspberry Pi CM3 구성도

그림 6: Raspberry Pi CM3은 다른 Pi 기판에서 발견되는 40핀 인터페이스를 뛰어넘어 프로세서 핀과 기타 기판 구성 부품의 200핀 브레이크아웃을 제공합니다. (이미지 출처: Raspberry Pi 재단)

개발을 단순화하기 위해 엔지니어는 CM3 모듈과 Raspberry Pi Compute Module IO 기판을 결합한 Raspberry Pi CM3 개발 키트를 활용할 수 있습니다. IO 기판은 CM3용 DDR2 SODIMM 커넥터와 200핀 CM3 인터페이스를 분리하는 헤더가 있는 간단한 오픈 소스 기판입니다(그림 7). 또한 IO 기판은 Pi 3 기판에 제공된 HDMI, USB, 카메라 및 디스플레이 포트용 커넥터를 제공합니다.

Raspberry Pi Compute Module IO 기판의 이미지

그림 7 : CM3 개발 키트에 포함된 Raspberry Pi Compute Module IO 기판은 CM3 용 DR2 SODIMM 커넥터와 200핀 CM3 인터페이스용 헤더 및 HDMI, USB, 카메라 및 디스플레이 포트용 커넥터를 제공합니다. (이미지 출처: Raspberry Pi 재단)

실시간 응용 제품

고성능과 소형 폼 팩터의 결합으로 CM3은 TV, 오디오 장비 및 이와 유사한 소비자 제품과 같은 전자 제품의 내장형 시스템으로 사용하기에 매우 적합합니다. 그러나 실시간 응용 제품의 경우 개발자는 기본 Pi 플랫폼에서 몇 가지 제한 사항을 고려해야 합니다.

특히 Pi 시스템에는 실시간 클록(RTC)이 포함되어 있지 않습니다. 더구나 Pi 3 및 CM3(또는 Pi Zero에서 사용되는 ARM1176)에 사용되는 Cortex-A53과 같은 코어에는 시간 지정 센서 읽기와 같은 실시간 이벤트에 필요한 SysTick 시스템 타이머와 같은 기능이 포함되어 있지 않습니다. SysTick 타이머는 결정론적 실시간 응용 제품을 위해 특별히 설계된 ARM Cortex-M 계열과 같은 코어의 중요한 기능입니다.

엔지니어는 Maxim IntegratedDS3231과 같은 정밀 RTC IC를 사용하여 이러한 단점을 쉽게 보완할 수 있습니다. 소비자 가전 온도 범위에서 ± 2ppm의 정확도를 자랑하는 DS3231 RTC IC는 소프트웨어 시스템 타이머를 구동하는 데 사용할 수 있는 방형파 출력을 생성합니다. 또한, 실시간 클록 수를 읽기 위한 간단한 I2C 인터페이스를 제공합니다. 개발자는 앞서 언급한 I2C 툴킷을 기반으로 하는 C 루틴을 사용하여 RTC 데이터를 실시간 응용 제품에 통합할 수 있습니다.

실시간 응용 제품에 표준 Pi 시스템을 사용할 때의 또 다른 한계는 OS 자체에 있습니다. 일반 응용 제품용으로 설계된 일반적인 Linux 배포판은 실시간 프로세스를 안정적으로 모니터링하고 제어하는 ​​데 필요한 결정론적 응답이 없습니다. 실제로 Linux의 기본 운영 모드에서는 매우 높은 우선순위의 스레드조차도 커널을 선점하지 못할 수 있습니다. 결과적으로, 우선순위가 높은 루틴이 센서, 제어 모터 등을 읽으려고 하면 해당 '실시간' 루틴은 불확정한 시간 동안 차례를 기다려야 할지도 모릅니다.

다행히 Linux 커널에는 CONFIG_PREEMPT라는 구성 옵션이 포함되어 있어 이 제한 사항을 해결합니다. 이 옵션을 사용하면 커널이 스핀록(자원 대기를 차단한 경우) 상태에서 커널 스레드를 실행 중인 경우와 같은 특별한 상황을 제외하고는 우선순위가 높은 루틴이 커널을 선점할 수 있습니다. 실제로 커널을 선점할 수 있는지 확인하려면 이 구성 항목을 수정하는 것 이상의 추가 조치가 필요합니다. 오픈 소스 커뮤니티는 CONFIG_PREEMPT_RT 패치 세트 출시를 통해 Linux를 완전히 선점 가능한 커널로 변환하는 과정을 공식화했습니다. 단순하지는 않지만 간단한 이 패치 절차는 Raspberry Pi 재단과 Pi 커뮤니티 회원이 제공하는 잘 정리된 절차 문서 덕분에 비교적 일상적인 작업이 되었습니다.

결론

Raspberry Pi Zero 기판에 대한 최근의 관심에도 불구하고 Raspberry Pi 3과 CM3은 엔지니어에게 고성능 시스템을 제작하기 위한 더 매력적인 플랫폼을 제공합니다. Pi 3과 CM3은 각각 쿼드 코어 프로세서와 단일 코어 Pi Zero에서 사용하는 기판 실장형 RAM의 두 배 용량을 특징으로 합니다.

자체적으로 Pi 3은 Pi 표준 40핀 GPIO 인터페이스를 준수하도록 제작되어 시중의 다양한 애드온 기판을 활용할 수 있도록 하는 보다 강력한 컴퓨팅 기반을 제공합니다. CM3을 통해 개발자는 Pi Zero의 작은 크기와 Pi 3의 성능 장점을 모두 충족시키는 컴퓨팅 기반을 찾을 수 있습니다. 이러한 최신 Pi 기판, 애드온 하드웨어 및 쉽게 구할 수 있는 소프트웨어 라이브러리를 사용하여 개발자는 다양한 응용 제품 요구 사항을 충족할 수 있는 맞춤형 시스템을 신속하게 구현할 수 있습니다.

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 Digi-Key Electronics의 의견, 생각 및 견해 또는 Digi-Key Electronics의 공식 정책과 관련이 없습니다.

게시자 정보

Digi-Key 북미 편집자