Linux에서 플랫폼 장치 및 드라이버 등록 순서
버스, 장치 및 드라이버에 대한 Linux의 등록 순서
장치가 버스에 연결되면 버스의 모든 드라이버와 일치합니다(일치하려면bus_type.match 사용).
일치에 성공하면 bus_type.probe 또는 drivers.probe를 호출하여 장치를 초기화하고 버스에 연결하세요.
일치에 실패하면 장치를 버스에 연결하기만 하면 됩니다. .
드라이버가 버스에 연결되면 버스의 모든 장치와 일치합니다(일치하려면bus_type.match 사용).
일치에 성공하면bus_type.probe 또는 드라이버. .probe는 장치를 초기화하고 버스에 연결합니다.
일치에 실패하면 드라이버가 버스에 연결됩니다.
집중해야 할 것은 버스 매칭 함수 match()와 드라이버 초기화 함수 프로브()입니다.
1. platform_bus_type--버스는 kenrel에 의해 먼저 등록됩니다.
2. 시스템 초기화 프로세스 중에 platform_add_devices 또는 platform_device_register를 호출하여 플랫폼 장치(플랫폼 장치)를 플랫폼 버스(platform_bus_type)에 등록합니다.
3. 그리고 platform 장치(플랫폼 장치)의 연결은 platform_driver_register 또는 Driver_register에서 구현됩니다. 일반적으로 이 함수는 드라이버 초기화 과정에서 호출됩니다.
이 세 단계를 통해 플랫폼 버스, 장치 및 드라이버가 연결됩니다.
1. 플랫폼 버스는 kenrel에 의해 먼저 등록됩니다.
------------------------------- -- -----------
do_basic_setup() -->-driver_init() -->-platform_bus_init()-->bus_register()
2. 시스템 초기화 프로세스 중에 platform_add_devices 또는 platform_device_register를 호출하여 플랫폼 장치(플랫폼 장치)를 플랫폼 버스(platform_bus_type)에 등록합니다.
--------------- ---- ---------------------
시스템 시작 단계에서 , 버스 드라이버 목록은 아직 비어 있으므로 시작 단계의 platform_add_devices()는 버스의 장치 목록에 장치를 추가하는 역할만 담당합니다.