Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F107 + RTL8201 + lwip-1.4.0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3, 4
smk
Необходимо подружить RTL8201 и lwip. Как это делается и каков драйвер для phy мне нужно будет написать? Каким образом lwip общается с железом? Я так понимаю, что драйвер предполагает работу с МАС-уровнем, я прав? Т.к. область для меня новая, то пригодится любая подсказкаю Прошу помощи и советов. Спасибо.
Golikov A.
А мак контроллер на чем? Реалтек это физика, она должна быть по MII -RMII быть связана с железом мак, а вот на выходе этого мак контроллера уже стоит LwIP, у него есть модуль настройки физики по средствам коммуникационной линии MII, и точка чтения - записи данных в мак контроллер.

В настройках физики обычно поиск ее адреса, и установка режима автонегатинации (или как там ее), но вы можете написать любой сложности свой драйвер...

как то так
smk
Цитата(Golikov A. @ Sep 23 2013, 21:32) *
А мак контроллер на чем? Реалтек это физика, она должна быть по MII -RMII быть связана с железом мак, а вот на выходе этого мак контроллера уже стоит LwIP, у него есть модуль настройки физики по средствам коммуникационной линии MII, и точка чтения - записи данных в мак контроллер.

В настройках физики обычно поиск ее адреса, и установка режима автонегатинации (или как там ее), но вы можете написать любой сложности свой драйвер...

как то так


MAC на STM32F107. Меня сейчас интересует как привязать lwip к МАСу. MII режим. Нужно разобраться как инициализировать МАС-модуль и что с ним делать дальше, как он будет взаимодействовать со стеком.
=F8=
Цитата(smk @ Sep 23 2013, 18:36) *
Необходимо подружить RTL8201 и lwip. Как это делается и каков драйвер для phy мне нужно будет написать? Каким образом lwip общается с железом? Я так понимаю, что драйвер предполагает работу с МАС-уровнем, я прав? Т.к. область для меня новая, то пригодится любая подсказкаю Прошу помощи и советов. Спасибо.

Как такового драйвера для phy нет. Просто там-же где выполняете инициализацию ehternet контроллера инициализируете и регистры phy. LwIP общается с железом через указатели на функции низкоуровневого ввода-вывода в структуре netif. Смотрите файл stm32x_ethernet.c http://bit.ly/stf12_freertos_commons . А вот тут весь проект http://developers.stf12.net/just-another-eclipse-demo-str91x там не только str91 есть и порт для stm)
smk
Как я понял связь с физикой и ее инициализация осуществляются по Station management interface: SMI?

Собственно еще такой вопрос. На плате от ТЕРРАЭЛЕКТРОНИКА как контроллер так и физика тактируются каждый своим кварцем на 25 МГц. Про физику понятно, а собственно а почему контроллер такм кварцем? У него же родной 8 МГц + PLL.
сарматъ
кварец стабильнее чем встроенный генератор
smk
Цитата(сарматъ @ Sep 24 2013, 13:04) *
кварец стабильнее чем встроенный генератор

Я больше про частоту кварца... тактирование ЕТН какое-то особенное?
Golikov A.
да.

физика работает на 50 МГц вроде как, делает их из 25, а для общения по MMI-RMII, там какие то требования на частоты обмена должны быть. Я сейчас смутно помню, но вроде бы по частотам несущих сигналов определяется чуть ли не вид интерфейса и скорость его работы... ведь есть 10-100 -1000 мбит езернет,
smk
Цитата(Golikov A. @ Sep 24 2013, 15:31) *
да.

физика работает на 50 МГц вроде как, делает их из 25, а для общения по MMI-RMII, там какие то требования на частоты обмена должны быть. Я сейчас смутно помню, но вроде бы по частотам несущих сигналов определяется чуть ли не вид интерфейса и скорость его работы... ведь есть 10-100 -1000 мбит езернет,


Прошу уточнения. Физика тактируется 25 МГц - понятно. Режим МII. А со стороны STM32 в части тактирования его МАК-уровня (модуль ЕТН) есть какие-то особенности? Он же работает только с физикой, которая сама себя тактирует.
сарматъ
25Мгц нормальная частота для кварца что смущает то, если есть желание можно на 8 перепаять на скорость влиять не должно, просто разработчик поставил 25 морочиться об этом не стоит

