我正在使用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_DS1307
(CONFIG_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进行调试,因此焊接解决方案适用于我们。
答案 0 :(得分:0)
static struct i2c_board_info __initdata am335x_i2c0_boardinfo []正在访问内部i2c总线/ dev / i2c-1,但是你将把rtc插入p9中的19和20,即/ dev / i2c-3