首页 > 系统服务 > 详细

linux系统移植与驱动开发时记录

时间:2017-03-31 22:19:27      阅读:231      评论:0      收藏:0      [点我收藏+]

1、常用引脚定义复用的文件:

pinctrl.c


2、RTC驱动文件,一般都在/drivers/rtc目录下,如pcf8563的驱动文件就在该目录下


3、设备信息一般在,arch/arm/目录下


一、pcf8563不好使,解决过程:

1、首先因为pcf8563属于I2C设备,首先看下硬件,使用的是I2C0还是I2C1。


2、查看内核驱动中,/drivers/rtc/目录下是否存在rtc-pcf8563.c的驱动文件,一般都会存在。


3、make menuconfig 确定内核配置中,pcf8563所在的i2c接口是配置上的。


4、驱动文件有了,内核对相应的i2c接口也使能了,去arch/arm/目录下我的在mx28_evk.c中,这个目录下一般都是核心板板载的设备信息文件的地方,mx28_evk.c貌似跟飞思卡尔有些关系,找到代码

static struct i2c_board_info __initdata mxs_i2c_device[] = {
	{ I2C_BOARD_INFO("sgtl5000-i2c", 0xa), .flags = I2C_M_TEN }
};

static void __init i2c_device_init(void)
{
	i2c_register_board_info(0, mxs_i2c_device, ARRAY_SIZE(mxs_i2c_device));
}

发现并没有pcf8563对应的设备信息,即使有pcf8563的驱动,但因为没有将设备信息也加入到I2C总线上,因为总线无法进行将设备和驱动进行配对,所以导致pcf8563不好用。因此在定义一个设备,因为我的pcf8563用的是i2c1接口,所以为了加以区分,定义的名字该下,pcf8563的地址一般为0x51,如下

//static struct i2c_board_info __initdata mxs_i2c_device[] = {
static struct i2c_board_info __initdata mxs_i2c_device0[] = {		//why add 2017 03.31
	{ I2C_BOARD_INFO("sgtl5000-i2c", 0xa), .flags = I2C_M_TEN }
};

/*****************why add pcf8563 devices info 2017. 03. 31.**********************/
static struct i2c_board_info __initdata mxs_i2c_device1[] = {
		{I2C_BOARD_INFO("pcf8563", 0x51),},
};
/**************************************************************************/

static void __init i2c_device_init(void)
{
	//i2c_register_board_info(0, mxs_i2c_device, ARRAY_SIZE(mxs_i2c_device));
	i2c_register_board_info(0, mxs_i2c_device0, ARRAY_SIZE(mxs_i2c_device0)); 	//why add 2017 03 31
	i2c_register_board_info(1, mxs_i2c_device1, ARRAY_SIZE(mxs_i2c_device1));	//why add 2017 03 31
}


本文出自 “whylinux” 博客,谢绝转载!

linux系统移植与驱动开发时记录

原文:http://whylinux.blog.51cto.com/10900429/1912160

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!