Beaglebone Black:RTC DS1307 / DS1338在启动时在Android中出错

时间:2014-08-05 07:55:26

标签: android android-source i2c beagleboneblack real-time-clock

我正在使用TI-Android-JB-4.2.2-DevKit-4.1.1为Beaglebone Black构建Android,效果非常好。我尝试使用RTC-Cape(http://elinux.org/CircuitCo:RTC_Cape)。通过BBB上的“板载”Angström,我能够手动设置和读取RTC,因此我认为硬件没问题。

为了让RTC与Android一起运行,我在结构中添加了文件kernel/arch/arm/mach-omap2/board-am335xevm.c

static struct i2c_board_info __initdata am335x_i2c0_boardinfo[]

最后

{
    I2C_BOARD_INFO("ds1338", 0x68),
},

kernel/arch/arm/configs/am335x_evm_android_defconfig我激活了CONFIG_RTC_DRV_DS1307CONFIG_RTC_DRV_DS1307=y)并停用了CONFIG_RTC_DRV_OMAP

在启动时它说

<4>[    1.880767] rtc-ds1307: probe of 1-0068 failed with error -5
<6>[    1.886779] i2c /dev entries driver

<3>[    2.306884] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)

我尝试调整此Beaglebone / Linux邮件列表中的更改:https://groups.google.com/forum/#!msg/beagleboard/DegreEdtI-Q/ZEdFLNnuTvMJ

我是Android / Linux内核配置的新手。如何正确地在内核中包含和配置RTC,使其在启动时可用?

此致

的Matthias

更新

事实证明,Beaglebone Balck Cape上的DS1338实际连接到P9上的17和18,这是Android上的I2C1或i2c-2。 Android中默认禁用此总线。作为一个简短的解决方法,我切断了打印的电路路径,并在P9(I2C2或i2c-3)上将其连接到19和20。

然后我将I2C_BOARD_INFO块移动到

static struct i2c_board_info am335x_i2c2_boardinfo[]

编译后的内核现在会在启动时从RTC读取时间。

非常感谢提示,user3926077。

一个合适的解决方案是激活Android内核中的i2c-2并将I2C-BOARD_INFO块放在static struct i2c_board_info am335x_i2c1_boardinfo[]中。不幸的是我现在还不知道如何实现这一点,我们只需要RTC进行调试,因此焊接解决方案适用于我们。

1 个答案:

答案 0 :(得分:0)

static struct i2c_board_info __initdata am335x_i2c0_boardinfo []正在访问内部i2c总线/ dev / i2c-1,但是你将把rtc插入p9中的19和20,即/ dev / i2c-3