라즈베리파이 피코의 두뇌, RP2040에 대해 알아보자

 


안녕하세요
디바이스마트의 육식정글러 솔다입니다

디바이스마트에서 라즈베리파이 피코
판매하기 시작한지 벌써 일주일이 되었습니다

피코에서 사용된 MCU는 RP2040입니다
에도 한번 소개 드렸었는데요

RP2040이 라즈베리파이재단에서 손수 제작한
첫번째 MCU라는 소식을 빼먹었더라구요


7mm 정사각형의 QFN-56 패키지로 모눈종이의 한칸정도 사이즈인 RP2040을
이번에는 조금 더 심층적으로 파헤쳐 보도록 하겠습니다


-

첫째, 이름의 유래

나메

RP2040이라는 이름에는 다~ 뜻이 있습니다
말 그대로 전부 다요

증거 있냐구요?
증거 있습니다


변호인측 증거물 제출합니다


첫번째
맨처음 오는 알파벳 두글자 'RP'는 예상하셨다시피
'라즈베리파이'(Raspberry Pi)를 뜻합니다

두번째
그다음 오는 숫자 '2'는 코어의 갯수입니다
'2'라고 썼으니 듀얼코어입니다

세번째
그다음 숫자는 '0'이며 코어의 종류입니다
실제로 Arm Cortex-M0+ 계통의 코어가 사용되었습니다

네번째
그다음 숫자는 '4'고 메모리의 크기를 나타냅니다
공식은 floor(log₂(ram / 16k))입니다

어떻게 '4'가 되는지 한번 검산해보겠습니다
괄호 안에서 바깥으로 역산해 나가겠습니다

(ram / 16k)
우선 ram 용량을 16k로 나눠줍니다
RP2040의 SRAM 사이즈는 256kB입니다

ram / 16k
= 256k / 16k

분수를 SI접두어인 k를 약분합니다

= 256 / 16

이번에는 16으로 약분합니다

= 16 / 1
(ram / 16k) = 16

위와 같은 결과를 얻었습니다
그럼 이번엔 다음 괄호를 계산해보겠습니다

(log₂16)
log₂는 밑이 2인 로그입니다
밑이 2인 로그는 상용로그처럼 특별한 이름이 있습니다
밑이 2인 로그를 바이너리 로가리듬(Binary Logarithm)이라고 부릅니다

로그 계산은 약간 복잡할 수 있습니다
로그 계산기를 이용하시거나
상용로그표를 보고 공식을 적용하여 구할 수 있습니다
저는 후자의 방법을 설명드리겠습니다


우선 밑이 미지수a인 로그를 구하는 공식입니다
여기서 c는 0보다크고 1이 아니기만 하면 되기 때문에
여기에 상용로그를 적용시켜 값을 구해보겠습니다

log₂16
= log16 / log2

위와 같이 정리할 수 있습니다
상용로그표를 이용하여 두 값을 소숫점 셋째자리까지 표기해보겠습니다

= 1.204 / 0.301
= 4

로그값을 임의로 소숫점 셋째자리까지 두고 계산했는데
신통하게도 4로 딱 맞아떨어집니다
그러나 아직 끝난게 아닙니다

floor(4)

floor가 남아있습니다
프로그래밍이나 함수와 별로 친하지 않으시다면
floor라는 메소드가 낯설게 보이실겁니다
바닥, 층 뭐 이런 뜻의 명사인데
수학적 함수로 쓰일 때에는 '버림'으로 사용됩니다
즉, 계산한 값의 소숫점을 전부 '버림'으로 처리하면 됩니다

그러나 계산값이 4로 딱 나눠떨어졌으므로 버릴 수는 없었습니다

결과적으로 '4'로 표기된 것은
메모리 크기가 256kB라는 것을 의미한다는 것으로 검증되었습니다

다섯번째
그 다음 숫자는 '0'입니다
비휘발성 메모리의 용량을 나타내는 숫자입니다
공식은 floor(log₂(nonvolatile / 16k))입니다
바로 전 자릿수와 대상만 다르고 공식은 동일합니다

