私は現在、さまざまな機能を実行する9軸センサー用のi2cドライバーをゼロから構築することに取り組んでおり、すべてi2c経由でレジスターにアクセスできます。
Linux 用の i2c ドライバーを作成する方法に関するリソースがいくつかありますが、私の問題は、すべてをどこに置くべきかが明確でないことです。これまでのところ、私はドライバーをスケッチしましたが、決して機能していません。
static struct i2c_device_id sps_id[] = {
{"SPS_test", 0},
{}
};
static struct i2c_driver sps_test_driver = {
.driver = {
.name ="SPS_test",
},
.probe = sps_probe,
.remove = sps_remove,
.id_table = sps_id;
};
static int __init sps_test_init(void)
{
return i2c_add_driver(&scout_test_driver);
}
.name
また、このフィールドが、特定の i2c アドレスを識別するコードの次のビットへのリンクを提供することも知っています。
以下はhttp://lxr.linux.no/linux+v2.6.31/Documentation/i2c/instantiating-devicesから取得した::
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
int __devinit usb_hcd_pnx4008_probe(struct platform_device *pdev)
{
(...)
struct i2c_adapter *i2c_adap;
struct i2c_board_info i2c_info;
(...)
i2c_adap = i2c_get_adapter(2);
memset(&i2c_info, 0, sizeof(struct i2c_board_info));
strlcpy(i2c_info.name, "isp1301_pnx", I2C_NAME_SIZE);
isp1301_i2c_client = i2c_new_probed_device(i2c_adap, &i2c_info,
normal_i2c);
i2c_put_adapter(i2c_adap);
(...)
}
説明に正しく従えば、作業負荷を軽減し、リスクを最小限に抑えるために、既に作成されているアダプターを使用できるように、このルートを選択することをお勧めします。
ここで、その種のプローブを実行する独自のコードをどこで作成すればよいかを知る必要があります。.probe
これは のメンバーに似ていstruct i2c_driver
ますか? 彼らは同じですか ?