а про требования между физикой и контроллером еще и отдельная синхролиния есть по крайней мере для RMII
smk
Я рассуждал так. Если поставить кварц 8 МГц, то можно настроить тактовую ядра на 72 МГц, что есть разрешенный максимум. Если ставить 25 МГц, то максимум можно и не настроить. Отсюда возник вопрос, а что за нужда заставила ставить 25 МГц? Насколько я помню, stm32 может не работать с кварцами выше 24 МГц, но могу ошибаться.
сарматъ
понятно, можно поступить по разному

-настроить на 75мгц и посмотреть как будет работать
-перепаять желаемый кварц
bzx
Цитата(smk @ Sep 24 2013, 17:24) *
Насколько я помню, stm32 может не работать с кварцами выше 24 МГц, но могу ошибаться.

Ошибаетесь. Микроконтроллеры F107 работают с резонаторами 3-25МГц. На осцилляторе 25МГц можно получить тактовую 72МГц
smk
Цитата(bzx @ Sep 30 2013, 22:07) *
Ошибаетесь. Микроконтроллеры F107 работают с резонаторами 3-25МГц. На осцилляторе 25МГц можно получить тактовую 72МГц

Спасибо за уточнение. Но если принципиальной разницы нет, то предпочту проверенный 8 МГц.

Кстати попутно хотел бы выяснить кто как отлаживается на F107 по JTAG? В кейле не увидел ни периферии ни каких других окошков. Хоть бы значения регистров периферии как-то смотреть, а то не ясно прописались настройки или нет и т.п.
smk
С отладкой разобрался. У меня файлик *.sfr подключен небыл.

Всетаки хотелось бы прояснить вопрос. Кеил при подключении стартапа к новому проекту устанавливает кварц равным 25 МГц. С чего бы это и есть ли в этом какой-то особый смысл? Не то чтобы это проблема, но хотелось бы понимать зачем это. Судя по картинке, то для МАС это не принципиально. Это так?

В даташите есть такое упоминание (в переводе):
Цитата
Один 25 МГц кристалл может часами всю систему и все периферийные устройства, включая Ethernet и USB OTG FS периферийных устройств. Для достижения высокого качества звука, аудио кристалл может быть использован. В этом случае часы I2S мастер может генерировать все стандартные частоты дискретизации от 8 кГц до 96 кГц с менее чем 0,5% точностью.Для получения дополнительной информации о часах конфигурации для приложений, требующих Ethernet, USB OTG FS и / или I2S (аудио), пожалуйста, обратитесь к разделу "Приложение Applicative блок-схемы" в вашем устройстве подключения Datasheet линии.

Вот собственно Ethernet и USB нужны. Кварцем 8 МГц неужели не затактировать?
Golikov A.
почему если физика стандартно работает на 25, 50 и 125 МГц вы думаете что лучше ставить кварц 8 Мгцsm.gif? Из кратного то тянуть лучше, ИМХО...
smk
Цитата(Golikov A. @ Oct 5 2013, 14:07) *
почему если физика стандартно работает на 25, 50 и 125 МГц вы думаете что лучше ставить кварц 8 Мгцsm.gif? Из кратного то тянуть лучше, ИМХО...

Это если физику от МСО тактировать. Тогда конечно есть железный смысл.

У меня другая проблема. Создал пустой проект на Кеил. Выбрать опцию присоединения стартапа. Кварц использовал 25 МГц чтоб чужой проект можно было загрузить и проверить железо. В кейле такой по умолчанию. После пошагового прохода получились настройки как на картинке. Как-то они не вяжутся с таблицей, предлагаемой СТ. По неопытности пеока трудно сразу сообразить как что затактировалось. Может кто подскажет правильно ли там получилось и как затактировался ЮСБ?

И еще момент. Если я прохожу автоматом до main, то ничего не отображается в окошке с RCC. Как было при входе в дебаг так и остается. Собственно вопрос: так и должно быть?

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла

и еще непонятно. Создал переменную а. она не отображается в окне просмотра.
Код
int main (void)
{
unsigned int a;

    while (1)
        {
            __nop();
            __nop();            
            __nop();            
            __nop();    
            a++;
        }

}


Есть подозрение что с jtag что-то не то
Нажмите для просмотра прикрепленного файла
Golikov A.
локальные переменные в дебаге кейла отображаются с огромными ограничениями... обычно отображаются не верно
smk
Вынес в глобальные. Теперь явно лучше.