이번에도 검산해보겠습니다
RP2040는 16kB의 롬이 내장되어있습니다

(nonvolatile / 16k)
이걸 풀이해보면

nonvolatile / 16k
= 16k / 16k
= 1

(log₂1)
이것도 상용로그를 활용해서 풀이해보겠습니다
상용로그 값은 소수점 셋째자리까지 기재했습니다

log₂1
= log1 / log2
= 0 / 0.301
= 0

floor를 적용시킬 필요도 없이 0으로 딱 떨어졌습니다
맨 끝의 '0'도 검증 완료되었습니다

RP2040
같은 글자지만 다시 보니 좀 달라보이지 않나요?

각 글자 하나하나가 가진 의미를 살펴봤습니다
아직 MCU는 하나밖에 안나왔는데 네이밍을 이렇게 철저한 걸 보면
마치 다양한 제품들을 출시하겠다는 예고처럼 보입니다

-

둘째, 스펙

스펙 기재에 앞서 블록다이어그램 먼저 보시는게
스펙이해에 도움이 되실겁니다


주요 스펙은 데이터시트에 나와있는 내용이지만
보기 좋게 한글로 번역해봤습니다

특징

해설

듀얼 ARM Cortex-M0 + @ 133MHz

이름에서 보듯 Cortex-M0 듀얼코어를 사용합니다

블록다이어그램의 맨위에서 확인할 수 있습니다

클럭은 133Mhz로 일반적인 개발보드에 비해 빠른 편입니다

6개의 뱅크로 나뉘어져 있는

264kB 온칩 SRAM

6개의 뱅크로 나뉘어져있다는 건

블록다이어그램을 보시면 SRAM이 6칸으로 쪼개져 있습니다

구조적으로 SRAM을 통째로 넣은게 아니라 6개의 SRAM으로

264kB로 구성했기 때문에 이처럼 설명하고 있는 것 같습니다

전용 QSPI 버스를 통해

최대 16MB의 외부 플래시 메모리 지원

QSPI 버스를 통해 플래시 메모리를 연결할 수 있습니다

피코에는 2MB의 플래시 메모리가 탑재되었습니다

DMA 컨트롤러

직접 메모리 접근 방식입니다

PIO 방식은 CPU만이 메모리에 접근할 수 있습니다

DMA 방식은 CPU의 개입 없이 컨트롤러가 메모리에 접근 할 수 있습니다

완전연결 AHB 크로스바

원문에서 완전연결은 Fully-connected입니다

메모리와 프로세서 간의 완전한 연결을 의미합니다


AHB는 엄청 좋은 BUS라는 뜻입니다

BUS는 데이터가 다니는 도로로 표현할 수 있습니다

도로가 좋으면 교통이 원활하니까 좋다는 뜻입니다


크로스바는 크로스바 네트워크를 의미합니다

프로세서가 메모리의 버스가 매트릭스 형식으로 연결됩니다

보간연산기 및 정수분할기 탑재

보간연산기는 점과 점을 잇는 연산을 보조해줍니다

정수분할기는 정수를 내림차순의 합으로 변환하는 과정의 연산을 보조해줍니다

전원으로 프로그래밍 가능한 LDO 탑재

LDO는 Low Dropout의 약자입니다

낮은 입출력 전위차에서도 동작하는 리니어 레귤레이터입니다

레귤레이터의 출력 전압을 프로그래밍 가능한 것으로 해석됩니다

온칩 PLL 2개 탑재

USB 및 코어 클럭 생성

PLL은 Phase Locked Loop의 약자입니다

해석하면 위상 고정 루프입니다

파형의 위상을 고정하여 루프합니다

이를 통해 USB와 코어 클럭을 동기화 한다는 것으로 해석됩니다

GPIO핀 30개

30핀 중 4핀은 아날로그 입력 겸용

30개의 디지털 입출력 핀이 있으며

