커널 3.0의 크로스 컴파일 및 백포팅

커널 3.0의 크로스 컴파일 및 백포팅

컴파일하려고하는데백포트(저는 최신 [5.6.8-1] 버전을 선택했습니다) 제공된 툴체인이 있는 i.MX35(armv6) 임베디드 Linux 시스템용(arm-fsl-gnueabi-gcc 4.6.2, 다른 컴파일러를 선택할 수 없습니다)및 BSP 코어(3.0, 불행하게도 다른 커널은 옵션이 아닙니다).

관련 페이지주장하다

각 백포트는 지원되는 모든 커널에서 사용할 수 있도록 테스트 및 컴파일되었습니다. 가장 오래된 버전은 (현재) 3.0입니다.

그래서 나는 괜찮을 것입니다. 그러나 아래에 쓰여진 것처럼 그들은 이 버전을 3.0에 대해 테스트하지 않았을 것이라고 확신합니다.수동 개입 없이는 해당 버전에 대해 컴파일되지 않기 때문입니다..

나는 커널 소스 트리를 [재] 구축하고 따랐습니다."크로스 컴파일"에 대한 지침트리 외부 백포트 빌드에 사용됩니다. 그런 다음 먼저 menuconfig여러 USB WiFi 드라이버를 선택했지만 컴파일 오류로 인해 타르볼을 삭제하고 다시 추출한 다음 수행했습니다(그들이 주장한 대로).

사용자가 Linux 커널을 구성하는 방법을 모르는 것처럼 백포트 패키지를 구성하는 방법을 모를 수 있으므로 관심 있는 드라이버/하위 시스템만 빌드하는 데 사용할 수 있는 기본 구성 파일에 대한 바로 가기가 제공됩니다. 안에.

) defconfig-mwifiex구성에 문제가 없는지 확인하기 위한 것입니다. 네, 저는 정말 절망적인 낙천주의자입니다.

3.0에 없는 기능에 의존하는 "백포팅이 덜한" 기능을 제거해야 했습니다.

  1. __atomic_add_unless로 변경atomic_add_unlessbackport-include/linux/atomic.h

  2. 대신 무조건 호출됩니다 debug_fs_create_xul. 조건부 버전은 해당 플랫폼에서 32비트인 의 크기를 기준으로 예약되므로 후자는 호출되지 않습니다.backport-include/linux/debugfs.hdebug_fs_create_x32debug_fs_create_x64unsigned long

  3. netdev_upper_dev_link360행에서 시작하는 내용은 backport-include/linux/netdevice.h3.0에는 없고 일부 후속 버전에만 존재하기 때문에 주석 처리되었습니다 . 어쨌든 호출만 가능컴파일된 모듈이 없습니다.(사실 기본 커널 구성으로 인해 menuconfig에도 표시되지 않습니다.) 따라서 안전합니다.

  4. #ifdef CONFIG_PCI편집을 위해 동일한 변수를 사용하는 pcie_find_root_port체인을 호출/{의존하기 때문에} 정의 아래에 배치됩니다 .#ifdefbackport-include/linux/pci.h

  5. #ifdef사용하는 구조 멤버가 동일한 pm_runtime_active디렉토리 에 있기 때문에backport-include/linux/pm_runtime.hCONFIG_PM_RUNTIME#ifdef

  6. #ifdef해당 버전에서만 구조 멤버가 추가되었기 때문에 를 사용하여 NETLINK_CB(in_skb).sk액세스 했습니다 .compat/backport-genetlink.cLINUX_IS_VERSION_GEQ(3, 10, 0)sk

안타깝게도 확장 net/wireless/trace.c에 문제가 있어서 TP_PROTOGCC에서 많은 오류가 발생했는데 error: expected ')' before 'struct'이를 수정하지 못했습니다. 어떤 아이디어가 있나요?

그렇지 않다면 어떤3.0에서 테스트를 했습니다백포트된 버전(사용 가능한 전투 테스트를 거친 WiFi USB 드라이버가 많이 있기를 바랍니다)?

관련 정보