-
- Вроде в 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, картинка)