3

장치 트리 및 장치 트리 오버레이에 대한 모든 Linux 커널 설명서를 읽었으며 거의 ​​읽었습니다. 장치 트리에서 새로운 엔트리를 만들어야하는지 이해할 수 없습니다. 플랫폼을 사용하거나 장치 트리를 기반으로 새 드라이버 용 장치에 대한 새 오버레이를 만듭니다. led가 GPIO 핀에 연결되어 있고 그 구성이 보드의 플랫폼에있는 장치 트리 오버레이 또는 장치 트리 조각에 언급되어있는 간단한 LED 조명 드라이버 예제를 찾고 있습니다. 어떻게 사용자 공간을 사용하여 빌드/푸시 및 테스트 할 수 있습니까? 신청.Hello Word 장치 트리 기반 장치 드라이버

+0

비슷한 문제가있어서'kernel_src/drivers/uio/uio_pdrv_genirq.c'의 예제로 해결했습니다. 장치 트리의 정보는'of '기능 (Open Firmware)을 통해 수신됩니다. 커널 스텁도 필요합니다. Hans J. Koch : 실시간 컨텍스트에서 I/O 드라이버를 사용자 정의합니다. (일반적으로이 저자는 UIO에 대한 몇 가지 기사를 썼습니다.) – h0ch5tr4355

+0

pltsfrom dtsi에 삽입 한 dts 파일 내용을 게시 할 수 있습니까? 어떻게 작성하고 테스트 했습니까? – Raulp

+0

방금 ​​사용자 지정 호환 및 적절한 reg 속성을 사용하여 사용자 지정 dtsi를 사용했습니다. 디바이스 드라이버에서'struct of_device_id'에서 compaitble을 가져 왔습니다. – h0ch5tr4355

답변

2
  1. 는 내 장치 트리에서 사용자 지정 장치를 만들 :이 장치에 대한 커널 스텁을 작성

    [email protected] { 
        compatible = "my_driver"; 
        reg = <0xffdf0000 0x1000> 
        /* 
        * reg = address of device and size 
        * (Minimum is System's Pagesize = 0x1000 Byte in my case 
        */ 
    } 
    
  2. : 여기 (

    내가 kernel_src/drivers/uio/uio_pdrv_genirq.cHans J. Koch: Userspace I/O drivers in a realtime context (장치 드라이버 튜토리얼을했다))

    이 스텁에는 다음 두 구조체가 있습니다.

    of_device_id 구조체 :

    static struct of_device_id my_match_table[] = { 
        { 
          .compatible = "my_driver", 
        }, 
        {0} 
    }; 
    MODULE_DEVICE_TABLE(of, my_match_table); 
    

    및 드라이버 구조체 자체 :

    static int my_probe(struct platform_device *dev) 
    { 
         struct uio_info *uioinfo; 
         struct resource *r = &dev->resource[0]; 
         [...] 
         uioinfo->name = dev->dev.of_node->name /* name from device tree: "my_device" */ 
         uioinfo->mem[0].addr = r->start; /* device address from device tree */ 
         uioinfo->mem[0].size = resource_size(r); /* size from device tree */ 
         [...] 
    } 
    
:

static struct platform_driver my_platform_driver = { 
     .probe = my_probe, 
     .remove = my_remove, 
     .driver = { 
       .name = "my_driver", 
       .owner = THIS_MODULE, 
       .of_match_table = of_match_ptr(my_match_table), 
     }, 
}; 
  • 지금 내 프로브 기능의 장치 트리의 속성에 액세스 할 수

    커널이 모두 compatible 인 경우 스텁의 항목과 장치 트리에 프로브 기능이 호출됩니다.

  • +0

    raulpblooper에서 나를 보내 주시겠습니까? 귀하의 사용자 이름 : h0ch5tr4355 : Device tree.라는 제목의 gmail dot com입니다. 더 자세히 논의하고 싶습니다. 예제를 공유하고 싶습니다 !! 메일을 기다리고 있습니다. 다시 한 번 감사드립니다! – Raulp

    +0

    나는 장치 트리의 초보자입니다. 나는 당신이'reg' 속성의 주소를 어떻게 얻었는지 궁금하다. 아니면 임의의 주소를 설정할 수 있습니까? – einstein