![플랫폼 드라이버의 프로브 기능이 호출되지 않았습니다.](https://linux55.com/image/189200/%ED%94%8C%EB%9E%AB%ED%8F%BC%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EC%9D%98%20%ED%94%84%EB%A1%9C%EB%B8%8C%20%EA%B8%B0%EB%8A%A5%EC%9D%B4%20%ED%98%B8%EC%B6%9C%EB%90%98%EC%A7%80%20%EC%95%8A%EC%95%98%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
저는 장치 트리를 사용하지만 프로브 기능을 호출하지 않는 것 같은 비글본(현재 Ubuntu를 실행하는 가상 머신에서 실행 중)용 간단한 플랫폼 드라이버를 개발 중입니다.
compatible
제가 이해한 바에 따르면, 프로브를 호출하려면 (드라이버 및 장치 트리 파일에) 일치하는 값이 있어야 하고 플랫폼 드라이버를 등록해야 합니다. 내가 무엇을 놓쳤을까요?
struct of_device_id dt_match[] =
{
{.compatible = "A1x"},
{.compatible = "B2x"}
};
struct platform_driver platform_driver_struct =
{
.probe = platform_driver_probe,
.remove = platform_driver_remove,
.id_table = pcdevs_ids,
.driver = {
.name = "pseudo-char-device",
.of_match_table = dt_match
}
};
static int __init platform_driver_init(void)
{
platform_driver_register(&platform_driver_struct);
return 0;
}
// dtsi file
/ {
pcd-dev1 {
compatible = "A1x";
org,size=<512>;
org,perm=<0x15>;
};
pcd-dev2 {
compatible = "B2x";
org,size=<256>;
org,perm=<0x11>;
};
};
그런 다음 위의 DTSI 파일을 am335x-boneblack.dts
.그런 다음 다음을 사용하여 바이너리를 만들었습니다.
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am33x-boneblack.dtb
문자열이 일치하는지 여부에 따라 해당 프로브 기능을 호출하기 arch/arm/boot/dts
위해 커널이 사용하는 디렉터리의 장치 트리 파일이 아닌가요 ?compatible