1) 컴파일 할 때 커널이 dtb/dts 파일에 의존합니까? 필자는 커널이 칩 아키텍처 (즉, arm) 만 알고 dtb 파일이 부트 로더 (uBoot [sic])에 의해로드되므로 커널이 dtb 파일로 구성된 드라이버를로드 할 필요가 있다고 생각했습니다.
Linux 커널은 장치 트리에 종속되지 않고 컴파일됩니다.
커널 컴파일은 칩 아키텍처에 따라 다르지만 컴파일되는 코드 모듈은 보드 구성 및 기능 선택에 따라 다릅니다.
BTW 범용 부팅 용 U-Boot이지 microBoot가 아닙니다.
2) 혼합 및 일치 : 나는 혼합 부트 로더, DTB, 커널, rootfs의 조합을 일치시킬 수 있습니다 인상을 해요, 그리고 모듈은 다음과 같은
커널을 제공 : 알고 있어야하는 칩을 알고 있어야합니다
dtb : 보드 세부 정보와 칩을 알고 있어야합니다. 즉, RAM이 얼마인지, SPI 용 GPIO를 구성하십시오. 부트 로더 : 칩을 알고 있어야하며 uEnv.txt에 커널 및 dtb 위치에 대한 매개 변수가 있어야합니다.
rootfs : 완전 독립
modules : 특정 버전의 커널로 컴파일해야 함
본질적으로는 맞지만 일반적으로 "믹스 앤 매치"를 시도하는 데 배변하지 않습니다.종종 최적 또는 선호하는 (또는 적어도 적절한) 선택이 있습니다.
"rootfs"나는 rootfs에 대한 파일 시스템의 유형을 의미한다고 가정합니다. rootfs에 대한 이미지입니다. (아래 부록을 참조하십시오.)
3) 드라이버 : 나는 SPI 드라이버를로드하려면 나는 특정 아무것도 또는
을 필요로 할
"SPI 드라이버", 마스터와 프로토콜의 두 가지 유형이 있습니다 .
SPI 마스터 드라이버는 하나의 인터페이스 마스터 역할을하는 SPI 컨트롤러 칩용입니다. 이것은 보통 플랫폼 드라이버이며 장치 노드가 /dev이 아닙니다.
각 SPI 슬레이브 장치에는 프로토콜 드라이버가 있어야합니다. 이 드라이버는 일반적으로 장치 노드가 /dev입니다.
커널은 dtb 파일이 필요한 레지스터를 설정하기 때문에 커널을 조작하는 방법을 알고 있습니까?
장치 트리는 어떤 장치에 대한 드라이버와 각 장치에 할당/할당 된 모든/모든 자원을 지정해야합니다.
dtb 파일에 "설정"이 없습니다. 구성 데이터 일뿐입니다. 실행 가능한 코드가 없습니다. 디바이스 드라이버는 일반적으로 프로브 또는 초기화 단계에서 자원 획득/할당을 담당합니다.
4) 모듈 : 이것들은 커널에만 의존하고 있습니까? 아니면 칩과 보드에 대해 알고 있어야합니까?
귀하의 "모듈"사용은 모호합니다. 소스 코드 파일은 "모듈"이라고도합니다. 아마도로드 가능한 커널 모듈을 의미 할 것입니다.
대부분의 사람들은 커널 모듈을 장치 드라이버와 연관 시키지만 파일 시스템 및 네트워크 프로토콜 처리기와 같은 다른 커널 서비스도 모듈로 빌드 할 수 있습니다. 커널 모듈과 정적 링키지 (즉, 커널에 내장 됨)의 주된 근거는 런타임 구성 가능성 (차례로 메모리 효율성을 향상시키는 것)입니다. 선택적 기능, 서비스 및 드라이버는 부팅 된 커널에서 제외 될 수 있지만 필요할 때 나중에로드 할 수 있습니다.
로드 가능한 모듈은 적절한 실행을위한 요구 사항 연결 때문에 커널에 "종속"됩니다. "칩 및 보드 지식"의 정도는 분명히 다른 커널 코드와 마찬가지로 모듈의 기능에 달려 있습니다.
내가 미리 만들어진 rootfs
커널 이미지 (미리 만들어진) rootfs 이미지를 참조하고 rootfs 말
부록은"완전히 독립적 인"아니다.
rootfs 이미지의 실행 가능 바이너리와 공유 라이브러리는 커널 기능과 호환 가능해야합니다.커널 로딩 가능 모듈은 커널 이미지가 아닌 rootfs에 설치되고 커널 모듈의 특정 빌드에 엄격하게 묶일 수 있기 때문에 커널 이미지와 rootfs 이미지를 쌍으로 만드는 것이 좋습니다.
답변 해 주셔서 감사합니다. 한가지, 내가 rootfs라고 말할 때 미리 만들어진 rootfs를 가리키며 어떤 파일 시스템이 아닌지를 말하고 있습니다. – user2205930
@ user2205930 - 추가 정보를 참조하십시오. – sawdust