реклама на сайте
подробности

 
 
> проблема с RTC на AT91SAM9XE512
Valentinus
сообщение Jan 19 2011, 14:01
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 20-04-10
Пользователь №: 56 759



использую отладочные платы с AT91SAM9XE512 (SK-AT91SAM9XE512-S3E и SK-AT91SAM9XE512-SIM300)

возникла проблема с использованием RTC под Linux (пробовал ядра 2.6.28 и 2.6.35.1) - не устанавливается значение в hwclock, и все тут!

пробовал и так, и сяк - не работают.

начал копать - оказалась проблема в том что не записывается значение в Battery Backup Registers, то бишь туда, где времечко хардварное должно храниться (4 General-Purpose Backup Registers).

даже пробовал "вручную" туда писать: что бы ни писал - читается "0".

помогите плз, мудрым советом. а то уже не знаю, что придумать!!! crying.gif crying.gif crying.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
DmitryM
сообщение Jan 19 2011, 16:31
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



А как Вы пытались писать "туда" напрямую, если по всему даташиту нет никакого упоминания про доступ к backup регистрам?? Они клацают сами по себе в RTT. RTT можно сбросить, если у него некорректное значение счетчика, при этом обнуляется и счетчик тоже.

Сообщение отредактировал IgorKossak - Jan 19 2011, 17:07
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
Valentinus
сообщение Jan 19 2011, 17:12
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 20-04-10
Пользователь №: 56 759



Цитата(DmitryM @ Jan 19 2011, 19:31) *
А как Вы пытались писать "туда" напрямую, если по всему даташиту нет никакого упоминания про доступ к backup регистрам?? Они клацают сами по себе в RTT. RTT можно сбросить, если у него некорректное значение счетчика, при этом обнуляется и счетчик тоже.

я проследил работу hwclock до вызова функции at91_rtc_readtime из rtc-at91sam9.c

из нее идет возврат по ошибке вот тут:
Код
/* read current time offset */
         offset = gpbr_readl(rtc);
         if (offset == 0)
                 return -EILSEQ;


gpbr_readl , как я понимаю, должна возвращать "0" только если RTC еще не инициализирован, при загрузке оси. Из-за этого ось при загузке сообщает "rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!" и "rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock" - мол, "хардварное время не установлено, установи его!".
Инициализацию можно либо сделать в функции at91_rtc_probe или отдельной программкой - ссылки на эти оба способа я давал в первом сообщении.
После этого gpbr_readl будет возвращать не "0", а значение хардварного времени и все будет ок.

но проблема в том, что у меня gpbr_writel не может записать в регистры никакого значения - оттуда все равно читается "0".

gpbr_readl и gpbr_writel это просто макросы:
Код
#define gpbr_readl(rtc) \
         at91_sys_read(AT91_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR)
#define gpbr_writel(rtc, val) \
         at91_sys_write(AT91_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR, (val))


аналогично я и пробовал "вручную" - отобразил адрес этих регистров через mmap и писал/читал. но все рано не записывается ничего.

Сообщение отредактировал Valentinus - Jan 19 2011, 17:13
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jan 19 2011, 17:50
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Valentinus @ Jan 19 2011, 20:12) *
я проследил работу hwclock до вызова функции at91_rtc_readtime из rtc-at91sam9.c

gpbr_readl и gpbr_writel это просто макросы:
Код
#define gpbr_readl(rtc) \
         at91_sys_read(AT91_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR)
#define gpbr_writel(rtc, val) \
         at91_sys_write(AT91_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR, (val))


аналогично я и пробовал "вручную" - отобразил адрес этих регистров через mmap и писал/читал. но все рано не записывается ничего.


Приведите значение AT91_GPBR для интереса. Да, есть GPBR, но разное для SAM9260 и SAM9XE. У одного 0xFFFFFD50, у второго 0xFFFFFD60

http://www.mail-archive.com/u-boot@lists.d...e/msg36862.html
Go to the top of the page
 
+Quote Post
Valentinus
сообщение Jan 20 2011, 05:39
Сообщение #5





Группа: Новичок
Сообщений: 8
Регистрация: 20-04-10
Пользователь №: 56 759



Цитата(DmitryM @ Jan 19 2011, 20:50) *
Приведите значение AT91_GPBR для интереса. Да, есть GPBR, но разное для SAM9260 и SAM9XE. У одного 0xFFFFFD50, у второго 0xFFFFFD60

http://www.mail-archive.com/u-boot@lists.d...e/msg36862.html


странно!!! я смотрю в datasheet на AT91SAM9XE512 и AT91SAM9260 - там в обоих GPBR начинается с 0xFFFFFD50 !!!!

где-то я встречал что для 9263 адрес GPBR начинается с 0xFFFFFD60, но это не мой случай!

ах вон оно что:
Цитата
The latest revision of the AT91SAM9XE has the GPBR moved up 0x10.
+ * (its not a bug, its a feature...)
+ * Maybe we can figure a dynamic way to handle this later...

вот зараза!!!!

пойду пробовать.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jan 20 2011, 06:43
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Datasheet Doc Rev.6254C: Figure 8-1 ”AT91SAM9XE128/256/512 Memory Mapping”, GPBR addresses changed. Change Request Ref.6767

Сообщение отредактировал IgorKossak - Jan 20 2011, 11:19
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
Valentinus
сообщение Jan 20 2011, 07:30
Сообщение #7





Группа: Новичок
Сообщений: 8
Регистрация: 20-04-10
Пользователь №: 56 759



действительно, дело было в этом. ну чтож урок мне на будущее- не доверять, а проверять самые свежие редакции документации он Атмела

ДМИТРИЙ! ОГРОМНОЕ ВАМ СПАСИБО!!!! не представляете сколько дней и нервов у меня ушло на поиск решения этой проблемы.


для тех кто имеет новые ревизии AT91SAM9XE и сидит на старых и непатченых ядрах можно просто вставить в начало файла rtc-at91sam9.c поправку:
Код
#define AT91_GPBR         (0xfffffd60 - AT91_BASE_SYS)


Сообщение отредактировал Valentinus - Jan 20 2011, 07:32
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01427 секунд с 7
ELECTRONIX ©2004-2016