-
- UPD2: Дело похоже в поле CR регистра ETH->MACMIIAR, в которое
при HCLK 144 МГц нужно записать не описанное в китайской
документации значение 1 - AlexG(03.02.2025 13:56)
- Спасибо за информацию. - Nikolay_Po(03.02.2025 23:11)
- Вопрос из зала: Nikolay_Po(80 знак., 03.02.2025 15:44)
- Потому что там не всё в исходниках, другой сетевой стек и те еще
шаманские пляски вокруг PHY? Я подстраиваю выбор сетевого стека,
RTOS, среды разработки по то, что у нас в проектах уже было, а не
под китайцев, изделия которых после очередного поворота могут уже
больше и не применяться. Это позволяет мне решать задачи
относительно быстро (пусть и не очень красиво). Иногда довольно
головоломные. - AlexG(03.02.2025 16:41)
- Ну раз так то вам судьбой предначертано страдать - 3m(03.02.2025 19:32)
- Это громко сказано. Обычный рабочий процесс. AlexG(49 знак., 04.02.2025 02:13)
- Скорее речь о классических кетайских недосказанностях и ошибках в
доках, которые в коде таки обходят, и при нежелании подсмотреть
процесс плавненько переходит в страдания - Vit(04.02.2025 08:27)
- Я же не говорю что принципиально в их код смотреть не буду и не буду использовать никаким образом. Просто конкретно в этом случае он мало полезен. - AlexG(04.02.2025 08:55)
- Скорее речь о классических кетайских недосказанностях и ошибках в
доках, которые в коде таки обходят, и при нежелании подсмотреть
процесс плавненько переходит в страдания - Vit(04.02.2025 08:27)
- Это громко сказано. Обычный рабочий процесс. AlexG(49 знак., 04.02.2025 02:13)
- Ну раз так то вам судьбой предначертано страдать - 3m(03.02.2025 19:32)
- Потому что там не всё в исходниках, другой сетевой стек и те еще
шаманские пляски вокруг PHY? Я подстраиваю выбор сетевого стека,
RTOS, среды разработки по то, что у нас в проектах уже было, а не
под китайцев, изделия которых после очередного поворота могут уже
больше и не применяться. Это позволяет мне решать задачи
относительно быстро (пусть и не очень красиво). Иногда довольно
головоломные. - AlexG(03.02.2025 16:41)
- Это настройка частоты на линии MDC. Нижняя граница этой частоты
должна быть где-то очень низко, разгонять её особого смысла нет,
поэтому можно поставить консервативно пониже и не переключать. - SciFi(03.02.2025 14:44)
- Единственная проблема - нужного значения делителя в документации
нет. - AlexG(03.02.2025 16:42)
- Точнее нужный находится в диапазоне "бессмысленных" (meaningless)
значений :-) - reZident(03.02.2025 16:51)
- Бессмысленных - это если по англоязычному варианту документации
читать. А вот Дипсик раскопал (ссылка): Nikolay_Po(103 знак., 04.02.2025 09:57, ссылка)
- Для любопытства я глянул китайскую версию RM. Там такая же табличка
и такой же комментарий "бессмысленных" значений битов, как и в
англоязычной. reZident(2 знак., 04.02.2025 10:08, картинка, картинка)
- Спасибо. Вот теперь как проверить, откуда дипсик взял данные
таблички? Nikolay_Po(22 знак., 04.02.2025 10:12, ссылка)
- Возможно эта информация с каких-то китайских форумов, где обсуждают
такие же проблемы. ИИ "Нейро" от Яндекса честнее в этом отношении,
он ссылки на источники своей "мудрости" приводит. - reZident(04.02.2025 10:15)
- А ноги растут вот откуда >>> SciFi(1 знак., 04.02.2025 10:23, ссылка)
- Спасибо что напомнили. Это повышает вероятность того, что
недокументированные значения реальны. - AlexG(04.02.2025 17:21)
- Линуксоиды активно пользуются этим фактом и имеют один драйвер на огромный зоопарк разных SoC. В Байкале, кстати, тоже оно стоит. LightElf(1 знак., 04.02.2025 23:30, ссылка)
- Спасибо что напомнили. Это повышает вероятность того, что
недокументированные значения реальны. - AlexG(04.02.2025 17:21)
- А ноги растут вот откуда >>> SciFi(1 знак., 04.02.2025 10:23, ссылка)
- Возможно эта информация с каких-то китайских форумов, где обсуждают
такие же проблемы. ИИ "Нейро" от Яндекса честнее в этом отношении,
он ссылки на источники своей "мудрости" приводит. - reZident(04.02.2025 10:15)
- Спасибо. Вот теперь как проверить, откуда дипсик взял данные
таблички? Nikolay_Po(22 знак., 04.02.2025 10:12, ссылка)
- Для любопытства я глянул китайскую версию RM. Там такая же табличка
и такой же комментарий "бессмысленных" значений битов, как и в
англоязычной. reZident(2 знак., 04.02.2025 10:08, картинка, картинка)
- Пока это не до конца подтвержденная теория. Надо набрать больше статистики. У WCH наблюдается разброс характеристик у разных экземпляров микроконтроллеров. - AlexG(04.02.2025 05:31)
- Бессмысленных - это если по англоязычному варианту документации
читать. А вот Дипсик раскопал (ссылка): Nikolay_Po(103 знак., 04.02.2025 09:57, ссылка)
- Точнее нужный находится в диапазоне "бессмысленных" (meaningless)
значений :-) - reZident(03.02.2025 16:51)
- Единственная проблема - нужного значения делителя в документации
нет. - AlexG(03.02.2025 16:42)
- У китайцев где-то все же описано, так как DeepSeek что-то про это
знает ;-) Bhg2(1 знак., 03.02.2025 14:17, картинка)
- В актуальной версии Reference Manual есть только такая табличка reZident(2 знак., 03.02.2025 14:27, ссылка, картинка)
- На днях спрашивал DeepSeek кое-что про управление кое-каким
прибором. Он предложил команду, которую я не нашёл в мануале.
Попробовал - команда работает! Я в шоке. Это заговор. - SciFi(03.02.2025 14:32)
- Возможно эта команда есть в китайскоязычной версии документации. - reZident(03.02.2025 14:35)
- Там есть вероятное объяснение. Но сам факт интересен. - SciFi(03.02.2025 14:38)
- Возможно эта команда есть в китайскоязычной версии документации. - reZident(03.02.2025 14:35)
- На днях спрашивал DeepSeek кое-что про управление кое-каким
прибором. Он предложил команду, которую я не нашёл в мануале.
Попробовал - команда работает! Я в шоке. Это заговор. - SciFi(03.02.2025 14:32)
- В актуальной версии Reference Manual есть только такая табличка reZident(2 знак., 03.02.2025 14:27, ссылка, картинка)
- UPD: эффект похоже связан со встроенным PHY, т.к. возникает когда
MAC еще не инициализирован и устраняется передергиванием сетевого
кабеля. Если кабель не был подключен - не возникает. - AlexG(27.01.2025 10:45)
- RCC_AHBRSTR---> ETHMACRST никак не работает? - Vit(28.01.2025 08:32)
- На эту проблему не действует - AlexG(28.01.2025 10:29)
- Интересно, получится ли найти решение без передёргивания? - Nikolay_Po(27.01.2025 11:06)
- К этому PHY и не подобраться то почти никак, практически отдельная
микрохема - AlexG(27.01.2025 11:44)
- Тут в ветке Телеграм по RISC-V, предлагают расконфигурировать модуль вплоть до освобождения GPIO. Может, пропустит после этого? Nikolay_Po(1 знак., 28.01.2025 13:05, ссылка)
- Пошевелить старшим битом нулевого регистра PHY не помогает? - LightElf(27.01.2025 18:08)
- Нет. С этим PHY уже были были проблемы по другим причинам и
всяческие танцы вокруг. Если я правильно помню, какой-то эффект
может быть при многократном шевелении, но без особых гарантий. - AlexG(28.01.2025 03:05)
У меня такая же нога, но не болит.Вроде там тот же PHY, что и в CH579 (во всяком случае я использовал доку от CH32V307 при разбирательствах с PHY у CH579). И там я особых проблем не встречал (кроме того, что PHY туповатый). - LightElf(28.01.2025 16:22)- Может быть я как-то особо неудачно строчки в процедурах инициализации PHY и MAC расставил - AlexG(28.01.2025 17:54)
- Нет. С этим PHY уже были были проблемы по другим причинам и
всяческие танцы вокруг. Если я правильно помню, какой-то эффект
может быть при многократном шевелении, но без особых гарантий. - AlexG(28.01.2025 03:05)
- Ну вывести его из этого состояния как-то можно? Или только вырубая
питание МК внешней схемой? - Nikolay_Po(27.01.2025 17:32)
- Сброс микроконтроллера еще помогает. - AlexG(28.01.2025 04:20)
- Что делает с PHY сброс МК? Нельзя ли сделать то же самое программно? Например, тактовую ему выключить/включить? - Nikolay_Po(28.01.2025 10:14)
- Сброс микроконтроллера еще помогает. - AlexG(28.01.2025 04:20)
- К этому PHY и не подобраться то почти никак, практически отдельная
микрохема - AlexG(27.01.2025 11:44)
- RCC_AHBRSTR---> ETHMACRST никак не работает? - Vit(28.01.2025 08:32)
- В мануале на CH32V207 (c 479) наблюдаю "When using an Ethernet
transceiver, the clock of the HB bus cannot be lower than 50MHz".
Проверьте значение - Vit(25.01.2025 17:45)
- Теоретически, я ничего не нарушаю, 72 МГц минимум, но да, лучше бы проверить что это так. - AlexG(25.01.2025 21:23)
- в каком плане похожих, и куда и когда тактовую переключаем? может у
вас таймауты какие с константами, рассчитанными для фиксированной
частоты, на ходу разлетаются, а вы на кремний смотрите с
ethernet-передачей - Vit(25.01.2025 14:55)
- Похожие это, как минимум, STM32F207 и CH32V307. В принципе, всё
STM-образное с ethernet'ом. Возпрос возник из-за того, что у
CH32F207 есть ограничение по допустимой тактовой при записи во
flash. Я пробую тактовую на время снизить, поработать с flash,
затем вернуть тактовую как было. После возвращения получаю
отсутствие ethernet-пакетов от устройства. Из таймеров кажется,
только systick и используется, плюс используется CAN, у которого
часть пакетов в процессе бьется. Вообще AlexG(88 знак., 25.01.2025 16:45)
- В STM32А207 HCLK можно изменить AHB-Prescaler-ом с SYSCLK, переключить источник SYSCLK с выхода PLL на другой, ну и отважно попытаться налету
поправить настройки PLL, или источник для PLL Vit(552 знак., 25.01.2025 17:35)
- Вроде в CH32V307 весь код выполняется из теневой копии в ОЗУ. Чтобы прочитать из флеш напрямую, нужно постараться. Так что проблем с исполнением кода во время записи во флеш я не ожидаю. - Nikolay_Po(25.01.2025 19:21)
- я переключаю AHB-Prescaler c 1 на 2 и за счет этого снижаю HCLK со
144 до 72 МГц. ART Accelerator в CH32 нет, весь код при старте
копируется в теневое ОЗУ - AlexG(25.01.2025 18:54)
- 72 МГц многовато. В DS указано до 60 Vit(1 знак., 25.01.2025 21:20, картинка)
- Там для flash еще делитель на 2, при HCLK=72 Fprog=36 (и при
Fprog=60 программирование реально срабатывает не всегда) - AlexG(26.01.2025 03:58)
- Думаю, что можно попробовать запуститься с HCLK = FPROG = 50 MHz,
ну а Ethernet от 60. Чтобы отсечь вопрос о переключении на ходу - Vit(26.01.2025 07:42)
- При HCLK = 96, FPROG = 48 запись flash работает, но не хватает
быстродействия чтобы обработать все Ethernet пакеты. С HCLK = 144
потерянных пакетов гораздо меньше. - AlexG(26.01.2025 08:26)
- Разгон в 1,5 раза необходим, чтобы справиться с трафиком? КМК, у
вас в этом месте проблема не меньше, чем тактирование флеша. Надо
софт вымучивать. Кстати, как-то раз невольно провёл эксперимент.
Собрал прошивку с memcpy без оптимизации и обнаружил, что lwip стал
работать значительно медленнее. То есть оптимизированная версия
версия memcpy размером 236 байт имеет большое значение. SciFi(54 знак., 26.01.2025 11:58)
- как это узкое место только вычислить? TCP стек сейчас используется
довольно сложный и потоков принимаемых+передаваемых пакетов около
25 (имитирую максимальную нагрузку) - AlexG(26.01.2025 16:30)
- Среда разработки может предоставлять
провайдерпрофайлер - в прошивку встраивается код, а через отладочный интерфейс, доступны данные о нагрузке. Nikolay_Po(611 знак., 26.01.2025 17:42)- ОСРВ есть. С логическим анализатором это вариант, с точностью до
процесса выяснить чем загружен процессор можно. AlexG(30 знак., 27.01.2025 03:57)
- А жаль. Как я понимаю, ввиду наличия ОС и вообще, сложности
проекта, переехать на GCC не вариант - требуется большая работа по
замене всяких intrinsic и управления прерываниями, а так же долгое
тестирование и отладка новых багов. Nikolay_Po(553 знак., 27.01.2025 10:01, ссылка)
- multi-file compilation для этого проекта не работает, не нравятся IARу некоторые функции и прагмы. Размер программы после компиляции со скоростью выполнения связан слабо. Может у меня все циклы развернуты? Flash не в дефиците совсем. - AlexG(27.01.2025 10:52)
- Нет там убедительных причин переезжать на другой компилятор. А геморрой, связанный с переездом, очевиден. - SciFi(27.01.2025 10:02)
- А жаль. Как я понимаю, ввиду наличия ОС и вообще, сложности
проекта, переехать на GCC не вариант - требуется большая работа по
замене всяких intrinsic и управления прерываниями, а так же долгое
тестирование и отладка новых багов. Nikolay_Po(553 знак., 27.01.2025 10:01, ссылка)
- Встраивать код вроде бы не обязательно. Можно просто на ходу часто
читать РС, такое отладочный интерфейс на сравнительно больших чипах
позволяет, и по частоте попадания в разные функции определять чем
процессор долго занимается. AlexBi(1 знак., 26.01.2025 22:44, ссылка)
- Неплохо, но J-Trace PRO стоит негуманно. AlexG(65 знак., 27.01.2025 03:59)
- orbuculum стоит ничего: beefdeadbeef(1 знак., 27.01.2025 12:38, ссылка)
- Спасибо. - Nikolay_Po(27.01.2025 18:24)
- orbuculum стоит ничего: beefdeadbeef(1 знак., 27.01.2025 12:38, ссылка)
- Спасибо, не знал. - Nikolay_Po(26.01.2025 22:45)
- Неплохо, но J-Trace PRO стоит негуманно. AlexG(65 знак., 27.01.2025 03:59)
- ОСРВ есть. С логическим анализатором это вариант, с точностью до
процесса выяснить чем загружен процессор можно. AlexG(30 знак., 27.01.2025 03:57)
- Среда разработки может предоставлять
- как это узкое место только вычислить? TCP стек сейчас используется
довольно сложный и потоков принимаемых+передаваемых пакетов около
25 (имитирую максимальную нагрузку) - AlexG(26.01.2025 16:30)
- т.е. при HCLK = 72 MHz может просто захлебывается? наверно потому во FreeBSD стена прям в ядро проложена. но тут же вроде не сильно грустно - обмен с контроллером Ethernet по DMA, наверно можно легкие тормоза на отправку проложить. Vit(148 знак., 26.01.2025 08:44)
- Разгон в 1,5 раза необходим, чтобы справиться с трафиком? КМК, у
вас в этом месте проблема не меньше, чем тактирование флеша. Надо
софт вымучивать. Кстати, как-то раз невольно провёл эксперимент.
Собрал прошивку с memcpy без оптимизации и обнаружил, что lwip стал
работать значительно медленнее. То есть оптимизированная версия
версия memcpy размером 236 байт имеет большое значение. SciFi(54 знак., 26.01.2025 11:58)
- При HCLK = 96, FPROG = 48 запись flash работает, но не хватает
быстродействия чтобы обработать все Ethernet пакеты. С HCLK = 144
потерянных пакетов гораздо меньше. - AlexG(26.01.2025 08:26)
- Думаю, что можно попробовать запуститься с HCLK = FPROG = 50 MHz,
ну а Ethernet от 60. Чтобы отсечь вопрос о переключении на ходу - Vit(26.01.2025 07:42)
- Там для flash еще делитель на 2, при HCLK=72 Fprog=36 (и при
Fprog=60 программирование реально срабатывает не всегда) - AlexG(26.01.2025 03:58)
- Может, есть какая особенность при работе с делителем шины?
Пробовали выключть Ethernet на время переключения частоты и
включать его обратно после? Nikolay_Po(432 знак., 25.01.2025 19:32)
- Попробую покрутить какой-нибудь другой делитель или умножитель как
снова доберусь до платы. Переключение напрямую на кварц очевидно
плохой вариант, так как при этом частота AHB уже точно выйдет за
допустимые для Ethernet пределы. - AlexG(25.01.2025 21:20)
- А если Ethernet выключать на время работы с FLASH? Или требуется держать соединение непрерывно? - Nikolay_Po(26.01.2025 00:13)
- похоже нужно 144 снизить до 100-120, а переключение пробовать как делали, но, КМК, при не занятом DMA - Vit(25.01.2025 21:25)
- Попробую покрутить какой-нибудь другой делитель или умножитель как
снова доберусь до платы. Переключение напрямую на кварц очевидно
плохой вариант, так как при этом частота AHB уже точно выйдет за
допустимые для Ethernet пределы. - AlexG(25.01.2025 21:20)
- 72 МГц многовато. В DS указано до 60 Vit(1 знак., 25.01.2025 21:20, картинка)
- По-моему это (изменение тактирования "на ходу") плохая идея. Если вам так важно время обращения к flash-памяти (выполнение инструкций непосредственно из flash-памяти), то имеет смысл осмыслить и модифицировать свою программу, разместив в ОЗУ критичные по времени выполнения функции. - reZident(25.01.2025 16:58)
- В STM32А207 HCLK можно изменить AHB-Prescaler-ом с SYSCLK, переключить источник SYSCLK с выхода PLL на другой, ну и отважно попытаться налету
поправить настройки PLL, или источник для PLL Vit(552 знак., 25.01.2025 17:35)
- Похожие это, как минимум, STM32F207 и CH32V307. В принципе, всё
STM-образное с ethernet'ом. Возпрос возник из-за того, что у
CH32F207 есть ограничение по допустимой тактовой при записи во
flash. Я пробую тактовую на время снизить, поработать с flash,
затем вернуть тактовую как было. После возвращения получаю
отсутствие ethernet-пакетов от устройства. Из таймеров кажется,
только systick и используется, плюс используется CAN, у которого
часть пакетов в процессе бьется. Вообще AlexG(88 знак., 25.01.2025 16:45)
- UPD2: Дело похоже в поле CR регистра ETH->MACMIIAR, в которое
при HCLK 144 МГц нужно записать не описанное в китайской
документации значение 1 - AlexG(03.02.2025 13:56)