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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> Olimex/Startetkit LPC23/4 + RMII KS8721BL, Баги в схеме :(
zltigo
сообщение Jul 5 2011, 22:05
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 6 2011, 00:34) *
....


CODE
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

1. Нет сброса по 0 адресу.
2. Тратится время на бездумную передачу 30(31) команды сброса по последовательному интерфейсу все зависимости потребуются они в последствии или нет. Соответственно эти пустые действия непонятны для изучающего вольного предположить в их наличии
какой-то смысл.
3. Если в функции write_PHY() нет ожидания окончания транзакции будет облом.
CODE
    for (phy_addr = 1; phy_addr <= 31; phy_addr++) {
        if ((phy_addr != DEFAULT_PHY_ADDR) &&  (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET)))
            goto phy_found;
    }

1. Опять нет контроля по 0 адресу.
2. (phy_addr != DEFAULT_PHY_ADDR) && лишнее украшение.

QUOTE (sasamy @ Jul 6 2011, 00:54) *
Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен.

Как оказалось, чукча не только не "писатель", но и не "читатель" sad.gif - типа чисто "критик". Диапазон адресов проверяется весь начиная DEFAULT_PHY_ADDR.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:18
Сообщение #62


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 01:59) *
Код
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

1. Нет сброса по 0 адресу.


Вообще-то это была копипаста с вашего кода, так что претензии не ко мне sm.gif

Цитата
2. Тратится время на бездумную передачу 30(31) команды сброса по последовательному интерфейсу все зависимости потребуются они в последствии или нет.


Вы их точно так же делаете, только в некоторых случаях меньше. На этом последовательном интерфейсе 25 МГц, а у вас первая же задержка 1 мс - о чем вообще может быть речь, эти команды пролетят когда она еще не закончится.

Цитата
3. Если в функции write_PHY() нет ожидания окончания транзакции будет облом.


Пожалуй на этом хватит - это ваш немного исправленый код - к вам претензии, я хотел всего лишь показать смысл моего замечания - тратится слишком много времени на ненужные ожидания, конечно немного в грубоватой форме сказано, но в принципе это был ваш тон.

Цитата
(phy_addr != DEFAULT_PHY_ADDR) && лишнее украшение.


Ну с этим согласен - прочитать лишний раз регистр - раз плюнуть.

Сообщение отредактировал sasamy - Jul 5 2011, 22:20
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 22:30
Сообщение #63


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sasamy @ Jul 6 2011, 02:18) *
На этом последовательном интерфейсе 25 МГц, а у вас первая же задержка 1 мс - о чем вообще может быть речь, эти команды пролетят когда она еще не закончится.

2.5МГц, а не 25, так что 30 последовательных передач займут как раз чуть меньше 1мс sm.gif
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:34
Сообщение #64


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 02:30) *
2.5МГц, а не 25, так что 30 последовательных передач займут как раз чуть меньше 1мс sm.gif


Да - ошибка, но она на смысл не влияет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 22:39
Сообщение #65


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 6 2011, 01:18) *
Вообще-то это была копипаста с вашего кода, так что претензии не ко мне sm.gif

Кто-то взялся править, причем после публикации моего подчищенного, но не сумел.
QUOTE
Вы их точно так же делаете, только в некоторых случаях меньше.

При штатном течении инициализации ровно один необходимо-достаточный сброс вместо 32.
QUOTE
На этом последовательном интерфейсе 25 МГц

Вы не знаете и типичных скоростей MDIO интерфейсов в PHY sad.gif. Ошибка на порядок.
QUOTE
я хотел всего лишь показать смысл моего замечания - тратится слишком много времени на ненужные ожидания

только в случае НЕШТАТНОЙ ситуации с PHY. Вместо этого Вы добавили те самые ненужные действия требующие времени и для случая штатной инициализации. Затраты времени меня особо не смущают, но порожден еще и тот самый говнокод ( делающий что-то зачем-то ) sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 22:46
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jul 6 2011, 02:39) *
что-то зачем-то

Вот заодно и спрошу: зачем сброс? Вопрос без всякой подковырки, просто интересно.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:58
Сообщение #67


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 02:39) *
Вы не знаете и типичных скоростей MDIO интерфейсов в PHY sad.gif. Ошибка на порядок.


Можете считать я пропустил запятую, хотя честно говоря - это не таблица умножения чтобы все помнить наизусть, достаточно открыть любой даташит.

Цитата
только в случае НЕШТАТНОЙ ситуации с PHY. Вместо этого Вы добавили те самые ненужные действия требующие времени и для случая штатной инициализации. Затраты времени меня особо не смущают,


Естественно - какие затраты времени, если у вас _всегда_ до чтения регистра задержка 1 мс а у меня ее нет, в ее качестве посылки сброса по всем адресам.