Теперь бы с регистрами также. А то какая отладка если не показывает как надо. А если программа в 1000 шагов, то вручную шагать?
Golikov A.
ну может отладка в порт?

В регистрах там есть где то настройка частоты обновления или как то так, надо автоапдейт поставить чтобы все видно было, а то только в момент остановки или протыкивания что ли они меняться будут

smk
А где примерно искать настройку обновления? Посмотрел, но ничего похожего не заметил. Вот со 103 или 207 этих проблем небыло. Как-то изначально все было хорошо. А тут и файл вручную подключал да и толку если посмотреть все не получается как надо. В порт конечно можно, но слать все регистры конфигурации периферии, а потом как-то их просматривать совсем не удобно.
Golikov A.
я так понимаю это больше к настройкам кейла чем к семейству проца. У меня сейчас к сожалению нет кейла под рукой поглядеть где оно там. Попробуйте очевидные вещи типа тыкнуть правой клавишей в окно регистров, в регистры. Кто на нем плотно сидит я думаю быстрее ответят.
vlad_new
Все там есть. В режиме дебагера появляется куча всякой всячены.
View->Periodic Windows Update Включает динамическое обновление переменных и не только. Локальные переменные выводятся в окне Coll Steck Window. Вся переферия выводится Peripherais и т.д.
smk
Цитата(vlad_new @ Oct 7 2013, 13:42) *
Все там есть. В режиме дебагера появляется куча всякой всячены.
View->Periodic Windows Update Включает динамическое обновление переменных и не только. Локальные переменные выводятся в окне Coll Steck Window. Вся переферия выводится Peripherais и т.д.

View->Periodic Windows Update галка стоит. Coll Steck Window обновляется. Peripherais довольно скудное меню. Вот как мне "на лету" посмотреть скажем RCC-CFGR ?

Интересу ради зарядил таймер7. Считает, регистры отображаются исправно. Почему же вот тот кусок, что в стартапе не отображается? Даже когда контроллер стоит на входе в main или когда уже работает? Должна же быть возможность увидеть их текущее значение.

smk
Чтобы проверить железо хочу залить в свою платку пример от Терраэлектроникс. Поставил ИАР 6.60. Проект открывает и компилирует. Но как тоько дело доходит до программатора - вываливается с сообщением про клон. Сеггер делает тоже самое. Под кейлом все нормально. Собственно вопрос можно ли полечить сеггер или как лучше поступить?
smk
Наконец-то продвинулся дальше. Закончил с железом. По сути там тоько МК STM32F107RCT6 и физика RTL8201CP. По скольку иар моего житага шарахается, то шью пока по усарту. Собственно иар понадобился из-за примера от Терраэлектрноники. Пример зашил, но накакого эффекта. Даже линк не светится. Линк должен светиться при подключении кабеля всегда или только после настройки физики? Если замкнуть RX+ на TX+ то линк светится.

Извиняюсь за нетерпение, зря тоько отвлек. С линком разобрался. Дело было в кабеле. Заменил коннектор и все получилось.
smk
У меня теперь другая проблема появилась. Опишу вкратце конфигурацию сети. Ранее компьютер был напрямую подключен к интернету. Я установил свич (долго валялся, теперь пригодился). В один разъем свича воткнул интернет, а в другой компьютер. Интернет работает, что радует. В третий разъем я присоединил свою макетку. Однако увидеть в сети и тем более открыть сайтик, что должна показывать, я не смог. Пробовал смотреть IP своего компьютера, маску подсети. Перепрошил платку, предварительно откомпилировав с новым IP и маской подсети. Девайсу установил IP с 255 в конце. Девайс не вижу. Что можно предпринять чтоб не ставить еще одну сетевую карту?
Golikov A.
ну надо настроить свич, у вас он хаб, свич или маршрутиризатор? У вас в сети кто айпишники выдал? У вас все айпишники из одной подсети? У вас у всех указан верный шлюз?
плата пингуется? попробуйте трасернуть пакеты.

самое простое начать все таки с хаба, чтоб наверняка.