4핀은 아날로그 입력으로도 쓸 수 있다고 합니다

주변기기

주변기기라는데 내장된 연산기 등을 의미로 해석됩니다

2개의 UART

UART 통신 포트 2개

2개의 SPI 컨트롤러

SPI 통신 포트 2개

2개의 I2C 컨트롤러

I2C 통신 포트 2개

16개의 PWM 채널

PWM 출력이 가능한 16핀

USB 1.1 컨트롤러와 PHY

(호스트 및 장치 지원)

물리계층의 USB 1.1을 지원합니다

호스트와 디바이스 양쪽 모두 지원한다고 합니다

8개의 PIO

DMA외에 별도로 8핀의 PIO를 지원한다는 의미로 해석됩니다


-

셋째, 적용보드

RP2040은 라즈베리파이 피코와 함께 공개되었지만
라즈베리파이 피코에만 적용된 것은 아닙니다

RP2040이 발표되자 다른 반도체 제조사들도 앞다투어 탑재 보드를 개발했습니다
여러 보드들이 있지만 4개 정도만 소개해 드리도록 하겠습니다


1) Adafruit / Feather RP2040

에이다프룻에서 RP2040을 페더 시리즈에 접목하였습니다
페더의 가장 큰 특징은 다양한 MCU를 기반으로 한 보드임에도
전용 쉴드 시리즈인 FeatherWing(페더윙)이 모두 호환된다는 점입니다

출시한지 얼마 되지 않은 라즈베리파이 피코에 비해
현재 가장 높은 확장성을 갖고있는 RP2040 보드 중 하나입니다

또한 원본인 피코에는 없는 리셋버튼도 탑재되어있습니다


2) Arduino / Arduino NANO RP2040

오픈소스 하드웨어로 유명한 아두이노입니다
크기가 줄고 IO핀도 줄어든 대신 WiFI와 블루투스와 같은 무선통신과
마이크, 6축 IMU 센서 등의 각종 센서가 탑재되었습니다

나노 RP2040 역시 기존의 아두이노 나노와 핀아웃을 공유합니다
따라서 본 보드도 현재로써는 높은 확장성을 갖고있는 RP2040 보드 중 하나입니다

또한 Arduino IDE라는 익숙한 개발환경이 뒷받침 해주고 있기 때문에
C기반의 개발 시에는 피코보다 편리할 수 있습니다


3) Pimoroni / Tiny 2040

보시다시피 작은 사이즈로 이름값을 하고있는 제품입니다
사진에 나와있듯 우표정도의 크기밖에 되지 않습니다

겉보기와는 다르게 flash 메모리의 용량이 8MB로 여유로운 편입니다
본 제품도 원조인 피코에 없는 리셋 스위치가 탑재되어있습니다
또한 온보드 LED가 RGB라서 다양한 상태 표시가 가능합니다

IO핀이 적어 피지컬컴퓨팅만 봤을 때에는 가성비가 훌륭하다고 할 순 없지만
제일 작은 RP2040 개발보드로써의 차별점 있습니다


4) SparkFun / SparkFun Pro Micro - RP2040

스파크펀의 Pro Micro 시리즈로도 출시되었습니다
전체적으로 피코와 유사하지만 리셋 스위치가 탑재되어있고
플래시메모리가 지원가능한 최대 용량인 16MB라는 점이 장점입니다

특히 SparkFun 고유의 I2C 확장 인터페이스인 Qwiic을 지원합니다
따라서 Qwiic단자를 통한 I2C 확장이 매우 편리합니다

-

오늘은 라즈베리파이 최초의 MCU인 RP2040에 대해 알아보았습니다
현재 듀얼코어 MCU중에서는 꽤나 가성비가 좋은 MCU이며
tinyML을 위한 최소~권장 사양정도로 볼 수 있을 것 같습니다

본 포스팅을 통해 RP2040에 대해 많이 알아가셨으면 좋겠습니다
감사합니다


댓글 쓰기

0 댓글