Linux에서 커널 이식은 한 하드웨어 플랫폼에서 다른 하드웨어 플랫폼으로 프로그램 코드를 전송하여 다른 하드웨어 플랫폼에서 실행하는 것을 의미합니다. Linux 커널 이식에는 아키텍처 수준 이식과 SOC 수준 이식이라는 세 가지 수준이 포함됩니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
소위 이식이란 프로그램 코드를 한 운영 환경에서 다른 운영 환경으로 전송하는 것입니다. 커널 이식의 경우 주로 한 하드웨어 플랫폼에서 다른 하드웨어 플랫폼에서 실행되도록 이동하는 작업이 포함됩니다.
대상 보드에 Linux 커널을 이식하는 작업에는 아키텍처 수준 이식, SoC 수준 이식, 마더보드 수준 이식의 세 가지 수준이 있습니다.
아키텍처 수준 포팅은 다양한 아키텍처 플랫폼에서 Linux 커널을 포팅하는 것을 의미합니다. 예를 들어 ARM, MIPS, PPC와 같은 다양한 아키텍처의 각 아키텍처에는 특정 포팅 작업이 필요합니다. 새로운 아키텍처가 등장하려면 이 수준의 마이그레이션이 필요합니다.
SoC 수준 이식은 특정 SoC 프로세서 플랫폼에 Linux 커널을 이식하는 것을 의미합니다. 예를 들어 ARM920T IP 코어의 두 프로세서인 S3C2410 및 AT91RM9200에는 SoC 전용 이식 작업이 필요합니다.
마더보드 수준 이식이란 특정 대상 마더보드에 Linux 커널을 이식하는 것을 말합니다. 예를 들어 FS2410 대상 보드에는 마더보드별 이식 작업이 필요합니다.
여기에서는 주로 개발 보드 초기화 및 드라이버 코드를 추가하는 마더보드 수준 이식에 대해 설명합니다. 이 코드의 대부분은 아키텍처와 관련되어 있으며 아치 디렉터리의 다양한 아키텍처에 따라 관리됩니다.
Linux 2.6 커널은 이미 SMDK2410, Simtec-BAST, IPAQ-H1940, Thorcom-VR1000 등과 같은 S3C2410 프로세서용 다양한 하드웨어 보드를 지원합니다. 개발 보드의 핵심을 이식하기 위해 SMDK2410 레퍼런스 보드를 참조할 수 있습니다.
S3C2410은 시스템 온 칩입니다. 프로세서 칩에는 직렬 포트 및 LCD와 같은 주변 인터페이스를 위한 컨트롤러가 있습니다. 이러한 방식으로 레퍼런스 보드에 있는 대부분의 장치 드라이버를 직접 사용할 수 있습니다. 그러나 모든 외부 장치가 동일한 것은 아닙니다. 다양한 개발 보드는 다양한 SDRAM, 플래시, 이더넷 인터페이스 칩 등을 사용할 수 있습니다. 이를 위해서는 하드웨어를 기반으로 드라이버를 수정하거나 개발해야 합니다.
예를 들어 직렬 포트 드라이버는 일반적인 장치 드라이버 중 하나이며 이 드라이버는 거의 변경할 필요가 없습니다. 그러나 2.4 커널 구성 방법을 사용하면 직렬 콘솔 정보를 얻을 수 없습니다. 2.6 커널에서 /dev 디렉토리에 있는 직렬 장치의 해당 장치 노드는 /dev/ttySAC0, /dev/ttySAC1 등입니다. 따라서 이전 직렬 포트 장치 ttyS0을 사용하는 경우 콘솔 인쇄 정보를 얻을 수 없습니다. 이제 이 문제는 커널 명령줄 매개변수의 콘솔 설정을 console = ttySAC0,115200으로 변경하여 쉽게 해결할 수 있습니다.
커널이 이미 S3C2410 프로세서를 지원하고 나면 기본적으로 커널을 실행하기 위해 코드를 변경할 필요가 없습니다. 그러나 어떤 경우에는 서로 다른 장치에 대해 드라이버 수준 이식을 수행해야 합니다. 최소한 하드웨어 주소와 인터럽트 번호는 다를 수 있습니다. 예를 들어 네트워크 칩, 낸드플래시 칩 등 주변기기용 드라이버를 이식해야 하는 경우도 있다.
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 리눅스 커널 포팅이란 무엇인가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!