Цитата
но порожден еще и тот самый говнокод ( делающий что-то зачем-то ) sad.gif.


ликвидирующий задержку в 3,5 сек в случае внештатной ситуации и не вносящий никаких задержек и усложнений и без того кривого кода. Вообще достаточно было читать PHYID без всяких левых сбросов и задержек.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 23:22
Сообщение #68


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (aaarrr @ Jul 6 2011, 01:46) *
Вот заодно и спрошу: зачем сброс? Вопрос без всякой подковырки, просто интересно.

Для порядка, дабы функция инициализации всегда делала все возможное включая инициализацию PHY и после софтового сброса контроллера, если нет аппаратного сброса. Но прежде всего это ведь тест на наличие любого PHY - бит должен самосброситься по окончанию инициализации PHY. Другое дело, что время ожидания очистки в 128ms скорее всего великовато, но с другой стороны оно обычно никак не нормируется производителем PHY sad.gif. Далее еще, после чтения идентификатора, но перед инициализацией, производятся чтения default значений из регистров PHY. Это тоже диагностика PHY. Порядка 10 лет работы в качестве разработчика диагностических комплексов на VEF-е оставили хорошую привычку, в том числе при POST, делать всю диагностику по максимуму.
QUOTE (sasamy @ Jul 6 2011, 01:58) *
...достаточно открыть любой даташит.

Открыть, почитать, подумать...., допустить мысль, что кто-то тоже обладает разумом. Только очевидно это не всем дано - лучше сразу писать первое, что придет в голову sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 6 2011, 20:04
Сообщение #69


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Удалил лишнее. Прошу придерживаться рамок темы, хотя бы приблизительно.
Модератор.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 7 2011, 06:34
Сообщение #70


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Не про RMII KS8721BL, зато про Olimex/Startetkit LPC23/4. sm.gif

Кто-нибудь переопределял приоритеты на шине AHB1?

При записи на sd-карточку начинает срываться изображение на TFT. Работа с sd через DMA - кейловский драйвер (MCI_LPC24xx.c).
И DMA и LCD подключены к AHB1. В регистре AHBCFG1 настроил приоритеты так - LCD, CPU, DMA, AHB1, USB. После чего в процедуре записи на SD-карту вылетаю в Data-Abort. Если приоритет DMA выше LCD - то все хорошо, но изображение срывается.

Проблему решил уменьшением частоты тактирования LCD, но если кто вдруг в курсе настройки AHB1 буду признателен совету. sm.gif


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2011, 10:22
Сообщение #71


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Lotor @ Jul 7 2011, 10:34) *
Проблему решил уменьшением частоты тактирования LCD, но если кто вдруг в курсе настройки AHB1 буду признателен совету. sm.gif

В этом случае следовало бы разобраться, что именно вызывает Data Abort при работе с SD.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 8 2011, 07:07
Сообщение #72


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(aaarrr @ Jul 7 2011, 14:22) *
В этом случае следовало бы разобраться, что именно вызывает Data Abort при работе с SD.


В Data Abort вылетает в функции fwrite - кейловская библиотека Flash File System. Исходников нет, дизассемблирование показывает, что проблемная инструкция STR R0, [R4, #0x0C], в R4 нули. Получается пытается что-то сохранить по адресу в памяти программ... В общем или таки кейловская библиотека чудит, или я не знаю тонкостей настройки приоритетов AHB.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
FinaC
сообщение Aug 10 2011, 06:07
Сообщение #73





Группа: Новичок
Сообщений: 1
Регистрация: 30-09-10
Пользователь №: 59 841



Цитата(Lotor @ Jul 7 2011, 12:34) *
Не про RMII KS8721BL, зато про Olimex/Startetkit LPC23/4. sm.gif

Кто-нибудь переопределял приоритеты на шине AHB1?

При записи на sd-карточку начинает срываться изображение на TFT. Работа с sd через DMA - кейловский драйвер (MCI_LPC24xx.c).
И DMA и LCD подключены к AHB1. В регистре AHBCFG1 настроил приоритеты так - LCD, CPU, DMA, AHB1, USB. После чего в процедуре записи на SD-карту вылетаю в Data-Abort. Если приоритет DMA выше LCD - то все хорошо, но изображение срывается.

Проблему решил уменьшением частоты тактирования LCD, но если кто вдруг в курсе настройки AHB1 буду признателен совету. sm.gif


Тоже много времени потратил на то, чтобы разобраться с приоритетами DMA и LCD. В итоге где-то на иностранном форуме раздобыл следующую настройку приоритетов:

AHBCFG1 = 0x10000144;

До этого тоже изображение дёргалось при использовании DMA. Сейчас всё идеально )
SD не использую, так что не смогу подсказать, как тут быть. Но думаю, что это поможет тем, кто также не использует SD.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 11:36
Рейтинг@Mail.ru


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