본문 바로가기

라즈베리파이

라즈베리파이 개발환경 설정 및 셋업

라즈베리 파이를 교육용 또는 개발용 보드로 시작할때 필요한 요소들과 고려해야 할 사항들을 점검해 봅니다.

사람에 따라 간단하게 구성하여 특정 기능을 수행하도록 하는 기기로 활용될 수 있을것이고, 또 어떤 사람들에게는 개발용으로 또는 리눅스를 공부하거나 테스트를 하기위한 용도로 사용될 것입니다.

본인의 경우 일종의 교육및 테스트를 위한 레퍼런스 보드로 사용할 예정이며, 다양한 커널 기능이나 센서나 제어를 위한 용도로 사용할 예정입니다.

따라서, 아래에서 설명하는 개발환경이 정답이 있는 것이 아니라 본인의 환경과 목적에 맞도록 선택하는 것입니다.

 

라즈베리파이 3B vs 4B

세부적인 표는 아래링크 참조

https://muritzy.tistory.com/2193

3B

  • Broadcom BCM2837B0 1.4GHz  쿼드 코어 Cortex-A53
  • OpenGL ES 1.1, 2.0이 포함 된 VideoCore IV
  • 1GB LPDDR2

4B

  • Broadcom BCM2711 쿼드 코어 Cortex-A72 @ 1.5GHz
  • OpenGL ES 1.1, 2.0, 3.0이 포함 된 VideoCore VI
  • 1GB, 2GB 또는 4GB LPDDR4

3b의 경우 use cae가 많고 참고할 자료가 많음.

4b의 경우 자료가 부족하나 향후를 생각하면 4b가 나음

 

Native Vs Cross 개발환경

처음 시작하시는 분이나 리눅스의 경험이 작으면 native로 시작하고, 학습이나 특정 시스템을 개발하는 분에게는 cross 개발환경이 추천됩니다.

Native

  • 일반적인 라즈베리 베포판을 설치하여 linux PC처럼 사용
  • 구성이나 추가적인 패키지 설치가 쉬우며, 관련 문서를 찾기 쉽다
  • 속도가 느리고 다양한 루트파일시스템을 사용하기가 어렵다

Cross

  • 임베디드 시스템으로 개발하기 위한 환경
  • 커널 및 어플리케이션들이 호스트 시스템에서 크로스 컴파일됨
  • nfs 파일 시스템 사용
  • yocto 환경 사용

uboot의 사용

Native환경을 사용하시는 분은 uboot를 사용할 필요가 없는 듯합니다.

커널 컴파일을 자주 수행하고 루트 파일시스템이 자주 변경되는 경우에는 Native환경이 불편하기 때문에 uboot를 통하여 커널이나 디바이스 트리를 다운로드 하여 부팅하는 것이 편리합니다.

라즈배리파이 배포판에서 사용하는 이미지의 경우 uboot가 포함되어 있지 않고 부터로더에서 바로 커널을 수행합니다.

따라서, 따로 uboot를 사용할 수 있게 SD 카드의 내용을 변경해야 하며 uboot또한 컴파일하여 탑재해야 합니다. 이 부분에 대해서는 다음번 글에 포스팅 하도록 합니다.

 

Ubuntu vs Centos(Redhat)

개발환경으로는 Ubuntu를 선택하시는게 편합니다.

ubuntu

  • 개인이 사용하기 위한 linux 배포판으로 좋음
  • 커뮤니티에서 참조 글들이 많음
  • apt-get을 통한 패키지 설치

centos

  • 기업용으로 적합하며, 좀 더 안정적이고 secure함
  • 패키지가 좀 부족하고 cetnos 7의 경우 버전이 낮음

 

가상 환경(Virtualbox, Vmware)

가상환경을 사용하면 추가적인 하드웨어(PC)없이 리눅스 시스템을 구축할 수 있는 편리성이 있지만 속도나 호스트 PC의 자원을 공유해야 하는 단점이 있습니다.

간단한 환경과 테스트를 한다면 가상 환경을 사용할 수 있겠지만, 작업의 정도와 개발해야 할 부분이 많다면 리얼 환경에서 사용하는 것이 낫습니다.

개인적으로는 왠만하면 가상 환경보다는 리얼 환경을 사용하시는 것을 추천드립니다.

 

arm32 vs arm64

라즈베리파이 3B 이상에서는 arm64(Aarch64, armv8)를 지원합니다. 성능이나 메모리 사용에 대한 이슈가 있으나 중요한 고려사항은 compatibility에 대한 것을 먼저 고려해야 합니다.

arm32

  • 라즈베리파이 3b 이하의 버전에서 주로 arm32를 사용함
  • 기존 리소스들이나 예제들이 32bit 를 사용한 것이 많음

arm64

  • 현재 추세는 arm도 armv8이후의 프로세스들이 대새를 이루면서 64bit를 사용하는 방향으로 가고 있음

추후를 고려하고 arm64를 기본 개발환경으로 사용할 예정

 

Serial vs keyboard & monitor

배포판으로 구성한 경우에는 기본적으로 키보드나 모니터가 필요합니다. 물론 이후에는 ssh 같은 네트워크 접속툴을 통하여 사용하지 않을 수도 있습니다.

하지만, 커널 콘솔을 사용하거나 stand alone으로 구성하여 네트워크를 사용할 수 없는 경우 시리얼 콘솔이나 로그인이 편리할 때가 많습니다.

라즈배리파이 3B부터 시리얼과 블루투스가 하드웨어적으로 연결되는 바람에 시리얼을 사용하기가 약간 까다롭습니다.

이후 시리얼 콘솔 사용에 대해서는 따로 장을 마련하여 상세히 살표보도록 합니다.

 

커널 및 루트 파일시스템 빌드

라즈베리 파이의 커널 소스는 커뮤니티나 yocto 환경에 이미 있습니다.

커널은 git repositry를 통하여 다운로드 받고, 루트 파일 시스템은 yocto 환경에서 빌드 하도록 하겠습니다.

세부적인 내용은 이후 언급할 예정입니다.