2016-10-24 5 views
0

빌드 할 Linux 커널에 보드 특정 코드를 추가해야합니다.리눅스 커널에 보드 파일을 추가하는 방법과 "make menu config"에서 어디에서 찾을 수 있습니까?

(이미 device-tree를 사용해야한다는 것을 알고 있지만, 나는 영향을받지 않는 드라이버이며, 아침 식사 전에 수십 가지 새로운 것을 배웠습니다.) device-tree를 추가하면 다른 세트도 추가됩니다. 디버그를 변경합니다. 보드 파일을 사용하여 플랫폼 드라이버/드라이버를 작동 시키면 장치 트리로 변환합니다.)

파일이 arch/arm/myboard/myboard.c입니다.

기존 보드 파일은 어디에서 찾을 수 있습니까? make menuconfig? (예 : http://lxr.free-electrons.com/source/arch/arm/mach-imx/mach-mx31ads.c?v=4.4?)

보드를 여기에 표시하려면 어떻게해야합니까?

+1

http://lxr.free-electrons.com/source/arch/arm/mach-imx/?v=4.4의 Kconfig 및 Makefile을 살펴보십시오. 예를 들어, Kconfig는 MACH_MX31MOBOARD 변수를 선언하고이 변수는 Makefile에서 보드 특정 코드를 작성하는 데 사용됩니다. – alexander

+1

사실, 지금 당장은 디바이스 드라이버에 플랫폼 정보를 하드 코딩해서 DT를 구성 할 수 있습니다. – user3528438

+0

@ user3528438 좋은 아이디어, 많은 시간을 절약 할 수 있습니다. 답을하면 받아 들일거야. – fadedbee

답변

2

Makefile in the same directory을 살펴보십시오. 마하 mx31ads.c를 들어, 그것은 갖는다 kconfig를가 해당 항목이

# i.MX31 based machines 
obj-$(CONFIG_MACH_MX31ADS) += mach-mx31ads.o 

,

config MACH_MX31ADS 
     bool "Support MX31ADS platforms" 
     default y 
     select IMX_HAVE_PLATFORM_IMX_I2C 
     select IMX_HAVE_PLATFORM_IMX_SSI 
     select IMX_HAVE_PLATFORM_IMX_UART 
     select SOC_IMX31 
     help 
      Include support for MX31ADS platform. This includes specific 
      configurations for the board and its peripherals. 

보드에게 kconfig를 메뉴 항목을 제공하고 파일을 구축 할 예정이 추가. 누락 된 유일한 부분은 기계 유형입니다. 이것을 에 추가해야합니다. gen-mach-types 스크립트를 사용하여 생성/mach-type.h을 생성합니다. 이 파일을 보드 파일에서 사용하여 정적 시스템 설명 (특수 섹션에 넣음)을 작성하십시오.

MACHINE_START(MX31ADS, "Freescale MX31ADS") 
     /* Maintainer: Freescale Semiconductor, Inc. */ 
     .atag_offset = 0x100, 
     .map_io = mx31ads_map_io, 
     .init_early = imx31_init_early, 
     .init_irq = mx31ads_init_irq, 
     .init_time  = mx31ads_timer_init, 
     .init_machine = mx31ads_init, 
     .restart  = mxc_restart, 
MACHINE_END 

machine_desc 구조 arch.h에서 발견된다. 존재하지 않을 경우 호출되지 않기 때문에 모든 요소를 ​​추가 할 필요가 없습니다. 커널 init은 머신 ATAG를보고 부트 로더가 전달하는 머신과 일치하는 섹션을 반복합니다. machine_desc의 위치는 리눅스 부팅 초기에 어셈블러에서 이루어집니다.