smk
3COM OfficeConnect Switch 8 на нем написано. 3С16794 возможно модель. Айпишники как я понимаю автомотически т.к. DHCP. Маску подсети менял на плате, как и шлюз как и айпи платы. Правда есть вероятность, что айпи платы уже был кем-то занят. Домашний интернет однако.
antis
Цитата(smk @ Oct 17 2013, 21:56) *
У меня теперь другая проблема появилась. Опишу вкратце конфигурацию сети. Ранее компьютер был напрямую подключен к интернету. Я установил свич (долго валялся, теперь пригодился). В один разъем свича воткнул интернет, а в другой компьютер. Интернет работает, что радует. В третий разъем я присоединил свою макетку. Однако увидеть в сети и тем более открыть сайтик, что должна показывать, я не смог. Пробовал смотреть IP своего компьютера, маску подсети. Перепрошил платку, предварительно откомпилировав с новым IP и маской подсети. Девайсу установил IP с 255 в конце. Девайс не вижу. Что можно предпринять чтоб не ставить еще одну сетевую карту?

Девайсу установил IP с 255 в конце.
255 в IP адресе зарезервировано


smk
Ну а если я установлю 254, то при правильной работе платы пинговаться должна, если адрес не занят? Меня сама сеть смущает. Я же не знаю как и что у провайдера, какие адреса заняты.
Golikov A.
Цитата(smk @ Oct 18 2013, 08:42) *
3COM OfficeConnect Switch 8 на нем написано. 3С16794 возможно модель. Айпишники как я понимаю автомотически т.к. DHCP. Маску подсети менял на плате, как и шлюз как и айпи платы. Правда есть вероятность, что айпи платы уже был кем-то занят. Домашний интернет однако.


тогда хорошо бы чтобы и устройство по ДХЦП все свое получило.
smk
Цитата(Golikov A. @ Oct 18 2013, 09:36) *
тогда хорошо бы чтобы и устройство по ДХЦП все свое получило.

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

Пробежался по проекту от Терры. По видимому DHCP там не поддерживается. Во всяком случае упоминания не нашел.
antis
Цитата(smk @ Oct 18 2013, 10:41) *
Я уже думал об этом, но во первых не так уж я и подкован в этих вопросах, потому и взялся разбираться чтоб подучить это дело. Во вторых нужно выяснить точку зрения провайдера. Не факт, что мне можно более одной машины в той сети держать.

Пробежался по проекту от Терры. По видимому DHCP там не поддерживается. Во всяком случае упоминания не нашел.


Я кто не дает добавить еще одну сеть (192.168.x.x или 10.x.x.x), которая точно не пересечется с сетью провайдера.
На компьютере убрать автоматическое получение адреса через DHCP, прописать IP адрес из сети провайдера руками
и добавить 2 IP адрес для сетевой картыт из сети 192.168.x.x.
А на железке прописать статический адрес из второй сети
smk
Проверю. Если после нескольких отключений / подключений айпи не поменяется, то может имеет смысл.
сарматъ
подскажите будьте любезны где можно найти правильный пример обработки приема\передачи пакетов, у меня начинает глючить после приема примерно миллиарда пакетов

как лучше делать обработку поллингом или прерываниями?
vlad_new
В Keil 5.
сарматъ
спасибо, можете поделиться примерами из кейл5?
smk
Цитата(сарматъ @ Oct 22 2013, 09:28) *
подскажите будьте любезны где можно найти правильный пример обработки приема\передачи пакетов, у меня начинает глючить после приема примерно миллиарда пакетов

как лучше делать обработку поллингом или прерываниями?

А как глючит и откуда уверенность, что дело в числе пакетов?
сарматъ
пока точно сказать не могу но есть предположение что криво обрабатываю прерывание, а количество - по времени работы до зависания и частоте запросов
vlad_new
Цитата(сарматъ @ Oct 22 2013, 15:25) *
спасибо, можете поделиться примерами из кейл5?

Там визарт встроенный. А примеры поставляются вместе с кейлом. Там их куча.
http://www.keil.com/pack/doc/mw/Network/ht...create_app.html
smk
Цитата(vlad_new @ Oct 23 2013, 18:22) *
Там визарт встроенный. А примеры поставляются вместе с кейлом. Там их куча.
http://www.keil.com/pack/doc/mw/Network/ht...create_app.html

Я так понимаю, что этот визард появился в 5 кейле, а ранее его небыло?
vlad_new
Цитата(smk @ Oct 23 2013, 21:07) *
Я так понимаю, что этот визард появился в 5 кейле, а ранее его небыло?

