Beaglebone Black: RTC DS1307/DS1338 выдает ошибку в Android при загрузке

Я использую TI-Android-JB-4.2.2-DevKit-4.1.1 для создания Android для Beaglebone Black, который отлично работает. Я пытаюсь использовать RTC-Cape (http://elinux.org/CircuitCo:RTC_Cape). С «бортовым» Angström на BBB я смог установить и прочитать 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 в ядре, чтобы его можно было использовать при загрузке?

С уважением

Матиас

Обновить

Оказывается, DS1338 на Beaglebone Balck Cape на самом деле подключен к 17 и 18 на P9, что является I2C1 или i2c-2 на Android. Эта шина деактивирована по умолчанию в Android. В качестве короткого обходного пути я обрезал печатные цепи и подключил их к 19 и 20 на P9 (I2C2 или i2c-3).

Затем я переместил блок I2C_BOARD_INFO в

static struct i2c_board_info am335x_i2c2_boardinfo[]

Скомпилированное ядро ​​теперь считывает время с RTC при загрузке.

Большое спасибо за подсказку, user3926077.

Правильным решением будет активировать i2c-2 в ядре Android и поместить блок I2C-BOARD_INFO в static struct i2c_board_info am335x_i2c1_boardinfo[]. К сожалению, на данный момент я не знаю, как этого добиться, и нам нужен RTC только для отладки, поэтому решение для пайки нам подходит.


person Matthias_M    schedule 05.08.2014    source источник


Ответы (1)


static struct i2c_board_info __initdata am335x_i2c0_boardinfo[] обращается к внутренней шине i2c /dev/i2c-1, но вы будете подключать rtc к 19 и 20 на p9, который является /dev/i2c-3

person user3926077    schedule 10.08.2014