1.5 임베디드 리눅스 개발 단체

 

1) 리눅스 커널 커뮤니티

→ 리눅스 커널 개발의 심장으로 논리적 오류나 문제점을 개선하는 패치를 논의하고 관리함

 

① 버그 수정 패치

② 코드 리팩터링

③ 신규 알고리즘

④ 문서화

 

리눅스 커널 패치 배포 시 발송되는 메일

 

리눅스 커널 버전과 코드 내역은 리눅스 커널 https://www kern l.org/) 사이트에서 확인 가능

 

리눅스 커널 소스 저장소

 

- longterm : 안정화된 리눅스 커널 버전

→ 리눅스 커널 커뮤니티에서 관리하는 안정화된 리눅스 커널 버전을 LTS(Long Term Support)라고 부름

 

 

2) CPU 벤더

→ CPU를 설계하는 회사를 뜻함

 

- 대표 업체 : ARM(ARMv7/ARMv8), 인텔(x86), IBM(PowerPC)

- 리눅스 커널 개발에 참여 

- 리눅스 커널 핵심 기능 : 시스템 콜, 익셉션, 컨텍스트 스위칭

 

CPU 아키텍처와 리눅스 드라이버 계층도

 

커널의 핵심 동작은 서로 다른 CPU 어셈블리 코드로 구현되어 있고, 컨텍스트 스위칭의 세부 동작은 CPU 별로 구현 방식이 다름

 

라즈비안과 같이 ARMv7 기반 리눅스 커널을 쓰려면?

→ ARMv7에 맞는 빌드 스크립트로 커널을 빌드하면 된다.

 

즉, 리눅스 커널은 다양한 CPU 아키텍처를지원하는 소스 트리를 갖추고 있으며 사용하고자 하는 CPU 아키텍처에 맞춰 빌드하면 이에 맞는 커널 이미지를 생성한다.

 

 

3) SoC 벤더

→  SoC를 개발하는 업체인 브로드컴, 삼성전자(시스템 LSI), 퀄컴, 인텔, 미디어택 엔비디아 같은 회사를 뜻함

 

※ SoC(System-on-Chip) :  하나의 컴퓨터 또는 다른 전자 시스템들의 모든 구성 요소를 통합한 집적회로

 

- SoC 벤더에서 개발하는 제품명

• 브로드컴: BCM(bcm2837. 라즈베리 파이에 탑재) 
• 삼성전자(시스템 LS|): 엑시노스(Exynos) 
• 퀄컴:스냅드래곤 
• 인텔아톰무어필드 
• 마디어텍헬리오 
• 엔비디아: 테그라 

 

soc 벤더에서 개발하는 리눅스 드라이버 계층도

 

→ 리눅스 커널을 사용하여 SoC 하드웨어를 제어하는 디바이스 드라이버 작성

 

 

4) 보드 벤더 및 OEM

→ 보드 벤더는 라즈베리 파이 재단과 같은 업체이고 OEM은 삼성전자, LG 전자와 같이 상용 제품을 개발하는업체를 뜻함

 

보드 벤더 및 OEM 이 개발하는 리눅스 드라이버 계층도

 

→ SoC 벤더에서 작성한 드라이버에서 버그를 확인하면, 

보드 벤더 및 OEM 업체는 버그를 리포트하고 개선 패치를 받아 수정하는 경우가 많음

 

 

1.6 임베디드 리눅스 개발을 잘 하려면 무엇을 알아야 할까?

 

★ 임베디드 리눅스 개발자가 알아야 할 지식

 

- 디바이스 드라이버

- 리눅스 커널

- CPU 아키텍처

- SoC

※ 알아두면 좋음

- 유저 공간 HAL(Hardware Abstraction Layer) 코드 구현 
- 빌드 스크립트구현 
- 테스트용 디바이스 드라이버 구현 
- Git과 형상 관리

 

 

1) 디바이스 드라이버

- 인터럽트 핸들러 함수와 인터럽트를 처리하는 방식 
- 디바이스 파일로 open/read/write 연산에 대한 함수를 등록하는 방법 
- 디바이스 트리를 읽어 디바이스 속성을 저장하는 방식 

 

2) 리눅스 커널

- 디바이스 드라이버는 리눅스 커널에서 제공하는 함수로 구성되어 있음

- 디바이스 드라이버를 개발하는 과정은 인증 테스트 부서를 통해 드라이버 안정화 테스트 과정을 거치며,

   이 과정에서 다양한 버그나 문제 증상이 리포트됨

 

3) CPU 아키텍처

- 리눅스 커널의 핵심 개념은 어셈블리 코드로 구현됨

ex) 컨텍스트 스위칭, 익셉션 벡터, 시스템 콜, 시그널 핸들러, 메모리 관리(MMU)

 

4) 빌드 스크립트와 Git

- 다른 업체가 개발한 드라이버나 응용 프로그램을 현재 사용 중인 소스트리에 추가할 때 사용

 

 

1.7 라즈베리 파이와 리눅스 커널

 

1) 라즈베리 파이 실습 보드

 

라즈베리 파이 3 모델 B의 기본 하드웨어 스펙

• Soc: Broadcom BCM2837 Soc 
• CPU: 1.2GHz ARM Cortex- A53 MP4 
• GPU: Broadcom VideoCore IV MP2 400 MHz 
• 메모리: 1GB LPDDR2 
• SD 카드: Micro SD, push-pull type 

 

 

2) 리눅스 커널 버전

 

- 라즈비안 리눅스 커널 코드 아래에서 확인 가능

https://github.com/raspberrypi/linux/tree/rpi-4.19.y 

 

- 리눅스 커널 커뮤니티에서 관리하는 리눅스 커널 코드를 보려면 다음 URL 참고

https://elixir.bootlin.com/linux/v4.19.30/source

 

 

3) 라즈비안 버전

 

- 책에서 다룬 커널 패치는 다음 버전의 라즈비안 이미지에서 테스트함

2019-07-10-raspbian-buster-full 

 

- 다음과 같은 리눅스 커널 버전에서 활용 가능

4.14/4.9/4.4/3.18 

 

 

4) ARM 아키텍처

 

라즈베리 파이 3 모델 B는 ARMv7 아키텍처를 기반으로 동작하므로

이 책에서는 이를 기준으로 ARM 아키텍처와 관련된 동작을 설명한다.

'2021 SUMMER STUDY > LINUX KERNEL' 카테고리의 다른 글

Week05_프로세스3  (0) 2021.08.21
Week04_프로세스2  (0) 2021.08.15
Week03_프로세스  (0) 2021.08.09
Week02_커널 디버깅과 코드 학습  (0) 2021.07.25

+ Recent posts