Этот только в 5 появился. Хотя это только визард создания проэкта. Внутри проэкта всеравно появятся другие визады по настройке RTOS, Ethernet, ETH-PHY, протоколов и т.д.
Правда теперь кейловцы предлогают вариант не только со своей библиотекой, но и с lwip, хотя в примерах он у них и раньше был.
Лично я не пробывал 5 версию, пока все неплохо работает и с 4.72. Ниже лучше не ставить, поскольку там пару тройку не фатальных ошибок еще не исправлены.
Удачи.
сарматъ
спасибо за наводку
smk
Эксперимент показал, что айпи при перезагрузках стоит колом один и тотже. Как и что настроить чтоб можно было попинговать железо?

Теперь самое интересное. К проекту в кейл прикрутил драйвера ETH от ST. Настроил пины. Про вопрос относительно настройки физики в курсе. Можно ли с этим набором попробовать что-то передать или принять? Как мне теперь прикрутить lwip? Собственно хочу понять методологию взаимодействия этих программных модулей. Для начала хотябы простенькую задачку сделать. Поскольку буферизация 1500 байт, то вот массив такого размера передавать / принять как можно? Книги для прочтения есть, но на примерах яснее. Спасибо.
Golikov A.
сетевые настройки, забиваете фиксированный IP тот что у вас, маску подсети что определилась, шлюз и все такое...
в сетевом устройстве все тоже самое, только айпи сдвигаете, ну типа у компьютера 192.168.1.10, а плате дайте 192.168.1.20
например. Пинганите для теста без платы, чтобы убедиться что кроме нее нет случайно такого же узла. Потом пингуйте плату.

Только учтите что ответ на пинг так же часть стэка, и без стэка пинга не будет.

у LwIP есть процедура начальной инициализации, в зависимости от режим с операционкой или без нее.

Дальше надо постоянно вызывать функции обработки ТРС сообщений. Которые внутри себя будут вызывать callback функции с принятыми данными и событиями.

Насчет буферизации, для ТСР определен пакет от 56 до 1500 скольких то байт. Но никто не говорит что данные должны идти единым пакетом, более того есть оборудования (например wifi) который любит дробить и менять порядок пакетам, не всегда, но есть экземпляры. ТСР берет на себя сбор и выстраивание пакетов в нужном порядке. Более того у него есть так называемое окно, которое при заполнении не дает посылать данные дальше пока старые не будут приняты и обработаны, так что через ТСР можно послать бесконечной длинны поток данных.



smk
Тогда на первом этапе создам новое сетевое подключение по вышеописанной методике. Пропингую адрес, предназначенный для платы. Перепрошью плату с новыми настройками и проверю железо на примере от терры. Если будет пинговаться, пойдем дальше. Нужна будет помощь в создании своего проекта на основе имеющегося железа + драйвера от ST + LwIP.
smk
Только собрался создать новое соединение. Вдруг выясняется, что у меня новый айпи. Есть идеи кроме как новую карточку воткнуть?
сарматъ
Цитата(vlad_new @ Oct 23 2013, 22:16) *
Этот только в 5 появился. Хотя это только визард создания проэкта. Внутри проэкта всеравно появятся другие визады по настройке RTOS, Ethernet, ETH-PHY, протоколов и т.д.


поставил 5 посмотрел и примеры и то что делает визард...
что то можно использовать, но очень многое остается за кадром как понимаю в проприетарной закрытой части .либ
например алгоримы пререинициализации phy & mac...

может быть есть где то примеры хорошей работы с ethernet?
vlad_new
Все что вам может понадобится - открыто. На сайте keil выложено куча примеров и ответов на разные вопросы. К тому же вам предлагают вариант с lwip.
Вот здесь все что вам может понадобится.

extern LOCALM nlocalm[]; // Local Machine Settings
extern LOCALM localm[]; // for DHCP redy
extern u8 lhost_name[]; // Name
extern u8 own_hw_adr[]; // MAC

Переинициализация PHY не требуется. Все срабатывает "на лету". Ну если хочется то: init_TcpNet(); в любой момент.
Все структуры описаны в Net_lib.c, который пристегнут к визорту Net_Config.c в самом конце.
Что касается "хорошей работы" - не понятно, что вы имеете ввиду. Создается впечетление, что, как тут кто то сказал -"Ваша беда в том, что вы хотите, что бы кто то за вас все сделал".
С езернетом такое не прокатит. Удачи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.